@k2b/ui 0.21.0 → 0.23.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.
- package/dist/browser/actions/ContextMenu.js +3 -1
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +3 -1
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js +3 -1
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/filter-messages.js +20 -0
- package/dist/browser/actions/filter-messages.js.map +1 -0
- package/dist/browser/actions/spotlight-messages.js +16 -0
- package/dist/browser/actions/spotlight-messages.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +47 -41
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +25 -23
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatRoot.js +3 -3
- package/dist/browser/chat/ChatRoot.js.map +1 -1
- package/dist/browser/chat/ChatTimeline.js +12 -12
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +236 -0
- package/dist/browser/chat/chat-messages.js.map +1 -0
- package/dist/browser/content/Calendar.js +1096 -1060
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/CalendarDayView.js +1187 -0
- package/dist/browser/content/CalendarDayView.js.map +1 -0
- package/dist/browser/content/CalendarWeekView.js +1571 -0
- package/dist/browser/content/CalendarWeekView.js.map +1 -0
- package/dist/browser/content/Chart.js +15 -8
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +185 -85
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/ChartExplorerControls.js +9 -7
- package/dist/browser/content/ChartExplorerControls.js.map +1 -1
- package/dist/browser/content/ChartFilterControls.js +93 -34
- package/dist/browser/content/ChartFilterControls.js.map +1 -1
- package/dist/browser/content/ChartSnapshotView.js +3 -3
- package/dist/browser/content/ChartSnapshotView.js.map +1 -1
- package/dist/browser/content/DataTable.js +238 -201
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/Docs.js +3 -1
- package/dist/browser/content/Docs.js.map +1 -1
- package/dist/browser/content/FileBrowser.js +30 -26
- package/dist/browser/content/FileBrowser.js.map +1 -1
- package/dist/browser/content/FileTree.js +9 -7
- package/dist/browser/content/FileTree.js.map +1 -1
- package/dist/browser/content/FileView.js +37 -28
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/Lightbox.js +9 -7
- package/dist/browser/content/Lightbox.js.map +1 -1
- package/dist/browser/content/LogEntriesTable.js +3 -3
- package/dist/browser/content/LogEntriesTable.js.map +1 -1
- package/dist/browser/content/MessageRow.js +24 -22
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/Pagination.js +7 -7
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +15 -13
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/RangePicker.js +3 -1
- package/dist/browser/content/RangePicker.js.map +1 -1
- package/dist/browser/content/StructuredDataPreview.js +3 -1
- package/dist/browser/content/StructuredDataPreview.js.map +1 -1
- package/dist/browser/content/Timeline.js +13 -11
- package/dist/browser/content/Timeline.js.map +1 -1
- package/dist/browser/content/VideoPlayer.js +5 -5
- package/dist/browser/content/VideoPlayer.js.map +1 -1
- package/dist/browser/content/VirtualFeed.js +6 -4
- package/dist/browser/content/VirtualFeed.js.map +1 -1
- package/dist/browser/content/ZoomPanViewport.js +10 -7
- package/dist/browser/content/ZoomPanViewport.js.map +1 -1
- package/dist/browser/content/calendar-day-scroll.js +98 -0
- package/dist/browser/content/calendar-day-scroll.js.map +1 -0
- package/dist/browser/content/calendar-days.js +408 -0
- package/dist/browser/content/calendar-days.js.map +1 -0
- package/dist/browser/content/calendar-dialogs.js +236 -0
- package/dist/browser/content/calendar-dialogs.js.map +1 -0
- package/dist/browser/content/calendar-messages.js +249 -3
- package/dist/browser/content/calendar-messages.js.map +1 -1
- package/dist/browser/content/calendar-pointer.js +19 -6
- package/dist/browser/content/calendar-pointer.js.map +1 -1
- package/dist/browser/content/calendar-shared.js +328 -0
- package/dist/browser/content/calendar-shared.js.map +1 -0
- package/dist/browser/content/calendar-time-view.js +1649 -0
- package/dist/browser/content/calendar-time-view.js.map +1 -0
- package/dist/browser/content/chart-messages.js +146 -0
- package/dist/browser/content/chart-messages.js.map +1 -0
- package/dist/browser/content/collection-selection.js +2 -0
- package/dist/browser/content/collection-selection.js.map +1 -1
- package/dist/browser/content/data-table-messages.js +24 -0
- package/dist/browser/content/data-table-messages.js.map +1 -0
- package/dist/browser/content/docs-messages.js +24 -0
- package/dist/browser/content/docs-messages.js.map +1 -0
- package/dist/browser/content/feed-messages.js +34 -0
- package/dist/browser/content/feed-messages.js.map +1 -0
- package/dist/browser/content/file-browser-messages.js +69 -0
- package/dist/browser/content/file-browser-messages.js.map +1 -0
- package/dist/browser/content/file-view-messages.js +64 -0
- package/dist/browser/content/file-view-messages.js.map +1 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/lightbox-messages.js +36 -0
- package/dist/browser/content/lightbox-messages.js.map +1 -0
- package/dist/browser/content/log-entries-messages.js +20 -0
- package/dist/browser/content/log-entries-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-block-messages.js +24 -0
- package/dist/browser/content/markdown-info-block-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-blocks.js +3 -3
- package/dist/browser/content/markdown-info-blocks.js.map +1 -1
- package/dist/browser/content/markdown-links.js +2 -2
- package/dist/browser/content/markdown-links.js.map +1 -1
- package/dist/browser/content/markdown-reference-messages.js +30 -0
- package/dist/browser/content/markdown-reference-messages.js.map +1 -0
- package/dist/browser/content/pagination-messages.js +38 -0
- package/dist/browser/content/pagination-messages.js.map +1 -0
- package/dist/browser/content/pdf-messages.js +43 -0
- package/dist/browser/content/pdf-messages.js.map +1 -0
- package/dist/browser/content/range-picker-messages.js +20 -0
- package/dist/browser/content/range-picker-messages.js.map +1 -0
- package/dist/browser/content/structured-data-messages.js +22 -0
- package/dist/browser/content/structured-data-messages.js.map +1 -0
- package/dist/browser/content/timeline-messages.js +62 -0
- package/dist/browser/content/timeline-messages.js.map +1 -0
- package/dist/browser/content/video-messages.js +24 -0
- package/dist/browser/content/video-messages.js.map +1 -0
- package/dist/browser/content/viewport-messages.js +28 -0
- package/dist/browser/content/viewport-messages.js.map +1 -0
- package/dist/browser/feedback/HoverPreview.js +34 -6
- package/dist/browser/feedback/HoverPreview.js.map +1 -1
- package/dist/browser/feedback/InstallGuide.js +18 -18
- package/dist/browser/feedback/InstallGuide.js.map +1 -1
- package/dist/browser/feedback/install-messages.js +104 -0
- package/dist/browser/feedback/install-messages.js.map +1 -0
- package/dist/browser/feedback/prompt-messages.js +65 -0
- package/dist/browser/feedback/prompt-messages.js.map +1 -0
- package/dist/browser/feedback/prompts.js +14 -11
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast-messages.js +18 -0
- package/dist/browser/feedback/toast-messages.js.map +1 -0
- package/dist/browser/feedback/toast.js +4 -3
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/inputs/AutocompleteEditor.js +6 -4
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/browser/inputs/AutocompleteSelect.js +10 -8
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js +4 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/ChoiceInputs.js +5 -5
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
- package/dist/browser/inputs/Combobox.js +3 -2
- package/dist/browser/inputs/Combobox.js.map +1 -1
- package/dist/browser/inputs/FileDropTarget.js +6 -6
- package/dist/browser/inputs/FileDropTarget.js.map +1 -1
- package/dist/browser/inputs/FileInputs.js +30 -21
- package/dist/browser/inputs/FileInputs.js.map +1 -1
- package/dist/browser/inputs/MultiSelectInput.js +7 -5
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
- package/dist/browser/inputs/NumberInput.js +4 -2
- package/dist/browser/inputs/NumberInput.js.map +1 -1
- package/dist/browser/inputs/QrScanner.js +5 -5
- package/dist/browser/inputs/QrScanner.js.map +1 -1
- package/dist/browser/inputs/Select.js +7 -5
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js +3 -3
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/SignatureInput.js +9 -3
- package/dist/browser/inputs/SignatureInput.js.map +1 -1
- package/dist/browser/inputs/SpecialInputs.js +4 -2
- package/dist/browser/inputs/SpecialInputs.js.map +1 -1
- package/dist/browser/inputs/TagEditor.js +8 -6
- package/dist/browser/inputs/TagEditor.js.map +1 -1
- package/dist/browser/inputs/TagsInput.js +5 -5
- package/dist/browser/inputs/TagsInput.js.map +1 -1
- package/dist/browser/inputs/TemplateEditor.js +5 -5
- package/dist/browser/inputs/TemplateEditor.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +3 -1
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/completion-messages.js +24 -0
- package/dist/browser/inputs/completion-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop-messages.js +63 -0
- package/dist/browser/inputs/file-drop-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop.js.map +1 -1
- package/dist/browser/inputs/file-input-messages.js +60 -0
- package/dist/browser/inputs/file-input-messages.js.map +1 -0
- package/dist/browser/inputs/icon-messages.js +22 -0
- package/dist/browser/inputs/icon-messages.js.map +1 -0
- package/dist/browser/inputs/input-messages.js +38 -0
- package/dist/browser/inputs/input-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +10 -6
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/Toolbar.js +13 -13
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/browser/inputs/markdown/editor-messages.js +43 -0
- package/dist/browser/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/browser/inputs/qr-messages.js +26 -0
- package/dist/browser/inputs/qr-messages.js.map +1 -0
- package/dist/browser/inputs/select-messages.js +63 -0
- package/dist/browser/inputs/select-messages.js.map +1 -0
- package/dist/browser/inputs/tag-messages.js +44 -0
- package/dist/browser/inputs/tag-messages.js.map +1 -0
- package/dist/browser/inputs/template-messages.js +22 -0
- package/dist/browser/inputs/template-messages.js.map +1 -0
- package/dist/browser/internal/render-error-messages.js +20 -0
- package/dist/browser/internal/render-error-messages.js.map +1 -0
- package/dist/browser/internal/render-error.js +3 -1
- package/dist/browser/internal/render-error.js.map +1 -1
- package/dist/browser/internal/text-selection.js +101 -0
- package/dist/browser/internal/text-selection.js.map +1 -0
- package/dist/browser/intl/messages.js +6 -1155
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +594 -425
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js +6 -1
- package/dist/browser/layout/BottomSheet.js.map +1 -1
- package/dist/browser/layout/Discussion.js +8 -5
- package/dist/browser/layout/Discussion.js.map +1 -1
- package/dist/browser/layout/FloatingWindow.js +8 -5
- package/dist/browser/layout/FloatingWindow.js.map +1 -1
- package/dist/browser/layout/Navigation.js +7 -6
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +373 -0
- package/dist/browser/layout/PageTitle.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +8 -6
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/Panes.js +23 -15
- package/dist/browser/layout/Panes.js.map +1 -1
- package/dist/browser/layout/PullToRefresh.js +13 -4
- package/dist/browser/layout/PullToRefresh.js.map +1 -1
- package/dist/browser/layout/Settings.js +14 -12
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SettingsCollection.js +6 -5
- package/dist/browser/layout/SettingsCollection.js.map +1 -1
- package/dist/browser/layout/SettingsModal.js +3 -1
- package/dist/browser/layout/SettingsModal.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +821 -12
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js +3 -2
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/floating-window-messages.js +28 -0
- package/dist/browser/layout/floating-window-messages.js.map +1 -0
- package/dist/browser/layout/index.js +2 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/layout/page-title-controller.js +169 -0
- package/dist/browser/layout/page-title-controller.js.map +1 -0
- package/dist/browser/layout/panel-dialog-messages.js +20 -0
- package/dist/browser/layout/panel-dialog-messages.js.map +1 -0
- package/dist/browser/layout/panes-messages.js +48 -0
- package/dist/browser/layout/panes-messages.js.map +1 -0
- package/dist/browser/layout/refresh-messages.js +20 -0
- package/dist/browser/layout/refresh-messages.js.map +1 -0
- package/dist/browser/layout/settings-messages.js +54 -0
- package/dist/browser/layout/settings-messages.js.map +1 -0
- package/dist/browser/layout/workspace-messages.js +56 -0
- package/dist/browser/layout/workspace-messages.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +5 -5
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +4 -2
- package/dist/browser/surfaces/ResourceCard.js.map +1 -1
- package/dist/browser/surfaces/StatCell.js +18 -6
- package/dist/browser/surfaces/StatCell.js.map +1 -1
- package/dist/browser/surfaces/Tag.js +3 -3
- package/dist/browser/surfaces/Tag.js.map +1 -1
- package/dist/browser/surfaces/avatar-messages.js +26 -0
- package/dist/browser/surfaces/avatar-messages.js.map +1 -0
- package/dist/browser/surfaces/resource-messages.js +26 -0
- package/dist/browser/surfaces/resource-messages.js.map +1 -0
- package/dist/browser/widgets/Widget.js +6 -0
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +3 -1
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js +3 -1
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/filter-messages.js +20 -0
- package/dist/ssr/actions/filter-messages.js.map +1 -0
- package/dist/ssr/actions/spotlight-messages.js +16 -0
- package/dist/ssr/actions/spotlight-messages.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +47 -41
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +23 -21
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatRoot.js +3 -3
- package/dist/ssr/chat/ChatRoot.js.map +1 -1
- package/dist/ssr/chat/ChatTimeline.js +11 -11
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +236 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -0
- package/dist/ssr/content/Calendar.js +534 -346
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/CalendarDayView.js +800 -0
- package/dist/ssr/content/CalendarDayView.js.map +1 -0
- package/dist/ssr/content/CalendarWeekView.js +1069 -0
- package/dist/ssr/content/CalendarWeekView.js.map +1 -0
- package/dist/ssr/content/Chart.js +12 -5
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +98 -37
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/ChartExplorerControls.js +9 -7
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
- package/dist/ssr/content/ChartFilterControls.js +52 -8
- package/dist/ssr/content/ChartFilterControls.js.map +1 -1
- package/dist/ssr/content/ChartSnapshotView.js +3 -3
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
- package/dist/ssr/content/DataTable.js +77 -53
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/Docs.js +3 -1
- package/dist/ssr/content/Docs.js.map +1 -1
- package/dist/ssr/content/FileBrowser.js +30 -26
- package/dist/ssr/content/FileBrowser.js.map +1 -1
- package/dist/ssr/content/FileTree.js +9 -7
- package/dist/ssr/content/FileTree.js.map +1 -1
- package/dist/ssr/content/FileView.js +37 -28
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/Lightbox.js +8 -6
- package/dist/ssr/content/Lightbox.js.map +1 -1
- package/dist/ssr/content/LogEntriesTable.js +3 -3
- package/dist/ssr/content/LogEntriesTable.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +24 -22
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/Pagination.js +6 -6
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +15 -13
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/RangePicker.js +3 -1
- package/dist/ssr/content/RangePicker.js.map +1 -1
- package/dist/ssr/content/StructuredDataPreview.js +3 -1
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
- package/dist/ssr/content/Timeline.js +13 -11
- package/dist/ssr/content/Timeline.js.map +1 -1
- package/dist/ssr/content/VideoPlayer.js +5 -5
- package/dist/ssr/content/VideoPlayer.js.map +1 -1
- package/dist/ssr/content/VirtualFeed.js +6 -4
- package/dist/ssr/content/VirtualFeed.js.map +1 -1
- package/dist/ssr/content/ZoomPanViewport.js +7 -4
- package/dist/ssr/content/ZoomPanViewport.js.map +1 -1
- package/dist/ssr/content/calendar-day-scroll.js +98 -0
- package/dist/ssr/content/calendar-day-scroll.js.map +1 -0
- package/dist/ssr/content/calendar-days.js +408 -0
- package/dist/ssr/content/calendar-days.js.map +1 -0
- package/dist/ssr/content/calendar-dialogs.js +159 -0
- package/dist/ssr/content/calendar-dialogs.js.map +1 -0
- package/dist/ssr/content/calendar-messages.js +249 -3
- package/dist/ssr/content/calendar-messages.js.map +1 -1
- package/dist/ssr/content/calendar-pointer.js +19 -6
- package/dist/ssr/content/calendar-pointer.js.map +1 -1
- package/dist/ssr/content/calendar-shared.js +261 -0
- package/dist/ssr/content/calendar-shared.js.map +1 -0
- package/dist/ssr/content/calendar-time-view.js +1306 -0
- package/dist/ssr/content/calendar-time-view.js.map +1 -0
- package/dist/ssr/content/chart-messages.js +146 -0
- package/dist/ssr/content/chart-messages.js.map +1 -0
- package/dist/ssr/content/collection-selection.js +2 -0
- package/dist/ssr/content/collection-selection.js.map +1 -1
- package/dist/ssr/content/data-table-messages.js +24 -0
- package/dist/ssr/content/data-table-messages.js.map +1 -0
- package/dist/ssr/content/docs-messages.js +24 -0
- package/dist/ssr/content/docs-messages.js.map +1 -0
- package/dist/ssr/content/feed-messages.js +34 -0
- package/dist/ssr/content/feed-messages.js.map +1 -0
- package/dist/ssr/content/file-browser-messages.js +69 -0
- package/dist/ssr/content/file-browser-messages.js.map +1 -0
- package/dist/ssr/content/file-view-messages.js +64 -0
- package/dist/ssr/content/file-view-messages.js.map +1 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/lightbox-messages.js +36 -0
- package/dist/ssr/content/lightbox-messages.js.map +1 -0
- package/dist/ssr/content/log-entries-messages.js +20 -0
- package/dist/ssr/content/log-entries-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-block-messages.js +24 -0
- package/dist/ssr/content/markdown-info-block-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-blocks.js +3 -3
- package/dist/ssr/content/markdown-info-blocks.js.map +1 -1
- package/dist/ssr/content/markdown-links.js +2 -2
- package/dist/ssr/content/markdown-links.js.map +1 -1
- package/dist/ssr/content/markdown-reference-messages.js +30 -0
- package/dist/ssr/content/markdown-reference-messages.js.map +1 -0
- package/dist/ssr/content/pagination-messages.js +38 -0
- package/dist/ssr/content/pagination-messages.js.map +1 -0
- package/dist/ssr/content/pdf-messages.js +43 -0
- package/dist/ssr/content/pdf-messages.js.map +1 -0
- package/dist/ssr/content/range-picker-messages.js +20 -0
- package/dist/ssr/content/range-picker-messages.js.map +1 -0
- package/dist/ssr/content/structured-data-messages.js +22 -0
- package/dist/ssr/content/structured-data-messages.js.map +1 -0
- package/dist/ssr/content/timeline-messages.js +62 -0
- package/dist/ssr/content/timeline-messages.js.map +1 -0
- package/dist/ssr/content/video-messages.js +24 -0
- package/dist/ssr/content/video-messages.js.map +1 -0
- package/dist/ssr/content/viewport-messages.js +28 -0
- package/dist/ssr/content/viewport-messages.js.map +1 -0
- package/dist/ssr/feedback/HoverPreview.js +34 -6
- package/dist/ssr/feedback/HoverPreview.js.map +1 -1
- package/dist/ssr/feedback/InstallGuide.js +18 -18
- package/dist/ssr/feedback/InstallGuide.js.map +1 -1
- package/dist/ssr/feedback/install-messages.js +104 -0
- package/dist/ssr/feedback/install-messages.js.map +1 -0
- package/dist/ssr/feedback/prompt-messages.js +65 -0
- package/dist/ssr/feedback/prompt-messages.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +14 -11
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast-messages.js +18 -0
- package/dist/ssr/feedback/toast-messages.js.map +1 -0
- package/dist/ssr/feedback/toast.js +4 -3
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/index.js +1 -1
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteEditor.js +5 -3
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteSelect.js +10 -8
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js +4 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/ChoiceInputs.js +5 -5
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
- package/dist/ssr/inputs/Combobox.js +3 -1
- package/dist/ssr/inputs/Combobox.js.map +1 -1
- package/dist/ssr/inputs/FileDropTarget.js +6 -6
- package/dist/ssr/inputs/FileDropTarget.js.map +1 -1
- package/dist/ssr/inputs/FileInputs.js +29 -20
- package/dist/ssr/inputs/FileInputs.js.map +1 -1
- package/dist/ssr/inputs/MultiSelectInput.js +7 -5
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
- package/dist/ssr/inputs/NumberInput.js +4 -2
- package/dist/ssr/inputs/NumberInput.js.map +1 -1
- package/dist/ssr/inputs/QrScanner.js +4 -4
- package/dist/ssr/inputs/QrScanner.js.map +1 -1
- package/dist/ssr/inputs/Select.js +7 -5
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/SelectChip.js +3 -3
- package/dist/ssr/inputs/SelectChip.js.map +1 -1
- package/dist/ssr/inputs/SignatureInput.js +9 -3
- package/dist/ssr/inputs/SignatureInput.js.map +1 -1
- package/dist/ssr/inputs/SpecialInputs.js +4 -2
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
- package/dist/ssr/inputs/TagEditor.js +8 -6
- package/dist/ssr/inputs/TagEditor.js.map +1 -1
- package/dist/ssr/inputs/TagsInput.js +5 -5
- package/dist/ssr/inputs/TagsInput.js.map +1 -1
- package/dist/ssr/inputs/TemplateEditor.js +5 -5
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +3 -1
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/completion-messages.js +24 -0
- package/dist/ssr/inputs/completion-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop-messages.js +63 -0
- package/dist/ssr/inputs/file-drop-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop.js.map +1 -1
- package/dist/ssr/inputs/file-input-messages.js +60 -0
- package/dist/ssr/inputs/file-input-messages.js.map +1 -0
- package/dist/ssr/inputs/icon-messages.js +22 -0
- package/dist/ssr/inputs/icon-messages.js.map +1 -0
- package/dist/ssr/inputs/input-messages.js +38 -0
- package/dist/ssr/inputs/input-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +9 -5
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/Toolbar.js +13 -13
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/ssr/inputs/markdown/editor-messages.js +43 -0
- package/dist/ssr/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/ssr/inputs/qr-messages.js +26 -0
- package/dist/ssr/inputs/qr-messages.js.map +1 -0
- package/dist/ssr/inputs/select-messages.js +63 -0
- package/dist/ssr/inputs/select-messages.js.map +1 -0
- package/dist/ssr/inputs/tag-messages.js +44 -0
- package/dist/ssr/inputs/tag-messages.js.map +1 -0
- package/dist/ssr/inputs/template-messages.js +22 -0
- package/dist/ssr/inputs/template-messages.js.map +1 -0
- package/dist/ssr/internal/render-error-messages.js +20 -0
- package/dist/ssr/internal/render-error-messages.js.map +1 -0
- package/dist/ssr/internal/render-error.js +3 -1
- package/dist/ssr/internal/render-error.js.map +1 -1
- package/dist/ssr/internal/text-selection.js +101 -0
- package/dist/ssr/internal/text-selection.js.map +1 -0
- package/dist/ssr/intl/messages.js +6 -1155
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +219 -103
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js +1 -0
- package/dist/ssr/layout/BottomSheet.js.map +1 -1
- package/dist/ssr/layout/Discussion.js +8 -5
- package/dist/ssr/layout/Discussion.js.map +1 -1
- package/dist/ssr/layout/FloatingWindow.js +8 -5
- package/dist/ssr/layout/FloatingWindow.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +6 -5
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +256 -0
- package/dist/ssr/layout/PageTitle.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +8 -6
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/Panes.js +22 -14
- package/dist/ssr/layout/Panes.js.map +1 -1
- package/dist/ssr/layout/PullToRefresh.js +13 -4
- package/dist/ssr/layout/PullToRefresh.js.map +1 -1
- package/dist/ssr/layout/Settings.js +14 -12
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SettingsCollection.js +6 -5
- package/dist/ssr/layout/SettingsCollection.js.map +1 -1
- package/dist/ssr/layout/SettingsModal.js +3 -1
- package/dist/ssr/layout/SettingsModal.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +821 -12
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js +3 -2
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/floating-window-messages.js +28 -0
- package/dist/ssr/layout/floating-window-messages.js.map +1 -0
- package/dist/ssr/layout/index.js +2 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/layout/page-title-controller.js +169 -0
- package/dist/ssr/layout/page-title-controller.js.map +1 -0
- package/dist/ssr/layout/panel-dialog-messages.js +20 -0
- package/dist/ssr/layout/panel-dialog-messages.js.map +1 -0
- package/dist/ssr/layout/panes-messages.js +48 -0
- package/dist/ssr/layout/panes-messages.js.map +1 -0
- package/dist/ssr/layout/refresh-messages.js +20 -0
- package/dist/ssr/layout/refresh-messages.js.map +1 -0
- package/dist/ssr/layout/settings-messages.js +54 -0
- package/dist/ssr/layout/settings-messages.js.map +1 -0
- package/dist/ssr/layout/workspace-messages.js +56 -0
- package/dist/ssr/layout/workspace-messages.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +5 -5
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +4 -2
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
- package/dist/ssr/surfaces/StatCell.js +2 -2
- package/dist/ssr/surfaces/StatCell.js.map +1 -1
- package/dist/ssr/surfaces/Tag.js +3 -3
- package/dist/ssr/surfaces/Tag.js.map +1 -1
- package/dist/ssr/surfaces/avatar-messages.js +26 -0
- package/dist/ssr/surfaces/avatar-messages.js.map +1 -0
- package/dist/ssr/surfaces/resource-messages.js +26 -0
- package/dist/ssr/surfaces/resource-messages.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +6 -0
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/filter-messages.d.ts +8 -0
- package/dist/types/actions/spotlight-messages.d.ts +8 -0
- package/dist/types/chat/chat-messages.d.ts +116 -0
- package/dist/types/content/Calendar.d.ts +91 -0
- package/dist/types/content/CalendarDayView.d.ts +7 -0
- package/dist/types/content/CalendarWeekView.d.ts +7 -0
- package/dist/types/content/ChartExplorer.d.ts +36 -1
- package/dist/types/content/ChartFilterControls.d.ts +6 -1
- package/dist/types/content/DataTable.d.ts +7 -0
- package/dist/types/content/FileView.d.ts +0 -10
- package/dist/types/content/calendar-day-scroll.d.ts +42 -0
- package/dist/types/content/calendar-days.d.ts +192 -0
- package/dist/types/content/calendar-dialogs.d.ts +22 -0
- package/dist/types/content/calendar-messages.d.ts +119 -1
- package/dist/types/content/calendar-pointer.d.ts +9 -0
- package/dist/types/content/calendar-shared.d.ts +69 -0
- package/dist/types/content/calendar-time-view.d.ts +252 -0
- package/dist/types/content/chart-messages.d.ts +37 -0
- package/dist/types/content/data-table-messages.d.ts +10 -0
- package/dist/types/content/docs-messages.d.ts +10 -0
- package/dist/types/content/feed-messages.d.ts +15 -0
- package/dist/types/content/file-browser-messages.d.ts +33 -0
- package/dist/types/content/file-view-messages.d.ts +30 -0
- package/dist/types/content/index.d.ts +2 -2
- package/dist/types/content/lightbox-messages.d.ts +16 -0
- package/dist/types/content/log-entries-messages.d.ts +8 -0
- package/dist/types/content/markdown-info-block-messages.d.ts +12 -0
- package/dist/types/content/markdown-reference-messages.d.ts +15 -0
- package/dist/types/content/pagination-messages.d.ts +17 -0
- package/dist/types/content/pdf-messages.d.ts +20 -0
- package/dist/types/content/range-picker-messages.d.ts +8 -0
- package/dist/types/content/structured-data-messages.d.ts +9 -0
- package/dist/types/content/timeline-messages.d.ts +29 -0
- package/dist/types/content/video-messages.d.ts +10 -0
- package/dist/types/content/viewport-messages.d.ts +12 -0
- package/dist/types/feedback/install-messages.d.ts +50 -0
- package/dist/types/feedback/prompt-messages.d.ts +31 -0
- package/dist/types/feedback/toast-messages.d.ts +9 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/inputs/completion-messages.d.ts +10 -0
- package/dist/types/inputs/file-drop-messages.d.ts +30 -0
- package/dist/types/inputs/file-drop.d.ts +3 -3
- package/dist/types/inputs/file-input-messages.d.ts +28 -0
- package/dist/types/inputs/icon-messages.d.ts +9 -0
- package/dist/types/inputs/input-messages.d.ts +17 -0
- package/dist/types/inputs/markdown/editor-messages.d.ts +20 -0
- package/dist/types/inputs/markdown/toolbar-messages.d.ts +18 -0
- package/dist/types/inputs/qr-messages.d.ts +11 -0
- package/dist/types/inputs/select-messages.d.ts +30 -0
- package/dist/types/inputs/tag-messages.d.ts +20 -0
- package/dist/types/inputs/template-messages.d.ts +9 -0
- package/dist/types/internal/render-error-messages.d.ts +8 -0
- package/dist/types/internal/text-selection.d.ts +18 -0
- package/dist/types/intl/messages.d.ts +3 -544
- package/dist/types/layout/AppWorkspace.d.ts +42 -5
- package/dist/types/layout/PageTitle.d.ts +65 -0
- package/dist/types/layout/app-workspace-controller.d.ts +12 -0
- package/dist/types/layout/app-workspace-state.d.ts +3 -2
- package/dist/types/layout/floating-window-messages.d.ts +12 -0
- package/dist/types/layout/index.d.ts +3 -0
- package/dist/types/layout/navigation-model.d.ts +7 -0
- package/dist/types/layout/page-title-controller.d.ts +13 -0
- package/dist/types/layout/panel-dialog-messages.d.ts +8 -0
- package/dist/types/layout/panes-messages.d.ts +22 -0
- package/dist/types/layout/refresh-messages.d.ts +8 -0
- package/dist/types/layout/settings-messages.d.ts +25 -0
- package/dist/types/layout/workspace-messages.d.ts +26 -0
- package/dist/types/surfaces/StatCell.d.ts +5 -0
- package/dist/types/surfaces/avatar-messages.d.ts +11 -0
- package/dist/types/surfaces/resource-messages.d.ts +11 -0
- package/dist/types/widgets/Widget.d.ts +5 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["content/Calendar.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { dates as calendar, type DateContext } from \"@k2b/stdlib\";\nimport type { JSX, ParentProps } from \"solid-js\";\nimport { createEffect, createMemo, createSignal, For, mergeProps, on, onCleanup, onMount, Show, untrack } from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport type { DropdownAction, DropdownChoice, DropdownItem, DropdownSection } from \"../actions/Dropdown\";\nimport { GestureMenu } from \"../actions/GestureMenu\";\nimport SegmentedControl from \"../actions/SegmentedControl\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { layoutCalendarIntervals } from \"./calendar-event-layout\";\nimport { useCalendarMessages } from \"./calendar-messages\";\nimport { fitMonthWeek, layoutMonthWeek, monthLaneCapacity } from \"./calendar-month-layout\";\nimport { calendarDayIndexAtPoint, calendarMinuteAtPoint, startCalendarPointerSession } from \"./calendar-pointer\";\n\nexport type CalendarView = \"day\" | \"week\" | \"month\" | \"year\" | \"mobile-month\";\n\nexport type CalendarEventColor = \"blue\" | \"emerald\" | \"amber\" | \"red\" | \"violet\" | \"cyan\" | \"zinc\";\n\nexport type CalendarEvent = {\n id: string;\n title: string;\n start: Date | string;\n end?: Date | string;\n allDay?: boolean;\n color?: CalendarEventColor;\n colorHex?: string;\n href?: string;\n dataSpaceItemId?: string;\n meta?: string;\n description?: string;\n /**\n * `marker` draws a point in time, such as a deadline, as a colored marker\n * beside its title instead of a filled band.\n */\n display?: \"event\" | \"background\" | \"marker\";\n /**\n * Short text the accessible name adds after the title and time, for state the event shows only visually, such as\n * a priority flag in custom `renderEvent` content.\n */\n accessibleDetail?: string;\n location?: string;\n calendarName?: string;\n attendees?: CalendarAttendee[];\n resources?: CalendarResource[];\n recurrence?: CalendarRecurrence;\n};\n\nexport type CalendarAttendee = {\n name: string;\n status?: \"accepted\" | \"declined\" | \"tentative\" | \"needs-action\";\n};\n\nexport type CalendarResource = {\n name: string;\n kind?: \"room\" | \"equipment\" | \"link\" | \"other\";\n};\n\nexport type CalendarRecurrence = {\n rrule: string;\n exdate?: Array<Date | string>;\n recurrenceId?: Date | string;\n};\n\nexport type CalendarLabels = Partial<{\n today: string;\n day: string;\n week: string;\n month: string;\n year: string;\n allDay: string;\n noEvents: string;\n previous: string;\n next: string;\n}>;\n\nexport type CalendarEventRenderContext = {\n compact: boolean;\n fill: boolean;\n start: Date;\n end: Date;\n allDay: boolean;\n durationHours: number;\n timeLabel: string;\n /** Month view: the start time to show before the title of a one-day timed entry; absent on bars and elsewhere. */\n leadingTime?: string;\n};\n\n/** A view the application adds to the switcher; the calendar shows its header and toolbar, the application the body. */\nexport type CalendarCustomView<V extends string = string> = {\n value: V;\n label: string;\n};\n\nexport type CalendarProps<V extends string = never> = {\n date: Date | string;\n events: CalendarEvent[];\n view?: CalendarView | V;\n views?: CalendarView[];\n /** Views after the built-in ones. While one is active, `children` is the body and the header pages by day. */\n customViews?: CalendarCustomView<V>[];\n /** The body of the active custom view. */\n children?: JSX.Element;\n labels?: CalendarLabels;\n /** stdlib date context used for timezone-aware rendering and calendar math. */\n dateConfig?: DateContext;\n /** Convenience override for dateConfig.timeZone. */\n timeZone?: string;\n firstDayOfWeek?: 0 | 1;\n withWeekNumbers?: boolean;\n startHour?: number;\n endHour?: number;\n visibleStartHour?: number;\n visibleEndHour?: number;\n allDayMaxHeightRem?: number;\n hideAllDay?: boolean;\n selectedDate?: Date | string;\n selectedEventId?: string;\n dayBadges?: Record<string, CalendarDayBadge>;\n // Methods, not function properties: props for custom views stay assignable to the plain props the overloads expose.\n getViewHref?(view: CalendarView | V): string;\n getDateHref?(date: Date, view: CalendarView | V): string;\n getEventHref?: (event: CalendarEvent) => string | undefined;\n renderEvent?: (event: CalendarEvent, context: CalendarEventRenderContext) => JSX.Element;\n /** Progressively enhance canonical calendar links after the app has loaded their target state. */\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n /** Progressively enhance canonical links without a document view transition. */\n onNavigateHref?: (href: string) => void;\n /** Optionally preload the target behind a canonical calendar link. */\n onPrefetch?: (href: string) => void;\n navigationPending?: boolean;\n onViewChange?(view: CalendarView | V): void;\n onDateChange?(date: Date, view: CalendarView | V): void;\n /** One activation contract for pointer and keyboard input. */\n onEventActivate?: (event: CalendarEvent) => void;\n /** Pointer gesture used for activation. Keyboard activation is always immediate. */\n eventActivation?: \"single\" | \"double\";\n onEventDrop?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onEventResize?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onSlotActivate?: (slot: CalendarEventTimeChange) => void;\n /** Pointer gesture used for empty slots. Keyboard activation is always immediate. */\n slotActivation?: \"single\" | \"double\";\n /**\n * Month view: the selected days changed. `null` when no day is selected, for example after paging to another month\n * or switching to another view.\n */\n onSelectionChange?: (range: CalendarEventTimeChange | null) => void;\n /**\n * Month view: the application's entries of the menu that a right-click, Shift+F10, or a long press opens on a day or\n * on the selected days. The calendar heads them with the days and adds Open day, Open week, and Clear selection;\n * without this prop the menu has only those. `quickCreate` opens the quick create at the days, passing `create` on to\n * `renderQuickCreate`.\n */\n selectionMenu?: (range: CalendarEventTimeChange, controls: CalendarSelectionControls) => readonly DropdownItem[];\n /**\n * Month view: the content of the quick create at the selected days. It opens quietly after a click, keeping the\n * focus in the grid until the person types or tabs into it (Space still lists the day), and with the focus after a\n * drag, a double-click, Enter, N, or `quickCreate`.\n */\n renderQuickCreate?: (range: CalendarEventTimeChange, controls: CalendarQuickCreateControls) => JSX.Element;\n toolbarActions?: JSX.Element;\n /** Application controls, such as filters, right after the period title. */\n toolbarContent?: JSX.Element;\n class?: string;\n};\n\nexport type CalendarSelectionControls = {\n /** Opens the quick create at the days of the menu; `create` names what to create, as the application defines it. */\n quickCreate: (create?: string) => void;\n};\n\nexport type CalendarQuickCreateControls = {\n /** What the person asked to create through `quickCreate`; absent after a click, a drag, or the keyboard. */\n create?: string;\n /** Closes the quick create and returns the focus to the selected day; once another quick create replaced it, nothing. */\n close: () => void;\n};\n\nexport type CalendarEventTimeChange = {\n start: Date;\n end: Date;\n allDay?: boolean;\n};\n\nexport type CalendarDayBadge = {\n icon?: string;\n label: string;\n};\n\ntype NormalizedEvent = CalendarEvent & {\n startDate: Date;\n endDate: Date;\n dayKey: string;\n sourceStartDate: Date;\n sourceEndDate: Date;\n};\n\ntype CalendarPreview = CalendarEventTimeChange & {\n id: string;\n title?: string;\n};\n\ntype TimedEventLayout = {\n event: NormalizedEvent;\n lane: number;\n lanes: number;\n groupId: number;\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\ntype TimedOverflowLayout = {\n groupId: number;\n hiddenEvents: NormalizedEvent[];\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\n/** What the built-in views read from the props: they only ever link to built-in views. */\ntype CalendarOwner = Omit<CalendarProps, \"view\" | \"customViews\" | \"children\">;\n\nconst ownerDateConfig = (owner: CalendarOwner): DateContext => ({\n ...owner.dateConfig,\n timeZone: owner.timeZone ?? owner.dateConfig?.timeZone,\n firstDayOfWeek: owner.firstDayOfWeek ?? owner.dateConfig?.firstDayOfWeek ?? owner.dateConfig?.weekStartsOn ?? 1,\n});\n\nconst dateOnlyPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nconst parseDate = (value: Date | string, context?: DateContext): Date => {\n if (value instanceof Date) return new Date(value);\n if (dateOnlyPattern.test(value)) return calendar.parseCalendarDate(value, context);\n const normalized = value.includes(\"T\") ? value : value.replace(\" \", \"T\");\n const parsed = new Date(normalized);\n if (!Number.isNaN(parsed.getTime())) return parsed;\n const [year, month = \"1\", day = \"1\"] = value.split(\"-\");\n return new Date(Number(year), Number(month) - 1, Number(day), 12);\n};\n\nconst validDate = (value: Date): boolean => !Number.isNaN(value.getTime());\n\nconst weekNumber = (date: Date): number => {\n const target = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n const day = target.getUTCDay() || 7;\n target.setUTCDate(target.getUTCDate() + 4 - day);\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n};\nconst zonedWeekNumber = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return weekNumber(date);\n const [year = \"1970\", month = \"1\", day = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return weekNumber(new Date(Date.UTC(Number(year), Number(month) - 1, Number(day))));\n};\n\nconst formatTime = (date: Date, context?: DateContext): string => calendar.formatTime(date, context);\nconst formatDay = (date: Date, context?: DateContext): string =>\n date.toLocaleDateString(context?.locale ?? \"en\", { weekday: \"short\", day: \"numeric\", timeZone: context?.timeZone });\nconst formatMonth = (date: Date, context?: DateContext): string => calendar.formatMonthYear(date, context);\nconst zonedYearMonth = (date: Date, context?: DateContext): { year: number; month: number } => {\n const [year = \"1970\", month = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return { year: Number(year), month: Number(month) - 1 };\n};\nconst zonedMonthDate = (year: number, month: number, context?: DateContext): Date => {\n const value = `${year}-${String(month + 1).padStart(2, \"0\")}-01T12:00`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\n\nconst startOfDay = (date: Date, context?: DateContext): Date => calendar.startOfDay(date, context);\nconst endOfDay = (date: Date, context?: DateContext): Date => calendar.endOfDay(date, context);\nconst isStartOfDay = (date: Date, context?: DateContext): boolean => date.getTime() === startOfDay(date, context).getTime();\nconst addMinutes = (date: Date, minutes: number): Date => new Date(date.getTime() + minutes * 60 * 1000);\nconst zonedHour = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return date.getHours() + date.getMinutes() / 60;\n const value = calendar.instantToZonedInput(date, context.timeZone);\n return Number(value.slice(11, 13)) + Number(value.slice(14, 16)) / 60;\n};\nconst zonedSlot = (day: Date, hour: number, context?: DateContext): Date => {\n return zonedMinuteSlot(day, hour * 60, context);\n};\nconst zonedMinuteSlot = (day: Date, minuteOfDay: number, context?: DateContext): Date => {\n const bounded = Math.max(0, Math.min(23 * 60 + 59, minuteOfDay));\n const hour = Math.floor(bounded / 60);\n const minute = bounded % 60;\n const value = `${calendar.formatDateKey(day, context)}T${String(hour).padStart(2, \"0\")}:${String(minute).padStart(2, \"0\")}`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\nconst normalizeEvents = (events: CalendarEvent[], context?: DateContext): NormalizedEvent[] =>\n events.flatMap((event) => {\n const startDate = parseDate(event.start, context);\n if (!validDate(startDate)) return [];\n const parsedEnd = event.end ? parseDate(event.end, context) : null;\n const endDate = parsedEnd && validDate(parsedEnd) ? parsedEnd : new Date(startDate.getTime() + 60 * 60 * 1000);\n const duration = Math.max(60 * 60 * 1000, endDate.getTime() - startDate.getTime());\n const rangeEnd = endDate > startDate ? endDate : new Date(startDate.getTime() + duration);\n const startKey = calendar.formatDateKey(startDate, context);\n const endKey = calendar.formatDateKey(rangeEnd, context);\n if (!event.allDay && startKey === endKey) {\n return [\n {\n ...event,\n startDate,\n endDate: rangeEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: startKey,\n },\n ];\n }\n const lastDay =\n event.allDay && isStartOfDay(rangeEnd, context)\n ? calendar.addDays(startOfDay(rangeEnd, context), -1, context)\n : startOfDay(rangeEnd, context);\n const days: NormalizedEvent[] = [];\n for (let day = startOfDay(startDate, context); day <= lastDay; day = calendar.addDays(day, 1, context)) {\n const segmentStart = day.getTime() === startOfDay(startDate, context).getTime() ? startDate : startOfDay(day, context);\n const segmentEnd = day.getTime() === startOfDay(rangeEnd, context).getTime() ? rangeEnd : endOfDay(day, context);\n days.push({\n ...event,\n startDate: segmentStart,\n endDate: segmentEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: calendar.formatDateKey(day, context),\n allDay: event.allDay,\n });\n }\n return days;\n });\n\nconst eventHref = (props: CalendarOwner, event: CalendarEvent): string | undefined => props.getEventHref?.(event) ?? event.href;\n\nconst moveEventTo = (event: NormalizedEvent, target: Date, allDay = false, context?: DateContext): CalendarEventTimeChange => {\n const duration = Math.max(30 * 60 * 1000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const start = allDay ? startOfDay(target, context) : new Date(target);\n start.setSeconds(0, 0);\n return { start, end: new Date(start.getTime() + duration), allDay };\n};\n\nconst moveEventToDay = (event: NormalizedEvent, day: Date, context?: DateContext): CalendarEventTimeChange => {\n if (event.allDay) return moveEventTo(event, startOfDay(day, context), true, context);\n const localStart = context?.timeZone ? calendar.instantToZonedInput(event.sourceStartDate, context.timeZone) : null;\n const hour = localStart ? Number(localStart.slice(11, 13)) : event.sourceStartDate.getHours();\n const minute = localStart ? Number(localStart.slice(14, 16)) : event.sourceStartDate.getMinutes();\n return moveEventTo(event, zonedMinuteSlot(day, hour * 60 + minute, context), false, context);\n};\n\nconst eventTimeChanged = (event: NormalizedEvent, next: CalendarEventTimeChange): boolean =>\n event.sourceStartDate.getTime() !== next.start.getTime() ||\n event.sourceEndDate.getTime() !== next.end.getTime() ||\n Boolean(event.allDay) !== Boolean(next.allDay);\n\nconst previewSegments = (preview: CalendarPreview | null, days: Date[], context?: DateContext): NormalizedEvent[] =>\n preview\n ? normalizeEvents(\n [\n {\n id: `preview-${preview.id}`,\n title: preview.title ?? \"\",\n start: preview.start,\n end: preview.end,\n allDay: preview.allDay,\n color: \"blue\",\n },\n ],\n context,\n ).filter((event) => days.some((day) => event.dayKey === calendar.formatDateKey(day, context)))\n : [];\n\nconst timedEventLayouts = (events: NormalizedEvent[]): TimedEventLayout[] => {\n return layoutCalendarIntervals(events, (event) => ({\n start: event.startDate.getTime(),\n end: event.endDate.getTime(),\n })).map(({ item: event, lane, lanes, groupId, groupStart, groupEnd }) => ({\n event,\n lane,\n lanes,\n groupId,\n groupStartDate: new Date(groupStart),\n groupEndDate: new Date(groupEnd),\n }));\n};\n\nconst EventChip = (props: {\n event: NormalizedEvent;\n owner: CalendarOwner;\n href?: string;\n compact?: boolean;\n fill?: boolean;\n moving?: boolean;\n /** Replaces the title and time at the start of the accessible name, for example with the dates a long event spans. */\n label?: string;\n /** A bar of a long event that goes on before or after the week row it sits in. */\n continuesBefore?: boolean;\n continuesAfter?: boolean;\n /** Month view: an all-day or multi-day entry drawn as a bar. */\n bar?: boolean;\n /** Short dates at the torn ends of a bar, where it continues in another week row. */\n hintStart?: string;\n hintEnd?: string;\n /** Month view: the start time before the title. */\n leadingTime?: string;\n onMovePointerDown?: (event: PointerEvent, onActivate: () => void) => void;\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const color = () => props.event.color ?? \"blue\";\n const selected = () => Boolean(props.owner.selectedEventId) && props.owner.selectedEventId === props.event.id;\n const style = () => (props.event.colorHex ? { \"--k2b-calendar-accent\": props.event.colorHex } : undefined);\n const isInteractive = () => Boolean(props.owner.onEventActivate);\n const durationHours = () => (props.event.endDate.getTime() - props.event.startDate.getTime()) / 3_600_000;\n const short = () => Boolean(props.fill && !props.event.allDay && durationHours() < 0.75);\n const showTime = () => !props.event.allDay && !props.compact && durationHours() >= 0.75;\n const showLocation = () => Boolean(props.event.location && !props.compact && durationHours() >= 1.25);\n const showDescription = () =>\n Boolean(props.event.description?.trim() && props.fill && !props.event.allDay && !props.compact && durationHours() >= 1.5);\n const timeLabel = () => `${formatTime(props.event.startDate, dateConfig())} - ${formatTime(props.event.endDate, dateConfig())}`;\n const ariaLabel = () => {\n const label = props.label\n ? props.label\n : props.event.allDay\n ? props.event.title\n : messages().calendarEventTime({\n title: props.event.title,\n start: formatTime(props.event.startDate, dateConfig()),\n end: formatTime(props.event.endDate, dateConfig()),\n });\n return props.event.accessibleDetail ? `${label}, ${props.event.accessibleDetail}` : label;\n };\n const renderedEvent = () =>\n props.owner.renderEvent?.(props.event, {\n compact: props.compact ?? false,\n fill: props.fill ?? false,\n start: props.event.startDate,\n end: props.event.endDate,\n allDay: props.event.allDay ?? false,\n durationHours: durationHours(),\n timeLabel: timeLabel(),\n leadingTime: props.leadingTime,\n });\n const defaultContent = (\n <>\n <Show when={props.leadingTime}>\n <span class=\"k2b-calendar-event__time\">{props.leadingTime}</span>\n </Show>\n <span class=\"k2b-calendar-event__title\">\n <Show when={props.event.display === \"marker\"}>\n <span class=\"k2b-calendar-event__marker\" aria-hidden=\"true\" />\n </Show>\n {props.event.title}\n </span>\n <Show when={showTime()}>\n <span class=\"k2b-calendar-event__meta\">{timeLabel()}</span>\n </Show>\n <Show when={showLocation()}>\n <span class=\"k2b-calendar-event__meta\">{props.event.location}</span>\n </Show>\n <Show when={showDescription()}>\n <span class=\"k2b-calendar-event__description\">{props.event.description}</span>\n </Show>\n </>\n );\n const content = () => (\n <>\n <Show when={props.hintStart}>\n <span class=\"k2b-calendar-event__hint\" data-edge=\"start\" aria-hidden=\"true\">\n {props.hintStart}\n </span>\n </Show>\n {renderedEvent() ?? defaultContent}\n <Show when={props.hintEnd}>\n <span class=\"k2b-calendar-event__hint\" data-edge=\"end\" aria-hidden=\"true\">\n {props.hintEnd}\n </span>\n </Show>\n </>\n );\n const isActionable = () => isInteractive() || Boolean(props.onMovePointerDown);\n let suppressClickUntil = 0;\n const onClick = (event: MouseEvent) => {\n if (performance.now() < suppressClickUntil) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (!props.owner.onEventActivate || props.owner.eventActivation === \"double\") return;\n event.preventDefault();\n event.stopPropagation();\n props.owner.onEventActivate(props.event);\n };\n const onDoubleClick = (event: MouseEvent) => {\n if (!props.owner.onEventActivate || props.owner.eventActivation !== \"double\") return;\n event.preventDefault();\n event.stopPropagation();\n props.owner.onEventActivate(props.event);\n };\n const onButtonKeyDown = (event: KeyboardEvent) => {\n if (!isInteractive() || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n props.owner.onEventActivate?.(props.event);\n };\n const onPointerDown = (event: PointerEvent) => {\n if (event.pointerType === \"touch\") return;\n if (props.onMovePointerDown) event.stopPropagation();\n props.onMovePointerDown?.(event, () => {\n suppressClickUntil = performance.now() + 400;\n });\n };\n\n return props.href ? (\n <a\n href={props.href}\n class=\"k2b-calendar-event\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-continues-before={props.continuesBefore ? \"true\" : undefined}\n data-continues-after={props.continuesAfter ? \"true\" : undefined}\n data-bar={props.bar ? \"true\" : undefined}\n data-interactive={isInteractive() ? \"true\" : undefined}\n data-display={props.event.display}\n data-space-item-id={props.event.dataSpaceItemId}\n style={style()}\n draggable={props.onMovePointerDown ? false : undefined}\n onClick={onClick}\n onDblClick={onDoubleClick}\n onDragStart={props.onMovePointerDown ? (event) => event.preventDefault() : undefined}\n onPointerDown={onPointerDown}\n aria-label={ariaLabel()}\n >\n {content()}\n </a>\n ) : isActionable() ? (\n <button\n type=\"button\"\n class=\"k2b-calendar-event\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-continues-before={props.continuesBefore ? \"true\" : undefined}\n data-continues-after={props.continuesAfter ? \"true\" : undefined}\n data-bar={props.bar ? \"true\" : undefined}\n data-interactive=\"true\"\n data-display={props.event.display}\n style={style()}\n onClick={onClick}\n onDblClick={onDoubleClick}\n onPointerDown={onPointerDown}\n onKeyDown={onButtonKeyDown}\n aria-label={ariaLabel()}\n >\n {content()}\n </button>\n ) : (\n <div\n class=\"k2b-calendar-event\"\n role=\"group\"\n data-calendar-event=\"\"\n data-color={props.event.colorHex ? undefined : color()}\n data-selected={selected() ? \"true\" : undefined}\n data-compact={props.compact ? \"true\" : undefined}\n data-fill={props.fill ? \"true\" : undefined}\n data-short={short() ? \"true\" : undefined}\n data-moving={props.moving ? \"true\" : undefined}\n data-continues-before={props.continuesBefore ? \"true\" : undefined}\n data-continues-after={props.continuesAfter ? \"true\" : undefined}\n data-bar={props.bar ? \"true\" : undefined}\n data-interactive={undefined}\n data-display={props.event.display}\n style={style()}\n aria-label={ariaLabel()}\n >\n {content()}\n </div>\n );\n};\n\nconst slotInteractionProps = (\n owner: CalendarOwner,\n slot: () => CalendarEventTimeChange,\n suppressed?: () => boolean,\n nativeControl = false,\n) => {\n const isSlotChild = (event: Event) => {\n if (!(event.target instanceof Element)) return false;\n const control = event.target.closest(\"a,button,[data-calendar-event]\");\n return Boolean(control && control !== event.currentTarget);\n };\n const interactive = Boolean(owner.onSlotActivate);\n const activate = (event: Event) => {\n if (!owner.onSlotActivate || isSlotChild(event) || suppressed?.()) return;\n event.preventDefault();\n owner.onSlotActivate(slot());\n };\n return {\n role: interactive && !nativeControl ? (\"button\" as const) : undefined,\n tabIndex: interactive && !nativeControl ? 0 : undefined,\n onClick: (event: MouseEvent) => {\n if (owner.slotActivation === \"double\") return;\n activate(event);\n },\n onDblClick: (event: MouseEvent) => {\n if (owner.slotActivation !== \"double\") return;\n activate(event);\n },\n onKeyDown: nativeControl\n ? undefined\n : (event: KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") activate(event);\n },\n };\n};\n\ntype CalendarNavigationLinkProps = ParentProps<{\n owner: CalendarOwner;\n href: string;\n anchorProps?: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"children\" | \"href\" | \"onClick\"> & {\n \"data-divider\"?: string;\n \"data-outside\"?: string;\n \"data-size\"?: string;\n \"data-today\"?: string;\n \"data-variant\"?: string;\n };\n}>;\n\n/** A real anchor is the baseline; the optional handler only enhances it after hydration. */\nconst CalendarNavigationLink = (props: CalendarNavigationLinkProps): JSX.Element => {\n const preload = () => props.owner.onPrefetch?.(props.href);\n const navigateHref: JSX.EventHandler<HTMLAnchorElement, MouseEvent> = (event) => {\n const anchor = event.currentTarget;\n if (\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey ||\n (anchor.target && anchor.target !== \"_self\") ||\n anchor.hasAttribute(\"download\") ||\n new URL(anchor.href).origin !== window.location.origin\n ) {\n return;\n }\n event.preventDefault();\n props.owner.onNavigateHref?.(props.href);\n };\n return props.owner.onNavigateHref ? (\n <a {...props.anchorProps} href={props.href} onClick={navigateHref} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n ) : props.owner.onNavigate ? (\n <Link\n {...props.anchorProps}\n href={props.href}\n scroll=\"preserve\"\n onNavigate={props.owner.onNavigate}\n onPointerEnter={preload}\n onFocus={preload}\n >\n {props.children}\n </Link>\n ) : (\n <a {...props.anchorProps} href={props.href} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n );\n};\n\nconst CalendarViewLinks = <V extends string>(props: {\n owner: CalendarProps<V>;\n view: CalendarView | V;\n options: Array<{ value: CalendarView | V; label: string }>;\n /** The day selected in the month view: the other views open at it. */\n focusDay?: Date | null;\n}): JSX.Element => {\n const messages = useUiMessages();\n const refs: HTMLAnchorElement[] = [];\n const selectRelative = (currentIndex: number, direction: -1 | 1) => {\n if (props.options.length === 0) return;\n refs[(currentIndex + direction + props.options.length) % props.options.length]?.click();\n };\n const onKeyDown = (event: KeyboardEvent, index: number) => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n selectRelative(index, 1);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n selectRelative(index, -1);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n refs[event.key === \"Home\" ? 0 : props.options.length - 1]?.click();\n }\n };\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={messages().calendarView}\n aria-orientation=\"horizontal\"\n class=\"k2b-segmented-control k2b-calendar-view-switcher\"\n >\n <For each={props.options}>\n {(option, index) => {\n const active = () => (props.view === \"mobile-month\" ? \"month\" : props.view) === option.value;\n const href = () => {\n const day = props.focusDay;\n const atDay = day && !active() ? props.owner.getDateHref?.(day, option.value) : undefined;\n return atDay ?? props.owner.getViewHref?.(option.value) ?? \"#\";\n };\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={href()}\n anchorProps={{\n ref: (element) => {\n refs[index()] = element;\n },\n role: \"radio\",\n \"aria-checked\": active(),\n tabIndex: active() ? 0 : -1,\n class: \"k2b-segmented-control__option\",\n \"data-divider\":\n index() < props.options.length - 1 &&\n !active() &&\n (props.view === \"mobile-month\" ? \"month\" : props.view) !== props.options[index() + 1]?.value\n ? \"true\"\n : undefined,\n onKeyDown: (event) => onKeyDown(event, index()),\n }}\n >\n {option.label}\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n );\n};\n\n/**\n * The same day some months later, or the last day of that month when it is shorter: a step from January 31 lands on\n * February 28, never in March. stdlib's `addMonths` runs over into the next month.\n */\nconst addMonthsClamped = (date: Date, months: number, dateConfig: DateContext): Date => {\n const moved = calendar.addMonths(date, months, dateConfig);\n if (calendar.formatDateKey(moved, dateConfig).slice(8) === calendar.formatDateKey(date, dateConfig).slice(8)) return moved;\n return calendar.addDays(calendar.startOfMonth(moved, dateConfig), -1, dateConfig);\n};\n\n/** Custom views page by day, like the day view. */\nconst adjacentCalendarDate = (date: Date, view: string, direction: -1 | 1, dateConfig: DateContext) => {\n if (view === \"year\") return addMonthsClamped(date, direction * 12, dateConfig);\n if (view === \"month\" || view === \"mobile-month\") return addMonthsClamped(date, direction, dateConfig);\n return calendar.addDays(date, direction * (view === \"week\" ? 7 : 1), dateConfig);\n};\n\n/** Opens a view at a day through the host's callbacks. Hosts may keep the view and the date apart, so both hear it. */\nconst openViewAt = <V extends string>(\n owner: Pick<CalendarProps<V>, \"onViewChange\" | \"onDateChange\">,\n date: Date,\n view: CalendarView | V,\n) => {\n owner.onViewChange?.(view);\n owner.onDateChange?.(date, view);\n};\n\nconst CalendarHeader = <V extends string>(props: {\n date: Date;\n view: CalendarView | V;\n labels: Required<CalendarLabels>;\n owner: CalendarProps<V>;\n focusDay?: Date | null;\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = () => ownerDateConfig(props.owner);\n const previous = () => adjacentCalendarDate(props.date, props.view, -1, dateConfig());\n const next = () => adjacentCalendarDate(props.date, props.view, 1, dateConfig());\n const title = () => {\n if (props.view === \"year\")\n return new Intl.DateTimeFormat(dateConfig().locale ?? \"en\", { year: \"numeric\", timeZone: dateConfig().timeZone }).format(props.date);\n if (props.view !== \"week\" && props.view !== \"month\" && props.view !== \"mobile-month\")\n return props.date.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n if (props.view === \"week\")\n return `${formatDay(calendar.startOfWeek(props.date, dateConfig()), dateConfig())} - ${formatDay(calendar.addDays(calendar.startOfWeek(props.date, dateConfig()), 6, dateConfig()), dateConfig())}`;\n return formatMonth(props.date, dateConfig());\n };\n /**\n * The titles this view can show around the current date: the months of the year, the weeks of the month, or a day\n * of each weekday in every month. Their widest one sets the title's width.\n */\n const titleWidths = createMemo(() => {\n const context = dateConfig();\n if (props.view === \"year\") return [];\n const { year } = zonedYearMonth(props.date, context);\n if (props.view === \"month\" || props.view === \"mobile-month\")\n return Array.from({ length: 12 }, (_, month) => formatMonth(zonedMonthDate(year, month, context), context));\n if (props.view === \"week\") {\n const first = calendar.startOfWeek(calendar.startOfMonth(props.date, context), context);\n return Array.from({ length: 6 }, (_, week) => {\n const start = calendar.addDays(first, week * 7, context);\n return `${formatDay(start, context)} - ${formatDay(calendar.addDays(start, 6, context), context)}`;\n });\n }\n return Array.from({ length: 12 }, (_, month) => month).flatMap((month) => {\n const first = zonedMonthDate(year, month, context);\n return Array.from({ length: 7 }, (_, offset) =>\n calendar.addDays(first, 21 + offset, context).toLocaleDateString(context.locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: context.timeZone,\n }),\n );\n });\n });\n const goDate = (date: Date) => props.owner.onDateChange?.(date, props.view);\n const goView = (view: CalendarView | V) => {\n // Like the switcher's links, the other views open at the day selected in the month view.\n const day = props.focusDay;\n if (day && props.owner.onDateChange && view !== props.view) {\n openViewAt(props.owner, day, view);\n return;\n }\n if (props.owner.onViewChange) {\n props.owner.onViewChange(view);\n return;\n }\n const href = props.owner.getViewHref?.(view);\n if (href) window.location.href = href;\n };\n const navButton = (date: Date, icon: string, label: string) => {\n const href = props.owner.getDateHref?.(date, props.view);\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n anchorProps={{ \"aria-label\": label, title: label, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <button type=\"button\" aria-label={label} class=\"k2b-calendar-header__nav-button\" onClick={() => goDate(date)}>\n <i class={`ti ${icon}`} />\n </button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n anchorProps={{ \"aria-label\": label, title: label, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n );\n };\n const todayButton = () => {\n const today = calendar.today(dateConfig());\n const href = props.owner.getDateHref?.(today, props.view);\n const label = <span class=\"k2b-button__label\">{props.labels.today}</span>;\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n anchorProps={{ class: \"k2b-button k2b-calendar-header__today\", \"data-size\": \"sm\", \"data-variant\": \"input\" }}\n >\n {label}\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <Button type=\"button\" variant=\"input\" size=\"sm\" class=\"k2b-calendar-header__today\" onClick={() => goDate(today)}>\n {props.labels.today}\n </Button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n anchorProps={{ class: \"k2b-button k2b-calendar-header__today\", \"data-size\": \"sm\", \"data-variant\": \"input\" }}\n >\n {label}\n </CalendarNavigationLink>\n );\n };\n const viewOptions = createMemo(\n (): Array<{ value: CalendarView | V; label: string }> => [\n ...(\n [\n { value: \"day\", label: props.labels.day },\n { value: \"week\", label: props.labels.week },\n { value: \"month\", label: props.labels.month },\n { value: \"year\", label: props.labels.year },\n ] satisfies Array<{ value: CalendarView; label: string }>\n ).filter((option) => !props.owner.views || props.owner.views.includes(option.value)),\n ...(props.owner.customViews ?? []),\n ],\n );\n\n return (\n <header class=\"k2b-calendar-header\">\n <div class=\"k2b-calendar-header__navigation\">\n {navButton(previous(), \"ti-chevron-left\", props.labels.previous)}\n {navButton(next(), \"ti-chevron-right\", props.labels.next)}\n <div class=\"k2b-calendar-header__title\">\n <span>{title()}</span>\n {/* The widest title of the view reserves its width, so paging never moves what follows the title. */}\n <For each={titleWidths()}>\n {(candidate) => (\n <span class=\"k2b-calendar-header__title-size\" aria-hidden=\"true\">\n {candidate}\n </span>\n )}\n </For>\n </div>\n </div>\n <Show when={props.owner.toolbarContent}>\n <div class=\"k2b-calendar-header__content\">{props.owner.toolbarContent}</div>\n </Show>\n <div class=\"k2b-calendar-header__actions\">\n {todayButton()}\n <Show\n when={!props.owner.onViewChange && props.owner.getViewHref}\n fallback={\n <SegmentedControl\n value={() => (props.view === \"mobile-month\" ? \"month\" : props.view)}\n onValueChange={goView}\n ariaLabel={messages().calendarView}\n options={viewOptions()}\n />\n }\n >\n <CalendarViewLinks owner={props.owner} view={props.view} options={viewOptions()} focusDay={props.focusDay} />\n </Show>\n {props.owner.toolbarActions}\n </div>\n <Show when={props.owner.navigationPending}>\n <span class=\"k2b-calendar-header__progress\" aria-hidden=\"true\" />\n </Show>\n </header>\n );\n};\n\n/** The compact month of `mobile-month`: a picker whose days link to their agenda. */\nconst MonthPickerView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n compact?: boolean;\n}): JSX.Element => {\n const messages = useUiMessages();\n const calendarMessages = useCalendarMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const [movePreview, setMovePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const month = createMemo(() => zonedYearMonth(props.date, dateConfig()));\n const weeks = createMemo(() => calendar.getMonthGrid(month().year, month().month, dateConfig()));\n const weekdays = createMemo(() => calendar.weekdays(dateConfig()));\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const clearMove = () => {\n setMovePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const startMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, ...moveEventToDay(event, day, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setMovePreview,\n onCommit: (next) => {\n clearMove();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearMove,\n });\n };\n onCleanup(() => cancelInteraction?.());\n return (\n <div\n class=\"k2b-calendar-month\"\n // The mobile month is a bounded picker: finger-sized weeks that keep the selected day's agenda close below.\n style={{ \"grid-template-rows\": `auto repeat(${weeks().length}, ${props.compact ? \"minmax(2.75rem, auto)\" : \"minmax(5rem, 1fr)\"})` }}\n >\n <div class=\"k2b-calendar-month__weekdays\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__weekday\">{messages().weekShort}</div>\n </Show>\n <For each={weekdays()}>{(day) => <div class=\"k2b-calendar-month__weekday\">{day}</div>}</For>\n </div>\n <For each={weeks()}>\n {(week) => (\n <div class=\"k2b-calendar-month__week\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__week-number\">{zonedWeekNumber(week[0]!, dateConfig())}</div>\n </Show>\n <For each={week}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const events = eventsByDay().get(dayKey) ?? [];\n const href = props.owner.getDateHref?.(day, \"day\");\n const dayBadge = props.owner.dayBadges?.[dayKey];\n const sameMonth = calendar.isSameMonth(day, props.date, dateConfig());\n const isToday = dayKey === todayKey();\n const dayLabel = day.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const eventStack = createMemo(() => {\n const preview = movePreview();\n const previewForDay = preview && calendar.formatDateKey(preview.start, dateConfig()) === dayKey ? preview : null;\n const candidates = previewForDay ? events.filter((event) => event.id !== previewForDay.id) : events;\n const visibleLimit = previewForDay ? 2 : 3;\n return {\n preview: previewForDay,\n visibleEvents: candidates.slice(0, visibleLimit),\n hiddenCount: Math.max(0, candidates.length - visibleLimit),\n };\n });\n return (\n <div\n class=\"k2b-calendar-month__day\"\n data-calendar-day-key={dayKey}\n data-outside={!sameMonth ? \"true\" : undefined}\n data-drop-preview={\n movePreview()?.start && calendar.formatDateKey(movePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n >\n <Show\n when={props.owner.onSlotActivate}\n fallback={\n <Show when={href}>\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-target\",\n \"aria-label\": messages().openDate({ label: dayLabel }),\n }}\n />\n )}\n </Show>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-calendar-month__day-target\"\n data-interactive=\"true\"\n aria-label={messages().createEventOn({ label: dayLabel })}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n true,\n )}\n />\n </Show>\n <div class=\"k2b-calendar-month__day-header\">\n <Show\n when={props.owner.onSlotActivate && href}\n fallback={\n <span\n class=\"k2b-calendar-month__day-number\"\n data-today={isToday ? \"true\" : undefined}\n data-outside={!sameMonth ? \"true\" : undefined}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </span>\n }\n >\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-number\",\n \"data-today\": isToday ? \"true\" : undefined,\n \"data-outside\": !sameMonth ? \"true\" : undefined,\n \"aria-label\": messages().openDate({ label: dayLabel }),\n }}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </CalendarNavigationLink>\n )}\n </Show>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-month__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-month__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </div>\n <div class=\"k2b-calendar-month__events\">\n <Show when={eventStack().preview}>\n <div class=\"k2b-calendar-preview\">\n {props.events.find((event) => event.id === eventStack().preview!.id)?.title ?? messages().moveEvent}\n </div>\n </Show>\n <For each={eventStack().visibleEvents}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n <Show when={eventStack().hiddenCount > 0}>\n <CalendarNavigationLink owner={props.owner} href={href ?? \"#\"} anchorProps={{ class: \"k2b-calendar-month__more\" }}>\n {calendarMessages().calendarMoreEvents({ count: eventStack().hiddenCount })}\n </CalendarNavigationLink>\n </Show>\n </div>\n <div class=\"k2b-calendar-month__dots\">\n <For each={events.slice(0, 4)}>\n {(event) => (\n <span\n class=\"k2b-calendar-dot\"\n data-color={event.colorHex ? undefined : (event.color ?? \"blue\")}\n style={event.colorHex ? { \"background-color\": event.colorHex } : undefined}\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n );\n};\n\n/** One entry of the month grid: its whole range, and the days it covers as `YYYY-MM-DD` keys. */\ntype MonthItem = {\n /** Identifies the entry across the week rows it spans. */\n key: string;\n event: NormalizedEvent;\n firstKey: string;\n lastKey: string;\n /** All-day and multi-day entries are bars; the others stack in their day. */\n bar: boolean;\n /** Pieces of the entry per day, for the day list. */\n days: Map<string, NormalizedEvent>;\n};\n\ntype MonthSelection = { first: string; last: string };\n\ntype MonthPopover =\n | { kind: \"day\"; dayKey: string; anchor: HTMLElement }\n | { kind: \"create\"; range: MonthSelection; anchor: HTMLElement; create?: string };\n\n/** Lane height and gap of the month entries, in rem; the stylesheet reads both from the grid's custom properties. */\nconst MONTH_LANE_REM = 1.25;\nconst MONTH_LANE_GAP_REM = 0.125;\n/** Rows drawn before the browser has measured the cells, as in the server response. */\nconst MONTH_DEFAULT_LANES = 3;\n/** Room a bar keeps beside its title and date hint: padding, torn edge, gap, and an icon such as a task box or a flag. */\nconst MONTH_HINT_SLACK_REM = 2.25;\n\nconst dayKeyNumber = (key: string): number => {\n const [year = \"1970\", month = \"1\", day = \"1\"] = key.split(\"-\");\n return Date.UTC(Number(year), Number(month) - 1, Number(day)) / 86_400_000;\n};\n\nconst orderedSelection = (anchor: string, focus: string): MonthSelection =>\n anchor <= focus ? { first: anchor, last: focus } : { first: focus, last: anchor };\n\n/** Groups the per-day pieces of the events back into one entry each: bars first, then the others by time. */\nconst monthItems = (events: NormalizedEvent[]): MonthItem[] => {\n const items = new Map<string, MonthItem>();\n for (const piece of events) {\n const key = `${piece.id}\\u0000${piece.sourceStartDate.getTime()}`;\n const item = items.get(key);\n if (item) {\n if (piece.dayKey < item.firstKey) item.firstKey = piece.dayKey;\n if (piece.dayKey > item.lastKey) item.lastKey = piece.dayKey;\n item.days.set(piece.dayKey, piece);\n continue;\n }\n items.set(key, {\n key,\n event: { ...piece, startDate: piece.sourceStartDate, endDate: piece.sourceEndDate },\n firstKey: piece.dayKey,\n lastKey: piece.dayKey,\n bar: false,\n days: new Map([[piece.dayKey, piece]]),\n });\n }\n for (const item of items.values())\n item.bar = item.firstKey !== item.lastKey || Boolean(item.event.allDay && item.event.display !== \"marker\");\n return [...items.values()].sort(\n (left, right) =>\n Number(right.bar) - Number(left.bar) ||\n left.event.sourceStartDate.getTime() - right.event.sourceStartDate.getTime() ||\n left.event.title.localeCompare(right.event.title),\n );\n};\n\n/** Places a calendar popover below its anchor when there is room and above it otherwise, inside the viewport. */\nconst placeCalendarPopover = (anchor: HTMLElement, popover: HTMLElement): void => {\n const margin = 8;\n const gap = 4;\n const rect = anchor.getBoundingClientRect();\n const width = Math.min(popover.offsetWidth || 288, window.innerWidth - margin * 2);\n const height = popover.offsetHeight;\n const left = Math.max(margin, Math.min(rect.left, window.innerWidth - width - margin));\n const roomBelow = window.innerHeight - rect.bottom - gap - margin;\n const above = height > roomBelow && rect.top - gap - margin > roomBelow;\n const top = above ? Math.max(margin, rect.top - height - gap) : Math.min(rect.bottom + gap, window.innerHeight - height - margin);\n popover.style.left = `${left}px`;\n popover.style.top = `${Math.max(margin, top)}px`;\n};\n\nlet measureContext: CanvasRenderingContext2D | null | undefined;\n/** The width of a text in a font, from a canvas, so a bar can tell whether its title leaves room for a date hint. */\nconst textWidth = (text: string, font: string): number => {\n measureContext ??= typeof document === \"undefined\" ? null : document.createElement(\"canvas\").getContext(\"2d\");\n if (!measureContext) return Number.POSITIVE_INFINITY;\n measureContext.font = font;\n return measureContext.measureText(text).width;\n};\n\n/** Follows a calendar link the way the calendar's own links do: through the host's navigation when it has one. */\nconst followCalendarHref = (owner: CalendarOwner, href: string): void => {\n if (owner.onNavigateHref) owner.onNavigateHref(href);\n else window.location.assign(href);\n};\n\nconst PRINTABLE_KEY = /^.$/u;\n\n/**\n * The month grid. A click selects a day and never navigates, a drag or Shift selects a range, and the arrow keys move\n * the selection. The quick create opens at the selection: quietly after a click, with the focus after a drag, a\n * double-click, Enter, or N. Every event is one bar per week row in a lane it keeps on each of its days, and each\n * cell shows as many entries as its height holds.\n */\nconst MonthView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n /** The first selected day, for the view switcher; `null` without a selection. */\n onFocusDay?: (date: Date | null) => void;\n}): JSX.Element => {\n const messages = useUiMessages();\n const calendarMessages = useCalendarMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n // The shown month and its grid change only with the month, so a refresh of the same month keeps every cell and its\n // focus.\n const month = createMemo(() => zonedYearMonth(props.date, dateConfig()), undefined, {\n equals: (previous, next) => previous.year === next.year && previous.month === next.month,\n });\n const weeks = createMemo(\n () =>\n calendar\n .getMonthGrid(month().year, month().month, dateConfig())\n .map((week) => week.map((day) => ({ day, key: calendar.formatDateKey(day, dateConfig()) }))),\n undefined,\n { equals: (previous, next) => previous.map((week) => week[0]?.key).join() === next.map((week) => week[0]?.key).join() },\n );\n const weekdays = createMemo(() => calendar.weekdays(dateConfig()));\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const items = createMemo(() => monthItems(props.events));\n const weekLayouts = createMemo(() =>\n weeks().map((week) =>\n layoutMonthWeek(\n week.map((entry) => entry.key),\n items().map((item) => ({ item, firstKey: item.firstKey, lastKey: item.lastKey, bar: item.bar })),\n ),\n ),\n );\n const [capacities, setCapacities] = createSignal<number[]>([]);\n const [cellWidth, setCellWidth] = createSignal(0);\n const [barFont, setBarFont] = createSignal(\"\");\n const [anchorKey, setAnchorKey] = createSignal<string | null>(null);\n const [focusKey, setFocusKey] = createSignal<string | null>(null);\n const [popover, setPopover] = createSignal<MonthPopover | null>(null);\n /** Whether the quick create holds the focus; until then the grid keeps it. */\n const [createActive, setCreateActive] = createSignal(false);\n const [linkedItem, setLinkedItem] = createSignal(\"\");\n const [movePreview, setMovePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n const cells = new Map<string, HTMLElement>();\n let popoverElement: HTMLDivElement | undefined;\n let cancelInteraction: (() => void) | undefined;\n let suppressClickUntil = 0;\n let lastPointer = \"mouse\";\n let menuKey: string | null = null;\n /** The day to select once paging with Page Up or Page Down has shown its month. */\n let pendingKey: string | null = null;\n\n const selection = createMemo((): MonthSelection | null => {\n const anchor = anchorKey();\n const focus = focusKey();\n return anchor && focus ? orderedSelection(anchor, focus) : null;\n });\n const parseKey = (key: string) => calendar.parseCalendarDate(key, dateConfig());\n const rangeOf = (range: MonthSelection): CalendarEventTimeChange => ({\n start: parseKey(range.first),\n end: calendar.addDays(parseKey(range.last), 1, dateConfig()),\n allDay: true,\n });\n const visibleKeys = createMemo(() => weeks().flatMap((week) => week.map((entry) => entry.key)));\n const rovingKey = createMemo(() => {\n const keys = visibleKeys();\n const focus = focusKey();\n if (focus && keys.includes(focus)) return focus;\n if (keys.includes(todayKey())) return todayKey();\n return calendar.formatDateKey(zonedMonthDate(month().year, month().month, dateConfig()), dateConfig());\n });\n const dropRange = createMemo((): MonthSelection | null => {\n const preview = movePreview();\n if (!preview) return null;\n const keys = previewSegments(preview, visibleKeys().map(parseKey), dateConfig()).map((piece) => piece.dayKey);\n if (keys.length === 0) return null;\n keys.sort();\n return { first: keys[0]!, last: keys[keys.length - 1]! };\n });\n const within = (range: MonthSelection | null, key: string) => Boolean(range && key >= range.first && key <= range.last);\n /** Where a day sits in the selection: alone, at its start or end, or in between. */\n const selectionPart = (key: string) => {\n const range = selection();\n if (!range || !within(range, key)) return undefined;\n if (range.first === range.last) return \"single\";\n return key === range.first ? \"start\" : key === range.last ? \"end\" : \"middle\";\n };\n\n const select = (anchor: string | null, focus: string | null = anchor) => {\n setAnchorKey(anchor);\n setFocusKey(focus);\n };\n // The host learns every change of the selected days, and a new month starts without a selection. The selection\n // goes with the view, so switching to another view reports that nothing is selected.\n createEffect(on(selection, (range) => props.owner.onSelectionChange?.(range ? rangeOf(range) : null), { defer: true }));\n onCleanup(() => {\n if (untrack(selection)) props.owner.onSelectionChange?.(null);\n });\n createEffect(on(selection, (range) => props.onFocusDay?.(range ? parseKey(range.first) : null)));\n createEffect(\n on(\n month,\n () => {\n setPopover(null);\n const key = pendingKey;\n pendingKey = null;\n if (key && visibleKeys().includes(key)) {\n select(key);\n queueMicrotask(() => focusCell(key));\n } else select(null);\n },\n { defer: true },\n ),\n );\n\n const dayLabel = (day: Date) =>\n day.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const shortDayLabel = (key: string, withMonth = true) =>\n parseKey(key).toLocaleDateString(dateConfig().locale ?? \"en\", {\n day: \"numeric\",\n ...(withMonth ? { month: \"short\" } : {}),\n timeZone: dateConfig().timeZone,\n });\n const monthDayLabel = (date: Date, withTime: boolean) =>\n date.toLocaleString(dateConfig().locale ?? \"en\", {\n month: \"long\",\n day: \"numeric\",\n ...(withTime ? { hour: \"2-digit\", minute: \"2-digit\" } : {}),\n timeZone: dateConfig().timeZone,\n });\n /** A long event names the days it spans; a one-day event keeps the chip's own title and time. */\n const itemLabel = (item: MonthItem): string | undefined => {\n if (item.firstKey === item.lastKey) return undefined;\n const allDay = Boolean(item.event.allDay);\n return messages().calendarEventTime({\n title: item.event.title,\n start: monthDayLabel(allDay ? parseKey(item.firstKey) : item.event.sourceStartDate, !allDay),\n end: monthDayLabel(allDay ? parseKey(item.lastKey) : item.event.sourceEndDate, !allDay),\n });\n };\n /** The start time before the title of a one-day entry; bars and all-day entries show none. */\n const leadingTime = (item: MonthItem) =>\n item.bar || item.event.allDay ? undefined : formatTime(item.event.sourceStartDate, dateConfig());\n /** The day at a torn end of a bar, with its month when that day lies outside the shown month. */\n const hintDate = (target: string) => ({\n day: Number(target.slice(8, 10)),\n month:\n Number(target.slice(0, 4)) === month().year && Number(target.slice(5, 7)) === month().month + 1\n ? undefined\n : parseKey(target)\n .toLocaleDateString(dateConfig().locale ?? \"en\", { month: \"short\", timeZone: dateConfig().timeZone })\n .replace(/\\.$/, \"\"),\n });\n const selectionHeading = (range: MonthSelection) => {\n if (range.first === range.last)\n return parseKey(range.first).toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const days = dayKeyNumber(range.last) - dayKeyNumber(range.first) + 1;\n return calendarMessages().calendarSelectedDays({ start: shortDayLabel(range.first), end: shortDayLabel(range.last), count: days });\n };\n const viewAvailable = (view: CalendarView) => !props.owner.views || props.owner.views.includes(view);\n const viewHref = (key: string, view: CalendarView) => (viewAvailable(view) ? props.owner.getDateHref?.(parseKey(key), view) : undefined);\n /** Whether the calendar can open another view at a day: through a link, or through the host's date change. */\n const canOpenView = (view: CalendarView) => viewAvailable(view) && Boolean(props.owner.getDateHref || props.owner.onDateChange);\n const openView = (key: string, view: CalendarView) => {\n const href = viewHref(key, view);\n if (href) followCalendarHref(props.owner, href);\n else openViewAt(props.owner, parseKey(key), view);\n };\n /** The calendar's own entries of the day menu, Open day and Open week, need no application entries. */\n const hasMenu = () => Boolean(props.owner.selectionMenu) || canOpenView(\"day\") || canOpenView(\"week\");\n\n /** The day cell under a point, from the cells' boxes: a bar lies over days that are not its parent. */\n const dayKeyAtPoint = (clientX: number, clientY: number): string | null => {\n for (const [key, cell] of cells) {\n if (!cell.isConnected) continue;\n const rect = cell.getBoundingClientRect();\n if (clientX >= rect.left && clientX < rect.right && clientY >= rect.top && clientY < rect.bottom) return key;\n }\n return null;\n };\n const focusCell = (key: string) => cells.get(key)?.focus({ preventScroll: true });\n const closePopover = (restoreFocus = true) => {\n if (!popover()) return;\n setPopover(null);\n setCreateActive(false);\n if (restoreFocus) focusCell(rovingKey());\n };\n const popoverFocusable = () =>\n popoverElement?.querySelector<HTMLElement>(\"input,textarea,select,button,a[href],[tabindex]:not([tabindex='-1'])\") ?? null;\n\n /**\n * Opens the quick create at the selection. Quietly, it only shows beside the grid, which keeps the focus until the\n * person types or tabs into it; otherwise it takes the focus at once.\n */\n const openCreate = (range: MonthSelection, options: { active: boolean; create?: string }) => {\n if (!props.owner.renderQuickCreate) return false;\n const anchor = cells.get(focusKey() && within(range, focusKey()!) ? focusKey()! : range.last);\n if (!anchor) return false;\n setCreateActive(options.active);\n setPopover({ kind: \"create\", range, anchor, create: options.create });\n return true;\n };\n const activateCreate = () => {\n if (popover()?.kind !== \"create\") return false;\n setCreateActive(true);\n popoverFocusable()?.focus();\n return true;\n };\n /** Enter, a double-click, and N create on the selection, with the quick create or the host's own create action. */\n const createOnSelection = () => {\n const range = selection();\n if (!range) return;\n if (openCreate(range, { active: true })) return;\n if (props.owner.onSlotActivate) props.owner.onSlotActivate(rangeOf(range));\n };\n const openDayList = (key: string) => {\n const anchor = cells.get(key);\n if (!anchor) return;\n setCreateActive(true);\n setPopover({ kind: \"day\", dayKey: key, anchor });\n };\n /** A quiet quick create follows the selection; any other popover closes when the selection changes. */\n const followSelection = () => {\n const current = popover();\n const range = selection();\n if (!current) return;\n if (current.kind === \"create\" && !createActive() && range) openCreate(range, { active: false });\n else closePopover(false);\n };\n\n const pageTo = (target: string) => {\n const date = parseKey(target);\n const href = props.owner.getDateHref?.(date, \"month\");\n // Only a month that is on its way may select the day, so a host that cannot page never leaves one behind.\n if (props.owner.onDateChange) {\n pendingKey = target;\n props.owner.onDateChange(date, \"month\");\n } else if (href) {\n pendingKey = target;\n followCalendarHref(props.owner, href);\n }\n };\n const moveFocus = (key: string, extend: boolean) => {\n if (!visibleKeys().includes(key)) {\n pageTo(key);\n return;\n }\n if (extend) select(anchorKey() ?? focusKey() ?? key, key);\n else select(key);\n focusCell(key);\n followSelection();\n };\n const onCellKeyDown = (event: KeyboardEvent, key: string) => {\n if (event.target !== event.currentTarget || event.ctrlKey || event.metaKey || event.altKey) return;\n const current = popover();\n const quiet = current?.kind === \"create\" && !createActive();\n // The quiet quick create takes over once the person types or tabs into it. Space stays the grid's key for the day\n // list; N is a title's first letter like any other, as the quick create it would open is already there.\n if (quiet && ((event.key === \"Tab\" && !event.shiftKey) || (PRINTABLE_KEY.test(event.key) && event.key !== \" \"))) {\n const field = popoverFocusable();\n if (field) {\n if (event.key === \"Tab\") event.preventDefault();\n setCreateActive(true);\n field.focus();\n return;\n }\n }\n const day = parseKey(key);\n const shift = (days: number) => calendar.formatDateKey(calendar.addDays(day, days, dateConfig()), dateConfig());\n const weekday = (dayKeyNumber(key) - dayKeyNumber(calendar.formatDateKey(calendar.startOfWeek(day, dateConfig()), dateConfig()))) % 7;\n const target =\n event.key === \"ArrowLeft\"\n ? shift(-1)\n : event.key === \"ArrowRight\"\n ? shift(1)\n : event.key === \"ArrowUp\"\n ? shift(-7)\n : event.key === \"ArrowDown\"\n ? shift(7)\n : event.key === \"Home\"\n ? shift(-weekday)\n : event.key === \"End\"\n ? shift(6 - weekday)\n : null;\n if (target) {\n event.preventDefault();\n moveFocus(target, event.shiftKey);\n return;\n }\n if (event.key === \"PageUp\" || event.key === \"PageDown\") {\n event.preventDefault();\n pageTo(calendar.formatDateKey(addMonthsClamped(day, event.key === \"PageUp\" ? -1 : 1, dateConfig()), dateConfig()));\n return;\n }\n if (event.key === \"Enter\" || ((event.key === \"n\" || event.key === \"N\") && !event.shiftKey)) {\n event.preventDefault();\n if (!within(selection(), key)) select(key);\n createOnSelection();\n return;\n }\n if (event.key === \" \") {\n event.preventDefault();\n if (!within(selection(), key)) select(key);\n openDayList(key);\n return;\n }\n if (event.key === \"Escape\") {\n if (current) closePopover(false);\n else if (selection()) select(null);\n else return;\n event.preventDefault();\n return;\n }\n // The keyboard opens the day's menu where the day is, as a right-click there would.\n if (hasMenu() && (event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\"))) {\n event.preventDefault();\n event.stopPropagation();\n menuKey = key;\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n event.currentTarget?.dispatchEvent(\n new MouseEvent(\"contextmenu\", { bubbles: true, cancelable: true, clientX: rect.left + 12, clientY: rect.top + 12 }),\n );\n }\n };\n\n const fromControl = (event: Event) =>\n event.target instanceof Element && Boolean(event.target.closest(\"a,button,[data-calendar-event],.k2b-calendar-month__lanes > *\"));\n const onCellClick = (event: MouseEvent, key: string) => {\n if (fromControl(event) || performance.now() < suppressClickUntil) return;\n // A second tap on the one selected day opens the quick create, as a double-click does with a mouse.\n if (lastPointer === \"touch\") {\n const range = selection();\n if (range && range.first === key && range.last === key && openCreate(range, { active: true })) return;\n select(key);\n closePopover(false);\n return;\n }\n if (event.shiftKey && anchorKey()) select(anchorKey(), key);\n else select(key);\n focusCell(key);\n const range = selection();\n if (range) openCreate(range, { active: false });\n };\n const onCellDoubleClick = (event: MouseEvent, key: string) => {\n if (fromControl(event) || lastPointer === \"touch\") return;\n event.preventDefault();\n if (!within(selection(), key)) select(key);\n if (popover()?.kind === \"create\") activateCreate();\n else createOnSelection();\n };\n /** The day under the pointer: a bar that spans several days sits in the cell of its first day. */\n const pressedKey = (event: MouseEvent, key: string) => dayKeyAtPoint(event.clientX, event.clientY) ?? key;\n const onCellPointerDown = (event: PointerEvent, key: string) => {\n lastPointer = event.pointerType;\n // The menu acts on the pressed day, or on the selection when the press is inside it.\n menuKey = pressedKey(event, key);\n if (event.pointerType !== \"mouse\" || event.button !== 0 || event.shiftKey || fromControl(event)) return;\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event,\n resolve: (clientX, clientY) => dayKeyAtPoint(clientX, clientY),\n onActivate: () => {\n suppressClickUntil = performance.now() + 400;\n closePopover(false);\n select(key);\n },\n onPreview: (current) => select(key, current),\n onCommit: (current) => {\n select(key, current);\n focusCell(current);\n const range = orderedSelection(key, current);\n openCreate(range, { active: range.first !== range.last });\n },\n onCancel: () => select(key),\n });\n };\n const onMenuOpen = () => {\n closePopover(false);\n const key = menuKey;\n if (key && !within(selection(), key)) select(key);\n };\n // Until a day is selected, the menu acts on the day that takes focus, so it is never empty.\n const menuItems = createMemo((): DropdownItem[] => {\n if (!hasMenu()) return [];\n const range = selection() ?? { first: rovingKey(), last: rovingKey() };\n const own =\n props.owner.selectionMenu?.(rangeOf(range), {\n quickCreate: (create) => {\n select(range.first, range.last);\n if (!openCreate(range, { active: true, create })) props.owner.onSlotActivate?.(rangeOf(range));\n },\n }) ?? [];\n const actions = own.filter((item): item is DropdownAction | DropdownChoice => !(\"items\" in item));\n const sections = own.filter((item): item is DropdownSection => \"items\" in item);\n const navigation: DropdownAction[] = [\n ...(canOpenView(\"day\")\n ? [{ label: calendarMessages().calendarOpenDay, icon: \"ti ti-zoom-in\", action: () => openView(range.first, \"day\") }]\n : []),\n ...(canOpenView(\"week\")\n ? [{ label: calendarMessages().calendarOpenWeek, icon: \"ti ti-calendar-week\", action: () => openView(range.first, \"week\") }]\n : []),\n ...(range.first !== range.last\n ? [{ label: calendarMessages().calendarClearSelection, icon: \"ti ti-x\", action: () => select(null) }]\n : []),\n ];\n const groups: DropdownSection[] = [{ items: actions }, ...sections, { items: navigation }].filter(\n (section) => section.items.length > 0,\n );\n // The first group names the days the menu acts on, also when the calendar's own entries are all it has.\n const [first, ...rest] = groups;\n return first && !first.sectionLabel ? [{ ...first, sectionLabel: selectionHeading(range) }, ...rest] : groups;\n });\n\n const clearMove = () => {\n setMovePreview(null);\n setMovingEventId(\"\");\n };\n const startMove = (pointerEvent: PointerEvent, item: MonthItem, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n const event = item.event;\n const grabbed = dayKeyAtPoint(pointerEvent.clientX, pointerEvent.clientY) ?? item.firstKey;\n const firstDay = startOfDay(event.sourceStartDate, dateConfig());\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const key = dayKeyAtPoint(clientX, clientY);\n if (!key) return null;\n // The event moves by as many days as the pointer, wherever on the bar it was grabbed.\n const day = calendar.addDays(firstDay, dayKeyNumber(key) - dayKeyNumber(grabbed), dateConfig());\n return { id: event.id, title: event.title, ...moveEventToDay(event, day, dateConfig()) };\n },\n onActivate: () => {\n markDragged();\n suppressClickUntil = performance.now() + 400;\n closePopover(false);\n setMovingEventId(event.id);\n },\n onPreview: setMovePreview,\n onCommit: (next) => {\n clearMove();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearMove,\n });\n };\n\n // Each week row measures the room below its day numbers; the rows only resize with the grid, never with content.\n let observer: ResizeObserver | undefined;\n const lanesOf = new WeakMap<Element, number>();\n const measure = (element: Element, week: number) => {\n const style = getComputedStyle(element);\n const rootSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n const capacity = monthLaneCapacity(element.clientHeight, MONTH_LANE_REM * rootSize, MONTH_LANE_GAP_REM * rootSize);\n setCapacities((current) => {\n if (current[week] === capacity) return current;\n const next = [...current];\n next[week] = capacity;\n return next;\n });\n if (week === 0) {\n setCellWidth(element.clientWidth);\n setBarFont(`600 ${0.6875 * rootSize}px ${style.fontFamily}`);\n }\n };\n const observeLanes = (element: HTMLElement, week: number) => {\n lanesOf.set(element, week);\n if (typeof ResizeObserver === \"undefined\") return;\n observer ??= new ResizeObserver((entries) => {\n for (const entry of entries) {\n const index = lanesOf.get(entry.target);\n if (index !== undefined) measure(entry.target, index);\n }\n });\n observer.observe(element);\n onCleanup(() => observer?.unobserve(element));\n };\n /** A date hint shows only when the bar holds its title and the hint whole; screen readers get the range anyway. */\n const hintFits = (title: string, hint: string, span: number) => {\n const width = cellWidth();\n const font = barFont();\n if (width <= 0 || !font) return false;\n const rootSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n return textWidth(title, font) + textWidth(hint, font) + MONTH_HINT_SLACK_REM * rootSize <= span * width;\n };\n\n createEffect(() => {\n const current = popover();\n const element = popoverElement;\n if (!element) return;\n if (!current) {\n if (element.matches(\":popover-open\")) element.hidePopover();\n return;\n }\n if (!element.matches(\":popover-open\")) element.showPopover();\n const focus = untrack(createActive);\n queueMicrotask(() => {\n if (popover() !== current || !element.isConnected) return;\n placeCalendarPopover(current.anchor, element);\n if (focus) popoverFocusable()?.focus();\n });\n });\n onMount(() => {\n const reposition = () => {\n const current = popover();\n if (current && popoverElement) placeCalendarPopover(current.anchor, popoverElement);\n };\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n onCleanup(() => {\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n });\n });\n onCleanup(() => {\n cancelInteraction?.();\n observer?.disconnect();\n });\n\n const dayEntries = (dayKey: string) => items().filter((item) => item.days.has(dayKey));\n /** Every bar of a long entry lights up with the one under the pointer. */\n const linkProps = (item: MonthItem) => ({\n onPointerEnter: (event: PointerEvent) => {\n if (event.pointerType === \"mouse\") setLinkedItem(item.key);\n },\n onPointerLeave: () => {\n if (linkedItem() === item.key) setLinkedItem(\"\");\n },\n });\n\n const grid = () => (\n <div\n class=\"k2b-calendar-month\"\n role=\"grid\"\n aria-label={formatMonth(props.date, dateConfig())}\n aria-multiselectable=\"true\"\n data-lanes=\"true\"\n style={{\n \"grid-template-rows\": `auto repeat(${weeks().length}, minmax(5rem, 1fr))`,\n \"--k2b-calendar-lane\": `${MONTH_LANE_REM}rem`,\n \"--k2b-calendar-lane-gap\": `${MONTH_LANE_GAP_REM}rem`,\n }}\n >\n <div class=\"k2b-calendar-month__weekdays\" role=\"row\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__weekday\" role=\"columnheader\">\n {messages().weekShort}\n </div>\n </Show>\n <For each={weekdays()}>\n {(day, index) => (\n <div class=\"k2b-calendar-month__weekday\" role=\"columnheader\" data-weekend={index() > 4 ? \"true\" : undefined}>\n {day}\n </div>\n )}\n </For>\n </div>\n <For each={weeks()}>\n {(week, weekIndex) => {\n const fit = createMemo(() =>\n fitMonthWeek(weekLayouts()[weekIndex()] ?? { bars: [], singles: [] }, capacities()[weekIndex()] ?? MONTH_DEFAULT_LANES),\n );\n const weekHref = () => viewHref(week[0]!.key, \"week\");\n const weekNumber = () => zonedWeekNumber(week[0]!.day, dateConfig());\n return (\n <div class=\"k2b-calendar-month__week\" role=\"row\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__week-number\" role=\"rowheader\">\n <Show\n when={weekHref()}\n fallback={\n <Show when={canOpenView(\"week\")} fallback={weekNumber()}>\n <button\n type=\"button\"\n class=\"k2b-calendar-month__week-link\"\n tabIndex={-1}\n title={calendarMessages().calendarOpenWeekNumber({ week: weekNumber() })}\n aria-label={calendarMessages().calendarOpenWeekNumber({ week: weekNumber() })}\n onClick={() => openView(week[0]!.key, \"week\")}\n >\n {weekNumber()}\n </button>\n </Show>\n }\n >\n {(href) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={href()}\n anchorProps={{\n class: \"k2b-calendar-month__week-link\",\n tabIndex: -1,\n title: calendarMessages().calendarOpenWeekNumber({ week: weekNumber() }),\n \"aria-label\": calendarMessages().calendarOpenWeekNumber({ week: weekNumber() }),\n }}\n >\n {weekNumber()}\n </CalendarNavigationLink>\n )}\n </Show>\n </div>\n </Show>\n <For each={week}>\n {({ day, key }, column) => {\n const dayBadge = props.owner.dayBadges?.[key];\n const sameMonth = calendar.isSameMonth(day, props.date, dateConfig());\n const label = dayLabel(day);\n const bars = createMemo(() => fit().bars.filter((bar) => bar.startColumn === column()));\n const cell = () => fit().cells[column()] ?? { top: 0, shown: [], hidden: 0 };\n return (\n <div\n ref={(element) => cells.set(key, element)}\n class=\"k2b-calendar-month__day\"\n role=\"gridcell\"\n tabIndex={rovingKey() === key ? 0 : -1}\n aria-label={label}\n aria-selected={within(selection(), key) ? \"true\" : \"false\"}\n aria-current={key === todayKey() ? \"date\" : undefined}\n data-calendar-day-key={key}\n data-outside={!sameMonth ? \"true\" : undefined}\n data-weekend={column() > 4 ? \"true\" : undefined}\n data-past={key < todayKey() ? \"true\" : undefined}\n data-selected={selectionPart(key)}\n data-drop-preview={within(dropRange(), key) ? \"true\" : undefined}\n onClick={(event) => onCellClick(event, key)}\n onDblClick={(event) => onCellDoubleClick(event, key)}\n onPointerDown={(event) => onCellPointerDown(event, key)}\n onContextMenu={(event) => {\n // The pressed day takes the focus, so closing the menu with Escape returns there.\n menuKey = pressedKey(event, key);\n if (hasMenu()) focusCell(menuKey);\n }}\n onKeyDown={(event) => onCellKeyDown(event, key)}\n >\n <div class=\"k2b-calendar-month__day-header\">\n <span\n class=\"k2b-calendar-month__day-number\"\n data-today={key === todayKey() ? \"true\" : undefined}\n data-outside={!sameMonth ? \"true\" : undefined}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </span>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-month__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-month__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </div>\n <div\n class=\"k2b-calendar-month__lanes\"\n ref={(element) => {\n if (column() === 0) observeLanes(element, weekIndex());\n }}\n >\n <For each={bars()}>\n {(bar) => {\n const span = bar.endColumn - bar.startColumn + 1;\n const startHint = () => {\n if (!bar.continuesBefore) return undefined;\n const hint = calendarMessages().calendarContinuesFrom(hintDate(bar.item.firstKey));\n return hintFits(bar.item.event.title, hint, span) ? hint : undefined;\n };\n const endHint = () => {\n if (!bar.continuesAfter) return undefined;\n const hint = calendarMessages().calendarContinuesUntil(hintDate(bar.item.lastKey));\n return hintFits(`${bar.item.event.title}${startHint() ?? \"\"}`, hint, span) ? hint : undefined;\n };\n return (\n <div\n class=\"k2b-calendar-month__segment\"\n style={{ \"--k2b-calendar-span\": String(span), \"--k2b-calendar-row\": String(bar.lane) }}\n data-bar=\"true\"\n data-linked={linkedItem() === bar.item.key && bar.item.firstKey !== bar.item.lastKey ? \"true\" : undefined}\n data-continues-before={bar.continuesBefore ? \"true\" : undefined}\n data-continues-after={bar.continuesAfter ? \"true\" : undefined}\n {...linkProps(bar.item)}\n >\n <EventChip\n event={bar.item.event}\n owner={props.owner}\n href={eventHref(props.owner, bar.item.event)}\n label={itemLabel(bar.item)}\n compact\n bar\n continuesBefore={bar.continuesBefore}\n continuesAfter={bar.continuesAfter}\n hintStart={startHint()}\n hintEnd={endHint()}\n moving={movingEventId() === bar.item.event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, bar.item, markDragged)\n : undefined\n }\n />\n </div>\n );\n }}\n </For>\n <For each={cell().shown}>\n {(item, index) => (\n <div\n class=\"k2b-calendar-month__segment\"\n style={{ \"--k2b-calendar-span\": \"1\", \"--k2b-calendar-row\": String(cell().top + index()) }}\n >\n <EventChip\n event={item.event}\n owner={props.owner}\n href={eventHref(props.owner, item.event)}\n compact\n leadingTime={leadingTime(item)}\n moving={movingEventId() === item.event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, item, markDragged)\n : undefined\n }\n />\n </div>\n )}\n </For>\n <Show when={cell().hidden > 0}>\n <button\n type=\"button\"\n class=\"k2b-calendar-month__more\"\n tabIndex={-1}\n style={{ \"--k2b-calendar-row\": String(cell().top + cell().shown.length) }}\n aria-label={calendarMessages().calendarMoreEventsOn({ count: cell().hidden, label })}\n aria-haspopup=\"dialog\"\n aria-expanded={(() => {\n const current = popover();\n return current?.kind === \"day\" && current.dayKey === key;\n })()}\n onClick={() => {\n const current = popover();\n if (current?.kind === \"day\" && current.dayKey === key) closePopover(false);\n else openDayList(key);\n }}\n >\n <span class=\"k2b-calendar-month__more-long\">\n {calendarMessages().calendarMoreEvents({ count: cell().hidden })}\n </span>\n <span class=\"k2b-calendar-month__more-short\">+{cell().hidden}</span>\n </button>\n </Show>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n );\n }}\n </For>\n </div>\n );\n\n const dayList = (dayKey: string) => {\n const day = parseKey(dayKey);\n const href = viewHref(dayKey, \"day\");\n // Read where it renders, so a refresh while the list is open updates it as it does the grid.\n const entries = () => dayEntries(dayKey);\n return (\n <div class=\"k2b-calendar-day-list\">\n <div class=\"k2b-calendar-day-list__title\">{dayLabel(day)}</div>\n <Show\n when={entries().length > 0}\n fallback={<p class=\"k2b-calendar-day-list__empty\">{calendarMessages().calendarNothingPlanned}</p>}\n >\n <ul class=\"k2b-calendar-day-list__events\">\n <For each={entries()}>\n {(item) => (\n <li>\n <EventChip\n event={item.event}\n owner={props.owner}\n href={eventHref(props.owner, item.event)}\n label={itemLabel(item)}\n compact\n bar={item.bar}\n leadingTime={leadingTime(item)}\n />\n </li>\n )}\n </For>\n </ul>\n </Show>\n <div class=\"k2b-calendar-day-list__actions\">\n <Show\n when={href}\n fallback={\n <Show when={canOpenView(\"day\")}>\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={() => openView(dayKey, \"day\")}>\n <i class=\"ti ti-zoom-in\" aria-hidden=\"true\" />\n {calendarMessages().calendarOpenDay}\n </Button>\n </Show>\n }\n >\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{ class: \"k2b-button\", \"data-variant\": \"ghost\", \"data-size\": \"sm\" }}\n >\n <i class=\"ti ti-zoom-in\" aria-hidden=\"true\" />\n {calendarMessages().calendarOpenDay}\n </CalendarNavigationLink>\n )}\n </Show>\n <Show when={props.owner.renderQuickCreate}>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n select(dayKey);\n openCreate({ first: dayKey, last: dayKey }, { active: true });\n }}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n {calendarMessages().calendarNewEvent}\n </Button>\n </Show>\n </div>\n </div>\n );\n };\n\n return (\n <>\n <Show when={hasMenu()} fallback={grid()}>\n <GestureMenu\n items={menuItems()}\n label={calendarMessages().calendarSelectionActions}\n tabIndex={-1}\n onOpen={onMenuOpen}\n class=\"k2b-calendar-month-menu\"\n >\n {grid()}\n </GestureMenu>\n </Show>\n <div\n ref={popoverElement}\n class=\"k2b-calendar-popover\"\n popover=\"auto\"\n role=\"dialog\"\n aria-label={(() => {\n const current = popover();\n if (current?.kind === \"day\") return dayLabel(parseKey(current.dayKey));\n return calendarMessages().calendarQuickCreate;\n })()}\n data-kind={popover()?.kind}\n data-quiet={popover()?.kind === \"create\" && !createActive() ? \"true\" : undefined}\n onFocusIn={() => setCreateActive(true)}\n onToggle={(event) => {\n // A late close of the popover that another opening already replaced keeps the new one. Focus returns to the\n // grid only from inside the popover, never from what a click outside it chose.\n if (event.newState !== \"closed\" || !popover() || event.currentTarget.matches(\":popover-open\")) return;\n const inside = event.currentTarget.contains(document.activeElement) || document.activeElement === document.body;\n closePopover(inside);\n }}\n >\n {/* Keyed: another day or another selection replaces the content while the popover stays open. A late close, such\n as after a slow save, closes only the quick create that asked for it. */}\n <Show when={popover()} keyed>\n {(value) =>\n value.kind === \"create\"\n ? props.owner.renderQuickCreate?.(rangeOf(value.range), {\n create: value.create,\n close: () => {\n if (popover() === value) closePopover();\n },\n })\n : dayList(value.dayKey)\n }\n </Show>\n </div>\n </>\n );\n};\n\nconst TimeGridView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n days: Date[];\n}): JSX.Element => {\n const messages = useUiMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const gridStartHour = () => props.owner.visibleStartHour ?? 0;\n const gridEndHour = () => props.owner.visibleEndHour ?? 23;\n const businessStartHour = () => props.owner.startHour ?? 8;\n const businessEndHour = () => props.owner.endHour ?? 18;\n const hours = createMemo(() => Array.from({ length: gridEndHour() - gridStartHour() + 1 }, (_, index) => gridStartHour() + index));\n const [timePreview, setTimePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n const [expandedOverflow, setExpandedOverflow] = createSignal(\"\");\n let scrollContainer: HTMLDivElement | undefined;\n let timeGrid: HTMLDivElement | undefined;\n let timeGutter: HTMLDivElement | undefined;\n let defaultHourMarker: HTMLDivElement | undefined;\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const slotEnd = (start: Date) => addMinutes(start, 60);\n const previewEvents = createMemo(() => previewSegments(timePreview(), props.days, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, { allDay: NormalizedEvent[]; timed: NormalizedEvent[] }>();\n for (const event of props.events) {\n const bucket = grouped.get(event.dayKey) ?? { allDay: [], timed: [] };\n (event.allDay ? bucket.allDay : bucket.timed).push(event);\n grouped.set(event.dayKey, bucket);\n }\n return grouped;\n });\n const clearInteraction = () => {\n setTimePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const timeAtPoint = (clientX: number, clientY: number): Date | null => {\n if (!timeGrid || !timeGutter) return null;\n const gridRect = timeGrid.getBoundingClientRect();\n const gutterRect = timeGutter.getBoundingClientRect();\n const dayIndex = calendarDayIndexAtPoint(clientX, gutterRect.right, gridRect.right - gutterRect.right, props.days.length);\n if (dayIndex === null) return null;\n const minute = Math.min(\n gridEndHour() * 60 + 45,\n calendarMinuteAtPoint(clientY, gridRect.top, gridRect.height, gridStartHour(), gridEndHour()),\n );\n return zonedMinuteSlot(props.days[dayIndex]!, minute, dateConfig());\n };\n const beginInteraction = (options: Parameters<typeof startCalendarPointerSession<CalendarPreview>>[0]) => {\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession(options);\n };\n const startTimedMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n const pointerStart = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY) ?? event.sourceStartDate;\n const duration = Math.max(15 * 60_000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const offsetMinutes = Math.max(\n 0,\n Math.min(duration / 60_000, Math.round((pointerStart.getTime() - event.sourceStartDate.getTime()) / 900_000) * 15),\n );\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const start = new Date(pointer.getTime() - offsetMinutes * 60_000);\n return { id: event.id, title: event.title, start, end: new Date(start.getTime() + duration), allDay: false };\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startAllDayMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n beginInteraction({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, title: event.title, ...moveEventTo(event, startOfDay(day, dateConfig()), true, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startRange = (pointerEvent: PointerEvent) => {\n if (!props.owner.onSlotActivate || pointerEvent.pointerType === \"touch\") return;\n const anchor = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY);\n if (!anchor) return;\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const current = timeAtPoint(clientX, clientY);\n if (!current) return null;\n const start = current < anchor ? current : anchor;\n const endBase = current < anchor ? anchor : current;\n return { id: \"calendar-create-preview\", start, end: addMinutes(endBase, 15), allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n props.owner.onSlotActivate?.(next);\n },\n onCancel: clearInteraction,\n });\n };\n const timeRangeLayout = (startDate: Date, endDate: Date) => {\n const start = zonedHour(startDate, dateConfig());\n const end = zonedHour(endDate, dateConfig());\n const visibleStart = Math.max(gridStartHour(), start);\n const visibleEnd = Math.min(gridEndHour() + 1, end);\n const total = Math.max(1, gridEndHour() - gridStartHour() + 1);\n return {\n top: Math.max(0, ((visibleStart - gridStartHour()) / total) * 100),\n height: Math.max(1.25, ((visibleEnd - visibleStart) / total) * 100),\n };\n };\n const eventLayout = (event: NormalizedEvent) => timeRangeLayout(event.startDate, event.endDate);\n const isDayView = () => props.days.length === 1;\n const visibleLaneCount = (lanes: number) => (isDayView() ? lanes : Math.min(lanes, 3));\n const overflowLayouts = (layouts: TimedEventLayout[]): TimedOverflowLayout[] => {\n if (isDayView()) return [];\n const groups = new Map<number, TimedOverflowLayout>();\n for (const layout of layouts) {\n if (layout.lane < visibleLaneCount(layout.lanes)) continue;\n const existing = groups.get(layout.groupId);\n if (existing) existing.hiddenEvents.push(layout.event);\n else\n groups.set(layout.groupId, {\n groupId: layout.groupId,\n hiddenEvents: [layout.event],\n groupStartDate: layout.groupStartDate,\n groupEndDate: layout.groupEndDate,\n });\n }\n return [...groups.values()];\n };\n const dayColumnMinWidth = (layouts: TimedEventLayout[]) => {\n if (!isDayView()) return undefined;\n const lanes = Math.max(1, ...layouts.map((layout) => layout.lanes));\n return `${Math.max(32, lanes * 12)}rem`;\n };\n const laneStyle = (layoutItem: TimedEventLayout) => {\n if (isDayView()) {\n const laneWidth = 100 / layoutItem.lanes;\n return {\n left: `calc(${layoutItem.lane * laneWidth}% + 0.25rem)`,\n width: `calc(${laneWidth}% - 0.5rem)`,\n };\n }\n const visibleLanes = visibleLaneCount(layoutItem.lanes);\n return {\n left: `${layoutItem.lanes <= 1 ? 0 : (28 / Math.max(1, visibleLanes - 1)) * layoutItem.lane}%`,\n width: `${layoutItem.lanes <= 1 ? 100 : layoutItem.lanes > visibleLanes ? 68 : 72}%`,\n };\n };\n const currentTimeLine = (day: Date) => {\n const now = props.now;\n if (calendar.formatDateKey(day, dateConfig()) !== calendar.formatDateKey(now, dateConfig())) return null;\n const hour = zonedHour(now, dateConfig());\n if (hour < gridStartHour() || hour > gridEndHour() + 1) return null;\n return ((hour - gridStartHour()) / Math.max(1, gridEndHour() - gridStartHour() + 1)) * 100;\n };\n onCleanup(() => cancelInteraction?.());\n onMount(() => {\n requestAnimationFrame(() => {\n if (!scrollContainer || !defaultHourMarker) return;\n const targetTop = defaultHourMarker.getBoundingClientRect().top - scrollContainer.getBoundingClientRect().top;\n // Reduced motion jumps to the business hours instead of gliding there, like every transition of the library.\n const behavior = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\";\n scrollContainer.scrollTo({ top: Math.max(0, scrollContainer.scrollTop + targetTop), behavior });\n });\n });\n return (\n <div class=\"k2b-calendar-time-grid\">\n <div class=\"k2b-calendar-time-grid__days\" style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}>\n <div />\n <For each={props.days}>\n {(day) => {\n const dayBadge = props.owner.dayBadges?.[calendar.formatDateKey(day, dateConfig())];\n const today = () => calendar.isToday(day, dateConfig());\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day, \"day\") ?? \"#\"}\n anchorProps={{ class: \"k2b-calendar-time-grid__day\" }}\n >\n <span class=\"k2b-calendar-time-grid__day-label\" data-today={today() ? \"true\" : undefined}>\n {formatDay(day, dateConfig())}\n </span>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-time-grid__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-time-grid__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n <Show when={!props.owner.hideAllDay}>\n <div\n class=\"k2b-calendar-time-grid__all-day\"\n style={{\n \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))`,\n \"max-height\": `${props.owner.allDayMaxHeightRem ?? 7}rem`,\n }}\n >\n <div class=\"k2b-calendar-time-grid__all-day-label\">{props.labels.allDay}</div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const allDay = () => eventsByDay().get(dayKey)?.allDay ?? [];\n const previewAllDay = previewEvents().filter((event) => event.dayKey === dayKey && event.allDay);\n return (\n <div\n class=\"k2b-calendar-time-grid__all-day-cell\"\n data-calendar-day-key={dayKey}\n data-drop-preview={\n timePreview()?.allDay && calendar.formatDateKey(timePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n >\n <div class=\"k2b-calendar-time-grid__all-day-events\">\n <For each={previewAllDay}>{(event) => <div class=\"k2b-calendar-preview\">{event.title}</div>}</For>\n <For each={allDay()}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startAllDayMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n </Show>\n <div ref={scrollContainer} class=\"k2b-calendar-time-grid__scroll\">\n <div\n ref={timeGrid}\n class=\"k2b-calendar-time-grid__grid\"\n style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}\n >\n <div\n ref={timeGutter}\n class=\"k2b-calendar-time-grid__gutter\"\n style={{ \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))` }}\n >\n <For each={hours()}>\n {(hour) => (\n <div\n ref={(element) => {\n if (hour === businessStartHour()) defaultHourMarker = element;\n }}\n class=\"k2b-calendar-time-grid__hour\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n >\n {`${hour}`.padStart(2, \"0\")}:00\n </div>\n )}\n </For>\n </div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const layouts = createMemo(() => timedEventLayouts(eventsByDay().get(dayKey)?.timed ?? []));\n return (\n <div\n class=\"k2b-calendar-time-grid__column\"\n style={{\n \"min-width\": dayColumnMinWidth(layouts()),\n \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))`,\n }}\n >\n <Show when={currentTimeLine(day) !== null}>\n <div class=\"k2b-calendar-time-grid__now\" style={{ top: `${currentTimeLine(day) ?? 0}%` }} />\n </Show>\n <For each={hours()}>\n {(hour) => (\n <div\n class=\"k2b-calendar-time-grid__slot\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = zonedSlot(day, hour, dateConfig());\n return { start, end: slotEnd(start), allDay: false };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n onPointerDown={startRange}\n />\n )}\n </For>\n <For each={previewEvents().filter((event) => event.dayKey === dayKey && !event.allDay)}>\n {(event) => {\n const layout = eventLayout(event);\n const short = event.endDate.getTime() - event.startDate.getTime() < 60 * 60_000;\n return (\n <div\n class=\"k2b-calendar-preview k2b-calendar-preview--timed\"\n data-short={short ? \"true\" : undefined}\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n >\n <div class=\"k2b-calendar-preview__content\">\n <Show when={event.title}>\n <div class=\"k2b-calendar-preview__title\">{event.title}</div>\n </Show>\n <div class=\"k2b-calendar-preview__label\">\n {formatTime(event.startDate, dateConfig())} - {formatTime(event.endDate, dateConfig())}\n </div>\n </div>\n </div>\n );\n }}\n </For>\n <For each={layouts()}>\n {(layoutItem) => {\n if (!isDayView() && layoutItem.lane >= visibleLaneCount(layoutItem.lanes)) return null;\n const event = layoutItem.event;\n const layout = eventLayout(event);\n const position = laneStyle(layoutItem);\n const resizeStart = (pointerEvent: PointerEvent) => {\n if (!props.owner.onEventResize) return;\n pointerEvent.preventDefault();\n pointerEvent.stopPropagation();\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n threshold: 1,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const minimumEnd = addMinutes(event.sourceStartDate, 15);\n const end = pointer > minimumEnd ? pointer : minimumEnd;\n return { id: event.id, title: event.title, start: event.sourceStartDate, end, allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventResize?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n return (\n <div\n class=\"k2b-calendar-time-grid__event-position\"\n style={{\n top: `${layout.top}%`,\n height: `${layout.height}%`,\n left: position.left,\n width: position.width,\n \"z-index\": String(20 + layoutItem.lane),\n }}\n >\n <div class=\"k2b-calendar-time-grid__event-frame\">\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n fill\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startTimedMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n <Show when={props.owner.onEventResize}>\n <button\n type=\"button\"\n aria-label={messages().resizeEvent}\n draggable={false}\n class=\"k2b-calendar-time-grid__resize\"\n onPointerDown={resizeStart}\n onDragStart={(event) => event.preventDefault()}\n >\n <span class=\"k2b-calendar-time-grid__resize-icon\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </div>\n );\n }}\n </For>\n <For each={overflowLayouts(layouts())}>\n {(overflow) => {\n const layout = timeRangeLayout(overflow.groupStartDate, overflow.groupEndDate);\n const key = `${dayKey}-${overflow.groupId}`;\n const hiddenTitle = () =>\n overflow.hiddenEvents.map((event) => `${formatTime(event.startDate, dateConfig())} ${event.title}`).join(\"\\n\");\n return (\n <>\n <button\n type=\"button\"\n class=\"k2b-calendar-time-grid__overflow\"\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n title={hiddenTitle()}\n aria-label={messages().hiddenOverlappingEvents({ count: overflow.hiddenEvents.length })}\n onClick={(event) => {\n event.stopPropagation();\n setExpandedOverflow(expandedOverflow() === key ? \"\" : key);\n }}\n >\n <span class=\"k2b-calendar-time-grid__overflow-count\">+{overflow.hiddenEvents.length}</span>\n </button>\n <Show when={expandedOverflow() === key}>\n <div class=\"k2b-calendar-time-grid__overflow-menu\" style={{ top: `${layout.top}%` }}>\n <div class=\"k2b-calendar-time-grid__overflow-title\">\n {formatTime(overflow.groupStartDate, dateConfig())} - {formatTime(overflow.groupEndDate, dateConfig())}\n </div>\n <For each={overflow.hiddenEvents}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} compact />}\n </For>\n </div>\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n }}\n </For>\n </div>\n </div>\n </div>\n );\n};\n\nconst YearView = (props: { owner: CalendarOwner; date: Date; now: Date; events: NormalizedEvent[] }): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const year = createMemo(() => zonedYearMonth(props.date, dateConfig()).year);\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const months = createMemo(() => {\n const context = dateConfig();\n return Array.from({ length: 12 }, (_, month) => {\n const date = zonedMonthDate(year(), month, context);\n return {\n date,\n label: date.toLocaleDateString(context.locale ?? \"en\", { month: \"long\", timeZone: context.timeZone }),\n days: calendar\n .getMonthGrid(year(), month, context)\n .flat()\n .map((day) => {\n const key = calendar.formatDateKey(day, context);\n return {\n date: day,\n events: eventsByDay().get(key) ?? [],\n isToday: key === todayKey(),\n outside: !calendar.isSameMonth(day, date, context),\n number: calendar.formatDayNumber(day, context),\n };\n }),\n };\n });\n });\n\n return (\n <div class=\"k2b-calendar-year\">\n <For each={months()}>\n {(month) => (\n <div class=\"k2b-calendar-year__month\">\n <div class=\"k2b-calendar-year__title\">{month.label}</div>\n <div class=\"k2b-calendar-year__grid\">\n <For each={month.days}>\n {(day) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day.date, \"day\") ?? \"#\"}\n anchorProps={{\n class: \"k2b-calendar-year__day\",\n \"data-today\": day.isToday ? \"true\" : undefined,\n \"data-outside\": day.outside ? \"true\" : undefined,\n }}\n >\n {day.number}\n <Show when={day.events[0]}>\n {(event) => (\n <span\n class=\"k2b-calendar-year__indicator\"\n data-color={event().colorHex ? undefined : (event().color ?? \"blue\")}\n data-today={day.isToday ? \"true\" : undefined}\n style={event().colorHex ? { \"background-color\": day.isToday ? \"white\" : event().colorHex } : undefined}\n />\n )}\n </Show>\n </CalendarNavigationLink>\n )}\n </For>\n </div>\n </div>\n )}\n </For>\n </div>\n );\n};\n\nconst MobileMonthView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n selectedDate: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n}): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const selectedDateKey = createMemo(() => calendar.formatDateKey(props.selectedDate, dateConfig()));\n const selectedEvents = createMemo(() => props.events.filter((event) => event.dayKey === selectedDateKey()));\n return (\n <div class=\"k2b-calendar-mobile-month\">\n <MonthPickerView\n owner={{ ...props.owner, withWeekNumbers: false }}\n date={props.date}\n now={props.now}\n events={props.events}\n labels={props.labels}\n compact\n />\n <div class=\"k2b-calendar-mobile-month__agenda\">\n <div class=\"k2b-calendar-mobile-month__title\">\n {props.selectedDate.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n })}\n </div>\n <Show when={selectedEvents().length > 0} fallback={<div class=\"k2b-calendar-mobile-month__empty\">{props.labels.noEvents}</div>}>\n <div class=\"k2b-calendar-mobile-month__events\">\n <For each={selectedEvents()}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} />}\n </For>\n </div>\n </Show>\n </div>\n </div>\n );\n};\n\nconst CalendarBody = (props: { children: JSX.Element }): JSX.Element => <div class=\"k2b-calendar-body\">{props.children}</div>;\n\nconst CalendarRoot = <V extends string = never>(props: CalendarProps<V>): JSX.Element => {\n const messages = useUiMessages();\n // Subviews derive their date config from the owner props, so the inherited\n // render locale is merged here once; an explicit dateConfig.locale wins.\n const localizedConfig = useDateConfigLocale(() => props.dateConfig);\n const owner = mergeProps(props, {\n get dateConfig(): DateContext {\n return localizedConfig();\n },\n });\n const view = () => props.view ?? \"month\";\n const custom = () => props.customViews?.some((option) => option.value === view()) ?? false;\n const dateConfig = createMemo(() => ownerDateConfig(owner));\n const safeDate = (value: Date | string) => {\n const parsed = parseDate(value, dateConfig());\n return validDate(parsed) ? parsed : calendar.today(dateConfig());\n };\n const date = createMemo(() => safeDate(props.date));\n const selectedDate = createMemo(() => safeDate(props.selectedDate ?? props.date));\n const [now, setNow] = createSignal(new Date());\n /** The first day selected in the month view, so the view switcher opens the other views at it. */\n const [focusDay, setFocusDay] = createSignal<Date | null>(null);\n const normalizedEvents = createMemo(() => normalizeEvents(props.events, dateConfig()));\n const mergedLabels = createMemo<Required<CalendarLabels>>(() => ({\n today: messages().today,\n day: messages().day,\n week: messages().week,\n month: messages().month,\n year: messages().year,\n allDay: messages().allDay,\n noEvents: messages().noEvents,\n previous: messages().previous,\n next: messages().next,\n ...props.labels,\n }));\n const days = createMemo(() => {\n if (view() === \"day\") return [date()];\n return calendar.getWeekDays(date(), dateConfig());\n });\n onMount(() => {\n const updateNow = () => setNow(new Date());\n const interval = window.setInterval(updateNow, 60_000);\n document.addEventListener(\"visibilitychange\", updateNow);\n onCleanup(() => {\n window.clearInterval(interval);\n document.removeEventListener(\"visibilitychange\", updateNow);\n });\n });\n\n return (\n <section class={`k2b-content-calendar ${props.class ?? \"\"}`} aria-busy={props.navigationPending ? \"true\" : undefined}>\n <CalendarHeader date={date()} view={view()} labels={mergedLabels()} owner={owner} focusDay={view() === \"month\" ? focusDay() : null} />\n <Show when={!custom()} fallback={<CalendarBody>{props.children}</CalendarBody>}>\n <Show\n when={view() !== \"month\"}\n fallback={\n <CalendarBody>\n <MonthView\n owner={owner}\n date={date()}\n now={now()}\n events={normalizedEvents()}\n labels={mergedLabels()}\n onFocusDay={setFocusDay}\n />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"year\"}\n fallback={\n <CalendarBody>\n <YearView owner={owner} date={date()} now={now()} events={normalizedEvents()} />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"mobile-month\"}\n fallback={\n <CalendarBody>\n <MobileMonthView\n owner={owner}\n date={date()}\n now={now()}\n selectedDate={selectedDate()}\n events={normalizedEvents()}\n labels={mergedLabels()}\n />\n </CalendarBody>\n }\n >\n <TimeGridView owner={owner} date={date()} now={now()} events={normalizedEvents()} labels={mergedLabels()} days={days()} />\n </Show>\n </Show>\n </Show>\n </Show>\n </section>\n );\n};\n\n/** JSX infers the values of `customViews`; inference from the last signature, as in `createComponent`, sees plain props. */\nfunction Calendar<V extends string = never>(props: CalendarProps<V>): JSX.Element;\nfunction Calendar(props: CalendarProps): JSX.Element;\nfunction Calendar(props: CalendarProps<string>): JSX.Element {\n return CalendarRoot(props);\n}\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["content/Calendar.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { dates as calendar, type DateContext } from \"@k2b/stdlib\";\nimport type { JSX, ParentProps } from \"solid-js\";\nimport { createEffect, createMemo, createSignal, For, mergeProps, on, onCleanup, onMount, Show, untrack } from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport type { DropdownAction, DropdownChoice, DropdownItem, DropdownSection } from \"../actions/Dropdown\";\nimport { GestureMenu } from \"../actions/GestureMenu\";\nimport SegmentedControl from \"../actions/SegmentedControl\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { CalendarDayView } from \"./CalendarDayView\";\nimport { CalendarWeekView } from \"./CalendarWeekView\";\nimport { openCalendarGoTo, openCalendarShortcuts } from \"./calendar-dialogs\";\nimport { layoutCalendarIntervals } from \"./calendar-event-layout\";\nimport { useCalendarMessages } from \"./calendar-messages\";\nimport { fitMonthWeek, layoutMonthWeek, monthLaneCapacity } from \"./calendar-month-layout\";\nimport { calendarDayIndexAtPoint, calendarMinuteAtPoint, startCalendarPointerSession } from \"./calendar-pointer\";\nimport {\n type CalendarOwner,\n EventChip,\n eventHref,\n followCalendarHref,\n formatTime,\n type NormalizedEvent,\n ownerDateConfig,\n parseDate,\n placeCalendarPopover,\n textWidth,\n validDate,\n} from \"./calendar-shared\";\nimport { compactGermanDate, type TimeViewHandle, type TodayDirection } from \"./calendar-time-view\";\n\nexport type CalendarView = \"day\" | \"week\" | \"month\" | \"year\" | \"mobile-month\";\n\nexport type CalendarEventColor = \"blue\" | \"emerald\" | \"amber\" | \"red\" | \"violet\" | \"cyan\" | \"zinc\";\n\nexport type CalendarEvent = {\n id: string;\n title: string;\n start: Date | string;\n end?: Date | string;\n allDay?: boolean;\n color?: CalendarEventColor;\n colorHex?: string;\n href?: string;\n dataSpaceItemId?: string;\n meta?: string;\n description?: string;\n /**\n * `marker` draws a point in time, such as a deadline, as a colored marker\n * beside its title instead of a filled band.\n */\n display?: \"event\" | \"background\" | \"marker\";\n /**\n * Short text the accessible name adds after the title and time, for state the event shows only visually, such as\n * a priority flag in custom `renderEvent` content.\n */\n accessibleDetail?: string;\n /**\n * Day and week views with `dayHours`: the state of the entry's checkbox, such as a to-do's. Leave it out for entries\n * without one. With `onEventCheck` the reader can change it.\n */\n checked?: boolean;\n location?: string;\n calendarName?: string;\n attendees?: CalendarAttendee[];\n resources?: CalendarResource[];\n recurrence?: CalendarRecurrence;\n};\n\nexport type CalendarAttendee = {\n name: string;\n status?: \"accepted\" | \"declined\" | \"tentative\" | \"needs-action\";\n};\n\nexport type CalendarResource = {\n name: string;\n kind?: \"room\" | \"equipment\" | \"link\" | \"other\";\n};\n\nexport type CalendarRecurrence = {\n rrule: string;\n exdate?: Array<Date | string>;\n recurrenceId?: Date | string;\n};\n\nexport type CalendarLabels = Partial<{\n today: string;\n day: string;\n week: string;\n month: string;\n year: string;\n allDay: string;\n noEvents: string;\n previous: string;\n next: string;\n}>;\n\nexport type CalendarEventRenderContext = {\n compact: boolean;\n fill: boolean;\n start: Date;\n end: Date;\n allDay: boolean;\n durationHours: number;\n timeLabel: string;\n /** Month view: the start time to show before the title of a one-day timed entry; absent on bars and elsewhere. */\n leadingTime?: string;\n /** Day and week views: what is left of the event that is running now, such as \"27 min left\". */\n remaining?: string;\n /** Day and week views: the calendar draws the event's checkbox beside this content, so leave yours out. */\n checkbox?: boolean;\n /**\n * Day and week views with `dayHours`: the event is a band, a deadline, or an all-day entry of a timeline. Render the\n * title in `k2b-calendar-event__title` and the time in `k2b-calendar-event__meta` there, so the views size them.\n */\n timeline?: boolean;\n};\n\n/** The days a host loaded events for, from the first day `from` up to `to`, both `YYYY-MM-DD` or dates. */\nexport type CalendarRange = { from: Date | string; to: Date | string };\n\n/**\n * An action the calendar offers for keyboard shortcuts, the command palette, and its shortcuts dialog. The calendar\n * publishes its own through `onCommandsChange`; the host registers them with its shortcut dispatcher.\n */\nexport type CalendarCommand = {\n /** Unique on the page, such as `calendar.today`. */\n id: string;\n label: string;\n /** One key combination: a key such as `h`, or modifiers and a key such as `shift+n`. */\n shortcut?: string;\n /** One sentence for the command palette and the help, such as \"Show today in the calendar\". */\n description?: string;\n icon?: string;\n run: () => void;\n};\n\n/** An entry dragged into the day or week view from outside the calendar, such as a task from a list below it. */\nexport type CalendarExternalDrag = {\n title: string;\n color?: CalendarEventColor;\n colorHex?: string;\n /** The length it gets in the calendar. */\n minutes: number;\n};\n\n/** Actions of the calendar that the host starts from its own controls. */\nexport type CalendarController = {\n /**\n * Opens the quick create at the selection, or where a new entry fits: today at the next full hour while today is\n * shown, else at 09:00 of the first shown day. `create` reaches `renderQuickCreate` as in the month view's menu.\n */\n quickCreate: (create?: string) => void;\n /** The time a new entry takes, by the rule of `quickCreate`; all-day for days selected in the month view. */\n createTarget: () => CalendarEventTimeChange;\n /**\n * Day and week views with `dayHours`: follows a pointer that pressed an entry outside the calendar, shows where it\n * would go and whether it fits the free time there, and calls `onDrop` with the time where it is released. Escape\n * or a release outside the days cancels.\n */\n dragIn: (event: PointerEvent, item: CalendarExternalDrag, onDrop: (slot: CalendarEventTimeChange) => void) => void;\n};\n\n/** A view the application adds to the switcher; the calendar shows its header and toolbar, the application the body. */\nexport type CalendarCustomView<V extends string = string> = {\n value: V;\n label: string;\n};\n\nexport type CalendarProps<V extends string = never> = {\n date: Date | string;\n events: CalendarEvent[];\n view?: CalendarView | V;\n views?: CalendarView[];\n /** Views after the built-in ones. While one is active, `children` is the body and the header pages by day. */\n customViews?: CalendarCustomView<V>[];\n /** The body of the active custom view. */\n children?: JSX.Element;\n labels?: CalendarLabels;\n /** stdlib date context used for timezone-aware rendering and calendar math. */\n dateConfig?: DateContext;\n /** Convenience override for dateConfig.timeZone. */\n timeZone?: string;\n firstDayOfWeek?: 0 | 1;\n withWeekNumbers?: boolean;\n startHour?: number;\n endHour?: number;\n /**\n * Waking hours `[start, end]` of the day and week views, such as `[6, 22]`. With them, a day runs from `start` to\n * `start` of the next day, so the night after `end` belongs to the day before. The day view becomes one stream of\n * days down the page and the week view a strip of days to scroll sideways; nights fold unless an entry lies in them.\n * `startHour`, `endHour`, and the visible hours do not apply then.\n */\n dayHours?: readonly [start: number, end: number];\n /** Day and week views with `dayHours`: the days of `events`. Without it they cover the day or week of `date`. */\n range?: CalendarRange;\n /** Called once when the reader nears the first loaded day, again once `range.from` moved. */\n onLoadEarlier?: () => unknown;\n /** Called once when the reader nears the last loaded day, again once `range.to` moved. */\n onLoadLater?: () => unknown;\n /**\n * Day and week views with `dayHours`: the first and the last day the reader sees, once the view opened and whenever\n * scrolling changed them, such as for the URL or a count of what is in view.\n */\n onVisibleDateChange?: (date: Date, last: Date) => void;\n visibleStartHour?: number;\n visibleEndHour?: number;\n allDayMaxHeightRem?: number;\n hideAllDay?: boolean;\n selectedDate?: Date | string;\n selectedEventId?: string;\n dayBadges?: Record<string, CalendarDayBadge>;\n // Methods, not function properties: props for custom views stay assignable to the plain props the overloads expose.\n getViewHref?(view: CalendarView | V): string;\n getDateHref?(date: Date, view: CalendarView | V): string;\n getEventHref?: (event: CalendarEvent) => string | undefined;\n renderEvent?: (event: CalendarEvent, context: CalendarEventRenderContext) => JSX.Element;\n /** Progressively enhance canonical calendar links after the app has loaded their target state. */\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n /** Progressively enhance canonical links without a document view transition. */\n onNavigateHref?: (href: string) => void;\n /** Optionally preload the target behind a canonical calendar link. */\n onPrefetch?: (href: string) => void;\n navigationPending?: boolean;\n onViewChange?(view: CalendarView | V): void;\n onDateChange?(date: Date, view: CalendarView | V): void;\n /** One activation contract for pointer and keyboard input. */\n onEventActivate?: (event: CalendarEvent) => void;\n /** Pointer gesture used for activation. Keyboard activation is always immediate. */\n eventActivation?: \"single\" | \"double\";\n onEventDrop?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onEventResize?: (event: CalendarEvent, next: CalendarEventTimeChange) => void;\n onSlotActivate?: (slot: CalendarEventTimeChange) => void;\n /**\n * Changes the checkbox of an entry with `checked`; leave it out when the reader may not change it. The box shows the\n * change at once; a returned promise that rejects puts it back.\n */\n onEventCheck?: (event: CalendarEvent, checked: boolean) => void | Promise<unknown>;\n /** Pointer gesture used for empty slots. Keyboard activation is always immediate. */\n slotActivation?: \"single\" | \"double\";\n /**\n * Month view: the selected days changed. `null` when no day is selected, for example after paging to another month\n * or switching to another view.\n */\n onSelectionChange?: (range: CalendarEventTimeChange | null) => void;\n /**\n * Month view: the application's entries of the menu that a right-click, Shift+F10, or a long press opens on a day or\n * on the selected days. The calendar heads them with the days and adds Open day, Open week, and Clear selection;\n * without this prop the menu has only those. `quickCreate` opens the quick create at the days, passing `create` on to\n * `renderQuickCreate`.\n */\n selectionMenu?: (range: CalendarEventTimeChange, controls: CalendarSelectionControls) => readonly DropdownItem[];\n /**\n * Month view: the content of the quick create at the selected days. It opens quietly after a click, keeping the\n * focus in the grid until the person types or tabs into it (Space still lists the day), and with the focus after a\n * drag, a double-click, Enter, N, or `quickCreate`.\n */\n renderQuickCreate?: (range: CalendarEventTimeChange, controls: CalendarQuickCreateControls) => JSX.Element;\n toolbarActions?: JSX.Element;\n /** Application controls, such as filters, right after the period title. */\n toolbarContent?: JSX.Element;\n /** The application's own commands, such as New event, listed after the calendar's in its shortcuts dialog. */\n commands?: readonly CalendarCommand[];\n /**\n * Receives the calendar's commands and `commands` whenever they change, to register them with the host's shortcut\n * dispatcher: Today (H), Next (J) and Previous (K), the views (1 to 4), and Go to (G). The calendar then also offers\n * its shortcuts dialog. Without a dispatcher the commands have no keys.\n */\n onCommandsChange?: (commands: readonly CalendarCommand[]) => void;\n /** Receives the calendar's controller once it mounts. */\n controller?: (controller: CalendarController) => void;\n class?: string;\n};\n\nexport type CalendarSelectionControls = {\n /** Opens the quick create at the days of the menu; `create` names what to create, as the application defines it. */\n quickCreate: (create?: string) => void;\n};\n\nexport type CalendarQuickCreateControls = {\n /** What the person asked to create through `quickCreate`; absent after a click, a drag, or the keyboard. */\n create?: string;\n /** Closes the quick create and returns the focus to the selected day; once another quick create replaced it, nothing. */\n close: () => void;\n};\n\nexport type CalendarEventTimeChange = {\n start: Date;\n end: Date;\n allDay?: boolean;\n};\n\nexport type CalendarDayBadge = {\n icon?: string;\n label: string;\n};\n\ntype CalendarPreview = CalendarEventTimeChange & {\n id: string;\n title?: string;\n};\n\ntype TimedEventLayout = {\n event: NormalizedEvent;\n lane: number;\n lanes: number;\n groupId: number;\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\ntype TimedOverflowLayout = {\n groupId: number;\n hiddenEvents: NormalizedEvent[];\n groupStartDate: Date;\n groupEndDate: Date;\n};\n\nconst weekNumber = (date: Date): number => {\n const target = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n const day = target.getUTCDay() || 7;\n target.setUTCDate(target.getUTCDate() + 4 - day);\n const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));\n return Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n};\nconst zonedWeekNumber = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return weekNumber(date);\n const [year = \"1970\", month = \"1\", day = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return weekNumber(new Date(Date.UTC(Number(year), Number(month) - 1, Number(day))));\n};\n\nconst formatDay = (date: Date, context?: DateContext): string =>\n date.toLocaleDateString(context?.locale ?? \"en\", { weekday: \"short\", day: \"numeric\", timeZone: context?.timeZone });\nconst formatMonth = (date: Date, context?: DateContext): string => calendar.formatMonthYear(date, context);\nconst zonedYearMonth = (date: Date, context?: DateContext): { year: number; month: number } => {\n const [year = \"1970\", month = \"1\"] = calendar.formatDateKey(date, context).split(\"-\");\n return { year: Number(year), month: Number(month) - 1 };\n};\nconst zonedMonthDate = (year: number, month: number, context?: DateContext): Date => {\n const value = `${year}-${String(month + 1).padStart(2, \"0\")}-01T12:00`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\n\nconst startOfDay = (date: Date, context?: DateContext): Date => calendar.startOfDay(date, context);\nconst endOfDay = (date: Date, context?: DateContext): Date => calendar.endOfDay(date, context);\nconst isStartOfDay = (date: Date, context?: DateContext): boolean => date.getTime() === startOfDay(date, context).getTime();\nconst addMinutes = (date: Date, minutes: number): Date => new Date(date.getTime() + minutes * 60 * 1000);\nconst zonedHour = (date: Date, context?: DateContext): number => {\n if (!context?.timeZone) return date.getHours() + date.getMinutes() / 60;\n const value = calendar.instantToZonedInput(date, context.timeZone);\n return Number(value.slice(11, 13)) + Number(value.slice(14, 16)) / 60;\n};\nconst zonedSlot = (day: Date, hour: number, context?: DateContext): Date => {\n return zonedMinuteSlot(day, hour * 60, context);\n};\nconst zonedMinuteSlot = (day: Date, minuteOfDay: number, context?: DateContext): Date => {\n const bounded = Math.max(0, Math.min(23 * 60 + 59, minuteOfDay));\n const hour = Math.floor(bounded / 60);\n const minute = bounded % 60;\n const value = `${calendar.formatDateKey(day, context)}T${String(hour).padStart(2, \"0\")}:${String(minute).padStart(2, \"0\")}`;\n if (!context?.timeZone) return parseDate(value);\n return new Date(calendar.zonedDateTimeToInstant(value, context.timeZone, { disambiguation: \"compatible\" }));\n};\nconst normalizeEvents = (events: CalendarEvent[], context?: DateContext): NormalizedEvent[] =>\n events.flatMap((event) => {\n const startDate = parseDate(event.start, context);\n if (!validDate(startDate)) return [];\n const parsedEnd = event.end ? parseDate(event.end, context) : null;\n const endDate = parsedEnd && validDate(parsedEnd) ? parsedEnd : new Date(startDate.getTime() + 60 * 60 * 1000);\n const duration = Math.max(60 * 60 * 1000, endDate.getTime() - startDate.getTime());\n const rangeEnd = endDate > startDate ? endDate : new Date(startDate.getTime() + duration);\n const startKey = calendar.formatDateKey(startDate, context);\n const endKey = calendar.formatDateKey(rangeEnd, context);\n if (!event.allDay && startKey === endKey) {\n return [\n {\n ...event,\n startDate,\n endDate: rangeEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: startKey,\n },\n ];\n }\n const lastDay =\n event.allDay && isStartOfDay(rangeEnd, context)\n ? calendar.addDays(startOfDay(rangeEnd, context), -1, context)\n : startOfDay(rangeEnd, context);\n const days: NormalizedEvent[] = [];\n for (let day = startOfDay(startDate, context); day <= lastDay; day = calendar.addDays(day, 1, context)) {\n const segmentStart = day.getTime() === startOfDay(startDate, context).getTime() ? startDate : startOfDay(day, context);\n const segmentEnd = day.getTime() === startOfDay(rangeEnd, context).getTime() ? rangeEnd : endOfDay(day, context);\n days.push({\n ...event,\n startDate: segmentStart,\n endDate: segmentEnd,\n sourceStartDate: startDate,\n sourceEndDate: rangeEnd,\n dayKey: calendar.formatDateKey(day, context),\n allDay: event.allDay,\n });\n }\n return days;\n });\n\nconst moveEventTo = (event: NormalizedEvent, target: Date, allDay = false, context?: DateContext): CalendarEventTimeChange => {\n const duration = Math.max(30 * 60 * 1000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const start = allDay ? startOfDay(target, context) : new Date(target);\n start.setSeconds(0, 0);\n return { start, end: new Date(start.getTime() + duration), allDay };\n};\n\nconst moveEventToDay = (event: NormalizedEvent, day: Date, context?: DateContext): CalendarEventTimeChange => {\n if (event.allDay) return moveEventTo(event, startOfDay(day, context), true, context);\n const localStart = context?.timeZone ? calendar.instantToZonedInput(event.sourceStartDate, context.timeZone) : null;\n const hour = localStart ? Number(localStart.slice(11, 13)) : event.sourceStartDate.getHours();\n const minute = localStart ? Number(localStart.slice(14, 16)) : event.sourceStartDate.getMinutes();\n return moveEventTo(event, zonedMinuteSlot(day, hour * 60 + minute, context), false, context);\n};\n\nconst eventTimeChanged = (event: NormalizedEvent, next: CalendarEventTimeChange): boolean =>\n event.sourceStartDate.getTime() !== next.start.getTime() ||\n event.sourceEndDate.getTime() !== next.end.getTime() ||\n Boolean(event.allDay) !== Boolean(next.allDay);\n\nconst previewSegments = (preview: CalendarPreview | null, days: Date[], context?: DateContext): NormalizedEvent[] =>\n preview\n ? normalizeEvents(\n [\n {\n id: `preview-${preview.id}`,\n title: preview.title ?? \"\",\n start: preview.start,\n end: preview.end,\n allDay: preview.allDay,\n color: \"blue\",\n },\n ],\n context,\n ).filter((event) => days.some((day) => event.dayKey === calendar.formatDateKey(day, context)))\n : [];\n\nconst timedEventLayouts = (events: NormalizedEvent[]): TimedEventLayout[] => {\n return layoutCalendarIntervals(events, (event) => ({\n start: event.startDate.getTime(),\n end: event.endDate.getTime(),\n })).map(({ item: event, lane, lanes, groupId, groupStart, groupEnd }) => ({\n event,\n lane,\n lanes,\n groupId,\n groupStartDate: new Date(groupStart),\n groupEndDate: new Date(groupEnd),\n }));\n};\n\nconst slotInteractionProps = (\n owner: CalendarOwner,\n slot: () => CalendarEventTimeChange,\n suppressed?: () => boolean,\n nativeControl = false,\n) => {\n const isSlotChild = (event: Event) => {\n if (!(event.target instanceof Element)) return false;\n const control = event.target.closest(\"a,button,[data-calendar-event]\");\n return Boolean(control && control !== event.currentTarget);\n };\n const interactive = Boolean(owner.onSlotActivate);\n const activate = (event: Event) => {\n if (!owner.onSlotActivate || isSlotChild(event) || suppressed?.()) return;\n event.preventDefault();\n owner.onSlotActivate(slot());\n };\n return {\n role: interactive && !nativeControl ? (\"button\" as const) : undefined,\n tabIndex: interactive && !nativeControl ? 0 : undefined,\n onClick: (event: MouseEvent) => {\n if (owner.slotActivation === \"double\") return;\n activate(event);\n },\n onDblClick: (event: MouseEvent) => {\n if (owner.slotActivation !== \"double\") return;\n activate(event);\n },\n onKeyDown: nativeControl\n ? undefined\n : (event: KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") activate(event);\n },\n };\n};\n\ntype CalendarNavigationLinkProps = ParentProps<{\n owner: CalendarOwner;\n href: string;\n /** Handles a plain click in place, such as gliding to a loaded day; `true` keeps the link from navigating. */\n intercept?: () => boolean;\n anchorProps?: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"children\" | \"href\" | \"onClick\"> & {\n \"data-direction\"?: string;\n \"data-divider\"?: string;\n \"data-outside\"?: string;\n \"data-size\"?: string;\n \"data-today\"?: string;\n \"data-variant\"?: string;\n };\n}>;\n\nconst plainClick = (event: MouseEvent) =>\n !event.defaultPrevented && event.button === 0 && !event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey;\n\n/** A real anchor is the baseline; the optional handler only enhances it after hydration. */\nconst CalendarNavigationLink = (props: CalendarNavigationLinkProps): JSX.Element => {\n const preload = () => props.owner.onPrefetch?.(props.href);\n const intercepted = (event: MouseEvent) => {\n if (!props.intercept || !plainClick(event) || !props.intercept()) return false;\n event.preventDefault();\n return true;\n };\n const navigateHref: JSX.EventHandler<HTMLAnchorElement, MouseEvent> = (event) => {\n if (intercepted(event)) return;\n const anchor = event.currentTarget;\n if (\n !plainClick(event) ||\n (anchor.target && anchor.target !== \"_self\") ||\n anchor.hasAttribute(\"download\") ||\n new URL(anchor.href).origin !== window.location.origin\n ) {\n return;\n }\n event.preventDefault();\n props.owner.onNavigateHref?.(props.href);\n };\n return props.owner.onNavigateHref ? (\n <a {...props.anchorProps} href={props.href} onClick={navigateHref} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n ) : props.owner.onNavigate ? (\n <Link\n {...props.anchorProps}\n href={props.href}\n scroll=\"preserve\"\n onNavigate={props.owner.onNavigate}\n onClick={(event) => void intercepted(event)}\n onPointerEnter={preload}\n onFocus={preload}\n >\n {props.children}\n </Link>\n ) : (\n <a {...props.anchorProps} href={props.href} onClick={(event) => void intercepted(event)} onPointerEnter={preload} onFocus={preload}>\n {props.children}\n </a>\n );\n};\n\nconst CalendarViewLinks = <V extends string>(props: {\n owner: CalendarProps<V>;\n view: CalendarView | V;\n options: Array<{ value: CalendarView | V; label: string }>;\n /** The day selected in the month view: the other views open at it. */\n focusDay?: Date | null;\n}): JSX.Element => {\n const calendarMessages = useCalendarMessages();\n const refs: HTMLAnchorElement[] = [];\n const selectRelative = (currentIndex: number, direction: -1 | 1) => {\n if (props.options.length === 0) return;\n refs[(currentIndex + direction + props.options.length) % props.options.length]?.click();\n };\n const onKeyDown = (event: KeyboardEvent, index: number) => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n selectRelative(index, 1);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n selectRelative(index, -1);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n refs[event.key === \"Home\" ? 0 : props.options.length - 1]?.click();\n }\n };\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={calendarMessages().calendarView}\n aria-orientation=\"horizontal\"\n class=\"k2b-segmented-control k2b-calendar-view-switcher\"\n >\n <For each={props.options}>\n {(option, index) => {\n const active = () => (props.view === \"mobile-month\" ? \"month\" : props.view) === option.value;\n const href = () => {\n const day = props.focusDay;\n const atDay = day && !active() ? props.owner.getDateHref?.(day, option.value) : undefined;\n return atDay ?? props.owner.getViewHref?.(option.value) ?? \"#\";\n };\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={href()}\n anchorProps={{\n ref: (element) => {\n refs[index()] = element;\n },\n role: \"radio\",\n \"aria-checked\": active(),\n tabIndex: active() ? 0 : -1,\n class: \"k2b-segmented-control__option\",\n \"data-divider\":\n index() < props.options.length - 1 &&\n !active() &&\n (props.view === \"mobile-month\" ? \"month\" : props.view) !== props.options[index() + 1]?.value\n ? \"true\"\n : undefined,\n onKeyDown: (event) => onKeyDown(event, index()),\n }}\n >\n {option.label}\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n );\n};\n\n/**\n * The same day some months later, or the last day of that month when it is shorter: a step from January 31 lands on\n * February 28, never in March. stdlib's `addMonths` runs over into the next month.\n */\nconst addMonthsClamped = (date: Date, months: number, dateConfig: DateContext): Date => {\n const moved = calendar.addMonths(date, months, dateConfig);\n if (calendar.formatDateKey(moved, dateConfig).slice(8) === calendar.formatDateKey(date, dateConfig).slice(8)) return moved;\n return calendar.addDays(calendar.startOfMonth(moved, dateConfig), -1, dateConfig);\n};\n\n/** Custom views page by day, like the day view. */\nconst adjacentCalendarDate = (date: Date, view: string, direction: -1 | 1, dateConfig: DateContext) => {\n if (view === \"year\") return addMonthsClamped(date, direction * 12, dateConfig);\n if (view === \"month\" || view === \"mobile-month\") return addMonthsClamped(date, direction, dateConfig);\n return calendar.addDays(date, direction * (view === \"week\" ? 7 : 1), dateConfig);\n};\n\n/** Opens a view at a day through the host's callbacks. Hosts may keep the view and the date apart, so both hear it. */\nconst openViewAt = <V extends string>(\n owner: Pick<CalendarProps<V>, \"onViewChange\" | \"onDateChange\">,\n date: Date,\n view: CalendarView | V,\n) => {\n owner.onViewChange?.(view);\n owner.onDateChange?.(date, view);\n};\n\n/** What the header reads from the active view beyond the props: the days a day or week view shows, and its moves. */\ntype CalendarHeaderNav = {\n /** The day or week view with `dayHours`, which scrolls through its days by itself. */\n timeView: () => TimeViewHandle | null;\n /** The commands of the shortcuts dialog; without them the header shows no shortcuts button. */\n commands: () => readonly CalendarCommand[];\n openShortcuts: () => void;\n};\n\nconst dayTitleOptions: Intl.DateTimeFormatOptions = { weekday: \"short\", day: \"numeric\", month: \"short\", year: \"numeric\" };\nconst weekTitleOptions: Intl.DateTimeFormatOptions = { day: \"numeric\", month: \"short\", year: \"numeric\" };\n\n/** Where today lies from the shown day or week before its view measured: the arrow of the Today button, or nothing. */\nconst todayDirectionOf = (view: string, date: Date, context: DateContext): TodayDirection => {\n const today = calendar.formatDateKey(new Date(), context);\n if (view === \"week\") {\n const start = calendar.formatDateKey(calendar.startOfWeek(date, context), context);\n const end = calendar.formatDateKey(calendar.addDays(calendar.startOfWeek(date, context), 6, context), context);\n return today < start ? \"left\" : today > end ? \"right\" : \"\";\n }\n const shown = calendar.formatDateKey(date, context);\n return today < shown ? \"up\" : today > shown ? \"down\" : \"\";\n};\n\nconst CalendarHeader = <V extends string>(props: {\n date: Date;\n view: CalendarView | V;\n labels: Required<CalendarLabels>;\n owner: CalendarProps<V>;\n focusDay?: Date | null;\n nav: CalendarHeaderNav;\n}): JSX.Element => {\n const calendarMessages = useCalendarMessages();\n const dateConfig = () => ownerDateConfig(props.owner);\n const timeView = () => props.nav.timeView();\n const parseKey = (key: string) => calendar.parseCalendarDate(key, dateConfig());\n /** The date the header pages from: the first day a day or week view shows, else the date. */\n const base = () => {\n const shown = timeView()?.visibleKeys().first;\n return shown ? parseKey(shown) : props.date;\n };\n const previous = () => adjacentCalendarDate(base(), props.view, -1, dateConfig());\n const next = () => adjacentCalendarDate(base(), props.view, 1, dateConfig());\n /** The day view's title, such as \"Fri, Oct 9, 2026\" or \"Fr, 9. Okt 2026\". */\n const formatDayTitle = (date: Date) =>\n compactGermanDate(\n new Intl.DateTimeFormat(dateConfig().locale ?? \"en\", { ...dayTitleOptions, timeZone: dateConfig().timeZone }).format(date),\n dateConfig().locale,\n true,\n );\n const formatRange = (from: Date, to: Date) =>\n compactGermanDate(\n new Intl.DateTimeFormat(dateConfig().locale ?? \"en\", { ...weekTitleOptions, timeZone: dateConfig().timeZone }).formatRange(from, to),\n dateConfig().locale,\n );\n /** The day and week views with `dayHours` name the days they show, also on the server before they measured. */\n const timeMode = () => Boolean(props.owner.dayHours) && (props.view === \"day\" || props.view === \"week\");\n const title = () => {\n const shown = timeView()?.visibleKeys();\n if (timeMode() && props.view === \"day\") return formatDayTitle(shown ? parseKey(shown.first) : props.date);\n if (timeMode()) {\n const start = shown ? parseKey(shown.first) : calendar.startOfWeek(props.date, dateConfig());\n return formatRange(start, shown ? parseKey(shown.last) : calendar.addDays(start, 6, dateConfig()));\n }\n if (props.view === \"year\")\n return new Intl.DateTimeFormat(dateConfig().locale ?? \"en\", { year: \"numeric\", timeZone: dateConfig().timeZone }).format(props.date);\n if (props.view !== \"week\" && props.view !== \"month\" && props.view !== \"mobile-month\")\n return props.date.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n if (props.view === \"week\")\n return `${formatDay(calendar.startOfWeek(props.date, dateConfig()), dateConfig())} - ${formatDay(calendar.addDays(calendar.startOfWeek(props.date, dateConfig()), 6, dateConfig()), dateConfig())}`;\n return formatMonth(props.date, dateConfig());\n };\n /**\n * The titles this view can show around the current date: the months of the year, the weeks of the month and across\n * each month boundary, or a day of each weekday in every month. Their widest one sets the title's width.\n */\n const titleWidths = createMemo(() => {\n const context = dateConfig();\n if (props.view === \"year\") return [];\n const { year } = zonedYearMonth(props.date, context);\n if (props.view === \"month\" || props.view === \"mobile-month\")\n return Array.from({ length: 12 }, (_, month) => formatMonth(zonedMonthDate(year, month, context), context));\n if (props.view === \"week\") {\n const first = calendar.startOfWeek(calendar.startOfMonth(props.date, context), context);\n const weeks = Array.from({ length: 6 }, (_, week) => {\n const start = calendar.addDays(first, week * 7, context);\n if (timeMode()) return formatRange(start, calendar.addDays(start, 6, context));\n return `${formatDay(start, context)} - ${formatDay(calendar.addDays(start, 6, context), context)}`;\n });\n if (timeMode()) {\n return [\n ...weeks,\n ...Array.from({ length: 12 }, (_, month) => {\n const day28 = calendar.addDays(zonedMonthDate(year, month, context), 27, context);\n return formatRange(day28, calendar.addDays(day28, 6, context));\n }),\n ];\n }\n return weeks;\n }\n return Array.from({ length: 12 }, (_, month) => month).flatMap((month) => {\n const first = zonedMonthDate(year, month, context);\n return Array.from({ length: 7 }, (_, offset) =>\n timeMode()\n ? formatDayTitle(calendar.addDays(first, 21 + offset, context))\n : calendar.addDays(first, 21 + offset, context).toLocaleDateString(context.locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: context.timeZone,\n }),\n );\n });\n });\n const goDate = (date: Date) => props.owner.onDateChange?.(date, props.view);\n const goView = (view: CalendarView | V) => {\n // Like the switcher's links, the other views open at the day selected in the month view.\n const day = props.focusDay;\n if (day && props.owner.onDateChange && view !== props.view) {\n openViewAt(props.owner, day, view);\n return;\n }\n if (props.owner.onViewChange) {\n props.owner.onViewChange(view);\n return;\n }\n const href = props.owner.getViewHref?.(view);\n if (href) window.location.href = href;\n };\n const navButton = (date: Date, icon: string, label: string, direction: -1 | 1) => {\n const href = props.owner.getDateHref?.(date, props.view);\n const step = () => timeView()?.step(direction) ?? false;\n const title = props.nav.commands().length > 0 ? `${label} (${direction > 0 ? \"J\" : \"K\"})` : label;\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n intercept={step}\n anchorProps={{ \"aria-label\": label, title, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <button\n type=\"button\"\n aria-label={label}\n title={title}\n class=\"k2b-calendar-header__nav-button\"\n onClick={() => {\n if (!step()) goDate(date);\n }}\n >\n <i class={`ti ${icon}`} />\n </button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n intercept={step}\n anchorProps={{ \"aria-label\": label, title, class: \"k2b-calendar-header__nav-button\" }}\n >\n <i class={`ti ${icon}`} />\n </CalendarNavigationLink>\n );\n };\n /**\n * In the day and week views that scroll through their days, Today points where today lies, or shows a calm dot while\n * it is on screen; the icon keeps its place either way. The other views name their period in the title.\n */\n const direction = () =>\n timeMode() ? (timeView()?.todayDirection() ?? todayDirectionOf(String(props.view), props.date, dateConfig())) || \"here\" : undefined;\n /** One arrow that the stylesheet turns toward today, or the dot while today shows. */\n const todayIcon = () => (\n <Show when={direction()}>\n {(current) => (\n <Show when={current() !== \"here\"} fallback={<i class=\"ti ti-point k2b-calendar-header__today-direction\" aria-hidden=\"true\" />}>\n <i class=\"ti ti-arrow-narrow-right k2b-calendar-header__today-direction\" aria-hidden=\"true\" />\n </Show>\n )}\n </Show>\n );\n const todayButton = () => {\n const today = calendar.today(dateConfig());\n const href = props.owner.getDateHref?.(today, props.view);\n const intercept = () => timeView()?.today() ?? false;\n const title = () => (props.nav.commands().length > 0 ? `${props.labels.today} (H)` : undefined);\n const label = (\n <>\n {todayIcon()}\n <span class=\"k2b-button__label\">{props.labels.today}</span>\n </>\n );\n return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? (\n <CalendarNavigationLink\n owner={props.owner}\n href={href}\n intercept={intercept}\n anchorProps={{\n class: \"k2b-button k2b-calendar-header__today\",\n \"data-size\": \"sm\",\n \"data-variant\": \"input\",\n \"data-direction\": direction(),\n title: title(),\n }}\n >\n {label}\n </CalendarNavigationLink>\n ) : props.owner.onDateChange ? (\n <Button\n type=\"button\"\n variant=\"input\"\n size=\"sm\"\n class=\"k2b-calendar-header__today\"\n data-direction={direction()}\n title={title()}\n onClick={() => {\n if (!intercept()) goDate(today);\n }}\n >\n {todayIcon()}\n {props.labels.today}\n </Button>\n ) : (\n <CalendarNavigationLink\n owner={props.owner}\n href={href ?? \"#\"}\n intercept={intercept}\n anchorProps={{\n class: \"k2b-button k2b-calendar-header__today\",\n \"data-size\": \"sm\",\n \"data-variant\": \"input\",\n \"data-direction\": direction(),\n title: title(),\n }}\n >\n {label}\n </CalendarNavigationLink>\n );\n };\n const viewOptions = createMemo(\n (): Array<{ value: CalendarView | V; label: string }> => [\n ...(\n [\n { value: \"day\", label: props.labels.day },\n { value: \"week\", label: props.labels.week },\n { value: \"month\", label: props.labels.month },\n { value: \"year\", label: props.labels.year },\n ] satisfies Array<{ value: CalendarView; label: string }>\n ).filter((option) => !props.owner.views || props.owner.views.includes(option.value)),\n ...(props.owner.customViews ?? []),\n ],\n );\n\n return (\n <header class=\"k2b-calendar-header\">\n <div class=\"k2b-calendar-header__navigation\">\n {navButton(previous(), \"ti-chevron-left\", props.labels.previous, -1)}\n {navButton(next(), \"ti-chevron-right\", props.labels.next, 1)}\n <div class=\"k2b-calendar-header__title\">\n <span>{title()}</span>\n {/* The widest title of the view reserves its width, so paging never moves what follows the title. */}\n <For each={titleWidths()}>\n {(candidate) => (\n <span class=\"k2b-calendar-header__title-size\" aria-hidden=\"true\">\n {candidate}\n </span>\n )}\n </For>\n </div>\n </div>\n <Show when={props.owner.toolbarContent}>\n <div class=\"k2b-calendar-header__content\">{props.owner.toolbarContent}</div>\n </Show>\n <div class=\"k2b-calendar-header__actions\">\n {todayButton()}\n <Show\n when={!props.owner.onViewChange && props.owner.getViewHref}\n fallback={\n <SegmentedControl\n class=\"k2b-calendar-view-switcher\"\n value={() => (props.view === \"mobile-month\" ? \"month\" : props.view)}\n onValueChange={goView}\n ariaLabel={calendarMessages().calendarView}\n options={viewOptions()}\n />\n }\n >\n <CalendarViewLinks owner={props.owner} view={props.view} options={viewOptions()} focusDay={props.focusDay} />\n </Show>\n {props.owner.toolbarActions}\n <Show when={props.nav.commands().length > 0}>\n <button\n type=\"button\"\n class=\"k2b-calendar-header__shortcuts\"\n aria-label={calendarMessages().calendarShortcuts}\n title={calendarMessages().calendarShortcuts}\n onClick={() => props.nav.openShortcuts()}\n >\n <i class=\"ti ti-keyboard\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n <Show when={props.owner.navigationPending}>\n <span class=\"k2b-calendar-header__progress\" aria-hidden=\"true\" />\n </Show>\n </header>\n );\n};\n\n/** The compact month of `mobile-month`: a picker whose days link to their agenda. */\nconst MonthPickerView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n compact?: boolean;\n}): JSX.Element => {\n const calendarMessages = useCalendarMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const [movePreview, setMovePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const month = createMemo(() => zonedYearMonth(props.date, dateConfig()));\n const weeks = createMemo(() => calendar.getMonthGrid(month().year, month().month, dateConfig()));\n const weekdays = createMemo(() => calendar.weekdays(dateConfig()));\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const clearMove = () => {\n setMovePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const startMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, ...moveEventToDay(event, day, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setMovePreview,\n onCommit: (next) => {\n clearMove();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearMove,\n });\n };\n onCleanup(() => cancelInteraction?.());\n return (\n <div\n class=\"k2b-calendar-month\"\n // The mobile month is a bounded picker: finger-sized weeks that keep the selected day's agenda close below.\n style={{ \"grid-template-rows\": `auto repeat(${weeks().length}, ${props.compact ? \"minmax(2.75rem, auto)\" : \"minmax(5rem, 1fr)\"})` }}\n >\n <div class=\"k2b-calendar-month__weekdays\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__weekday\">{calendarMessages().weekShort}</div>\n </Show>\n <For each={weekdays()}>{(day) => <div class=\"k2b-calendar-month__weekday\">{day}</div>}</For>\n </div>\n <For each={weeks()}>\n {(week) => (\n <div class=\"k2b-calendar-month__week\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__week-number\">{zonedWeekNumber(week[0]!, dateConfig())}</div>\n </Show>\n <For each={week}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const events = eventsByDay().get(dayKey) ?? [];\n const href = props.owner.getDateHref?.(day, \"day\");\n const dayBadge = props.owner.dayBadges?.[dayKey];\n const sameMonth = calendar.isSameMonth(day, props.date, dateConfig());\n const isToday = dayKey === todayKey();\n const dayLabel = day.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const eventStack = createMemo(() => {\n const preview = movePreview();\n const previewForDay = preview && calendar.formatDateKey(preview.start, dateConfig()) === dayKey ? preview : null;\n const candidates = previewForDay ? events.filter((event) => event.id !== previewForDay.id) : events;\n const visibleLimit = previewForDay ? 2 : 3;\n return {\n preview: previewForDay,\n visibleEvents: candidates.slice(0, visibleLimit),\n hiddenCount: Math.max(0, candidates.length - visibleLimit),\n };\n });\n return (\n <div\n class=\"k2b-calendar-month__day\"\n data-calendar-day-key={dayKey}\n data-outside={!sameMonth ? \"true\" : undefined}\n data-drop-preview={\n movePreview()?.start && calendar.formatDateKey(movePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n >\n <Show\n when={props.owner.onSlotActivate}\n fallback={\n <Show when={href}>\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-target\",\n \"aria-label\": calendarMessages().openDate({ label: dayLabel }),\n }}\n />\n )}\n </Show>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-calendar-month__day-target\"\n data-interactive=\"true\"\n aria-label={calendarMessages().createEventOn({ label: dayLabel })}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n true,\n )}\n />\n </Show>\n <div class=\"k2b-calendar-month__day-header\">\n <Show\n when={props.owner.onSlotActivate && href}\n fallback={\n <span\n class=\"k2b-calendar-month__day-number\"\n data-today={isToday ? \"true\" : undefined}\n data-outside={!sameMonth ? \"true\" : undefined}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </span>\n }\n >\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{\n class: \"k2b-calendar-month__day-number\",\n \"data-today\": isToday ? \"true\" : undefined,\n \"data-outside\": !sameMonth ? \"true\" : undefined,\n \"aria-label\": calendarMessages().openDate({ label: dayLabel }),\n }}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </CalendarNavigationLink>\n )}\n </Show>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-month__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-month__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </div>\n <div class=\"k2b-calendar-month__events\">\n <Show when={eventStack().preview}>\n <div class=\"k2b-calendar-preview\">\n {props.events.find((event) => event.id === eventStack().preview!.id)?.title ?? calendarMessages().moveEvent}\n </div>\n </Show>\n <For each={eventStack().visibleEvents}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n <Show when={eventStack().hiddenCount > 0}>\n <CalendarNavigationLink owner={props.owner} href={href ?? \"#\"} anchorProps={{ class: \"k2b-calendar-month__more\" }}>\n {calendarMessages().calendarMoreEvents({ count: eventStack().hiddenCount })}\n </CalendarNavigationLink>\n </Show>\n </div>\n <div class=\"k2b-calendar-month__dots\">\n <For each={events.slice(0, 4)}>\n {(event) => (\n <span\n class=\"k2b-calendar-dot\"\n data-color={event.colorHex ? undefined : (event.color ?? \"blue\")}\n style={event.colorHex ? { \"background-color\": event.colorHex } : undefined}\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n );\n};\n\n/** One entry of the month grid: its whole range, and the days it covers as `YYYY-MM-DD` keys. */\ntype MonthItem = {\n /** Identifies the entry across the week rows it spans. */\n key: string;\n event: NormalizedEvent;\n firstKey: string;\n lastKey: string;\n /** All-day and multi-day entries are bars; the others stack in their day. */\n bar: boolean;\n /** Pieces of the entry per day, for the day list. */\n days: Map<string, NormalizedEvent>;\n};\n\ntype MonthSelection = { first: string; last: string };\n\n/** What the calendar's controller asks of the month view. */\ntype MonthCreateHandle = Pick<CalendarController, \"quickCreate\" | \"createTarget\"> & {\n /** The quiet quick create waits for the person to type its title. */\n typing: () => boolean;\n};\n\ntype MonthPopover =\n | { kind: \"day\"; dayKey: string; anchor: HTMLElement }\n | { kind: \"create\"; range: MonthSelection; anchor: HTMLElement; create?: string };\n\n/** Lane height and gap of the month entries, in rem; the stylesheet reads both from the grid's custom properties. */\nconst MONTH_LANE_REM = 1.25;\nconst MONTH_LANE_GAP_REM = 0.125;\n/** Rows drawn before the browser has measured the cells, as in the server response. */\nconst MONTH_DEFAULT_LANES = 3;\n/** Room a bar keeps beside its title and date hint: padding, torn edge, gap, and an icon such as a task box or a flag. */\nconst MONTH_HINT_SLACK_REM = 2.25;\n\nconst dayKeyNumber = (key: string): number => {\n const [year = \"1970\", month = \"1\", day = \"1\"] = key.split(\"-\");\n return Date.UTC(Number(year), Number(month) - 1, Number(day)) / 86_400_000;\n};\n\nconst orderedSelection = (anchor: string, focus: string): MonthSelection =>\n anchor <= focus ? { first: anchor, last: focus } : { first: focus, last: anchor };\n\n/** Groups the per-day pieces of the events back into one entry each: bars first, then the others by time. */\nconst monthItems = (events: NormalizedEvent[]): MonthItem[] => {\n const items = new Map<string, MonthItem>();\n for (const piece of events) {\n const key = `${piece.id}\\u0000${piece.sourceStartDate.getTime()}`;\n const item = items.get(key);\n if (item) {\n if (piece.dayKey < item.firstKey) item.firstKey = piece.dayKey;\n if (piece.dayKey > item.lastKey) item.lastKey = piece.dayKey;\n item.days.set(piece.dayKey, piece);\n continue;\n }\n items.set(key, {\n key,\n event: { ...piece, startDate: piece.sourceStartDate, endDate: piece.sourceEndDate },\n firstKey: piece.dayKey,\n lastKey: piece.dayKey,\n bar: false,\n days: new Map([[piece.dayKey, piece]]),\n });\n }\n for (const item of items.values())\n item.bar = item.firstKey !== item.lastKey || Boolean(item.event.allDay && item.event.display !== \"marker\");\n return [...items.values()].sort(\n (left, right) =>\n Number(right.bar) - Number(left.bar) ||\n left.event.sourceStartDate.getTime() - right.event.sourceStartDate.getTime() ||\n left.event.title.localeCompare(right.event.title),\n );\n};\n\nconst PRINTABLE_KEY = /^.$/u;\n\n/**\n * The month grid. A click selects a day and never navigates, a drag or Shift selects a range, and the arrow keys move\n * the selection. The quick create opens at the selection: quietly after a click, with the focus after a drag, a\n * double-click, Enter, or N. Every event is one bar per week row in a lane it keeps on each of its days, and each\n * cell shows as many entries as its height holds.\n */\nconst MonthView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n /** The first selected day, for the view switcher; `null` without a selection. */\n onFocusDay?: (date: Date | null) => void;\n /** Receives what the calendar's controller asks of the month view. */\n register?: (handle: MonthCreateHandle | null) => void;\n}): JSX.Element => {\n const calendarMessages = useCalendarMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n // The shown month and its grid change only with the month, so a refresh of the same month keeps every cell and its\n // focus.\n const month = createMemo(() => zonedYearMonth(props.date, dateConfig()), undefined, {\n equals: (previous, next) => previous.year === next.year && previous.month === next.month,\n });\n const weeks = createMemo(\n () =>\n calendar\n .getMonthGrid(month().year, month().month, dateConfig())\n .map((week) => week.map((day) => ({ day, key: calendar.formatDateKey(day, dateConfig()) }))),\n undefined,\n { equals: (previous, next) => previous.map((week) => week[0]?.key).join() === next.map((week) => week[0]?.key).join() },\n );\n const weekdays = createMemo(() => calendar.weekdays(dateConfig()));\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const items = createMemo(() => monthItems(props.events));\n const weekLayouts = createMemo(() =>\n weeks().map((week) =>\n layoutMonthWeek(\n week.map((entry) => entry.key),\n items().map((item) => ({ item, firstKey: item.firstKey, lastKey: item.lastKey, bar: item.bar })),\n ),\n ),\n );\n const [capacities, setCapacities] = createSignal<number[]>([]);\n const [cellWidth, setCellWidth] = createSignal(0);\n const [barFont, setBarFont] = createSignal(\"\");\n const [anchorKey, setAnchorKey] = createSignal<string | null>(null);\n const [focusKey, setFocusKey] = createSignal<string | null>(null);\n const [popover, setPopover] = createSignal<MonthPopover | null>(null);\n /** Whether the quick create holds the focus; until then the grid keeps it. */\n const [createActive, setCreateActive] = createSignal(false);\n const [linkedItem, setLinkedItem] = createSignal(\"\");\n const [movePreview, setMovePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n const cells = new Map<string, HTMLElement>();\n let popoverElement: HTMLDivElement | undefined;\n let cancelInteraction: (() => void) | undefined;\n let suppressClickUntil = 0;\n let lastPointer = \"mouse\";\n let menuKey: string | null = null;\n /** The day to select once paging with Page Up or Page Down has shown its month. */\n let pendingKey: string | null = null;\n\n const selection = createMemo((): MonthSelection | null => {\n const anchor = anchorKey();\n const focus = focusKey();\n return anchor && focus ? orderedSelection(anchor, focus) : null;\n });\n const parseKey = (key: string) => calendar.parseCalendarDate(key, dateConfig());\n const rangeOf = (range: MonthSelection): CalendarEventTimeChange => ({\n start: parseKey(range.first),\n end: calendar.addDays(parseKey(range.last), 1, dateConfig()),\n allDay: true,\n });\n const visibleKeys = createMemo(() => weeks().flatMap((week) => week.map((entry) => entry.key)));\n const rovingKey = createMemo(() => {\n const keys = visibleKeys();\n const focus = focusKey();\n if (focus && keys.includes(focus)) return focus;\n if (keys.includes(todayKey())) return todayKey();\n return calendar.formatDateKey(zonedMonthDate(month().year, month().month, dateConfig()), dateConfig());\n });\n const dropRange = createMemo((): MonthSelection | null => {\n const preview = movePreview();\n if (!preview) return null;\n const keys = previewSegments(preview, visibleKeys().map(parseKey), dateConfig()).map((piece) => piece.dayKey);\n if (keys.length === 0) return null;\n keys.sort();\n return { first: keys[0]!, last: keys[keys.length - 1]! };\n });\n const within = (range: MonthSelection | null, key: string) => Boolean(range && key >= range.first && key <= range.last);\n /** Where a day sits in the selection: alone, at its start or end, or in between. */\n const selectionPart = (key: string) => {\n const range = selection();\n if (!range || !within(range, key)) return undefined;\n if (range.first === range.last) return \"single\";\n return key === range.first ? \"start\" : key === range.last ? \"end\" : \"middle\";\n };\n\n const select = (anchor: string | null, focus: string | null = anchor) => {\n setAnchorKey(anchor);\n setFocusKey(focus);\n };\n // The host learns every change of the selected days, and a new month starts without a selection. The selection\n // goes with the view, so switching to another view reports that nothing is selected.\n createEffect(on(selection, (range) => props.owner.onSelectionChange?.(range ? rangeOf(range) : null), { defer: true }));\n onCleanup(() => {\n if (untrack(selection)) props.owner.onSelectionChange?.(null);\n });\n createEffect(on(selection, (range) => props.onFocusDay?.(range ? parseKey(range.first) : null)));\n createEffect(\n on(\n month,\n () => {\n setPopover(null);\n const key = pendingKey;\n pendingKey = null;\n if (key && visibleKeys().includes(key)) {\n select(key);\n queueMicrotask(() => focusCell(key));\n } else select(null);\n },\n { defer: true },\n ),\n );\n\n const dayLabel = (day: Date) =>\n day.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const shortDayLabel = (key: string, withMonth = true) =>\n parseKey(key).toLocaleDateString(dateConfig().locale ?? \"en\", {\n day: \"numeric\",\n ...(withMonth ? { month: \"short\" } : {}),\n timeZone: dateConfig().timeZone,\n });\n const monthDayLabel = (date: Date, withTime: boolean) =>\n date.toLocaleString(dateConfig().locale ?? \"en\", {\n month: \"long\",\n day: \"numeric\",\n ...(withTime ? { hour: \"2-digit\", minute: \"2-digit\" } : {}),\n timeZone: dateConfig().timeZone,\n });\n /** A long event names the days it spans; a one-day event keeps the chip's own title and time. */\n const itemLabel = (item: MonthItem): string | undefined => {\n if (item.firstKey === item.lastKey) return undefined;\n const allDay = Boolean(item.event.allDay);\n return calendarMessages().calendarEventTime({\n title: item.event.title,\n start: monthDayLabel(allDay ? parseKey(item.firstKey) : item.event.sourceStartDate, !allDay),\n end: monthDayLabel(allDay ? parseKey(item.lastKey) : item.event.sourceEndDate, !allDay),\n });\n };\n /** The start time before the title of a one-day entry; bars and all-day entries show none. */\n const leadingTime = (item: MonthItem) =>\n item.bar || item.event.allDay ? undefined : formatTime(item.event.sourceStartDate, dateConfig());\n /** The day at a torn end of a bar, with its month when that day lies outside the shown month. */\n const hintDate = (target: string) => ({\n day: Number(target.slice(8, 10)),\n month:\n Number(target.slice(0, 4)) === month().year && Number(target.slice(5, 7)) === month().month + 1\n ? undefined\n : parseKey(target)\n .toLocaleDateString(dateConfig().locale ?? \"en\", { month: \"short\", timeZone: dateConfig().timeZone })\n .replace(/\\.$/, \"\"),\n });\n const selectionHeading = (range: MonthSelection) => {\n if (range.first === range.last)\n return parseKey(range.first).toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n });\n const days = dayKeyNumber(range.last) - dayKeyNumber(range.first) + 1;\n return calendarMessages().calendarSelectedDays({ start: shortDayLabel(range.first), end: shortDayLabel(range.last), count: days });\n };\n const viewAvailable = (view: CalendarView) => !props.owner.views || props.owner.views.includes(view);\n const viewHref = (key: string, view: CalendarView) => (viewAvailable(view) ? props.owner.getDateHref?.(parseKey(key), view) : undefined);\n /** Whether the calendar can open another view at a day: through a link, or through the host's date change. */\n const canOpenView = (view: CalendarView) => viewAvailable(view) && Boolean(props.owner.getDateHref || props.owner.onDateChange);\n const openView = (key: string, view: CalendarView) => {\n const href = viewHref(key, view);\n if (href) followCalendarHref(props.owner, href);\n else openViewAt(props.owner, parseKey(key), view);\n };\n /** The calendar's own entries of the day menu, Open day and Open week, need no application entries. */\n const hasMenu = () => Boolean(props.owner.selectionMenu) || canOpenView(\"day\") || canOpenView(\"week\");\n\n /** The day cell under a point, from the cells' boxes: a bar lies over days that are not its parent. */\n const dayKeyAtPoint = (clientX: number, clientY: number): string | null => {\n for (const [key, cell] of cells) {\n if (!cell.isConnected) continue;\n const rect = cell.getBoundingClientRect();\n if (clientX >= rect.left && clientX < rect.right && clientY >= rect.top && clientY < rect.bottom) return key;\n }\n return null;\n };\n const focusCell = (key: string) => cells.get(key)?.focus({ preventScroll: true });\n const closePopover = (restoreFocus = true) => {\n if (!popover()) return;\n setPopover(null);\n setCreateActive(false);\n if (restoreFocus) focusCell(rovingKey());\n };\n const popoverFocusable = () =>\n popoverElement?.querySelector<HTMLElement>(\"input,textarea,select,button,a[href],[tabindex]:not([tabindex='-1'])\") ?? null;\n\n /**\n * Opens the quick create at the selection. Quietly, it only shows beside the grid, which keeps the focus until the\n * person types or tabs into it; otherwise it takes the focus at once.\n */\n const openCreate = (range: MonthSelection, options: { active: boolean; create?: string }) => {\n if (!props.owner.renderQuickCreate) return false;\n const anchor = cells.get(focusKey() && within(range, focusKey()!) ? focusKey()! : range.last);\n if (!anchor) return false;\n setCreateActive(options.active);\n setPopover({ kind: \"create\", range, anchor, create: options.create });\n return true;\n };\n const activateCreate = () => {\n if (popover()?.kind !== \"create\") return false;\n setCreateActive(true);\n popoverFocusable()?.focus();\n return true;\n };\n /** Enter, a double-click, and N create on the selection, with the quick create or the host's own create action. */\n const createOnSelection = () => {\n const range = selection();\n if (!range) return;\n if (openCreate(range, { active: true })) return;\n if (props.owner.onSlotActivate) props.owner.onSlotActivate(rangeOf(range));\n };\n onMount(() =>\n props.register?.({\n quickCreate: (create) => {\n const range = selection() ?? { first: rovingKey(), last: rovingKey() };\n select(range.first, range.last);\n if (!openCreate(range, { active: true, create })) props.owner.onSlotActivate?.(rangeOf(range));\n },\n createTarget: () => rangeOf(selection() ?? { first: rovingKey(), last: rovingKey() }),\n typing: () => popover()?.kind === \"create\" && !createActive(),\n }),\n );\n onCleanup(() => props.register?.(null));\n const openDayList = (key: string) => {\n const anchor = cells.get(key);\n if (!anchor) return;\n setCreateActive(true);\n setPopover({ kind: \"day\", dayKey: key, anchor });\n };\n /** A quiet quick create follows the selection; any other popover closes when the selection changes. */\n const followSelection = () => {\n const current = popover();\n const range = selection();\n if (!current) return;\n if (current.kind === \"create\" && !createActive() && range) openCreate(range, { active: false });\n else closePopover(false);\n };\n\n const pageTo = (target: string) => {\n const date = parseKey(target);\n const href = props.owner.getDateHref?.(date, \"month\");\n // Only a month that is on its way may select the day, so a host that cannot page never leaves one behind.\n if (props.owner.onDateChange) {\n pendingKey = target;\n props.owner.onDateChange(date, \"month\");\n } else if (href) {\n pendingKey = target;\n followCalendarHref(props.owner, href);\n }\n };\n const moveFocus = (key: string, extend: boolean) => {\n if (!visibleKeys().includes(key)) {\n pageTo(key);\n return;\n }\n if (extend) select(anchorKey() ?? focusKey() ?? key, key);\n else select(key);\n focusCell(key);\n followSelection();\n };\n const onCellKeyDown = (event: KeyboardEvent, key: string) => {\n if (event.target !== event.currentTarget || event.ctrlKey || event.metaKey || event.altKey) return;\n const current = popover();\n const quiet = current?.kind === \"create\" && !createActive();\n // The quiet quick create takes over once the person types or tabs into it. Space stays the grid's key for the day\n // list; N is a title's first letter like any other, as the quick create it would open is already there.\n if (quiet && ((event.key === \"Tab\" && !event.shiftKey) || (PRINTABLE_KEY.test(event.key) && event.key !== \" \"))) {\n const field = popoverFocusable();\n if (field) {\n if (event.key === \"Tab\") event.preventDefault();\n setCreateActive(true);\n field.focus();\n return;\n }\n }\n const day = parseKey(key);\n const shift = (days: number) => calendar.formatDateKey(calendar.addDays(day, days, dateConfig()), dateConfig());\n const weekday = (dayKeyNumber(key) - dayKeyNumber(calendar.formatDateKey(calendar.startOfWeek(day, dateConfig()), dateConfig()))) % 7;\n const target =\n event.key === \"ArrowLeft\"\n ? shift(-1)\n : event.key === \"ArrowRight\"\n ? shift(1)\n : event.key === \"ArrowUp\"\n ? shift(-7)\n : event.key === \"ArrowDown\"\n ? shift(7)\n : event.key === \"Home\"\n ? shift(-weekday)\n : event.key === \"End\"\n ? shift(6 - weekday)\n : null;\n if (target) {\n event.preventDefault();\n moveFocus(target, event.shiftKey);\n return;\n }\n if (event.key === \"PageUp\" || event.key === \"PageDown\") {\n event.preventDefault();\n pageTo(calendar.formatDateKey(addMonthsClamped(day, event.key === \"PageUp\" ? -1 : 1, dateConfig()), dateConfig()));\n return;\n }\n if (event.key === \"Enter\" || ((event.key === \"n\" || event.key === \"N\") && !event.shiftKey)) {\n event.preventDefault();\n if (!within(selection(), key)) select(key);\n createOnSelection();\n return;\n }\n if (event.key === \" \") {\n event.preventDefault();\n if (!within(selection(), key)) select(key);\n openDayList(key);\n return;\n }\n if (event.key === \"Escape\") {\n if (current) closePopover(false);\n else if (selection()) select(null);\n else return;\n event.preventDefault();\n return;\n }\n // The keyboard opens the day's menu where the day is, as a right-click there would.\n if (hasMenu() && (event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\"))) {\n event.preventDefault();\n event.stopPropagation();\n menuKey = key;\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n event.currentTarget?.dispatchEvent(\n new MouseEvent(\"contextmenu\", { bubbles: true, cancelable: true, clientX: rect.left + 12, clientY: rect.top + 12 }),\n );\n }\n };\n\n const fromControl = (event: Event) =>\n event.target instanceof Element && Boolean(event.target.closest(\"a,button,[data-calendar-event],.k2b-calendar-month__lanes > *\"));\n const onCellClick = (event: MouseEvent, key: string) => {\n if (fromControl(event) || performance.now() < suppressClickUntil) return;\n // A second tap on the one selected day opens the quick create, as a double-click does with a mouse.\n if (lastPointer === \"touch\") {\n const range = selection();\n if (range && range.first === key && range.last === key && openCreate(range, { active: true })) return;\n select(key);\n closePopover(false);\n return;\n }\n if (event.shiftKey && anchorKey()) select(anchorKey(), key);\n else select(key);\n focusCell(key);\n const range = selection();\n if (range) openCreate(range, { active: false });\n };\n const onCellDoubleClick = (event: MouseEvent, key: string) => {\n if (fromControl(event) || lastPointer === \"touch\") return;\n event.preventDefault();\n if (!within(selection(), key)) select(key);\n if (popover()?.kind === \"create\") activateCreate();\n else createOnSelection();\n };\n /** The day under the pointer: a bar that spans several days sits in the cell of its first day. */\n const pressedKey = (event: MouseEvent, key: string) => dayKeyAtPoint(event.clientX, event.clientY) ?? key;\n const onCellPointerDown = (event: PointerEvent, key: string) => {\n lastPointer = event.pointerType;\n // The menu acts on the pressed day, or on the selection when the press is inside it.\n menuKey = pressedKey(event, key);\n if (event.pointerType !== \"mouse\" || event.button !== 0 || event.shiftKey || fromControl(event)) return;\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event,\n resolve: (clientX, clientY) => dayKeyAtPoint(clientX, clientY),\n onActivate: () => {\n suppressClickUntil = performance.now() + 400;\n closePopover(false);\n select(key);\n },\n onPreview: (current) => select(key, current),\n onCommit: (current) => {\n select(key, current);\n focusCell(current);\n const range = orderedSelection(key, current);\n openCreate(range, { active: range.first !== range.last });\n },\n onCancel: () => select(key),\n });\n };\n const onMenuOpen = () => {\n closePopover(false);\n const key = menuKey;\n if (key && !within(selection(), key)) select(key);\n };\n // Until a day is selected, the menu acts on the day that takes focus, so it is never empty.\n const menuItems = createMemo((): DropdownItem[] => {\n if (!hasMenu()) return [];\n const range = selection() ?? { first: rovingKey(), last: rovingKey() };\n const own =\n props.owner.selectionMenu?.(rangeOf(range), {\n quickCreate: (create) => {\n select(range.first, range.last);\n if (!openCreate(range, { active: true, create })) props.owner.onSlotActivate?.(rangeOf(range));\n },\n }) ?? [];\n const actions = own.filter((item): item is DropdownAction | DropdownChoice => !(\"items\" in item));\n const sections = own.filter((item): item is DropdownSection => \"items\" in item);\n const navigation: DropdownAction[] = [\n ...(canOpenView(\"day\")\n ? [{ label: calendarMessages().calendarOpenDay, icon: \"ti ti-zoom-in\", action: () => openView(range.first, \"day\") }]\n : []),\n ...(canOpenView(\"week\")\n ? [{ label: calendarMessages().calendarOpenWeek, icon: \"ti ti-calendar-week\", action: () => openView(range.first, \"week\") }]\n : []),\n ...(range.first !== range.last\n ? [{ label: calendarMessages().calendarClearSelection, icon: \"ti ti-x\", action: () => select(null) }]\n : []),\n ];\n const groups: DropdownSection[] = [{ items: actions }, ...sections, { items: navigation }].filter(\n (section) => section.items.length > 0,\n );\n // The first group names the days the menu acts on, also when the calendar's own entries are all it has.\n const [first, ...rest] = groups;\n return first && !first.sectionLabel ? [{ ...first, sectionLabel: selectionHeading(range) }, ...rest] : groups;\n });\n\n const clearMove = () => {\n setMovePreview(null);\n setMovingEventId(\"\");\n };\n const startMove = (pointerEvent: PointerEvent, item: MonthItem, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n const event = item.event;\n const grabbed = dayKeyAtPoint(pointerEvent.clientX, pointerEvent.clientY) ?? item.firstKey;\n const firstDay = startOfDay(event.sourceStartDate, dateConfig());\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const key = dayKeyAtPoint(clientX, clientY);\n if (!key) return null;\n // The event moves by as many days as the pointer, wherever on the bar it was grabbed.\n const day = calendar.addDays(firstDay, dayKeyNumber(key) - dayKeyNumber(grabbed), dateConfig());\n return { id: event.id, title: event.title, ...moveEventToDay(event, day, dateConfig()) };\n },\n onActivate: () => {\n markDragged();\n suppressClickUntil = performance.now() + 400;\n closePopover(false);\n setMovingEventId(event.id);\n },\n onPreview: setMovePreview,\n onCommit: (next) => {\n clearMove();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearMove,\n });\n };\n\n // Each week row measures the room below its day numbers; the rows only resize with the grid, never with content.\n let observer: ResizeObserver | undefined;\n const lanesOf = new WeakMap<Element, number>();\n const measure = (element: Element, week: number) => {\n const style = getComputedStyle(element);\n const rootSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n const capacity = monthLaneCapacity(element.clientHeight, MONTH_LANE_REM * rootSize, MONTH_LANE_GAP_REM * rootSize);\n setCapacities((current) => {\n if (current[week] === capacity) return current;\n const next = [...current];\n next[week] = capacity;\n return next;\n });\n if (week === 0) {\n setCellWidth(element.clientWidth);\n setBarFont(`600 ${0.6875 * rootSize}px ${style.fontFamily}`);\n }\n };\n const observeLanes = (element: HTMLElement, week: number) => {\n lanesOf.set(element, week);\n if (typeof ResizeObserver === \"undefined\") return;\n observer ??= new ResizeObserver((entries) => {\n for (const entry of entries) {\n const index = lanesOf.get(entry.target);\n if (index !== undefined) measure(entry.target, index);\n }\n });\n observer.observe(element);\n onCleanup(() => observer?.unobserve(element));\n };\n /** A date hint shows only when the bar holds its title and the hint whole; screen readers get the range anyway. */\n const hintFits = (title: string, hint: string, span: number) => {\n const width = cellWidth();\n const font = barFont();\n if (width <= 0 || !font) return false;\n const rootSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n return textWidth(title, font) + textWidth(hint, font) + MONTH_HINT_SLACK_REM * rootSize <= span * width;\n };\n\n createEffect(() => {\n const current = popover();\n const element = popoverElement;\n if (!element) return;\n if (!current) {\n if (element.matches(\":popover-open\")) element.hidePopover();\n return;\n }\n if (!element.matches(\":popover-open\")) element.showPopover();\n const focus = untrack(createActive);\n queueMicrotask(() => {\n if (popover() !== current || !element.isConnected) return;\n placeCalendarPopover(current.anchor, element);\n if (focus) popoverFocusable()?.focus();\n });\n });\n onMount(() => {\n const reposition = () => {\n const current = popover();\n if (current && popoverElement) placeCalendarPopover(current.anchor, popoverElement);\n };\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n onCleanup(() => {\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n });\n });\n onCleanup(() => {\n cancelInteraction?.();\n observer?.disconnect();\n });\n\n const dayEntries = (dayKey: string) => items().filter((item) => item.days.has(dayKey));\n /** Every bar of a long entry lights up with the one under the pointer. */\n const linkProps = (item: MonthItem) => ({\n onPointerEnter: (event: PointerEvent) => {\n if (event.pointerType === \"mouse\") setLinkedItem(item.key);\n },\n onPointerLeave: () => {\n if (linkedItem() === item.key) setLinkedItem(\"\");\n },\n });\n\n const grid = () => (\n <div\n class=\"k2b-calendar-month\"\n role=\"grid\"\n aria-label={formatMonth(props.date, dateConfig())}\n aria-multiselectable=\"true\"\n data-lanes=\"true\"\n style={{\n \"grid-template-rows\": `auto repeat(${weeks().length}, minmax(5rem, 1fr))`,\n \"--k2b-calendar-lane\": `${MONTH_LANE_REM}rem`,\n \"--k2b-calendar-lane-gap\": `${MONTH_LANE_GAP_REM}rem`,\n }}\n >\n <div class=\"k2b-calendar-month__weekdays\" role=\"row\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__weekday\" role=\"columnheader\">\n {calendarMessages().weekShort}\n </div>\n </Show>\n <For each={weekdays()}>\n {(day, index) => (\n <div class=\"k2b-calendar-month__weekday\" role=\"columnheader\" data-weekend={index() > 4 ? \"true\" : undefined}>\n {day}\n </div>\n )}\n </For>\n </div>\n <For each={weeks()}>\n {(week, weekIndex) => {\n const fit = createMemo(() =>\n fitMonthWeek(weekLayouts()[weekIndex()] ?? { bars: [], singles: [] }, capacities()[weekIndex()] ?? MONTH_DEFAULT_LANES),\n );\n const weekHref = () => viewHref(week[0]!.key, \"week\");\n const weekNumber = () => zonedWeekNumber(week[0]!.day, dateConfig());\n return (\n <div class=\"k2b-calendar-month__week\" role=\"row\" data-week-numbers={props.owner.withWeekNumbers ? \"true\" : undefined}>\n <Show when={props.owner.withWeekNumbers}>\n <div class=\"k2b-calendar-month__week-number\" role=\"rowheader\">\n <Show\n when={weekHref()}\n fallback={\n <Show when={canOpenView(\"week\")} fallback={weekNumber()}>\n <button\n type=\"button\"\n class=\"k2b-calendar-month__week-link\"\n tabIndex={-1}\n title={calendarMessages().calendarOpenWeekNumber({ week: weekNumber() })}\n aria-label={calendarMessages().calendarOpenWeekNumber({ week: weekNumber() })}\n onClick={() => openView(week[0]!.key, \"week\")}\n >\n {weekNumber()}\n </button>\n </Show>\n }\n >\n {(href) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={href()}\n anchorProps={{\n class: \"k2b-calendar-month__week-link\",\n tabIndex: -1,\n title: calendarMessages().calendarOpenWeekNumber({ week: weekNumber() }),\n \"aria-label\": calendarMessages().calendarOpenWeekNumber({ week: weekNumber() }),\n }}\n >\n {weekNumber()}\n </CalendarNavigationLink>\n )}\n </Show>\n </div>\n </Show>\n <For each={week}>\n {({ day, key }, column) => {\n const dayBadge = props.owner.dayBadges?.[key];\n const sameMonth = calendar.isSameMonth(day, props.date, dateConfig());\n const label = dayLabel(day);\n const bars = createMemo(() => fit().bars.filter((bar) => bar.startColumn === column()));\n const cell = () => fit().cells[column()] ?? { top: 0, shown: [], hidden: 0 };\n return (\n <div\n ref={(element) => cells.set(key, element)}\n class=\"k2b-calendar-month__day\"\n role=\"gridcell\"\n tabIndex={rovingKey() === key ? 0 : -1}\n aria-label={label}\n aria-selected={within(selection(), key) ? \"true\" : \"false\"}\n aria-current={key === todayKey() ? \"date\" : undefined}\n data-calendar-day-key={key}\n data-outside={!sameMonth ? \"true\" : undefined}\n data-weekend={column() > 4 ? \"true\" : undefined}\n data-past={key < todayKey() ? \"true\" : undefined}\n data-selected={selectionPart(key)}\n data-drop-preview={within(dropRange(), key) ? \"true\" : undefined}\n onClick={(event) => onCellClick(event, key)}\n onDblClick={(event) => onCellDoubleClick(event, key)}\n onPointerDown={(event) => onCellPointerDown(event, key)}\n onContextMenu={(event) => {\n // The pressed day takes the focus, so closing the menu with Escape returns there.\n menuKey = pressedKey(event, key);\n if (hasMenu()) focusCell(menuKey);\n }}\n onKeyDown={(event) => onCellKeyDown(event, key)}\n >\n <div class=\"k2b-calendar-month__day-header\">\n <span\n class=\"k2b-calendar-month__day-number\"\n data-today={key === todayKey() ? \"true\" : undefined}\n data-outside={!sameMonth ? \"true\" : undefined}\n >\n {calendar.formatDayNumber(day, dateConfig())}\n </span>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-month__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-month__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </div>\n <div\n class=\"k2b-calendar-month__lanes\"\n ref={(element) => {\n if (column() === 0) observeLanes(element, weekIndex());\n }}\n >\n <For each={bars()}>\n {(bar) => {\n const span = bar.endColumn - bar.startColumn + 1;\n const startHint = () => {\n if (!bar.continuesBefore) return undefined;\n const hint = calendarMessages().calendarContinuesFrom(hintDate(bar.item.firstKey));\n return hintFits(bar.item.event.title, hint, span) ? hint : undefined;\n };\n const endHint = () => {\n if (!bar.continuesAfter) return undefined;\n const hint = calendarMessages().calendarContinuesUntil(hintDate(bar.item.lastKey));\n return hintFits(`${bar.item.event.title}${startHint() ?? \"\"}`, hint, span) ? hint : undefined;\n };\n return (\n <div\n class=\"k2b-calendar-month__segment\"\n style={{ \"--k2b-calendar-span\": String(span), \"--k2b-calendar-row\": String(bar.lane) }}\n data-bar=\"true\"\n data-linked={linkedItem() === bar.item.key && bar.item.firstKey !== bar.item.lastKey ? \"true\" : undefined}\n data-continues-before={bar.continuesBefore ? \"true\" : undefined}\n data-continues-after={bar.continuesAfter ? \"true\" : undefined}\n {...linkProps(bar.item)}\n >\n <EventChip\n event={bar.item.event}\n owner={props.owner}\n href={eventHref(props.owner, bar.item.event)}\n label={itemLabel(bar.item)}\n compact\n bar\n continuesBefore={bar.continuesBefore}\n continuesAfter={bar.continuesAfter}\n hintStart={startHint()}\n hintEnd={endHint()}\n moving={movingEventId() === bar.item.event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, bar.item, markDragged)\n : undefined\n }\n />\n </div>\n );\n }}\n </For>\n <For each={cell().shown}>\n {(item, index) => (\n <div\n class=\"k2b-calendar-month__segment\"\n style={{ \"--k2b-calendar-span\": \"1\", \"--k2b-calendar-row\": String(cell().top + index()) }}\n >\n <EventChip\n event={item.event}\n owner={props.owner}\n href={eventHref(props.owner, item.event)}\n compact\n leadingTime={leadingTime(item)}\n moving={movingEventId() === item.event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startMove(pointerEvent, item, markDragged)\n : undefined\n }\n />\n </div>\n )}\n </For>\n <Show when={cell().hidden > 0}>\n <button\n type=\"button\"\n class=\"k2b-calendar-month__more\"\n tabIndex={-1}\n style={{ \"--k2b-calendar-row\": String(cell().top + cell().shown.length) }}\n aria-label={calendarMessages().calendarMoreEventsOn({ count: cell().hidden, label })}\n aria-haspopup=\"dialog\"\n aria-expanded={(() => {\n const current = popover();\n return current?.kind === \"day\" && current.dayKey === key;\n })()}\n onClick={() => {\n const current = popover();\n if (current?.kind === \"day\" && current.dayKey === key) closePopover(false);\n else openDayList(key);\n }}\n >\n <span class=\"k2b-calendar-month__more-long\">\n {calendarMessages().calendarMoreEvents({ count: cell().hidden })}\n </span>\n <span class=\"k2b-calendar-month__more-short\">+{cell().hidden}</span>\n </button>\n </Show>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n );\n }}\n </For>\n </div>\n );\n\n const dayList = (dayKey: string) => {\n const day = parseKey(dayKey);\n const href = viewHref(dayKey, \"day\");\n // Read where it renders, so a refresh while the list is open updates it as it does the grid.\n const entries = () => dayEntries(dayKey);\n return (\n <div class=\"k2b-calendar-day-list\">\n <div class=\"k2b-calendar-day-list__title\">{dayLabel(day)}</div>\n <Show\n when={entries().length > 0}\n fallback={<p class=\"k2b-calendar-day-list__empty\">{calendarMessages().calendarNothingPlanned}</p>}\n >\n <ul class=\"k2b-calendar-day-list__events\">\n <For each={entries()}>\n {(item) => (\n <li>\n <EventChip\n event={item.event}\n owner={props.owner}\n href={eventHref(props.owner, item.event)}\n label={itemLabel(item)}\n compact\n bar={item.bar}\n leadingTime={leadingTime(item)}\n />\n </li>\n )}\n </For>\n </ul>\n </Show>\n <div class=\"k2b-calendar-day-list__actions\">\n <Show\n when={href}\n fallback={\n <Show when={canOpenView(\"day\")}>\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={() => openView(dayKey, \"day\")}>\n <i class=\"ti ti-zoom-in\" aria-hidden=\"true\" />\n {calendarMessages().calendarOpenDay}\n </Button>\n </Show>\n }\n >\n {(dayHref) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={dayHref()}\n anchorProps={{ class: \"k2b-button\", \"data-variant\": \"ghost\", \"data-size\": \"sm\" }}\n >\n <i class=\"ti ti-zoom-in\" aria-hidden=\"true\" />\n {calendarMessages().calendarOpenDay}\n </CalendarNavigationLink>\n )}\n </Show>\n <Show when={props.owner.renderQuickCreate}>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n select(dayKey);\n openCreate({ first: dayKey, last: dayKey }, { active: true });\n }}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n {calendarMessages().calendarNewEvent}\n </Button>\n </Show>\n </div>\n </div>\n );\n };\n\n return (\n <>\n <Show when={hasMenu()} fallback={grid()}>\n <GestureMenu\n items={menuItems()}\n label={calendarMessages().calendarSelectionActions}\n tabIndex={-1}\n onOpen={onMenuOpen}\n class=\"k2b-calendar-month-menu\"\n >\n {grid()}\n </GestureMenu>\n </Show>\n <div\n ref={popoverElement}\n class=\"k2b-calendar-popover\"\n popover=\"auto\"\n role=\"dialog\"\n aria-label={(() => {\n const current = popover();\n if (current?.kind === \"day\") return dayLabel(parseKey(current.dayKey));\n return calendarMessages().calendarQuickCreate;\n })()}\n data-kind={popover()?.kind}\n data-quiet={popover()?.kind === \"create\" && !createActive() ? \"true\" : undefined}\n onFocusIn={() => setCreateActive(true)}\n onToggle={(event) => {\n // A late close of the popover that another opening already replaced keeps the new one. Focus returns to the\n // grid only from inside the popover, never from what a click outside it chose.\n if (event.newState !== \"closed\" || !popover() || event.currentTarget.matches(\":popover-open\")) return;\n const inside = event.currentTarget.contains(document.activeElement) || document.activeElement === document.body;\n closePopover(inside);\n }}\n >\n {/* Keyed: another day or another selection replaces the content while the popover stays open. A late close, such\n as after a slow save, closes only the quick create that asked for it. */}\n <Show when={popover()} keyed>\n {(value) =>\n value.kind === \"create\"\n ? props.owner.renderQuickCreate?.(rangeOf(value.range), {\n create: value.create,\n close: () => {\n if (popover() === value) closePopover();\n },\n })\n : dayList(value.dayKey)\n }\n </Show>\n </div>\n </>\n );\n};\n\nconst TimeGridView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n days: Date[];\n}): JSX.Element => {\n const calendarMessages = useCalendarMessages();\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const gridStartHour = () => props.owner.visibleStartHour ?? 0;\n const gridEndHour = () => props.owner.visibleEndHour ?? 23;\n const businessStartHour = () => props.owner.startHour ?? 8;\n const businessEndHour = () => props.owner.endHour ?? 18;\n const hours = createMemo(() => Array.from({ length: gridEndHour() - gridStartHour() + 1 }, (_, index) => gridStartHour() + index));\n const [timePreview, setTimePreview] = createSignal<CalendarPreview | null>(null);\n const [movingEventId, setMovingEventId] = createSignal(\"\");\n const [expandedOverflow, setExpandedOverflow] = createSignal(\"\");\n let scrollContainer: HTMLDivElement | undefined;\n let timeGrid: HTMLDivElement | undefined;\n let timeGutter: HTMLDivElement | undefined;\n let defaultHourMarker: HTMLDivElement | undefined;\n let cancelInteraction: (() => void) | undefined;\n let suppressSlotClickUntil = 0;\n const slotEnd = (start: Date) => addMinutes(start, 60);\n const previewEvents = createMemo(() => previewSegments(timePreview(), props.days, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, { allDay: NormalizedEvent[]; timed: NormalizedEvent[] }>();\n for (const event of props.events) {\n const bucket = grouped.get(event.dayKey) ?? { allDay: [], timed: [] };\n (event.allDay ? bucket.allDay : bucket.timed).push(event);\n grouped.set(event.dayKey, bucket);\n }\n return grouped;\n });\n const clearInteraction = () => {\n setTimePreview(null);\n setMovingEventId(\"\");\n };\n const dayAtPoint = (clientX: number, clientY: number): Date | null => {\n const target = document.elementFromPoint(clientX, clientY)?.closest<HTMLElement>(\"[data-calendar-day-key]\");\n const dayKey = target?.dataset.calendarDayKey;\n return dayKey ? calendar.parseCalendarDate(dayKey, dateConfig()) : null;\n };\n const timeAtPoint = (clientX: number, clientY: number): Date | null => {\n if (!timeGrid || !timeGutter) return null;\n const gridRect = timeGrid.getBoundingClientRect();\n const gutterRect = timeGutter.getBoundingClientRect();\n const dayIndex = calendarDayIndexAtPoint(clientX, gutterRect.right, gridRect.right - gutterRect.right, props.days.length);\n if (dayIndex === null) return null;\n const minute = Math.min(\n gridEndHour() * 60 + 45,\n calendarMinuteAtPoint(clientY, gridRect.top, gridRect.height, gridStartHour(), gridEndHour()),\n );\n return zonedMinuteSlot(props.days[dayIndex]!, minute, dateConfig());\n };\n const beginInteraction = (options: Parameters<typeof startCalendarPointerSession<CalendarPreview>>[0]) => {\n cancelInteraction?.();\n cancelInteraction = startCalendarPointerSession(options);\n };\n const startTimedMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n const pointerStart = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY) ?? event.sourceStartDate;\n const duration = Math.max(15 * 60_000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());\n const offsetMinutes = Math.max(\n 0,\n Math.min(duration / 60_000, Math.round((pointerStart.getTime() - event.sourceStartDate.getTime()) / 900_000) * 15),\n );\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const start = new Date(pointer.getTime() - offsetMinutes * 60_000);\n return { id: event.id, title: event.title, start, end: new Date(start.getTime() + duration), allDay: false };\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startAllDayMove = (pointerEvent: PointerEvent, event: NormalizedEvent, markDragged: () => void) => {\n if (!props.owner.onEventDrop) return;\n beginInteraction({\n event: pointerEvent,\n resolve: (clientX, clientY) => {\n const day = dayAtPoint(clientX, clientY);\n return day ? { id: event.id, title: event.title, ...moveEventTo(event, startOfDay(day, dateConfig()), true, dateConfig()) } : null;\n },\n onActivate: () => {\n markDragged();\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n const startRange = (pointerEvent: PointerEvent) => {\n if (!props.owner.onSlotActivate || pointerEvent.pointerType === \"touch\") return;\n const anchor = timeAtPoint(pointerEvent.clientX, pointerEvent.clientY);\n if (!anchor) return;\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n resolve: (clientX, clientY) => {\n const current = timeAtPoint(clientX, clientY);\n if (!current) return null;\n const start = current < anchor ? current : anchor;\n const endBase = current < anchor ? anchor : current;\n return { id: \"calendar-create-preview\", start, end: addMinutes(endBase, 15), allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n props.owner.onSlotActivate?.(next);\n },\n onCancel: clearInteraction,\n });\n };\n const timeRangeLayout = (startDate: Date, endDate: Date) => {\n const start = zonedHour(startDate, dateConfig());\n const end = zonedHour(endDate, dateConfig());\n const visibleStart = Math.max(gridStartHour(), start);\n const visibleEnd = Math.min(gridEndHour() + 1, end);\n const total = Math.max(1, gridEndHour() - gridStartHour() + 1);\n return {\n top: Math.max(0, ((visibleStart - gridStartHour()) / total) * 100),\n height: Math.max(1.25, ((visibleEnd - visibleStart) / total) * 100),\n };\n };\n const eventLayout = (event: NormalizedEvent) => timeRangeLayout(event.startDate, event.endDate);\n const isDayView = () => props.days.length === 1;\n const visibleLaneCount = (lanes: number) => (isDayView() ? lanes : Math.min(lanes, 3));\n const overflowLayouts = (layouts: TimedEventLayout[]): TimedOverflowLayout[] => {\n if (isDayView()) return [];\n const groups = new Map<number, TimedOverflowLayout>();\n for (const layout of layouts) {\n if (layout.lane < visibleLaneCount(layout.lanes)) continue;\n const existing = groups.get(layout.groupId);\n if (existing) existing.hiddenEvents.push(layout.event);\n else\n groups.set(layout.groupId, {\n groupId: layout.groupId,\n hiddenEvents: [layout.event],\n groupStartDate: layout.groupStartDate,\n groupEndDate: layout.groupEndDate,\n });\n }\n return [...groups.values()];\n };\n // 12 rem per lane. The 40 rem grid is wider than one or two lanes, so only\n // three or more make the day scroll, and one lane fits beside a tablet drawer.\n const dayColumnMinWidth = (layouts: TimedEventLayout[]) => {\n if (!isDayView()) return undefined;\n const lanes = Math.max(1, ...layouts.map((layout) => layout.lanes));\n return `${lanes * 12}rem`;\n };\n const laneStyle = (layoutItem: TimedEventLayout) => {\n if (isDayView()) {\n const laneWidth = 100 / layoutItem.lanes;\n return {\n left: `calc(${layoutItem.lane * laneWidth}% + 0.25rem)`,\n width: `calc(${laneWidth}% - 0.5rem)`,\n };\n }\n const visibleLanes = visibleLaneCount(layoutItem.lanes);\n return {\n left: `${layoutItem.lanes <= 1 ? 0 : (28 / Math.max(1, visibleLanes - 1)) * layoutItem.lane}%`,\n width: `${layoutItem.lanes <= 1 ? 100 : layoutItem.lanes > visibleLanes ? 68 : 72}%`,\n };\n };\n const currentTimeLine = (day: Date) => {\n const now = props.now;\n if (calendar.formatDateKey(day, dateConfig()) !== calendar.formatDateKey(now, dateConfig())) return null;\n const hour = zonedHour(now, dateConfig());\n if (hour < gridStartHour() || hour > gridEndHour() + 1) return null;\n return ((hour - gridStartHour()) / Math.max(1, gridEndHour() - gridStartHour() + 1)) * 100;\n };\n onCleanup(() => cancelInteraction?.());\n onMount(() => {\n requestAnimationFrame(() => {\n if (!scrollContainer || !defaultHourMarker) return;\n const targetTop = defaultHourMarker.getBoundingClientRect().top - scrollContainer.getBoundingClientRect().top;\n // Reduced motion jumps to the business hours instead of gliding there, like every transition of the library.\n const behavior = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\";\n scrollContainer.scrollTo({ top: Math.max(0, scrollContainer.scrollTop + targetTop), behavior });\n });\n });\n return (\n <div class=\"k2b-calendar-time-grid k2b-detail-trail\" data-view={isDayView() ? \"day\" : \"week\"}>\n <div class=\"k2b-calendar-time-grid__days\" style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}>\n <div />\n <For each={props.days}>\n {(day) => {\n const dayBadge = props.owner.dayBadges?.[calendar.formatDateKey(day, dateConfig())];\n const today = () => calendar.isToday(day, dateConfig());\n return (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day, \"day\") ?? \"#\"}\n anchorProps={{ class: \"k2b-calendar-time-grid__day\" }}\n >\n <span class=\"k2b-calendar-time-grid__day-label\" data-today={today() ? \"true\" : undefined}>\n {formatDay(day, dateConfig())}\n </span>\n <Show when={dayBadge}>\n {(badge) => (\n <span class=\"k2b-calendar-time-grid__badge\">\n <Show when={badge().icon}>{(icon) => <i class={`k2b-calendar-time-grid__badge-icon ti ti-${icon()}`} />}</Show>\n {badge().label}\n </span>\n )}\n </Show>\n </CalendarNavigationLink>\n );\n }}\n </For>\n </div>\n <Show when={!props.owner.hideAllDay}>\n <div\n class=\"k2b-calendar-time-grid__all-day\"\n style={{\n \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))`,\n \"max-height\": `${props.owner.allDayMaxHeightRem ?? 7}rem`,\n }}\n >\n <div class=\"k2b-calendar-time-grid__all-day-label\">{props.labels.allDay}</div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const allDay = () => eventsByDay().get(dayKey)?.allDay ?? [];\n const previewAllDay = previewEvents().filter((event) => event.dayKey === dayKey && event.allDay);\n return (\n <div\n class=\"k2b-calendar-time-grid__all-day-cell\"\n data-calendar-day-key={dayKey}\n data-drop-preview={\n timePreview()?.allDay && calendar.formatDateKey(timePreview()!.start, dateConfig()) === dayKey ? \"true\" : undefined\n }\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = startOfDay(day, dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n >\n <div class=\"k2b-calendar-time-grid__all-day-events\">\n <For each={previewAllDay}>{(event) => <div class=\"k2b-calendar-preview\">{event.title}</div>}</For>\n <For each={allDay()}>\n {(event) => (\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n compact\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startAllDayMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n )}\n </For>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n </Show>\n <div ref={scrollContainer} class=\"k2b-calendar-time-grid__scroll\">\n <div\n ref={timeGrid}\n class=\"k2b-calendar-time-grid__grid\"\n style={{ \"grid-template-columns\": `4rem repeat(${props.days.length}, minmax(0, 1fr))` }}\n >\n <div\n ref={timeGutter}\n class=\"k2b-calendar-time-grid__gutter\"\n style={{ \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))` }}\n >\n <For each={hours()}>\n {(hour) => (\n <div\n ref={(element) => {\n if (hour === businessStartHour()) defaultHourMarker = element;\n }}\n class=\"k2b-calendar-time-grid__hour\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n >\n {`${hour}`.padStart(2, \"0\")}:00\n </div>\n )}\n </For>\n </div>\n <For each={props.days}>\n {(day) => {\n const dayKey = calendar.formatDateKey(day, dateConfig());\n const layouts = createMemo(() => timedEventLayouts(eventsByDay().get(dayKey)?.timed ?? []));\n return (\n <div\n class=\"k2b-calendar-time-grid__column\"\n style={{\n \"min-width\": dayColumnMinWidth(layouts()),\n \"grid-template-rows\": `repeat(${hours().length}, minmax(4rem, 1fr))`,\n }}\n >\n <Show when={currentTimeLine(day) !== null}>\n <div class=\"k2b-calendar-time-grid__now\" style={{ top: `${currentTimeLine(day) ?? 0}%` }} />\n </Show>\n <For each={hours()}>\n {(hour) => (\n <div\n class=\"k2b-calendar-time-grid__slot\"\n data-outside-business={hour < businessStartHour() || hour > businessEndHour() ? \"true\" : undefined}\n data-interactive={props.owner.onSlotActivate ? \"true\" : undefined}\n {...slotInteractionProps(\n props.owner,\n () => {\n const start = zonedSlot(day, hour, dateConfig());\n return { start, end: slotEnd(start), allDay: false };\n },\n () => performance.now() < suppressSlotClickUntil,\n )}\n onPointerDown={startRange}\n />\n )}\n </For>\n <For each={previewEvents().filter((event) => event.dayKey === dayKey && !event.allDay)}>\n {(event) => {\n const layout = eventLayout(event);\n const short = event.endDate.getTime() - event.startDate.getTime() < 60 * 60_000;\n return (\n <div\n class=\"k2b-calendar-preview k2b-calendar-preview--timed\"\n data-short={short ? \"true\" : undefined}\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n >\n <div class=\"k2b-calendar-preview__content\">\n <Show when={event.title}>\n <div class=\"k2b-calendar-preview__title\">{event.title}</div>\n </Show>\n <div class=\"k2b-calendar-preview__label\">\n {formatTime(event.startDate, dateConfig())} - {formatTime(event.endDate, dateConfig())}\n </div>\n </div>\n </div>\n );\n }}\n </For>\n <For each={layouts()}>\n {(layoutItem) => {\n if (!isDayView() && layoutItem.lane >= visibleLaneCount(layoutItem.lanes)) return null;\n const event = layoutItem.event;\n const layout = eventLayout(event);\n const position = laneStyle(layoutItem);\n const resizeStart = (pointerEvent: PointerEvent) => {\n if (!props.owner.onEventResize) return;\n pointerEvent.preventDefault();\n pointerEvent.stopPropagation();\n beginInteraction({\n event: pointerEvent,\n scrollContainer,\n threshold: 1,\n resolve: (clientX, clientY) => {\n const pointer = timeAtPoint(clientX, clientY);\n if (!pointer) return null;\n const minimumEnd = addMinutes(event.sourceStartDate, 15);\n const end = pointer > minimumEnd ? pointer : minimumEnd;\n return { id: event.id, title: event.title, start: event.sourceStartDate, end, allDay: false };\n },\n onActivate: () => {\n suppressSlotClickUntil = performance.now() + 400;\n setMovingEventId(event.id);\n },\n onPreview: setTimePreview,\n onCommit: (next) => {\n clearInteraction();\n if (eventTimeChanged(event, next)) props.owner.onEventResize?.(event, next);\n },\n onCancel: clearInteraction,\n });\n };\n return (\n <div\n class=\"k2b-calendar-time-grid__event-position\"\n style={{\n top: `${layout.top}%`,\n height: `${layout.height}%`,\n left: position.left,\n width: position.width,\n \"z-index\": String(20 + layoutItem.lane),\n }}\n >\n <div class=\"k2b-calendar-time-grid__event-frame\">\n <EventChip\n event={event}\n owner={props.owner}\n href={eventHref(props.owner, event)}\n fill\n moving={movingEventId() === event.id}\n onMovePointerDown={\n props.owner.onEventDrop\n ? (pointerEvent, markDragged) => startTimedMove(pointerEvent, event, markDragged)\n : undefined\n }\n />\n <Show when={props.owner.onEventResize}>\n <button\n type=\"button\"\n aria-label={calendarMessages().resizeEvent}\n draggable={false}\n class=\"k2b-calendar-time-grid__resize\"\n onPointerDown={resizeStart}\n onDragStart={(event) => event.preventDefault()}\n >\n <span class=\"k2b-calendar-time-grid__resize-icon\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </div>\n );\n }}\n </For>\n <For each={overflowLayouts(layouts())}>\n {(overflow) => {\n const layout = timeRangeLayout(overflow.groupStartDate, overflow.groupEndDate);\n const key = `${dayKey}-${overflow.groupId}`;\n const hiddenTitle = () =>\n overflow.hiddenEvents.map((event) => `${formatTime(event.startDate, dateConfig())} ${event.title}`).join(\"\\n\");\n return (\n <>\n <button\n type=\"button\"\n class=\"k2b-calendar-time-grid__overflow\"\n style={{ top: `${layout.top}%`, height: `${layout.height}%` }}\n title={hiddenTitle()}\n aria-label={calendarMessages().hiddenOverlappingEvents({ count: overflow.hiddenEvents.length })}\n onClick={(event) => {\n event.stopPropagation();\n setExpandedOverflow(expandedOverflow() === key ? \"\" : key);\n }}\n >\n <span class=\"k2b-calendar-time-grid__overflow-count\">+{overflow.hiddenEvents.length}</span>\n </button>\n <Show when={expandedOverflow() === key}>\n <div class=\"k2b-calendar-time-grid__overflow-menu\" style={{ top: `${layout.top}%` }}>\n <div class=\"k2b-calendar-time-grid__overflow-title\">\n {formatTime(overflow.groupStartDate, dateConfig())} - {formatTime(overflow.groupEndDate, dateConfig())}\n </div>\n <For each={overflow.hiddenEvents}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} compact />}\n </For>\n </div>\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n }}\n </For>\n </div>\n </div>\n </div>\n );\n};\n\nconst YearView = (props: { owner: CalendarOwner; date: Date; now: Date; events: NormalizedEvent[] }): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const year = createMemo(() => zonedYearMonth(props.date, dateConfig()).year);\n const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));\n const eventsByDay = createMemo(() => {\n const grouped = new Map<string, NormalizedEvent[]>();\n for (const event of props.events) {\n const events = grouped.get(event.dayKey);\n if (events) events.push(event);\n else grouped.set(event.dayKey, [event]);\n }\n return grouped;\n });\n const months = createMemo(() => {\n const context = dateConfig();\n return Array.from({ length: 12 }, (_, month) => {\n const date = zonedMonthDate(year(), month, context);\n return {\n date,\n label: date.toLocaleDateString(context.locale ?? \"en\", { month: \"long\", timeZone: context.timeZone }),\n days: calendar\n .getMonthGrid(year(), month, context)\n .flat()\n .map((day) => {\n const key = calendar.formatDateKey(day, context);\n return {\n date: day,\n events: eventsByDay().get(key) ?? [],\n isToday: key === todayKey(),\n outside: !calendar.isSameMonth(day, date, context),\n number: calendar.formatDayNumber(day, context),\n };\n }),\n };\n });\n });\n\n return (\n <div class=\"k2b-calendar-year\">\n <For each={months()}>\n {(month) => (\n <div class=\"k2b-calendar-year__month\">\n <div class=\"k2b-calendar-year__title\">{month.label}</div>\n <div class=\"k2b-calendar-year__grid\">\n <For each={month.days}>\n {(day) => (\n <CalendarNavigationLink\n owner={props.owner}\n href={props.owner.getDateHref?.(day.date, \"day\") ?? \"#\"}\n anchorProps={{\n class: \"k2b-calendar-year__day\",\n \"data-today\": day.isToday ? \"true\" : undefined,\n \"data-outside\": day.outside ? \"true\" : undefined,\n }}\n >\n {day.number}\n <Show when={day.events[0]}>\n {(event) => (\n <span\n class=\"k2b-calendar-year__indicator\"\n data-color={event().colorHex ? undefined : (event().color ?? \"blue\")}\n data-today={day.isToday ? \"true\" : undefined}\n style={event().colorHex ? { \"background-color\": day.isToday ? \"white\" : event().colorHex } : undefined}\n />\n )}\n </Show>\n </CalendarNavigationLink>\n )}\n </For>\n </div>\n </div>\n )}\n </For>\n </div>\n );\n};\n\nconst MobileMonthView = (props: {\n owner: CalendarOwner;\n date: Date;\n now: Date;\n selectedDate: Date;\n events: NormalizedEvent[];\n labels: Required<CalendarLabels>;\n}): JSX.Element => {\n const dateConfig = createMemo(() => ownerDateConfig(props.owner));\n const selectedDateKey = createMemo(() => calendar.formatDateKey(props.selectedDate, dateConfig()));\n const selectedEvents = createMemo(() => props.events.filter((event) => event.dayKey === selectedDateKey()));\n return (\n <div class=\"k2b-calendar-mobile-month\">\n <MonthPickerView\n owner={{ ...props.owner, withWeekNumbers: false }}\n date={props.date}\n now={props.now}\n events={props.events}\n labels={props.labels}\n compact\n />\n <div class=\"k2b-calendar-mobile-month__agenda\">\n <div class=\"k2b-calendar-mobile-month__title\">\n {props.selectedDate.toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n timeZone: dateConfig().timeZone,\n })}\n </div>\n <Show when={selectedEvents().length > 0} fallback={<div class=\"k2b-calendar-mobile-month__empty\">{props.labels.noEvents}</div>}>\n <div class=\"k2b-calendar-mobile-month__events\">\n <For each={selectedEvents()}>\n {(event) => <EventChip event={event} owner={props.owner} href={eventHref(props.owner, event)} />}\n </For>\n </div>\n </Show>\n </div>\n </div>\n );\n};\n\nconst CalendarBody = (props: { children: JSX.Element }): JSX.Element => <div class=\"k2b-calendar-body\">{props.children}</div>;\n\nconst CalendarRoot = <V extends string = never>(props: CalendarProps<V>): JSX.Element => {\n const messages = useUiMessages();\n const calendarMessages = useCalendarMessages();\n // Subviews derive their date config from the owner props, so the inherited\n // render locale is merged here once; an explicit dateConfig.locale wins.\n const localizedConfig = useDateConfigLocale(() => props.dateConfig);\n const owner = mergeProps(props, {\n get dateConfig(): DateContext {\n return localizedConfig();\n },\n });\n const view = () => props.view ?? \"month\";\n const custom = () => props.customViews?.some((option) => option.value === view()) ?? false;\n const dateConfig = createMemo(() => ownerDateConfig(owner));\n const safeDate = (value: Date | string) => {\n const parsed = parseDate(value, dateConfig());\n return validDate(parsed) ? parsed : calendar.today(dateConfig());\n };\n const date = createMemo(() => safeDate(props.date));\n const selectedDate = createMemo(() => safeDate(props.selectedDate ?? props.date));\n const [now, setNow] = createSignal(new Date());\n /** The first day selected in the month view, so the view switcher opens the other views at it. */\n const [focusDay, setFocusDay] = createSignal<Date | null>(null);\n const normalizedEvents = createMemo(() => normalizeEvents(props.events, dateConfig()));\n const mergedLabels = createMemo<Required<CalendarLabels>>(() => ({\n today: messages().today,\n day: messages().day,\n week: messages().week,\n month: messages().month,\n year: messages().year,\n allDay: messages().allDay,\n noEvents: calendarMessages().noEvents,\n previous: messages().previous,\n next: messages().next,\n ...props.labels,\n }));\n const days = createMemo(() => {\n if (view() === \"day\") return [date()];\n return calendar.getWeekDays(date(), dateConfig());\n });\n onMount(() => {\n const updateNow = () => setNow(new Date());\n const interval = window.setInterval(updateNow, 60_000);\n document.addEventListener(\"visibilitychange\", updateNow);\n onCleanup(() => {\n window.clearInterval(interval);\n document.removeEventListener(\"visibilitychange\", updateNow);\n });\n });\n\n // The day and week views with `dayHours` scroll through their days; the header and the commands ask them first.\n const [timeView, setTimeView] = createSignal<TimeViewHandle | null>(null);\n const [monthCreate, setMonthCreate] = createSignal<MonthCreateHandle | null>(null);\n const timeMode = () => Boolean(props.dayHours) && (view() === \"day\" || view() === \"week\");\n const parseKey = (key: string) => calendar.parseCalendarDate(key, dateConfig());\n /** The first shown day of a day or week view, or the selected day of the month view, for the other views. */\n const shownDay = () => {\n const first = timeView()?.visibleKeys().first;\n if (first) return parseKey(first);\n return view() === \"month\" ? focusDay() : null;\n };\n const go = (target: Date, nextView: CalendarView | V) => {\n const href = props.getDateHref?.(target, nextView);\n if (href) followCalendarHref(owner, href);\n else openViewAt(props, target, nextView);\n };\n const step = (direction: -1 | 1) => {\n if (timeView()?.step(direction)) return;\n go(adjacentCalendarDate(shownDay() ?? date(), view(), direction, dateConfig()), view());\n };\n const goToday = () => {\n if (timeView()?.today()) return;\n go(calendar.today(dateConfig()), view());\n };\n const goView = (nextView: CalendarView) => {\n const day = shownDay();\n if (day) {\n go(day, nextView);\n return;\n }\n const href = props.getViewHref?.(nextView);\n if (href) followCalendarHref(owner, href);\n else props.onViewChange?.(nextView);\n };\n const goToKey = (key: string) => {\n if (timeView()?.goTo(key)) return;\n go(parseKey(key), view());\n };\n const openGoTo = () =>\n void openCalendarGoTo({\n messages: calendarMessages(),\n today: calendar.formatDateKey(new Date(), dateConfig()),\n describe: (key) =>\n parseKey(key).toLocaleDateString(dateConfig().locale ?? \"en\", {\n weekday: \"long\",\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n timeZone: dateConfig().timeZone,\n }),\n onGo: goToKey,\n });\n const ownCommands = createMemo((): CalendarCommand[] => {\n const text = calendarMessages();\n const available = ([\"day\", \"week\", \"month\", \"year\"] as const).filter((option) => !props.views || props.views.includes(option));\n const viewLabels = { day: mergedLabels().day, week: mergedLabels().week, month: mergedLabels().month, year: mergedLabels().year };\n return [\n {\n id: \"calendar.today\",\n label: text.calendarCommandToday,\n description: text.calendarCommandTodayDescription,\n shortcut: \"h\",\n icon: \"ti ti-calendar-event\",\n run: goToday,\n },\n {\n id: \"calendar.next\",\n label: text.calendarCommandNext,\n description: text.calendarCommandNextDescription,\n shortcut: \"j\",\n icon: \"ti ti-chevron-right\",\n run: () => step(1),\n },\n {\n id: \"calendar.previous\",\n label: text.calendarCommandPrevious,\n description: text.calendarCommandPreviousDescription,\n shortcut: \"k\",\n icon: \"ti ti-chevron-left\",\n run: () => step(-1),\n },\n ...available.map((option, index) => ({\n id: `calendar.view.${option}`,\n label: text.calendarCommandView({ view: viewLabels[option] }),\n description: text.calendarCommandViewDescription({ view: viewLabels[option] }),\n shortcut: String(index + 1),\n icon: \"ti ti-layout-columns\",\n run: () => goView(option),\n })),\n {\n id: \"calendar.goto\",\n label: text.calendarCommandGoTo,\n description: text.calendarCommandGoToDescription,\n shortcut: \"g\",\n icon: \"ti ti-calendar-search\",\n run: openGoTo,\n },\n ];\n });\n const allCommands = createMemo(() => [...ownCommands(), ...(props.commands ?? [])]);\n /** While the month's quiet quick create waits for typing, a single key is the first letter of a title. */\n const typing = () => view() === \"month\" && (monthCreate()?.typing() ?? false);\n createEffect(() => {\n const commands = typing()\n ? allCommands().map((command) => (command.shortcut && singleKey(command.shortcut) ? { ...command, shortcut: undefined } : command))\n : allCommands();\n untrack(() => props.onCommandsChange?.(commands));\n });\n // The arrow keys page like J and K while the keyboard is in the calendar or nowhere, unless something there uses\n // them, such as the grid of the week or the month.\n let root: HTMLElement | undefined;\n onMount(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n if (event.defaultPrevented || event.isComposing || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n if (!props.onCommandsChange || custom() || document.querySelector('dialog[open], [role=\"dialog\"][aria-modal=\"true\"]')) return;\n const target = event.target;\n const inCalendar = target instanceof Element && Boolean(root?.contains(target));\n if (!inCalendar && target !== document.body && target !== document.documentElement) return;\n if (\n target instanceof Element &&\n target.closest(\"input, textarea, select, [contenteditable]:not([contenteditable=false]), [role=textbox], [popover], [role=dialog]\")\n )\n return;\n event.preventDefault();\n step(event.key === \"ArrowRight\" ? 1 : -1);\n };\n window.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => window.removeEventListener(\"keydown\", onKeyDown));\n });\n const headerNav: CalendarHeaderNav = {\n timeView,\n commands: () => (props.onCommandsChange ? allCommands() : []),\n // The arrow keys page like J and K, so the list names them beside those keys.\n openShortcuts: () =>\n void openCalendarShortcuts(\n allCommands(),\n calendarMessages(),\n custom() ? {} : { \"calendar.next\": \"arrowright\", \"calendar.previous\": \"arrowleft\" },\n ),\n };\n const controller: CalendarController = {\n quickCreate: (create) => {\n const active = timeView();\n if (active) active.controller.quickCreate(create);\n else monthCreate()?.quickCreate(create);\n },\n createTarget: () => {\n const active = timeView()?.controller.createTarget() ?? monthCreate()?.createTarget();\n if (active) return active;\n const start = calendar.today(dateConfig());\n return { start, end: calendar.addDays(start, 1, dateConfig()), allDay: true };\n },\n dragIn: (event, item, onDrop) => timeView()?.controller.dragIn(event, item, onDrop),\n };\n onMount(() => props.controller?.(controller));\n const timeProps = (timeViewName: \"day\" | \"week\") => ({\n owner,\n view: timeViewName,\n get date() {\n return date();\n },\n get now() {\n return now();\n },\n get events() {\n return props.events;\n },\n get labels() {\n return mergedLabels();\n },\n get hours() {\n return props.dayHours ?? ([0, 24] as const);\n },\n register: setTimeView,\n });\n\n return (\n <section ref={root} class={`k2b-content-calendar ${props.class ?? \"\"}`} aria-busy={props.navigationPending ? \"true\" : undefined}>\n <CalendarHeader\n date={date()}\n view={view()}\n labels={mergedLabels()}\n owner={owner}\n focusDay={view() === \"month\" ? focusDay() : timeView() ? shownDay() : null}\n nav={headerNav}\n />\n <Show when={!custom()} fallback={<CalendarBody>{props.children}</CalendarBody>}>\n <Show\n when={view() !== \"month\"}\n fallback={\n <CalendarBody>\n <MonthView\n owner={owner}\n date={date()}\n now={now()}\n events={normalizedEvents()}\n labels={mergedLabels()}\n onFocusDay={setFocusDay}\n register={setMonthCreate}\n />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"year\"}\n fallback={\n <CalendarBody>\n <YearView owner={owner} date={date()} now={now()} events={normalizedEvents()} />\n </CalendarBody>\n }\n >\n <Show\n when={view() !== \"mobile-month\"}\n fallback={\n <CalendarBody>\n <MobileMonthView\n owner={owner}\n date={date()}\n now={now()}\n selectedDate={selectedDate()}\n events={normalizedEvents()}\n labels={mergedLabels()}\n />\n </CalendarBody>\n }\n >\n <Show\n when={timeMode()}\n fallback={\n <TimeGridView owner={owner} date={date()} now={now()} events={normalizedEvents()} labels={mergedLabels()} days={days()} />\n }\n >\n <Show when={view() === \"day\"} fallback={<CalendarWeekView {...timeProps(\"week\")} />}>\n <CalendarDayView {...timeProps(\"day\")} />\n </Show>\n </Show>\n </Show>\n </Show>\n </Show>\n </Show>\n </section>\n );\n};\n\n/** A shortcut without Ctrl, Meta, or Mod, which typing would set off. */\nconst singleKey = (shortcut: string) => !/(^|\\+)(ctrl|meta|mod)\\+/i.test(shortcut);\n\n/** JSX infers the values of `customViews`; inference from the last signature, as in `createComponent`, sees plain props. */\nfunction Calendar<V extends string = never>(props: CalendarProps<V>): JSX.Element;\nfunction Calendar(props: CalendarProps): JSX.Element;\nfunction Calendar(props: CalendarProps<string>): JSX.Element {\n return CalendarRoot(props);\n}\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}
|