@50arms/ui 0.0.0-stage → 35.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +193 -2
- package/dist/components/Accordion.js +68 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/AgentWorkingSpinner.js +46 -0
- package/dist/components/AgentWorkingSpinner.js.map +1 -0
- package/dist/components/AppShell.js +228 -0
- package/dist/components/AppShell.js.map +1 -0
- package/dist/components/Attention.js +130 -0
- package/dist/components/Attention.js.map +1 -0
- package/dist/components/Avatar.js +99 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.js +143 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Board.js +292 -0
- package/dist/components/Board.js.map +1 -0
- package/dist/components/Button.js +327 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Callout.js +106 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Card.js +140 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Choice.js +361 -0
- package/dist/components/Choice.js.map +1 -0
- package/dist/components/CodeEditor.js +384 -0
- package/dist/components/CodeEditor.js.map +1 -0
- package/dist/components/ColorPicker.js +174 -0
- package/dist/components/ColorPicker.js.map +1 -0
- package/dist/components/Combobox.js +212 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/CommandPalette.js +163 -0
- package/dist/components/CommandPalette.js.map +1 -0
- package/dist/components/ConcentricRing.js +60 -0
- package/dist/components/ConcentricRing.js.map +1 -0
- package/dist/components/ConnectionCard.js +98 -0
- package/dist/components/ConnectionCard.js.map +1 -0
- package/dist/components/ContextItemRow.js +49 -0
- package/dist/components/ContextItemRow.js.map +1 -0
- package/dist/components/CopyValue.js +57 -0
- package/dist/components/CopyValue.js.map +1 -0
- package/dist/components/CountBadge.js +26 -0
- package/dist/components/CountBadge.js.map +1 -0
- package/dist/components/DateCalendar.js +156 -0
- package/dist/components/DateCalendar.js.map +1 -0
- package/dist/components/DateField.js +166 -0
- package/dist/components/DateField.js.map +1 -0
- package/dist/components/DatePicker.js +56 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DateTimeText.js +19 -0
- package/dist/components/DateTimeText.js.map +1 -0
- package/dist/components/DescriptionList.js +25 -0
- package/dist/components/DescriptionList.js.map +1 -0
- package/dist/components/Dialog.js +332 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DragDrop.js +395 -0
- package/dist/components/DragDrop.js.map +1 -0
- package/dist/components/Drawer.js +100 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/EditGutter.js +110 -0
- package/dist/components/EditGutter.js.map +1 -0
- package/dist/components/EmojiPicker.js +174 -0
- package/dist/components/EmojiPicker.js.map +1 -0
- package/dist/components/ErrorBoundary.js +47 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/Field.js +115 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/FileUpload.js +128 -0
- package/dist/components/FileUpload.js.map +1 -0
- package/dist/components/FilterMenu.js +256 -0
- package/dist/components/FilterMenu.js.map +1 -0
- package/dist/components/GatesSection.js +79 -0
- package/dist/components/GatesSection.js.map +1 -0
- package/dist/components/Icon.js +50 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/IconButton.js +59 -0
- package/dist/components/IconButton.js.map +1 -0
- package/dist/components/IconStack.js +69 -0
- package/dist/components/IconStack.js.map +1 -0
- package/dist/components/ImageUploadField.js +146 -0
- package/dist/components/ImageUploadField.js.map +1 -0
- package/dist/components/InlineEdit.js +432 -0
- package/dist/components/InlineEdit.js.map +1 -0
- package/dist/components/InlineMarkdownEdit.js +184 -0
- package/dist/components/InlineMarkdownEdit.js.map +1 -0
- package/dist/components/Input.js +156 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/LegalDocument.js +155 -0
- package/dist/components/LegalDocument.js.map +1 -0
- package/dist/components/LineDiff.js +95 -0
- package/dist/components/LineDiff.js.map +1 -0
- package/dist/components/ListHeader.js +72 -0
- package/dist/components/ListHeader.js.map +1 -0
- package/dist/components/Loading.js +111 -0
- package/dist/components/Loading.js.map +1 -0
- package/dist/components/Markdown.js +28 -0
- package/dist/components/Markdown.js.map +1 -0
- package/dist/components/MarkdownEditor.js +467 -0
- package/dist/components/MarkdownEditor.js.map +1 -0
- package/dist/components/Menu.js +185 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/Navigation.js +87 -0
- package/dist/components/Navigation.js.map +1 -0
- package/dist/components/NumberInput.js +119 -0
- package/dist/components/NumberInput.js.map +1 -0
- package/dist/components/OTPInput.js +71 -0
- package/dist/components/OTPInput.js.map +1 -0
- package/dist/components/OrderedEntityManager.js +170 -0
- package/dist/components/OrderedEntityManager.js.map +1 -0
- package/dist/components/PagedWindowList.js +74 -0
- package/dist/components/PagedWindowList.js.map +1 -0
- package/dist/components/PaginationBar.js +95 -0
- package/dist/components/PaginationBar.js.map +1 -0
- package/dist/components/Panel.js +396 -0
- package/dist/components/Panel.js.map +1 -0
- package/dist/components/PasswordInput.js +32 -0
- package/dist/components/PasswordInput.js.map +1 -0
- package/dist/components/PasswordRequirements.js +25 -0
- package/dist/components/PasswordRequirements.js.map +1 -0
- package/dist/components/PatchDiff.js +96 -0
- package/dist/components/PatchDiff.js.map +1 -0
- package/dist/components/PendingVeil.js +18 -0
- package/dist/components/PendingVeil.js.map +1 -0
- package/dist/components/Popover.js +214 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Progress.js +419 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/RatingScale.js +89 -0
- package/dist/components/RatingScale.js.map +1 -0
- package/dist/components/ReadMore.js +232 -0
- package/dist/components/ReadMore.js.map +1 -0
- package/dist/components/RecordCard.js +202 -0
- package/dist/components/RecordCard.js.map +1 -0
- package/dist/components/RelativeTime.js +29 -0
- package/dist/components/RelativeTime.js.map +1 -0
- package/dist/components/SandboxedFrame.js +135 -0
- package/dist/components/SandboxedFrame.js.map +1 -0
- package/dist/components/SearchInput.js +38 -0
- package/dist/components/SearchInput.js.map +1 -0
- package/dist/components/SecretField.js +228 -0
- package/dist/components/SecretField.js.map +1 -0
- package/dist/components/SectionNav.js +42 -0
- package/dist/components/SectionNav.js.map +1 -0
- package/dist/components/Select.js +172 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SequenceDiagram.js +109 -0
- package/dist/components/SequenceDiagram.js.map +1 -0
- package/dist/components/SettingRow.js +124 -0
- package/dist/components/SettingRow.js.map +1 -0
- package/dist/components/SignOffRings.js +36 -0
- package/dist/components/SignOffRings.js.map +1 -0
- package/dist/components/Slider.js +353 -0
- package/dist/components/Slider.js.map +1 -0
- package/dist/components/SolutionChoice.js +89 -0
- package/dist/components/SolutionChoice.js.map +1 -0
- package/dist/components/SortMenu.js +75 -0
- package/dist/components/SortMenu.js.map +1 -0
- package/dist/components/Spinner.js +42 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Stat.js +148 -0
- package/dist/components/Stat.js.map +1 -0
- package/dist/components/StatusSelect.js +119 -0
- package/dist/components/StatusSelect.js.map +1 -0
- package/dist/components/Surface.js +210 -0
- package/dist/components/Surface.js.map +1 -0
- package/dist/components/Table.js +300 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.js +288 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/ThemeMenu.js +198 -0
- package/dist/components/ThemeMenu.js.map +1 -0
- package/dist/components/Toast.js +217 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/Toggle.js +147 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/ToggleMatrix.js +157 -0
- package/dist/components/ToggleMatrix.js.map +1 -0
- package/dist/components/Tree.js +125 -0
- package/dist/components/Tree.js.map +1 -0
- package/dist/components/TriStateSwitch.js +111 -0
- package/dist/components/TriStateSwitch.js.map +1 -0
- package/dist/components/VideoPlayer.js +64 -0
- package/dist/components/VideoPlayer.js.map +1 -0
- package/dist/components/auth/AcceptInvitationCard.js +110 -0
- package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
- package/dist/components/auth/AuthLayout.js +18 -0
- package/dist/components/auth/AuthLayout.js.map +1 -0
- package/dist/components/auth/ForgotPasswordForm.js +44 -0
- package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
- package/dist/components/auth/LoginForm.js +76 -0
- package/dist/components/auth/LoginForm.js.map +1 -0
- package/dist/components/auth/ResetPasswordForm.js +69 -0
- package/dist/components/auth/ResetPasswordForm.js.map +1 -0
- package/dist/components/auth/SignInProviders.js +45 -0
- package/dist/components/auth/SignInProviders.js.map +1 -0
- package/dist/components/auth/SignupCard.js +204 -0
- package/dist/components/auth/SignupCard.js.map +1 -0
- package/dist/components/auth/TermsAcceptance.js +43 -0
- package/dist/components/auth/TermsAcceptance.js.map +1 -0
- package/dist/components/board/context.js +32 -0
- package/dist/components/board/context.js.map +1 -0
- package/dist/components/board/recipe.js +94 -0
- package/dist/components/board/recipe.js.map +1 -0
- package/dist/components/calendar/CalendarMonth.js +299 -0
- package/dist/components/calendar/CalendarMonth.js.map +1 -0
- package/dist/components/calendar/CalendarTimeGrid.js +430 -0
- package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
- package/dist/components/calendar/EventActions.js +101 -0
- package/dist/components/calendar/EventActions.js.map +1 -0
- package/dist/components/calendar/format.js +73 -0
- package/dist/components/calendar/format.js.map +1 -0
- package/dist/components/calendar/palette.js +31 -0
- package/dist/components/calendar/palette.js.map +1 -0
- package/dist/components/calendar/use-calendar-drag.js +149 -0
- package/dist/components/calendar/use-calendar-drag.js.map +1 -0
- package/dist/components/calendar/use-event-keyboard.js +87 -0
- package/dist/components/calendar/use-event-keyboard.js.map +1 -0
- package/dist/components/calendar/use-grid-navigation.js +79 -0
- package/dist/components/calendar/use-grid-navigation.js.map +1 -0
- package/dist/components/calendar/use-now.js +27 -0
- package/dist/components/calendar/use-now.js.map +1 -0
- package/dist/components/card-face/AcRingGlyph.js +39 -0
- package/dist/components/card-face/AcRingGlyph.js.map +1 -0
- package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
- package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
- package/dist/components/card-face/CardFace.js +109 -0
- package/dist/components/card-face/CardFace.js.map +1 -0
- package/dist/components/card-face/CardTypeBadge.js +17 -0
- package/dist/components/card-face/CardTypeBadge.js.map +1 -0
- package/dist/components/card-face/EffortBadge.js +11 -0
- package/dist/components/card-face/EffortBadge.js.map +1 -0
- package/dist/components/card-face/GateRingGlyph.js +31 -0
- package/dist/components/card-face/GateRingGlyph.js.map +1 -0
- package/dist/components/card-face/OverflowRow.js +70 -0
- package/dist/components/card-face/OverflowRow.js.map +1 -0
- package/dist/components/card-face/TapTip.js +32 -0
- package/dist/components/card-face/TapTip.js.map +1 -0
- package/dist/components/card-face/hit-area.js +6 -0
- package/dist/components/card-face/hit-area.js.map +1 -0
- package/dist/components/card-face/vocabulary.js +102 -0
- package/dist/components/card-face/vocabulary.js.map +1 -0
- package/dist/components/chart/BarList.js +78 -0
- package/dist/components/chart/BarList.js.map +1 -0
- package/dist/components/chart/LineChart.js +310 -0
- package/dist/components/chart/LineChart.js.map +1 -0
- package/dist/components/chart/ShareBar.js +141 -0
- package/dist/components/chart/ShareBar.js.map +1 -0
- package/dist/components/chart/TimeSeriesChart.js +305 -0
- package/dist/components/chart/TimeSeriesChart.js.map +1 -0
- package/dist/components/chart/label-metrics.js +17 -0
- package/dist/components/chart/label-metrics.js.map +1 -0
- package/dist/components/chart/line-chart-axis.js +38 -0
- package/dist/components/chart/line-chart-axis.js.map +1 -0
- package/dist/components/chart/line-chart-scale.js +132 -0
- package/dist/components/chart/line-chart-scale.js.map +1 -0
- package/dist/components/chart/line-series-style.js +22 -0
- package/dist/components/chart/line-series-style.js.map +1 -0
- package/dist/components/chart/share-bar-labels.js +14 -0
- package/dist/components/chart/share-bar-labels.js.map +1 -0
- package/dist/components/chart/shared.js +157 -0
- package/dist/components/chart/shared.js.map +1 -0
- package/dist/components/chart/time-series-scale.js +51 -0
- package/dist/components/chart/time-series-scale.js.map +1 -0
- package/dist/components/chat/Attachment.js +316 -0
- package/dist/components/chat/Attachment.js.map +1 -0
- package/dist/components/chat/Chat.js +171 -0
- package/dist/components/chat/Chat.js.map +1 -0
- package/dist/components/chat/Composer.js +274 -0
- package/dist/components/chat/Composer.js.map +1 -0
- package/dist/components/chat/ContextMeter.js +202 -0
- package/dist/components/chat/ContextMeter.js.map +1 -0
- package/dist/components/chat/EffortControl.js +116 -0
- package/dist/components/chat/EffortControl.js.map +1 -0
- package/dist/components/chat/FileCover.js +78 -0
- package/dist/components/chat/FileCover.js.map +1 -0
- package/dist/components/chat/Message.js +356 -0
- package/dist/components/chat/Message.js.map +1 -0
- package/dist/components/chat/MessageScroller.js +104 -0
- package/dist/components/chat/MessageScroller.js.map +1 -0
- package/dist/components/chat/ModelSelector.js +156 -0
- package/dist/components/chat/ModelSelector.js.map +1 -0
- package/dist/components/chat/StreamingMarkdown.js +42 -0
- package/dist/components/chat/StreamingMarkdown.js.map +1 -0
- package/dist/components/chat/download-file.js +9 -0
- package/dist/components/chat/download-file.js.map +1 -0
- package/dist/components/chat/file-icon.js +39 -0
- package/dist/components/chat/file-icon.js.map +1 -0
- package/dist/components/checklist/StatusChecklist.js +103 -0
- package/dist/components/checklist/StatusChecklist.js.map +1 -0
- package/dist/components/checklist/tally.js +29 -0
- package/dist/components/checklist/tally.js.map +1 -0
- package/dist/components/code-editor/context.js +13 -0
- package/dist/components/code-editor/context.js.map +1 -0
- package/dist/components/code-editor/editing.js +93 -0
- package/dist/components/code-editor/editing.js.map +1 -0
- package/dist/components/code-editor/highlight.js +27 -0
- package/dist/components/code-editor/highlight.js.map +1 -0
- package/dist/components/code-editor/recipe.js +75 -0
- package/dist/components/code-editor/recipe.js.map +1 -0
- package/dist/components/date-timeline/DateTimeline.js +358 -0
- package/dist/components/date-timeline/DateTimeline.js.map +1 -0
- package/dist/components/date-timeline/TimelineRow.js +100 -0
- package/dist/components/date-timeline/TimelineRow.js.map +1 -0
- package/dist/components/date-timeline/useBarDrag.js +44 -0
- package/dist/components/date-timeline/useBarDrag.js.map +1 -0
- package/dist/components/date-timeline/useMarkerDrag.js +40 -0
- package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
- package/dist/components/date-timeline/useTimelineZoom.js +44 -0
- package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
- package/dist/components/drag-drop/context.js +37 -0
- package/dist/components/drag-drop/context.js.map +1 -0
- package/dist/components/drag-drop/recipe.js +270 -0
- package/dist/components/drag-drop/recipe.js.map +1 -0
- package/dist/components/drag-drop/shift.js +157 -0
- package/dist/components/drag-drop/shift.js.map +1 -0
- package/dist/components/edit/activation.js +10 -0
- package/dist/components/edit/activation.js.map +1 -0
- package/dist/components/edit/outcome.js +47 -0
- package/dist/components/edit/outcome.js.map +1 -0
- package/dist/components/edit/use-edit-session.js +146 -0
- package/dist/components/edit/use-edit-session.js.map +1 -0
- package/dist/components/file-viewer/FileViewer.js +97 -0
- package/dist/components/file-viewer/FileViewer.js.map +1 -0
- package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
- package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
- package/dist/components/file-viewer/ViewerControls.js +122 -0
- package/dist/components/file-viewer/ViewerControls.js.map +1 -0
- package/dist/components/file-viewer/ViewerRail.js +57 -0
- package/dist/components/file-viewer/ViewerRail.js.map +1 -0
- package/dist/components/file-viewer/ViewerStage.js +112 -0
- package/dist/components/file-viewer/ViewerStage.js.map +1 -0
- package/dist/components/file-viewer/frames.js +37 -0
- package/dist/components/file-viewer/frames.js.map +1 -0
- package/dist/components/file-viewer/use-frame-cursor.js +32 -0
- package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
- package/dist/components/file-viewer/use-viewer-keys.js +50 -0
- package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
- package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
- package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
- package/dist/components/focus-web/FocusWeb.js +322 -0
- package/dist/components/focus-web/FocusWeb.js.map +1 -0
- package/dist/components/focus-web/layout.js +34 -0
- package/dist/components/focus-web/layout.js.map +1 -0
- package/dist/components/graph-explorer/GraphExplorer.js +441 -0
- package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
- package/dist/components/graph-explorer/camera-math.js +102 -0
- package/dist/components/graph-explorer/camera-math.js.map +1 -0
- package/dist/components/graph-explorer/tree-layout.js +103 -0
- package/dist/components/graph-explorer/tree-layout.js.map +1 -0
- package/dist/components/graph-explorer/use-camera.js +82 -0
- package/dist/components/graph-explorer/use-camera.js.map +1 -0
- package/dist/components/graph-explorer/viewport-gesture.js +107 -0
- package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
- package/dist/components/kanban/KanbanBoard.js +219 -0
- package/dist/components/kanban/KanbanBoard.js.map +1 -0
- package/dist/components/kanban/recipe.js +144 -0
- package/dist/components/kanban/recipe.js.map +1 -0
- package/dist/components/markdown/Affordances.js +398 -0
- package/dist/components/markdown/Affordances.js.map +1 -0
- package/dist/components/markdown/AttachmentStrip.js +128 -0
- package/dist/components/markdown/AttachmentStrip.js.map +1 -0
- package/dist/components/markdown/ImageUpload.js +45 -0
- package/dist/components/markdown/ImageUpload.js.map +1 -0
- package/dist/components/media-error.js +7 -0
- package/dist/components/media-error.js.map +1 -0
- package/dist/components/nav-sections.js +61 -0
- package/dist/components/nav-sections.js.map +1 -0
- package/dist/components/node-canvas/NodeCanvas.js +384 -0
- package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
- package/dist/components/node-canvas/layout.js +237 -0
- package/dist/components/node-canvas/layout.js.map +1 -0
- package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
- package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
- package/dist/components/openapi/OpenApiViewer.js +137 -0
- package/dist/components/openapi/OpenApiViewer.js.map +1 -0
- package/dist/components/openapi/OperationCard.js +145 -0
- package/dist/components/openapi/OperationCard.js.map +1 -0
- package/dist/components/openapi/SchemaView.js +68 -0
- package/dist/components/openapi/SchemaView.js.map +1 -0
- package/dist/components/openapi/resolve.js +102 -0
- package/dist/components/openapi/resolve.js.map +1 -0
- package/dist/components/openapi/types.js +5 -0
- package/dist/components/openapi/types.js.map +1 -0
- package/dist/components/overlay-shell.js +29 -0
- package/dist/components/overlay-shell.js.map +1 -0
- package/dist/components/overlay-stack.js +27 -0
- package/dist/components/overlay-stack.js.map +1 -0
- package/dist/components/paged-window/PageBlock.js +50 -0
- package/dist/components/paged-window/PageBlock.js.map +1 -0
- package/dist/components/provenance/ConfidenceBar.js +60 -0
- package/dist/components/provenance/ConfidenceBar.js.map +1 -0
- package/dist/components/provenance/ConfidenceMeter.js +36 -0
- package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
- package/dist/components/provenance/ConfidenceReadout.js +31 -0
- package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
- package/dist/components/provenance/ProvenanceBadge.js +44 -0
- package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
- package/dist/components/provenance/ProvenanceDetail.js +114 -0
- package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
- package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
- package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
- package/dist/components/provenance/absence.js +31 -0
- package/dist/components/provenance/absence.js.map +1 -0
- package/dist/components/provenance/types.js +30 -0
- package/dist/components/provenance/types.js.map +1 -0
- package/dist/components/rbac/AccessRequestPanel.js +153 -0
- package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
- package/dist/components/rbac/AccountMenu.js +118 -0
- package/dist/components/rbac/AccountMenu.js.map +1 -0
- package/dist/components/rbac/AgentKeysList.js +20 -0
- package/dist/components/rbac/AgentKeysList.js.map +1 -0
- package/dist/components/rbac/ApiKeysPanel.js +172 -0
- package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
- package/dist/components/rbac/ApiKeysTable.js +167 -0
- package/dist/components/rbac/ApiKeysTable.js.map +1 -0
- package/dist/components/rbac/Brand.js +13 -0
- package/dist/components/rbac/Brand.js.map +1 -0
- package/dist/components/rbac/Can.js +18 -0
- package/dist/components/rbac/Can.js.map +1 -0
- package/dist/components/rbac/ChangePasswordForm.js +73 -0
- package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
- package/dist/components/rbac/DangerZone.js +27 -0
- package/dist/components/rbac/DangerZone.js.map +1 -0
- package/dist/components/rbac/DevToolsPopover.js +140 -0
- package/dist/components/rbac/DevToolsPopover.js.map +1 -0
- package/dist/components/rbac/EndedLine.js +24 -0
- package/dist/components/rbac/EndedLine.js.map +1 -0
- package/dist/components/rbac/InvitationsList.js +148 -0
- package/dist/components/rbac/InvitationsList.js.map +1 -0
- package/dist/components/rbac/InviteMembersDialog.js +97 -0
- package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
- package/dist/components/rbac/MembersPanel.js +138 -0
- package/dist/components/rbac/MembersPanel.js.map +1 -0
- package/dist/components/rbac/PermissionRequestPanel.js +141 -0
- package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
- package/dist/components/rbac/ProfileForm.js +86 -0
- package/dist/components/rbac/ProfileForm.js.map +1 -0
- package/dist/components/rbac/ProfilePage.js +58 -0
- package/dist/components/rbac/ProfilePage.js.map +1 -0
- package/dist/components/rbac/RBACProvider.js +82 -0
- package/dist/components/rbac/RBACProvider.js.map +1 -0
- package/dist/components/rbac/RoleEditorDialog.js +90 -0
- package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
- package/dist/components/rbac/RoleKeyPicker.js +77 -0
- package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
- package/dist/components/rbac/RolePermissionMatrix.js +37 -0
- package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
- package/dist/components/rbac/RolesPermissionsPage.js +142 -0
- package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
- package/dist/components/rbac/SessionsList.js +146 -0
- package/dist/components/rbac/SessionsList.js.map +1 -0
- package/dist/components/rbac/TeamSettingsForm.js +69 -0
- package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
- package/dist/components/rbac/TeamSwitcher.js +66 -0
- package/dist/components/rbac/TeamSwitcher.js.map +1 -0
- package/dist/components/rbac/approvalPanelParts.js +130 -0
- package/dist/components/rbac/approvalPanelParts.js.map +1 -0
- package/dist/components/rbac/permissionSections.js +8 -0
- package/dist/components/rbac/permissionSections.js.map +1 -0
- package/dist/components/rbac/stagedForm.js +42 -0
- package/dist/components/rbac/stagedForm.js.map +1 -0
- package/dist/components/rbac/useStagedImage.js +21 -0
- package/dist/components/rbac/useStagedImage.js.map +1 -0
- package/dist/components/roadmap/PhaseManager.js +48 -0
- package/dist/components/roadmap/PhaseManager.js.map +1 -0
- package/dist/components/roadmap/RoadmapItemCard.js +96 -0
- package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
- package/dist/components/roadmap/RoadmapPage.js +34 -0
- package/dist/components/roadmap/RoadmapPage.js.map +1 -0
- package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
- package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
- package/dist/components/roadmap/TrackManager.js +58 -0
- package/dist/components/roadmap/TrackManager.js.map +1 -0
- package/dist/components/roadmap/UseCaseCard.js +93 -0
- package/dist/components/roadmap/UseCaseCard.js.map +1 -0
- package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
- package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
- package/dist/components/roadmap/chip-tones.js +9 -0
- package/dist/components/roadmap/chip-tones.js.map +1 -0
- package/dist/components/roadmap/derive.js +28 -0
- package/dist/components/roadmap/derive.js.map +1 -0
- package/dist/components/stepper/Stepper.js +276 -0
- package/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/components/stepper/derive.js +53 -0
- package/dist/components/stepper/derive.js.map +1 -0
- package/dist/confidence.css +222 -0
- package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
- package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
- package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
- package/dist/fonts/figtree-0.woff2 +0 -0
- package/dist/fonts/figtree-1.woff2 +0 -0
- package/dist/fonts/figtree-2.woff2 +0 -0
- package/dist/fonts/figtree-3.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
- package/dist/fonts.css +187 -0
- package/dist/icons/data.js +233 -0
- package/dist/icons/data.js.map +1 -0
- package/dist/index.js +942 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/attention.js +75 -0
- package/dist/lib/attention.js.map +1 -0
- package/dist/lib/board/anchor.js +14 -0
- package/dist/lib/board/anchor.js.map +1 -0
- package/dist/lib/board/model.js +41 -0
- package/dist/lib/board/model.js.map +1 -0
- package/dist/lib/board/move.js +161 -0
- package/dist/lib/board/move.js.map +1 -0
- package/dist/lib/board/position.js +11 -0
- package/dist/lib/board/position.js.map +1 -0
- package/dist/lib/board/rejection.js +22 -0
- package/dist/lib/board/rejection.js.map +1 -0
- package/dist/lib/board/use-board.js +43 -0
- package/dist/lib/board/use-board.js.map +1 -0
- package/dist/lib/calendar/band-packer.js +44 -0
- package/dist/lib/calendar/band-packer.js.map +1 -0
- package/dist/lib/calendar/drag.js +74 -0
- package/dist/lib/calendar/drag.js.map +1 -0
- package/dist/lib/calendar/lane-packer.js +67 -0
- package/dist/lib/calendar/lane-packer.js.map +1 -0
- package/dist/lib/calendar/segments.js +82 -0
- package/dist/lib/calendar/segments.js.map +1 -0
- package/dist/lib/calendar/types.js +7 -0
- package/dist/lib/calendar/types.js.map +1 -0
- package/dist/lib/chart-palette.js +27 -0
- package/dist/lib/chart-palette.js.map +1 -0
- package/dist/lib/clipboard.js +30 -0
- package/dist/lib/clipboard.js.map +1 -0
- package/dist/lib/cn.js +9 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/color.js +24 -0
- package/dist/lib/color.js.map +1 -0
- package/dist/lib/component-guidance.js +297 -0
- package/dist/lib/component-guidance.js.map +1 -0
- package/dist/lib/confidence.js +22 -0
- package/dist/lib/confidence.js.map +1 -0
- package/dist/lib/date-timeline/scale.js +197 -0
- package/dist/lib/date-timeline/scale.js.map +1 -0
- package/dist/lib/design-frame/document.js +44 -0
- package/dist/lib/design-frame/document.js.map +1 -0
- package/dist/lib/design-frame/mini-app-script.js +107 -0
- package/dist/lib/design-frame/mini-app-script.js.map +1 -0
- package/dist/lib/design-frame/mini-app.js +12 -0
- package/dist/lib/design-frame/mini-app.js.map +1 -0
- package/dist/lib/design-frame/protocol.js +46 -0
- package/dist/lib/design-frame/protocol.js.map +1 -0
- package/dist/lib/dev-warn.js +17 -0
- package/dist/lib/dev-warn.js.map +1 -0
- package/dist/lib/dnd/announce.js +120 -0
- package/dist/lib/dnd/announce.js.map +1 -0
- package/dist/lib/dnd/autoscroll.js +123 -0
- package/dist/lib/dnd/autoscroll.js.map +1 -0
- package/dist/lib/dnd/cross-drop.js +11 -0
- package/dist/lib/dnd/cross-drop.js.map +1 -0
- package/dist/lib/dnd/geometry.js +99 -0
- package/dist/lib/dnd/geometry.js.map +1 -0
- package/dist/lib/dnd/sensors/gesture.js +86 -0
- package/dist/lib/dnd/sensors/gesture.js.map +1 -0
- package/dist/lib/dnd/sensors/keyboard.js +47 -0
- package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
- package/dist/lib/dnd/sensors/pointer.js +32 -0
- package/dist/lib/dnd/sensors/pointer.js.map +1 -0
- package/dist/lib/dnd/session.js +256 -0
- package/dist/lib/dnd/session.js.map +1 -0
- package/dist/lib/dnd/use-drag.js +90 -0
- package/dist/lib/dnd/use-drag.js.map +1 -0
- package/dist/lib/dom/scroll-ancestor.js +18 -0
- package/dist/lib/dom/scroll-ancestor.js.map +1 -0
- package/dist/lib/format.js +23 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/group-in-order.js +13 -0
- package/dist/lib/group-in-order.js.map +1 -0
- package/dist/lib/header-fold.js +11 -0
- package/dist/lib/header-fold.js.map +1 -0
- package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
- package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
- package/dist/lib/i18n/areas/board.js +35 -0
- package/dist/lib/i18n/areas/board.js.map +1 -0
- package/dist/lib/i18n/areas/card-face.js +10 -0
- package/dist/lib/i18n/areas/card-face.js.map +1 -0
- package/dist/lib/i18n/areas/chat-chart.js +118 -0
- package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
- package/dist/lib/i18n/areas/code-editor.js +24 -0
- package/dist/lib/i18n/areas/code-editor.js.map +1 -0
- package/dist/lib/i18n/areas/date-timeline.js +21 -0
- package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
- package/dist/lib/i18n/areas/dates.js +71 -0
- package/dist/lib/i18n/areas/dates.js.map +1 -0
- package/dist/lib/i18n/areas/docs-views.js +183 -0
- package/dist/lib/i18n/areas/docs-views.js.map +1 -0
- package/dist/lib/i18n/areas/feedback.js +75 -0
- package/dist/lib/i18n/areas/feedback.js.map +1 -0
- package/dist/lib/i18n/areas/formats.js +24 -0
- package/dist/lib/i18n/areas/formats.js.map +1 -0
- package/dist/lib/i18n/areas/forms.js +110 -0
- package/dist/lib/i18n/areas/forms.js.map +1 -0
- package/dist/lib/i18n/areas/keys.js +25 -0
- package/dist/lib/i18n/areas/keys.js.map +1 -0
- package/dist/lib/i18n/areas/markdown.js +136 -0
- package/dist/lib/i18n/areas/markdown.js.map +1 -0
- package/dist/lib/i18n/areas/move-rejected.js +14 -0
- package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
- package/dist/lib/i18n/areas/navigation.js +104 -0
- package/dist/lib/i18n/areas/navigation.js.map +1 -0
- package/dist/lib/i18n/areas/rbac.js +331 -0
- package/dist/lib/i18n/areas/rbac.js.map +1 -0
- package/dist/lib/i18n/emphasis.js +6 -0
- package/dist/lib/i18n/emphasis.js.map +1 -0
- package/dist/lib/i18n/number-format.js +9 -0
- package/dist/lib/i18n/number-format.js.map +1 -0
- package/dist/lib/i18n/plural.js +9 -0
- package/dist/lib/i18n/plural.js.map +1 -0
- package/dist/lib/i18n/provider.js +27 -0
- package/dist/lib/i18n/provider.js.map +1 -0
- package/dist/lib/i18n/strings.js +38 -0
- package/dist/lib/i18n/strings.js.map +1 -0
- package/dist/lib/icons.js +17 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/interactive-target.js +9 -0
- package/dist/lib/interactive-target.js.map +1 -0
- package/dist/lib/intl-cache.js +69 -0
- package/dist/lib/intl-cache.js.map +1 -0
- package/dist/lib/legal-document.js +37 -0
- package/dist/lib/legal-document.js.map +1 -0
- package/dist/lib/line-diff-model.js +51 -0
- package/dist/lib/line-diff-model.js.map +1 -0
- package/dist/lib/markdown/attachments.js +71 -0
- package/dist/lib/markdown/attachments.js.map +1 -0
- package/dist/lib/markdown/caret-map.js +153 -0
- package/dist/lib/markdown/caret-map.js.map +1 -0
- package/dist/lib/markdown/caret.js +35 -0
- package/dist/lib/markdown/caret.js.map +1 -0
- package/dist/lib/markdown/commands.js +443 -0
- package/dist/lib/markdown/commands.js.map +1 -0
- package/dist/lib/markdown/convert.js +153 -0
- package/dist/lib/markdown/convert.js.map +1 -0
- package/dist/lib/markdown/dom.js +89 -0
- package/dist/lib/markdown/dom.js.map +1 -0
- package/dist/lib/markdown/edit.js +92 -0
- package/dist/lib/markdown/edit.js.map +1 -0
- package/dist/lib/markdown/history.js +79 -0
- package/dist/lib/markdown/history.js.map +1 -0
- package/dist/lib/markdown/hotkeys.js +63 -0
- package/dist/lib/markdown/hotkeys.js.map +1 -0
- package/dist/lib/markdown/image-pipeline.js +236 -0
- package/dist/lib/markdown/image-pipeline.js.map +1 -0
- package/dist/lib/markdown/images.js +85 -0
- package/dist/lib/markdown/images.js.map +1 -0
- package/dist/lib/markdown/input.js +210 -0
- package/dist/lib/markdown/input.js.map +1 -0
- package/dist/lib/markdown/keys.js +37 -0
- package/dist/lib/markdown/keys.js.map +1 -0
- package/dist/lib/markdown/paste.js +180 -0
- package/dist/lib/markdown/paste.js.map +1 -0
- package/dist/lib/markdown/position.js +111 -0
- package/dist/lib/markdown/position.js.map +1 -0
- package/dist/lib/markdown/project.js +108 -0
- package/dist/lib/markdown/project.js.map +1 -0
- package/dist/lib/markdown/reconcile.js +127 -0
- package/dist/lib/markdown/reconcile.js.map +1 -0
- package/dist/lib/markdown/surface.js +373 -0
- package/dist/lib/markdown/surface.js.map +1 -0
- package/dist/lib/motion.js +22 -0
- package/dist/lib/motion.js.map +1 -0
- package/dist/lib/pad.js +7 -0
- package/dist/lib/pad.js.map +1 -0
- package/dist/lib/paged-window/layout.js +15 -0
- package/dist/lib/paged-window/layout.js.map +1 -0
- package/dist/lib/paged-window/list-owner.js +21 -0
- package/dist/lib/paged-window/list-owner.js.map +1 -0
- package/dist/lib/paged-window/records-binding.js +239 -0
- package/dist/lib/paged-window/records-binding.js.map +1 -0
- package/dist/lib/paged-window/store.js +562 -0
- package/dist/lib/paged-window/store.js.map +1 -0
- package/dist/lib/paged-window/use-measured-pitch.js +38 -0
- package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
- package/dist/lib/paged-window/use-page-visibility.js +36 -0
- package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
- package/dist/lib/paged-window/use-paged-window.js +43 -0
- package/dist/lib/paged-window/use-paged-window.js.map +1 -0
- package/dist/lib/paged-window/use-scroll-root.js +12 -0
- package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
- package/dist/lib/persist.js +84 -0
- package/dist/lib/persist.js.map +1 -0
- package/dist/lib/preference-values.js +13 -0
- package/dist/lib/preference-values.js.map +1 -0
- package/dist/lib/preferences.js +86 -0
- package/dist/lib/preferences.js.map +1 -0
- package/dist/lib/reads/hooks.js +156 -0
- package/dist/lib/reads/hooks.js.map +1 -0
- package/dist/lib/reads/optimistic.js +169 -0
- package/dist/lib/reads/optimistic.js.map +1 -0
- package/dist/lib/reads/refetch.js +108 -0
- package/dist/lib/reads/refetch.js.map +1 -0
- package/dist/lib/reads/slots.js +215 -0
- package/dist/lib/reads/slots.js.map +1 -0
- package/dist/lib/realtime/hooks.js +40 -0
- package/dist/lib/realtime/hooks.js.map +1 -0
- package/dist/lib/realtime/provider.js +25 -0
- package/dist/lib/realtime/provider.js.map +1 -0
- package/dist/lib/realtime/registry.js +472 -0
- package/dist/lib/realtime/registry.js.map +1 -0
- package/dist/lib/records/define-record-type.js +33 -0
- package/dist/lib/records/define-record-type.js.map +1 -0
- package/dist/lib/records/hooks.js +39 -0
- package/dist/lib/records/hooks.js.map +1 -0
- package/dist/lib/records/store.js +572 -0
- package/dist/lib/records/store.js.map +1 -0
- package/dist/lib/records/wire.js +58 -0
- package/dist/lib/records/wire.js.map +1 -0
- package/dist/lib/reduced-motion-help.js +19 -0
- package/dist/lib/reduced-motion-help.js.map +1 -0
- package/dist/lib/scroll-caret.js +18 -0
- package/dist/lib/scroll-caret.js.map +1 -0
- package/dist/lib/sim/createSimStore.js +54 -0
- package/dist/lib/sim/createSimStore.js.map +1 -0
- package/dist/lib/sim/latency.js +28 -0
- package/dist/lib/sim/latency.js.map +1 -0
- package/dist/lib/sim/registry.js +13 -0
- package/dist/lib/sim/registry.js.map +1 -0
- package/dist/lib/sim/settings.js +41 -0
- package/dist/lib/sim/settings.js.map +1 -0
- package/dist/lib/submit-shortcut.js +25 -0
- package/dist/lib/submit-shortcut.js.map +1 -0
- package/dist/lib/syntax/index.js +33 -0
- package/dist/lib/syntax/index.js.map +1 -0
- package/dist/lib/syntax/languages/bash.js +77 -0
- package/dist/lib/syntax/languages/bash.js.map +1 -0
- package/dist/lib/syntax/languages/css.js +81 -0
- package/dist/lib/syntax/languages/css.js.map +1 -0
- package/dist/lib/syntax/languages/html.js +91 -0
- package/dist/lib/syntax/languages/html.js.map +1 -0
- package/dist/lib/syntax/languages/index.js +49 -0
- package/dist/lib/syntax/languages/index.js.map +1 -0
- package/dist/lib/syntax/languages/javascript.js +133 -0
- package/dist/lib/syntax/languages/javascript.js.map +1 -0
- package/dist/lib/syntax/languages/json.js +45 -0
- package/dist/lib/syntax/languages/json.js.map +1 -0
- package/dist/lib/syntax/languages/mongodb.js +24 -0
- package/dist/lib/syntax/languages/mongodb.js.map +1 -0
- package/dist/lib/syntax/languages/plain.js +10 -0
- package/dist/lib/syntax/languages/plain.js.map +1 -0
- package/dist/lib/syntax/languages/sql.js +113 -0
- package/dist/lib/syntax/languages/sql.js.map +1 -0
- package/dist/lib/syntax/languages/vue.js +31 -0
- package/dist/lib/syntax/languages/vue.js.map +1 -0
- package/dist/lib/syntax/languages/yaml.js +55 -0
- package/dist/lib/syntax/languages/yaml.js.map +1 -0
- package/dist/lib/syntax/markdown/grammar.js +52 -0
- package/dist/lib/syntax/markdown/grammar.js.map +1 -0
- package/dist/lib/syntax/markdown/inline.js +477 -0
- package/dist/lib/syntax/markdown/inline.js.map +1 -0
- package/dist/lib/syntax/markdown/parse.js +464 -0
- package/dist/lib/syntax/markdown/parse.js.map +1 -0
- package/dist/lib/syntax/markdown/refs.js +94 -0
- package/dist/lib/syntax/markdown/refs.js.map +1 -0
- package/dist/lib/syntax/markdown/render.js +230 -0
- package/dist/lib/syntax/markdown/render.js.map +1 -0
- package/dist/lib/syntax/markdown/spans.js +40 -0
- package/dist/lib/syntax/markdown/spans.js.map +1 -0
- package/dist/lib/syntax/registry.js +55 -0
- package/dist/lib/syntax/registry.js.map +1 -0
- package/dist/lib/syntax/tokenize.js +96 -0
- package/dist/lib/syntax/tokenize.js.map +1 -0
- package/dist/lib/time/instant.js +7 -0
- package/dist/lib/time/instant.js.map +1 -0
- package/dist/lib/time/plain.js +83 -0
- package/dist/lib/time/plain.js.map +1 -0
- package/dist/lib/time/relativeAge.js +20 -0
- package/dist/lib/time/relativeAge.js.map +1 -0
- package/dist/lib/time/relativeClock.js +59 -0
- package/dist/lib/time/relativeClock.js.map +1 -0
- package/dist/lib/time/types.js +23 -0
- package/dist/lib/time/types.js.map +1 -0
- package/dist/lib/time/zone.js +148 -0
- package/dist/lib/time/zone.js.map +1 -0
- package/dist/lib/use-controllable.js +16 -0
- package/dist/lib/use-controllable.js.map +1 -0
- package/dist/lib/use-fill-height.js +49 -0
- package/dist/lib/use-fill-height.js.map +1 -0
- package/dist/lib/use-hydrated.js +14 -0
- package/dist/lib/use-hydrated.js.map +1 -0
- package/dist/lib/use-media-query.js +30 -0
- package/dist/lib/use-media-query.js.map +1 -0
- package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
- package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
- package/dist/lib/use-release-snap-drag.js +29 -0
- package/dist/lib/use-release-snap-drag.js.map +1 -0
- package/dist/lib/use-roving-options.js +18 -0
- package/dist/lib/use-roving-options.js.map +1 -0
- package/dist/lib/values/absent.js +5 -0
- package/dist/lib/values/absent.js.map +1 -0
- package/dist/lib/values/boolean.js +13 -0
- package/dist/lib/values/boolean.js.map +1 -0
- package/dist/lib/values/currency.js +23 -0
- package/dist/lib/values/currency.js.map +1 -0
- package/dist/lib/values/date.js +35 -0
- package/dist/lib/values/date.js.map +1 -0
- package/dist/lib/values/datetime.js +54 -0
- package/dist/lib/values/datetime.js.map +1 -0
- package/dist/lib/values/locale-date.js +60 -0
- package/dist/lib/values/locale-date.js.map +1 -0
- package/dist/lib/values/number.js +16 -0
- package/dist/lib/values/number.js.map +1 -0
- package/dist/pure.js +379 -0
- package/dist/pure.js.map +1 -0
- package/dist/styles.css +190 -0
- package/dist/theme.css +360 -0
- package/dist/types/components/Accordion.d.ts +15 -0
- package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
- package/dist/types/components/AppShell.d.ts +164 -0
- package/dist/types/components/Attention.d.ts +87 -0
- package/dist/types/components/Avatar.d.ts +154 -0
- package/dist/types/components/Badge.d.ts +131 -0
- package/dist/types/components/Board.d.ts +239 -0
- package/dist/types/components/Button.d.ts +208 -0
- package/dist/types/components/Callout.d.ts +163 -0
- package/dist/types/components/Card.d.ts +219 -0
- package/dist/types/components/Choice.d.ts +127 -0
- package/dist/types/components/CodeEditor.d.ts +86 -0
- package/dist/types/components/ColorPicker.d.ts +14 -0
- package/dist/types/components/Combobox.d.ts +43 -0
- package/dist/types/components/CommandPalette.d.ts +35 -0
- package/dist/types/components/ConcentricRing.d.ts +61 -0
- package/dist/types/components/ConnectionCard.d.ts +64 -0
- package/dist/types/components/ContextItemRow.d.ts +35 -0
- package/dist/types/components/CopyValue.d.ts +14 -0
- package/dist/types/components/CountBadge.d.ts +14 -0
- package/dist/types/components/DateCalendar.d.ts +30 -0
- package/dist/types/components/DateField.d.ts +29 -0
- package/dist/types/components/DatePicker.d.ts +20 -0
- package/dist/types/components/DateTimeText.d.ts +9 -0
- package/dist/types/components/DescriptionList.d.ts +40 -0
- package/dist/types/components/Dialog.d.ts +269 -0
- package/dist/types/components/DragDrop.d.ts +196 -0
- package/dist/types/components/Drawer.d.ts +163 -0
- package/dist/types/components/EditGutter.d.ts +44 -0
- package/dist/types/components/EmojiPicker.d.ts +30 -0
- package/dist/types/components/ErrorBoundary.d.ts +43 -0
- package/dist/types/components/Field.d.ts +37 -0
- package/dist/types/components/FileUpload.d.ts +22 -0
- package/dist/types/components/FilterMenu.d.ts +120 -0
- package/dist/types/components/GatesSection.d.ts +79 -0
- package/dist/types/components/Icon.d.ts +40 -0
- package/dist/types/components/IconButton.d.ts +69 -0
- package/dist/types/components/IconStack.d.ts +28 -0
- package/dist/types/components/ImageUploadField.d.ts +38 -0
- package/dist/types/components/InlineEdit.d.ts +183 -0
- package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
- package/dist/types/components/Input.d.ts +128 -0
- package/dist/types/components/LegalDocument.d.ts +23 -0
- package/dist/types/components/LineDiff.d.ts +53 -0
- package/dist/types/components/ListHeader.d.ts +45 -0
- package/dist/types/components/Loading.d.ts +131 -0
- package/dist/types/components/Markdown.d.ts +35 -0
- package/dist/types/components/MarkdownEditor.d.ts +129 -0
- package/dist/types/components/Menu.d.ts +157 -0
- package/dist/types/components/Navigation.d.ts +67 -0
- package/dist/types/components/NumberInput.d.ts +177 -0
- package/dist/types/components/OTPInput.d.ts +13 -0
- package/dist/types/components/OrderedEntityManager.d.ts +64 -0
- package/dist/types/components/PagedWindowList.d.ts +23 -0
- package/dist/types/components/PaginationBar.d.ts +31 -0
- package/dist/types/components/Panel.d.ts +94 -0
- package/dist/types/components/PasswordInput.d.ts +7 -0
- package/dist/types/components/PasswordRequirements.d.ts +11 -0
- package/dist/types/components/PatchDiff.d.ts +38 -0
- package/dist/types/components/PendingVeil.d.ts +8 -0
- package/dist/types/components/Popover.d.ts +231 -0
- package/dist/types/components/Progress.d.ts +580 -0
- package/dist/types/components/RatingScale.d.ts +30 -0
- package/dist/types/components/ReadMore.d.ts +26 -0
- package/dist/types/components/RecordCard.d.ts +413 -0
- package/dist/types/components/RelativeTime.d.ts +17 -0
- package/dist/types/components/SandboxedFrame.d.ts +37 -0
- package/dist/types/components/SearchInput.d.ts +6 -0
- package/dist/types/components/SecretField.d.ts +90 -0
- package/dist/types/components/SectionNav.d.ts +15 -0
- package/dist/types/components/Select.d.ts +53 -0
- package/dist/types/components/SequenceDiagram.d.ts +15 -0
- package/dist/types/components/SettingRow.d.ts +144 -0
- package/dist/types/components/SignOffRings.d.ts +29 -0
- package/dist/types/components/Slider.d.ts +255 -0
- package/dist/types/components/SolutionChoice.d.ts +49 -0
- package/dist/types/components/SortMenu.d.ts +45 -0
- package/dist/types/components/Spinner.d.ts +29 -0
- package/dist/types/components/Stat.d.ts +136 -0
- package/dist/types/components/StatusSelect.d.ts +93 -0
- package/dist/types/components/Surface.d.ts +145 -0
- package/dist/types/components/Table.d.ts +164 -0
- package/dist/types/components/Tabs.d.ts +142 -0
- package/dist/types/components/ThemeMenu.d.ts +56 -0
- package/dist/types/components/Toast.d.ts +63 -0
- package/dist/types/components/Toggle.d.ts +168 -0
- package/dist/types/components/ToggleMatrix.d.ts +51 -0
- package/dist/types/components/Tree.d.ts +20 -0
- package/dist/types/components/TriStateSwitch.d.ts +63 -0
- package/dist/types/components/VideoPlayer.d.ts +26 -0
- package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
- package/dist/types/components/auth/AuthLayout.d.ts +12 -0
- package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
- package/dist/types/components/auth/LoginForm.d.ts +13 -0
- package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
- package/dist/types/components/auth/SignInProviders.d.ts +56 -0
- package/dist/types/components/auth/SignupCard.d.ts +62 -0
- package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
- package/dist/types/components/auth/index.d.ts +8 -0
- package/dist/types/components/board/context.d.ts +65 -0
- package/dist/types/components/board/recipe.d.ts +97 -0
- package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
- package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
- package/dist/types/components/calendar/EventActions.d.ts +16 -0
- package/dist/types/components/calendar/format.d.ts +42 -0
- package/dist/types/components/calendar/palette.d.ts +17 -0
- package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
- package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
- package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
- package/dist/types/components/calendar/use-now.d.ts +20 -0
- package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
- package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
- package/dist/types/components/card-face/CardFace.d.ts +106 -0
- package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
- package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
- package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
- package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
- package/dist/types/components/card-face/TapTip.d.ts +15 -0
- package/dist/types/components/card-face/hit-area.d.ts +20 -0
- package/dist/types/components/card-face/vocabulary.d.ts +83 -0
- package/dist/types/components/chart/BarList.d.ts +27 -0
- package/dist/types/components/chart/LineChart.d.ts +64 -0
- package/dist/types/components/chart/ShareBar.d.ts +26 -0
- package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
- package/dist/types/components/chart/label-metrics.d.ts +9 -0
- package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
- package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
- package/dist/types/components/chart/line-series-style.d.ts +14 -0
- package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
- package/dist/types/components/chart/shared.d.ts +122 -0
- package/dist/types/components/chart/time-series-scale.d.ts +29 -0
- package/dist/types/components/chat/Attachment.d.ts +125 -0
- package/dist/types/components/chat/Chat.d.ts +60 -0
- package/dist/types/components/chat/Composer.d.ts +62 -0
- package/dist/types/components/chat/ContextMeter.d.ts +45 -0
- package/dist/types/components/chat/EffortControl.d.ts +23 -0
- package/dist/types/components/chat/FileCover.d.ts +14 -0
- package/dist/types/components/chat/Message.d.ts +66 -0
- package/dist/types/components/chat/MessageScroller.d.ts +18 -0
- package/dist/types/components/chat/ModelSelector.d.ts +44 -0
- package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
- package/dist/types/components/chat/download-file.d.ts +7 -0
- package/dist/types/components/chat/file-icon.d.ts +29 -0
- package/dist/types/components/chat/types.d.ts +165 -0
- package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
- package/dist/types/components/checklist/index.d.ts +3 -0
- package/dist/types/components/checklist/tally.d.ts +19 -0
- package/dist/types/components/checklist/types.d.ts +28 -0
- package/dist/types/components/code-editor/context.d.ts +32 -0
- package/dist/types/components/code-editor/editing.d.ts +39 -0
- package/dist/types/components/code-editor/highlight.d.ts +20 -0
- package/dist/types/components/code-editor/recipe.d.ts +109 -0
- package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
- package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
- package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
- package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
- package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
- package/dist/types/components/drag-drop/context.d.ts +85 -0
- package/dist/types/components/drag-drop/recipe.d.ts +163 -0
- package/dist/types/components/drag-drop/shift.d.ts +153 -0
- package/dist/types/components/edit/activation.d.ts +21 -0
- package/dist/types/components/edit/outcome.d.ts +29 -0
- package/dist/types/components/edit/use-edit-session.d.ts +77 -0
- package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
- package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
- package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
- package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
- package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
- package/dist/types/components/file-viewer/frames.d.ts +28 -0
- package/dist/types/components/file-viewer/index.d.ts +3 -0
- package/dist/types/components/file-viewer/types.d.ts +70 -0
- package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
- package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
- package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
- package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
- package/dist/types/components/focus-web/index.d.ts +4 -0
- package/dist/types/components/focus-web/layout.d.ts +55 -0
- package/dist/types/components/focus-web/types.d.ts +131 -0
- package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
- package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
- package/dist/types/components/graph-explorer/index.d.ts +5 -0
- package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
- package/dist/types/components/graph-explorer/types.d.ts +62 -0
- package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
- package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
- package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
- package/dist/types/components/kanban/recipe.d.ts +73 -0
- package/dist/types/components/kanban/types.d.ts +55 -0
- package/dist/types/components/markdown/Affordances.d.ts +105 -0
- package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
- package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
- package/dist/types/components/media-error.d.ts +11 -0
- package/dist/types/components/nav-sections.d.ts +10 -0
- package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
- package/dist/types/components/node-canvas/index.d.ts +3 -0
- package/dist/types/components/node-canvas/layout.d.ts +29 -0
- package/dist/types/components/node-canvas/types.d.ts +207 -0
- package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
- package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
- package/dist/types/components/openapi/OperationCard.d.ts +33 -0
- package/dist/types/components/openapi/SchemaView.d.ts +14 -0
- package/dist/types/components/openapi/index.d.ts +6 -0
- package/dist/types/components/openapi/resolve.d.ts +72 -0
- package/dist/types/components/openapi/types.d.ts +128 -0
- package/dist/types/components/overlay-shell.d.ts +48 -0
- package/dist/types/components/overlay-stack.d.ts +18 -0
- package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
- package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
- package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
- package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
- package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
- package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
- package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
- package/dist/types/components/provenance/absence.d.ts +37 -0
- package/dist/types/components/provenance/index.d.ts +7 -0
- package/dist/types/components/provenance/types.d.ts +137 -0
- package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
- package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
- package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
- package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
- package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
- package/dist/types/components/rbac/Brand.d.ts +8 -0
- package/dist/types/components/rbac/Can.d.ts +19 -0
- package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
- package/dist/types/components/rbac/DangerZone.d.ts +8 -0
- package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
- package/dist/types/components/rbac/EndedLine.d.ts +21 -0
- package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
- package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
- package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
- package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
- package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
- package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
- package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
- package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
- package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
- package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
- package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
- package/dist/types/components/rbac/SessionsList.d.ts +35 -0
- package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
- package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
- package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
- package/dist/types/components/rbac/index.d.ts +25 -0
- package/dist/types/components/rbac/permissionSections.d.ts +8 -0
- package/dist/types/components/rbac/stagedForm.d.ts +25 -0
- package/dist/types/components/rbac/types.d.ts +65 -0
- package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
- package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
- package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
- package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
- package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
- package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
- package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
- package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
- package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
- package/dist/types/components/roadmap/derive.d.ts +39 -0
- package/dist/types/components/roadmap/index.d.ts +10 -0
- package/dist/types/components/roadmap/types.d.ts +86 -0
- package/dist/types/components/stepper/Stepper.d.ts +79 -0
- package/dist/types/components/stepper/derive.d.ts +49 -0
- package/dist/types/components/stepper/index.d.ts +3 -0
- package/dist/types/components/stepper/types.d.ts +118 -0
- package/dist/types/icons/data.d.ts +2054 -0
- package/dist/types/index.d.ts +209 -0
- package/dist/types/lib/attention.d.ts +62 -0
- package/dist/types/lib/board/anchor.d.ts +69 -0
- package/dist/types/lib/board/index.d.ts +17 -0
- package/dist/types/lib/board/model.d.ts +43 -0
- package/dist/types/lib/board/move.d.ts +181 -0
- package/dist/types/lib/board/position.d.ts +22 -0
- package/dist/types/lib/board/rejection.d.ts +8 -0
- package/dist/types/lib/board/types.d.ts +294 -0
- package/dist/types/lib/board/use-board.d.ts +47 -0
- package/dist/types/lib/calendar/band-packer.d.ts +53 -0
- package/dist/types/lib/calendar/drag.d.ts +125 -0
- package/dist/types/lib/calendar/index.d.ts +4 -0
- package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
- package/dist/types/lib/calendar/segments.d.ts +91 -0
- package/dist/types/lib/calendar/types.d.ts +166 -0
- package/dist/types/lib/chart-palette.d.ts +14 -0
- package/dist/types/lib/clipboard.d.ts +12 -0
- package/dist/types/lib/cn.d.ts +7 -0
- package/dist/types/lib/color.d.ts +14 -0
- package/dist/types/lib/component-guidance.d.ts +15 -0
- package/dist/types/lib/confidence.d.ts +28 -0
- package/dist/types/lib/date-timeline/scale.d.ts +143 -0
- package/dist/types/lib/design-frame/document.d.ts +39 -0
- package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
- package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
- package/dist/types/lib/design-frame/protocol.d.ts +78 -0
- package/dist/types/lib/dev-warn.d.ts +10 -0
- package/dist/types/lib/dnd/announce.d.ts +124 -0
- package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
- package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
- package/dist/types/lib/dnd/geometry.d.ts +126 -0
- package/dist/types/lib/dnd/index.d.ts +17 -0
- package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
- package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
- package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
- package/dist/types/lib/dnd/session.d.ts +124 -0
- package/dist/types/lib/dnd/types.d.ts +226 -0
- package/dist/types/lib/dnd/use-drag.d.ts +82 -0
- package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
- package/dist/types/lib/format.d.ts +33 -0
- package/dist/types/lib/group-in-order.d.ts +13 -0
- package/dist/types/lib/header-fold.d.ts +10 -0
- package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
- package/dist/types/lib/i18n/areas/board.d.ts +51 -0
- package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
- package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
- package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
- package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
- package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
- package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
- package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
- package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
- package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
- package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
- package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
- package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
- package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
- package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
- package/dist/types/lib/i18n/emphasis.d.ts +3 -0
- package/dist/types/lib/i18n/index.d.ts +10 -0
- package/dist/types/lib/i18n/number-format.d.ts +5 -0
- package/dist/types/lib/i18n/plural.d.ts +7 -0
- package/dist/types/lib/i18n/provider.d.ts +16 -0
- package/dist/types/lib/i18n/strings.d.ts +18 -0
- package/dist/types/lib/icons.d.ts +22 -0
- package/dist/types/lib/interactive-target.d.ts +3 -0
- package/dist/types/lib/intl-cache.d.ts +31 -0
- package/dist/types/lib/legal-document.d.ts +82 -0
- package/dist/types/lib/line-diff-model.d.ts +39 -0
- package/dist/types/lib/markdown/attachments.d.ts +50 -0
- package/dist/types/lib/markdown/caret-map.d.ts +69 -0
- package/dist/types/lib/markdown/caret.d.ts +6 -0
- package/dist/types/lib/markdown/commands.d.ts +186 -0
- package/dist/types/lib/markdown/convert.d.ts +99 -0
- package/dist/types/lib/markdown/dom.d.ts +30 -0
- package/dist/types/lib/markdown/edit.d.ts +16 -0
- package/dist/types/lib/markdown/history.d.ts +59 -0
- package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
- package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
- package/dist/types/lib/markdown/images.d.ts +138 -0
- package/dist/types/lib/markdown/input.d.ts +38 -0
- package/dist/types/lib/markdown/keys.d.ts +34 -0
- package/dist/types/lib/markdown/paste.d.ts +9 -0
- package/dist/types/lib/markdown/position.d.ts +43 -0
- package/dist/types/lib/markdown/project.d.ts +88 -0
- package/dist/types/lib/markdown/reconcile.d.ts +63 -0
- package/dist/types/lib/markdown/surface.d.ts +236 -0
- package/dist/types/lib/motion.d.ts +30 -0
- package/dist/types/lib/pad.d.ts +6 -0
- package/dist/types/lib/paged-window/index.d.ts +2 -0
- package/dist/types/lib/paged-window/layout.d.ts +21 -0
- package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
- package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
- package/dist/types/lib/paged-window/store.d.ts +307 -0
- package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
- package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
- package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
- package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
- package/dist/types/lib/persist.d.ts +57 -0
- package/dist/types/lib/preference-values.d.ts +72 -0
- package/dist/types/lib/preferences.d.ts +26 -0
- package/dist/types/lib/reads/hooks.d.ts +49 -0
- package/dist/types/lib/reads/index.d.ts +5 -0
- package/dist/types/lib/reads/optimistic.d.ts +119 -0
- package/dist/types/lib/reads/refetch.d.ts +83 -0
- package/dist/types/lib/reads/slots.d.ts +137 -0
- package/dist/types/lib/reads/types.d.ts +155 -0
- package/dist/types/lib/realtime/hooks.d.ts +38 -0
- package/dist/types/lib/realtime/index.d.ts +4 -0
- package/dist/types/lib/realtime/provider.d.ts +38 -0
- package/dist/types/lib/realtime/registry.d.ts +225 -0
- package/dist/types/lib/realtime/types.d.ts +242 -0
- package/dist/types/lib/records/define-record-type.d.ts +29 -0
- package/dist/types/lib/records/hooks.d.ts +46 -0
- package/dist/types/lib/records/index.d.ts +5 -0
- package/dist/types/lib/records/store.d.ts +289 -0
- package/dist/types/lib/records/types.d.ts +195 -0
- package/dist/types/lib/records/wire.d.ts +96 -0
- package/dist/types/lib/reduced-motion-help.d.ts +23 -0
- package/dist/types/lib/scroll-caret.d.ts +6 -0
- package/dist/types/lib/sim/createSimStore.d.ts +18 -0
- package/dist/types/lib/sim/index.d.ts +5 -0
- package/dist/types/lib/sim/latency.d.ts +10 -0
- package/dist/types/lib/sim/registry.d.ts +14 -0
- package/dist/types/lib/sim/settings.d.ts +11 -0
- package/dist/types/lib/sim/types.d.ts +3 -0
- package/dist/types/lib/submit-shortcut.d.ts +24 -0
- package/dist/types/lib/syntax/index.d.ts +16 -0
- package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
- package/dist/types/lib/syntax/languages/css.d.ts +1 -0
- package/dist/types/lib/syntax/languages/html.d.ts +17 -0
- package/dist/types/lib/syntax/languages/index.d.ts +33 -0
- package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
- package/dist/types/lib/syntax/languages/json.d.ts +1 -0
- package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
- package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
- package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
- package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
- package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
- package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
- package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
- package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
- package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
- package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
- package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
- package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
- package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
- package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
- package/dist/types/lib/syntax/registry.d.ts +37 -0
- package/dist/types/lib/syntax/tokenize.d.ts +17 -0
- package/dist/types/lib/syntax/types.d.ts +119 -0
- package/dist/types/lib/time/index.d.ts +4 -0
- package/dist/types/lib/time/instant.d.ts +2 -0
- package/dist/types/lib/time/plain.d.ts +61 -0
- package/dist/types/lib/time/relativeAge.d.ts +18 -0
- package/dist/types/lib/time/relativeClock.d.ts +8 -0
- package/dist/types/lib/time/types.d.ts +87 -0
- package/dist/types/lib/time/zone.d.ts +106 -0
- package/dist/types/lib/use-controllable.d.ts +14 -0
- package/dist/types/lib/use-fill-height.d.ts +26 -0
- package/dist/types/lib/use-hydrated.d.ts +8 -0
- package/dist/types/lib/use-media-query.d.ts +29 -0
- package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
- package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
- package/dist/types/lib/use-roving-options.d.ts +10 -0
- package/dist/types/lib/values/absent.d.ts +7 -0
- package/dist/types/lib/values/boolean.d.ts +29 -0
- package/dist/types/lib/values/currency.d.ts +22 -0
- package/dist/types/lib/values/date.d.ts +30 -0
- package/dist/types/lib/values/datetime.d.ts +48 -0
- package/dist/types/lib/values/index.d.ts +5 -0
- package/dist/types/lib/values/locale-date.d.ts +34 -0
- package/dist/types/lib/values/number.d.ts +27 -0
- package/dist/types/pure.d.ts +48 -0
- package/package.json +136 -4
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import { patch as p, CompositionConflictError as f, rangeOf as c } from "./reconcile.js";
|
|
2
|
+
import { caretMap as u, nearestStop as n, stepStop as g, lineStartStop as m, lineEndStop as S } from "./caret-map.js";
|
|
3
|
+
import { project as d } from "./project.js";
|
|
4
|
+
import { readSelection as l, writeSelection as h } from "./position.js";
|
|
5
|
+
import { History as y } from "./history.js";
|
|
6
|
+
import { substituteAll as b } from "./images.js";
|
|
7
|
+
class E {
|
|
8
|
+
root;
|
|
9
|
+
source;
|
|
10
|
+
options;
|
|
11
|
+
/**
|
|
12
|
+
* Upload swaps that arrived mid-composition, applied at `compositionend`.
|
|
13
|
+
*
|
|
14
|
+
* DX-3134: the composing text node carries the source range it came from,
|
|
15
|
+
* and `reconcileComposed` writes the composed text back into exactly that
|
|
16
|
+
* range. A swap applied mid-composition changes the length of the source
|
|
17
|
+
* before the node — the range would then point at the wrong characters, and
|
|
18
|
+
* the composed text would land inside a URL. So the swap waits, and runs
|
|
19
|
+
* right after the composition has been read back.
|
|
20
|
+
*/
|
|
21
|
+
pendingSubstitutions = [];
|
|
22
|
+
/** The text node the browser is composing into, if any. */
|
|
23
|
+
composing = null;
|
|
24
|
+
/** A projection that arrived while composing, applied at `compositionend`. */
|
|
25
|
+
deferred = !1;
|
|
26
|
+
observer = null;
|
|
27
|
+
/** Depth of "this mutation is ours, ignore it". */
|
|
28
|
+
writing = 0;
|
|
29
|
+
history;
|
|
30
|
+
/** True while applying an undo, so the undo is not itself recorded. */
|
|
31
|
+
restoring = !1;
|
|
32
|
+
/**
|
|
33
|
+
* Where the caret is allowed to be, rebuilt with every projection.
|
|
34
|
+
*
|
|
35
|
+
* Held rather than recomputed per keystroke because every deletion and every
|
|
36
|
+
* arrow key needs it, and it is a pure function of the projection that was
|
|
37
|
+
* just built anyway. It is never mutated — a new projection replaces it
|
|
38
|
+
* whole, which is the same "nothing is kept in step so nothing can drift"
|
|
39
|
+
* argument the projection itself rests on.
|
|
40
|
+
*/
|
|
41
|
+
caretStops;
|
|
42
|
+
/**
|
|
43
|
+
* The projection those stops were built from.
|
|
44
|
+
*
|
|
45
|
+
* Held for the same reason and handed to callers rather than re-derived: a
|
|
46
|
+
* deletion has to know which characters are markup and which construct owns
|
|
47
|
+
* them, and re-projecting to ask would parse the document twice per keypress.
|
|
48
|
+
*/
|
|
49
|
+
projection;
|
|
50
|
+
constructor(t, r, e) {
|
|
51
|
+
this.root = t, this.source = r, this.options = e, this.history = new y({ source: r, selection: null }, e.history), this.projection = d(r, { highlight: e.highlight }), this.caretStops = u(this.projection), this.render(null);
|
|
52
|
+
}
|
|
53
|
+
getSource() {
|
|
54
|
+
return this.source;
|
|
55
|
+
}
|
|
56
|
+
/** The projection the DOM currently shows, for callers that must read it. */
|
|
57
|
+
getProjection() {
|
|
58
|
+
return this.projection;
|
|
59
|
+
}
|
|
60
|
+
/** Where the caret may legally be, for callers that have to reason about it. */
|
|
61
|
+
getCaretMap() {
|
|
62
|
+
return this.caretStops;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The selection, snapped to positions that exist.
|
|
66
|
+
*
|
|
67
|
+
* SNAPPED RATHER THAN RETURNED RAW, because a click can land anywhere — the
|
|
68
|
+
* browser will happily put the caret at the edge of a zero-width marker, and
|
|
69
|
+
* every offset inside markup is now a place with no geometry. Normalising on
|
|
70
|
+
* the way IN means no caller downstream has to remember to.
|
|
71
|
+
*/
|
|
72
|
+
getSelection() {
|
|
73
|
+
const t = l(this.root);
|
|
74
|
+
return t ? {
|
|
75
|
+
anchor: n(this.caretStops, t.anchor),
|
|
76
|
+
head: n(this.caretStops, t.head)
|
|
77
|
+
} : null;
|
|
78
|
+
}
|
|
79
|
+
/* --- Editing ------------------------------------------------------------ */
|
|
80
|
+
/**
|
|
81
|
+
* Applies one splice and puts the caret where the inserted text ends.
|
|
82
|
+
*
|
|
83
|
+
* The caret is computed from the MODEL, never preserved from the DOM. That is
|
|
84
|
+
* the whole point of the design and also why it must be tested with a real
|
|
85
|
+
* caret in a real browser rather than asserted: a model-derived caret is
|
|
86
|
+
* exactly right or exactly wrong, with nothing in between.
|
|
87
|
+
*/
|
|
88
|
+
apply(t, r, e = "other") {
|
|
89
|
+
const o = Math.max(0, Math.min(t.start, this.source.length)), s = Math.max(o, Math.min(t.end, this.source.length));
|
|
90
|
+
this.source = this.source.slice(0, o) + t.text + this.source.slice(s);
|
|
91
|
+
const i = o + t.text.length, a = r ?? { anchor: i, head: i };
|
|
92
|
+
this.restoring || this.history.record({ source: this.source, selection: a }, e, i), this.render(a), this.options.onChange?.(this.source);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Replaces every occurrence of `from` with `to` — in the document AND in
|
|
96
|
+
* every undo and redo entry — without recording an edit.
|
|
97
|
+
*
|
|
98
|
+
* THIS IS THE UPLOAD SWAP (DX-3134), and it is deliberately not an edit.
|
|
99
|
+
* When an image finishes uploading, its object URL is replaced by the stored
|
|
100
|
+
* URL. Recorded as an ordinary edit, Ctrl+Z would hand the object URL back —
|
|
101
|
+
* and a document holding it is a document that cannot be saved, for an image
|
|
102
|
+
* that WAS saved. Rewriting the history too means no undo, redo or later
|
|
103
|
+
* edit can resurrect a URL that no longer means anything.
|
|
104
|
+
*
|
|
105
|
+
* The caret stays where it was in the text the user can see: it is mapped
|
|
106
|
+
* through the substitution rather than moved, and only written back if it was
|
|
107
|
+
* in this surface to begin with — an upload finishing must never pull focus
|
|
108
|
+
* out of whatever the user moved on to. `onChange` fires, because the value
|
|
109
|
+
* genuinely changed and the consumer is the one who saves it.
|
|
110
|
+
*
|
|
111
|
+
* WHILE COMPOSING, the swap is queued and applied at `compositionend` — see
|
|
112
|
+
* `pendingSubstitutions`. A caller that needs to know when it has landed
|
|
113
|
+
* watches for `from` to leave the source (`onChange` fires when it does).
|
|
114
|
+
*/
|
|
115
|
+
substitute(t, r) {
|
|
116
|
+
if (this.composing) {
|
|
117
|
+
this.pendingSubstitutions.push([t, r]);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this.history.substitute(t, r);
|
|
121
|
+
const e = b(this.source, t, r);
|
|
122
|
+
if (!e) return;
|
|
123
|
+
const o = this.focusedSelection();
|
|
124
|
+
this.source = e.source, this.render(o ? { anchor: e.map(o.anchor), head: e.map(o.head) } : null), this.options.onChange?.(this.source);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The selection, but only while this surface HAS FOCUS.
|
|
128
|
+
*
|
|
129
|
+
* DX-3134: a render that is not the user's own edit — an upload finishing, an
|
|
130
|
+
* image's state moving — writes the caret back only when the author is
|
|
131
|
+
* actually in this document. The document selection can still sit inside the
|
|
132
|
+
* surface after focus has gone to a button or another field, and writing a
|
|
133
|
+
* selection into an editing host is one of the things that pulls focus back
|
|
134
|
+
* into it: an upload landing would then yank the author out of whatever they
|
|
135
|
+
* moved on to.
|
|
136
|
+
*/
|
|
137
|
+
focusedSelection() {
|
|
138
|
+
return this.root.ownerDocument.activeElement === this.root ? this.getSelection() : null;
|
|
139
|
+
}
|
|
140
|
+
/** Whether any undo or redo entry still holds `text` — see `History.includes`. */
|
|
141
|
+
remembers(t) {
|
|
142
|
+
return this.history.includes(t);
|
|
143
|
+
}
|
|
144
|
+
/** Replaces the whole document, e.g. when the consumer's value prop changes. */
|
|
145
|
+
setSource(t) {
|
|
146
|
+
t !== this.source && (this.source = t, this.restoring || this.history.record({ source: t, selection: null }, "other", 0), this.render(null));
|
|
147
|
+
}
|
|
148
|
+
/* --- History ------------------------------------------------------------ */
|
|
149
|
+
get canUndo() {
|
|
150
|
+
return this.history.canUndo;
|
|
151
|
+
}
|
|
152
|
+
get canRedo() {
|
|
153
|
+
return this.history.canRedo;
|
|
154
|
+
}
|
|
155
|
+
undo() {
|
|
156
|
+
return this.restore(this.history.undo());
|
|
157
|
+
}
|
|
158
|
+
redo() {
|
|
159
|
+
return this.restore(this.history.redo());
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Ends the current undo group.
|
|
163
|
+
*
|
|
164
|
+
* Called when the user moves the caret deliberately, because an edit after a
|
|
165
|
+
* selection change is a different thought however soon it arrives — one of
|
|
166
|
+
* the three coalescing rules, and the one a timer alone cannot express.
|
|
167
|
+
*/
|
|
168
|
+
breakUndoGroup() {
|
|
169
|
+
this.history.break();
|
|
170
|
+
}
|
|
171
|
+
restore(t) {
|
|
172
|
+
if (!t) return !1;
|
|
173
|
+
this.restoring = !0;
|
|
174
|
+
try {
|
|
175
|
+
this.source = t.source, this.render(t.selection), this.options.onChange?.(this.source);
|
|
176
|
+
} finally {
|
|
177
|
+
this.restoring = !1;
|
|
178
|
+
}
|
|
179
|
+
return !0;
|
|
180
|
+
}
|
|
181
|
+
/* --- Rendering ---------------------------------------------------------- */
|
|
182
|
+
/**
|
|
183
|
+
* Re-projects and patches, then restores the caret.
|
|
184
|
+
*
|
|
185
|
+
* Refuses outright while composing. The deferral is recorded rather than
|
|
186
|
+
* dropped, so `compositionend` knows it owes a render — a skipped render that
|
|
187
|
+
* nobody remembers is a DOM that disagrees with the model forever.
|
|
188
|
+
*/
|
|
189
|
+
render(t, r = "after") {
|
|
190
|
+
if (this.composing) {
|
|
191
|
+
this.deferred = !0;
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const e = d(this.source, { highlight: this.options.highlight });
|
|
195
|
+
this.projection = e, this.caretStops = u(e), this.write(() => {
|
|
196
|
+
try {
|
|
197
|
+
p(this.root, e.children, {});
|
|
198
|
+
} catch (s) {
|
|
199
|
+
if (s instanceof f) {
|
|
200
|
+
this.deferred = !0, this.options.onDesync?.(s.message);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
throw s;
|
|
204
|
+
}
|
|
205
|
+
const o = t ? {
|
|
206
|
+
anchor: n(this.caretStops, t.anchor),
|
|
207
|
+
head: n(this.caretStops, t.head)
|
|
208
|
+
} : null;
|
|
209
|
+
o && h(this.root, o, r);
|
|
210
|
+
}), this.verifySelection();
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Puts the caret back on a legal position after the USER moved it.
|
|
214
|
+
*
|
|
215
|
+
* A click, a drag or a vertical arrow key can leave the browser's selection
|
|
216
|
+
* at the edge of a collapsed marker, which is a place with no geometry and no
|
|
217
|
+
* meaning. Snapping costs one write and no re-projection — re-rendering here
|
|
218
|
+
* would be wasted work AND a risk, since every patch is a chance to disturb a
|
|
219
|
+
* caret that was already where it belonged.
|
|
220
|
+
*
|
|
221
|
+
* Replaces `refreshActive`, which existed only to move the reveal.
|
|
222
|
+
*/
|
|
223
|
+
snapCaret() {
|
|
224
|
+
const t = l(this.root);
|
|
225
|
+
if (!t) return;
|
|
226
|
+
const r = {
|
|
227
|
+
anchor: n(this.caretStops, t.anchor),
|
|
228
|
+
head: n(this.caretStops, t.head)
|
|
229
|
+
};
|
|
230
|
+
r.anchor === t.anchor && r.head === t.head || this.write(() => h(this.root, r, "after"));
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Moves the caret one VISIBLE character, in the model, and writes the result.
|
|
234
|
+
*
|
|
235
|
+
* Returns false when there is no selection to move, so the caller can let the
|
|
236
|
+
* browser have the key rather than swallowing it.
|
|
237
|
+
*
|
|
238
|
+
* One press crosses a whole marker, however many characters it holds, because
|
|
239
|
+
* the positions inside it are not positions. That is the difference between
|
|
240
|
+
* this and the grapheme step it replaces: `stepOffset` counted source
|
|
241
|
+
* characters, and under a contract where markup is never shown, counting
|
|
242
|
+
* source characters makes the caret appear to stall.
|
|
243
|
+
*/
|
|
244
|
+
moveCaret(t, r) {
|
|
245
|
+
const e = this.getSelection();
|
|
246
|
+
if (!e) return !1;
|
|
247
|
+
const o = !r && e.anchor !== e.head ? t === 1 ? Math.max(e.anchor, e.head) : Math.min(e.anchor, e.head) : g(this.caretStops, e.head, t), s = r ? { anchor: e.anchor, head: o } : { anchor: o, head: o };
|
|
248
|
+
return this.write(() => h(this.root, s, t === 1 ? "after" : "before")), !0;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Moves the caret to the start or end of its current line, in the model,
|
|
252
|
+
* and writes the result. Home and End both have to be computed here rather
|
|
253
|
+
* than left to the browser — SG-799 — because a block's leading markup
|
|
254
|
+
* renders as a zero-size `inline-block` (`styles/markdown.css`), which
|
|
255
|
+
* Chromium treats as an atomic box for its own native line navigation, and
|
|
256
|
+
* a real Chromium probe caught End landing the browser's OWN selection
|
|
257
|
+
* inside that leading box instead of at the true end of the line.
|
|
258
|
+
*
|
|
259
|
+
* Returns false when there is no selection to move, matching `moveCaret`.
|
|
260
|
+
*/
|
|
261
|
+
moveToLineEdge(t, r) {
|
|
262
|
+
const e = this.getSelection();
|
|
263
|
+
if (!e) return !1;
|
|
264
|
+
const o = t === "start" ? m(this.caretStops, e.head) : S(this.caretStops, e.head), s = r ? { anchor: e.anchor, head: o } : { anchor: o, head: o };
|
|
265
|
+
return this.write(() => h(this.root, s, t === "start" ? "after" : "before")), !0;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Detects the third caret rule's failure: our own write left the browser's
|
|
269
|
+
* selection somewhere that is no longer a position in this document.
|
|
270
|
+
*
|
|
271
|
+
* Both mature codebases carry a detector for this because Chrome does it, and
|
|
272
|
+
* because the symptom — a caret that has silently moved to the top of the
|
|
273
|
+
* document — is indistinguishable from a bug in the edit itself.
|
|
274
|
+
*/
|
|
275
|
+
verifySelection() {
|
|
276
|
+
const t = this.root.ownerDocument.getSelection();
|
|
277
|
+
if (!t || t.rangeCount === 0) return;
|
|
278
|
+
const r = t.anchorNode;
|
|
279
|
+
!r || !this.root.contains(r) || r.nodeType === 3 && !c(r) && this.options.onDesync?.("the selection is anchored in a text node this surface did not build");
|
|
280
|
+
}
|
|
281
|
+
/* --- Composition -------------------------------------------------------- */
|
|
282
|
+
/**
|
|
283
|
+
* Binds the composition lifecycle. Returns the unbind function.
|
|
284
|
+
*
|
|
285
|
+
* `compositionstart` captures the node the browser will mutate — read from
|
|
286
|
+
* the live selection, because that is the only place the browser says which
|
|
287
|
+
* one it chose.
|
|
288
|
+
*/
|
|
289
|
+
bind() {
|
|
290
|
+
const t = () => {
|
|
291
|
+
const o = this.root.ownerDocument.getSelection()?.anchorNode ?? null;
|
|
292
|
+
this.composing = o && o.nodeType === 3 && this.root.contains(o) ? o : null;
|
|
293
|
+
}, r = () => {
|
|
294
|
+
const e = this.composing;
|
|
295
|
+
this.composing = null, e && this.reconcileComposed(e);
|
|
296
|
+
for (const [o, s] of this.pendingSubstitutions.splice(0)) this.substitute(o, s);
|
|
297
|
+
this.deferred && (this.deferred = !1, this.render(null));
|
|
298
|
+
};
|
|
299
|
+
return this.root.addEventListener("compositionstart", t), this.root.addEventListener("compositionend", r), this.observer = new MutationObserver((e) => this.onMutations(e)), this.observer.observe(this.root, { childList: !0, characterData: !0, subtree: !0 }), () => {
|
|
300
|
+
this.root.removeEventListener("compositionstart", t), this.root.removeEventListener("compositionend", r), this.observer?.disconnect(), this.observer = null;
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Reads a finished composition back into the model.
|
|
305
|
+
*
|
|
306
|
+
* A composition is confined to ONE text node inside one inline element, and
|
|
307
|
+
* that node carries the source range it came from — so reconciling is
|
|
308
|
+
* "replace source characters a..b with this node's current text". A handful
|
|
309
|
+
* of lines against a known range, rather than the 407-line document-wide
|
|
310
|
+
* DOM-to-markdown serialiser this design exists to avoid.
|
|
311
|
+
*/
|
|
312
|
+
reconcileComposed(t) {
|
|
313
|
+
const r = c(t);
|
|
314
|
+
if (!r) {
|
|
315
|
+
this.options.onDesync?.("composition landed in a text node with no source range"), this.render(null);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
const e = this.source.slice(r.start, r.end);
|
|
319
|
+
t.data !== e && this.apply(
|
|
320
|
+
{ start: r.start, end: r.end, text: t.data },
|
|
321
|
+
{ anchor: r.start + t.data.length, head: r.start + t.data.length },
|
|
322
|
+
"compose"
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
/* --- The repair path ---------------------------------------------------- */
|
|
326
|
+
/**
|
|
327
|
+
* Everything `preventDefault` could not cancel arrives here.
|
|
328
|
+
*
|
|
329
|
+
* This path is not a safety net, it is a REQUIREMENT: Chrome on Android
|
|
330
|
+
* reports `cancelable: true` on `deleteContentBackward` and deletes anyway,
|
|
331
|
+
* `insertCompositionText` is non-cancelable by spec, and iOS dictation fires
|
|
332
|
+
* no composition events at all. An editor with no observation path is simply
|
|
333
|
+
* broken on those inputs, and cannot be told that it is.
|
|
334
|
+
*
|
|
335
|
+
* The repair is deliberately narrow: a character-data change to a stamped
|
|
336
|
+
* node is read back into its range. Anything structural means the browser
|
|
337
|
+
* built nodes we cannot map, and the honest response is to re-project from
|
|
338
|
+
* the model we still trust, not to guess at what it did.
|
|
339
|
+
*/
|
|
340
|
+
onMutations(t) {
|
|
341
|
+
if (this.writing > 0 || this.composing) return;
|
|
342
|
+
let r = !1;
|
|
343
|
+
for (const e of t) {
|
|
344
|
+
if (e.type !== "characterData") {
|
|
345
|
+
this.render(this.getSelection());
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
const o = e.target, s = c(o);
|
|
349
|
+
if (!s) {
|
|
350
|
+
this.render(this.getSelection());
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const i = this.source.slice(s.start, s.end);
|
|
354
|
+
if (i !== o.data) {
|
|
355
|
+
this.apply({ start: s.start, end: s.end, text: o.data }, void 0, o.data.length >= i.length ? "type" : "delete"), r = !0;
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/** Runs `fn` with our own mutations invisible to the observer. */
|
|
361
|
+
write(t) {
|
|
362
|
+
this.writing++;
|
|
363
|
+
try {
|
|
364
|
+
t();
|
|
365
|
+
} finally {
|
|
366
|
+
this.observer?.takeRecords(), this.writing--;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
export {
|
|
371
|
+
E as MarkdownSurface
|
|
372
|
+
};
|
|
373
|
+
//# sourceMappingURL=surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface.js","sources":["../../../src/lib/markdown/surface.ts"],"sourcesContent":["/* ============================================================================\n THE SURFACE — the markdown string, the DOM that shows it, and the caret that\n has to survive between them.\n\n ONE PIECE OF STATE: the source string. The DOM is a projection of it, the\n caret is a pair of offsets into it, and every edit is a splice. There is no\n document model, no transaction log, and nothing to serialise — which is what\n makes \"open a file, touch nothing, the bytes do not move\" true by\n construction rather than by test.\n\n THE COMPOSITION CARVE-OUT IS THE LOAD-BEARING PART, and it is built in from\n the first commit because retrofitting it is what killed Slate's. While the\n browser is composing — an IME, a long-press accent, dictation, an Android\n keyboard, which is almost always composing — this surface:\n\n - does not re-project, because re-rendering during composition CANCELS the\n IME, which is Chrome's own stated reason for building EditContext;\n - hands the reconciler the composing text node as PROTECTED, so a patch\n that would disturb it throws instead of corrupting it;\n - reconciles afterwards from the DOM the browser produced, by reading the\n composing node's new text back into the range it came from.\n\n THE THREE CARET RULES, verbatim from ProseMirror and CodeMirror: do not write\n the selection when it already matches (./position.ts); disconnect the\n observer around our own writes (below); and keep a detector for \"my own write\n corrupted the browser's selection state\" (also below).\n ========================================================================= */\n\nimport { patch, rangeOf, CompositionConflictError } from \"./reconcile\";\nimport { caretMap, lineEndStop, lineStartStop, nearestStop, stepStop, type CaretMap } from \"./caret-map\";\nimport { project, type Projection, type ProjectOptions } from \"./project\";\nimport { readSelection, writeSelection, type Association, type SourceSelection } from \"./position\";\nimport { History, type EditKind, type HistoryOptions } from \"./history\";\nimport { substituteAll } from \"./images\";\n\nexport interface SurfaceOptions {\n /** Called after every committed change, with the new source. */\n onChange?: (source: string) => void;\n /** Undo tuning. The defaults are the constants the mature editors landed on. */\n history?: HistoryOptions;\n /**\n * Highlights a fenced block. Injected, never imported: reaching for the\n * grammar registry from the pure layer would make a projection depend on\n * which languages happened to be registered when it ran. The component\n * passes the real tokenizer; a test can pass none and get plain text.\n */\n highlight?: ProjectOptions[\"highlight\"];\n /**\n * Called when the DOM stopped agreeing with the model and could not be\n * repaired from it. Loud by default: this is the one failure that silently\n * eats the user's text if it is swallowed.\n */\n onDesync?: (detail: string) => void;\n}\n\nexport interface Splice {\n start: number;\n end: number;\n text: string;\n}\n\nexport class MarkdownSurface {\n readonly root: HTMLElement;\n private source: string;\n private readonly options: SurfaceOptions;\n\n /**\n * Upload swaps that arrived mid-composition, applied at `compositionend`.\n *\n * DX-3134: the composing text node carries the source range it came from,\n * and `reconcileComposed` writes the composed text back into exactly that\n * range. A swap applied mid-composition changes the length of the source\n * before the node — the range would then point at the wrong characters, and\n * the composed text would land inside a URL. So the swap waits, and runs\n * right after the composition has been read back.\n */\n private pendingSubstitutions: Array<[from: string, to: string]> = [];\n\n /** The text node the browser is composing into, if any. */\n private composing: Text | null = null;\n /** A projection that arrived while composing, applied at `compositionend`. */\n private deferred = false;\n\n private observer: MutationObserver | null = null;\n /** Depth of \"this mutation is ours, ignore it\". */\n private writing = 0;\n\n private readonly history: History;\n /** True while applying an undo, so the undo is not itself recorded. */\n private restoring = false;\n\n /**\n * Where the caret is allowed to be, rebuilt with every projection.\n *\n * Held rather than recomputed per keystroke because every deletion and every\n * arrow key needs it, and it is a pure function of the projection that was\n * just built anyway. It is never mutated — a new projection replaces it\n * whole, which is the same \"nothing is kept in step so nothing can drift\"\n * argument the projection itself rests on.\n */\n private caretStops: CaretMap;\n\n /**\n * The projection those stops were built from.\n *\n * Held for the same reason and handed to callers rather than re-derived: a\n * deletion has to know which characters are markup and which construct owns\n * them, and re-projecting to ask would parse the document twice per keypress.\n */\n private projection: Projection;\n\n constructor(root: HTMLElement, source: string, options: SurfaceOptions) {\n this.root = root;\n this.source = source;\n this.options = options;\n this.history = new History({ source, selection: null }, options.history);\n this.projection = project(source, { highlight: options.highlight });\n this.caretStops = caretMap(this.projection);\n this.render(null);\n }\n\n getSource(): string {\n return this.source;\n }\n\n /** The projection the DOM currently shows, for callers that must read it. */\n getProjection(): Projection {\n return this.projection;\n }\n\n /** Where the caret may legally be, for callers that have to reason about it. */\n getCaretMap(): CaretMap {\n return this.caretStops;\n }\n\n /**\n * The selection, snapped to positions that exist.\n *\n * SNAPPED RATHER THAN RETURNED RAW, because a click can land anywhere — the\n * browser will happily put the caret at the edge of a zero-width marker, and\n * every offset inside markup is now a place with no geometry. Normalising on\n * the way IN means no caller downstream has to remember to.\n */\n getSelection(): SourceSelection | null {\n const raw = readSelection(this.root);\n if (!raw) return null;\n return {\n anchor: nearestStop(this.caretStops, raw.anchor),\n head: nearestStop(this.caretStops, raw.head),\n };\n }\n\n /* --- Editing ------------------------------------------------------------ */\n\n /**\n * Applies one splice and puts the caret where the inserted text ends.\n *\n * The caret is computed from the MODEL, never preserved from the DOM. That is\n * the whole point of the design and also why it must be tested with a real\n * caret in a real browser rather than asserted: a model-derived caret is\n * exactly right or exactly wrong, with nothing in between.\n */\n apply(splice: Splice, select?: SourceSelection, kind: EditKind = \"other\"): void {\n const start = Math.max(0, Math.min(splice.start, this.source.length));\n const end = Math.max(start, Math.min(splice.end, this.source.length));\n this.source = this.source.slice(0, start) + splice.text + this.source.slice(end);\n const at = start + splice.text.length;\n const caret = select ?? { anchor: at, head: at };\n if (!this.restoring) this.history.record({ source: this.source, selection: caret }, kind, at);\n this.render(caret);\n this.options.onChange?.(this.source);\n }\n\n /**\n * Replaces every occurrence of `from` with `to` — in the document AND in\n * every undo and redo entry — without recording an edit.\n *\n * THIS IS THE UPLOAD SWAP (DX-3134), and it is deliberately not an edit.\n * When an image finishes uploading, its object URL is replaced by the stored\n * URL. Recorded as an ordinary edit, Ctrl+Z would hand the object URL back —\n * and a document holding it is a document that cannot be saved, for an image\n * that WAS saved. Rewriting the history too means no undo, redo or later\n * edit can resurrect a URL that no longer means anything.\n *\n * The caret stays where it was in the text the user can see: it is mapped\n * through the substitution rather than moved, and only written back if it was\n * in this surface to begin with — an upload finishing must never pull focus\n * out of whatever the user moved on to. `onChange` fires, because the value\n * genuinely changed and the consumer is the one who saves it.\n *\n * WHILE COMPOSING, the swap is queued and applied at `compositionend` — see\n * `pendingSubstitutions`. A caller that needs to know when it has landed\n * watches for `from` to leave the source (`onChange` fires when it does).\n */\n substitute(from: string, to: string): void {\n if (this.composing) {\n this.pendingSubstitutions.push([from, to]);\n return;\n }\n this.history.substitute(from, to);\n const swap = substituteAll(this.source, from, to);\n if (!swap) return;\n const before = this.focusedSelection();\n this.source = swap.source;\n this.render(before ? { anchor: swap.map(before.anchor), head: swap.map(before.head) } : null);\n this.options.onChange?.(this.source);\n }\n\n /**\n * The selection, but only while this surface HAS FOCUS.\n *\n * DX-3134: a render that is not the user's own edit — an upload finishing, an\n * image's state moving — writes the caret back only when the author is\n * actually in this document. The document selection can still sit inside the\n * surface after focus has gone to a button or another field, and writing a\n * selection into an editing host is one of the things that pulls focus back\n * into it: an upload landing would then yank the author out of whatever they\n * moved on to.\n */\n private focusedSelection(): SourceSelection | null {\n return this.root.ownerDocument.activeElement === this.root ? this.getSelection() : null;\n }\n\n /** Whether any undo or redo entry still holds `text` — see `History.includes`. */\n remembers(text: string): boolean {\n return this.history.includes(text);\n }\n\n /** Replaces the whole document, e.g. when the consumer's value prop changes. */\n setSource(source: string): void {\n if (source === this.source) return;\n this.source = source;\n if (!this.restoring) this.history.record({ source, selection: null }, \"other\", 0);\n this.render(null);\n }\n\n /* --- History ------------------------------------------------------------ */\n\n get canUndo(): boolean {\n return this.history.canUndo;\n }\n\n get canRedo(): boolean {\n return this.history.canRedo;\n }\n\n undo(): boolean {\n return this.restore(this.history.undo());\n }\n\n redo(): boolean {\n return this.restore(this.history.redo());\n }\n\n /**\n * Ends the current undo group.\n *\n * Called when the user moves the caret deliberately, because an edit after a\n * selection change is a different thought however soon it arrives — one of\n * the three coalescing rules, and the one a timer alone cannot express.\n */\n breakUndoGroup(): void {\n this.history.break();\n }\n\n private restore(entry: { source: string; selection: SourceSelection | null } | null): boolean {\n if (!entry) return false;\n this.restoring = true;\n try {\n this.source = entry.source;\n this.render(entry.selection);\n this.options.onChange?.(this.source);\n } finally {\n this.restoring = false;\n }\n return true;\n }\n\n /* --- Rendering ---------------------------------------------------------- */\n\n /**\n * Re-projects and patches, then restores the caret.\n *\n * Refuses outright while composing. The deferral is recorded rather than\n * dropped, so `compositionend` knows it owes a render — a skipped render that\n * nobody remembers is a DOM that disagrees with the model forever.\n */\n private render(caret: SourceSelection | null, association: Association = \"after\"): void {\n if (this.composing) {\n this.deferred = true;\n return;\n }\n const projection = project(this.source, { highlight: this.options.highlight });\n this.projection = projection;\n this.caretStops = caretMap(projection);\n this.write(() => {\n try {\n patch(this.root, projection.children, {});\n } catch (error) {\n if (error instanceof CompositionConflictError) {\n /* Reached only if `this.composing` was cleared while a patch was in\n flight. Recorded, never swallowed. */\n this.deferred = true;\n this.options.onDesync?.(error.message);\n return;\n }\n throw error;\n }\n /* SNAPPED AT THE LAST MOMENT, because the caret a command asked for was\n computed against the source BEFORE this projection existed — an edit\n that removes a marker can leave a perfectly reasonable offset sitting\n inside one. There is no reveal step to run first any more: markup has\n no geometry at any time, so the only way a written selection lands\n where it was asked to is for it to be a stop. */\n const snapped = caret\n ? {\n anchor: nearestStop(this.caretStops, caret.anchor),\n head: nearestStop(this.caretStops, caret.head),\n }\n : null;\n if (snapped) writeSelection(this.root, snapped, association);\n });\n this.verifySelection();\n }\n\n /**\n * Puts the caret back on a legal position after the USER moved it.\n *\n * A click, a drag or a vertical arrow key can leave the browser's selection\n * at the edge of a collapsed marker, which is a place with no geometry and no\n * meaning. Snapping costs one write and no re-projection — re-rendering here\n * would be wasted work AND a risk, since every patch is a chance to disturb a\n * caret that was already where it belonged.\n *\n * Replaces `refreshActive`, which existed only to move the reveal.\n */\n snapCaret(): void {\n const raw = readSelection(this.root);\n if (!raw) return;\n const next: SourceSelection = {\n anchor: nearestStop(this.caretStops, raw.anchor),\n head: nearestStop(this.caretStops, raw.head),\n };\n if (next.anchor === raw.anchor && next.head === raw.head) return;\n this.write(() => writeSelection(this.root, next, \"after\"));\n }\n\n /**\n * Moves the caret one VISIBLE character, in the model, and writes the result.\n *\n * Returns false when there is no selection to move, so the caller can let the\n * browser have the key rather than swallowing it.\n *\n * One press crosses a whole marker, however many characters it holds, because\n * the positions inside it are not positions. That is the difference between\n * this and the grapheme step it replaces: `stepOffset` counted source\n * characters, and under a contract where markup is never shown, counting\n * source characters makes the caret appear to stall.\n */\n moveCaret(direction: 1 | -1, extend: boolean): boolean {\n const current = this.getSelection();\n if (!current) return false;\n /* A non-empty selection collapses to its near edge rather than stepping —\n every text field behaves this way and it is the one case where \"move by\n one\" is not what the user means. */\n const from =\n !extend && current.anchor !== current.head\n ? direction === 1\n ? Math.max(current.anchor, current.head)\n : Math.min(current.anchor, current.head)\n : stepStop(this.caretStops, current.head, direction);\n const next: SourceSelection = extend ? { anchor: current.anchor, head: from } : { anchor: from, head: from };\n this.write(() => writeSelection(this.root, next, direction === 1 ? \"after\" : \"before\"));\n return true;\n }\n\n /**\n * Moves the caret to the start or end of its current line, in the model,\n * and writes the result. Home and End both have to be computed here rather\n * than left to the browser — SG-799 — because a block's leading markup\n * renders as a zero-size `inline-block` (`styles/markdown.css`), which\n * Chromium treats as an atomic box for its own native line navigation, and\n * a real Chromium probe caught End landing the browser's OWN selection\n * inside that leading box instead of at the true end of the line.\n *\n * Returns false when there is no selection to move, matching `moveCaret`.\n */\n moveToLineEdge(edge: \"start\" | \"end\", extend: boolean): boolean {\n const current = this.getSelection();\n if (!current) return false;\n const from = edge === \"start\" ? lineStartStop(this.caretStops, current.head) : lineEndStop(this.caretStops, current.head);\n const next: SourceSelection = extend ? { anchor: current.anchor, head: from } : { anchor: from, head: from };\n this.write(() => writeSelection(this.root, next, edge === \"start\" ? \"after\" : \"before\"));\n return true;\n }\n\n /**\n * Detects the third caret rule's failure: our own write left the browser's\n * selection somewhere that is no longer a position in this document.\n *\n * Both mature codebases carry a detector for this because Chrome does it, and\n * because the symptom — a caret that has silently moved to the top of the\n * document — is indistinguishable from a bug in the edit itself.\n */\n private verifySelection(): void {\n const selection = this.root.ownerDocument.getSelection();\n if (!selection || selection.rangeCount === 0) return;\n const node = selection.anchorNode;\n if (!node || !this.root.contains(node)) return;\n if (node.nodeType === 3 && !rangeOf(node)) {\n // I18N-ALLOW: English developer diagnostic passed to onDesync, not user text\n this.options.onDesync?.(\"the selection is anchored in a text node this surface did not build\");\n }\n }\n\n /* --- Composition -------------------------------------------------------- */\n\n /**\n * Binds the composition lifecycle. Returns the unbind function.\n *\n * `compositionstart` captures the node the browser will mutate — read from\n * the live selection, because that is the only place the browser says which\n * one it chose.\n */\n bind(): () => void {\n const start = () => {\n const selection = this.root.ownerDocument.getSelection();\n const node = selection?.anchorNode ?? null;\n this.composing = node && node.nodeType === 3 && this.root.contains(node) ? (node as Text) : null;\n };\n\n const end = () => {\n const node = this.composing;\n this.composing = null;\n if (node) this.reconcileComposed(node);\n /* AFTER the composition is read back into the range it came from — the\n order is the whole point of queueing them (DX-3134). */\n for (const [from, to] of this.pendingSubstitutions.splice(0)) this.substitute(from, to);\n if (this.deferred) {\n this.deferred = false;\n this.render(null);\n }\n };\n\n this.root.addEventListener(\"compositionstart\", start);\n this.root.addEventListener(\"compositionend\", end);\n this.observer = new MutationObserver((records) => this.onMutations(records));\n this.observer.observe(this.root, { childList: true, characterData: true, subtree: true });\n\n return () => {\n this.root.removeEventListener(\"compositionstart\", start);\n this.root.removeEventListener(\"compositionend\", end);\n this.observer?.disconnect();\n this.observer = null;\n };\n }\n\n /**\n * Reads a finished composition back into the model.\n *\n * A composition is confined to ONE text node inside one inline element, and\n * that node carries the source range it came from — so reconciling is\n * \"replace source characters a..b with this node's current text\". A handful\n * of lines against a known range, rather than the 407-line document-wide\n * DOM-to-markdown serialiser this design exists to avoid.\n */\n private reconcileComposed(node: Text): void {\n const range = rangeOf(node);\n if (!range) {\n // I18N-ALLOW: English developer diagnostic passed to onDesync, not user text\n this.options.onDesync?.(\"composition landed in a text node with no source range\");\n this.render(null);\n return;\n }\n const was = this.source.slice(range.start, range.end);\n if (node.data === was) return;\n this.apply(\n { start: range.start, end: range.end, text: node.data },\n { anchor: range.start + node.data.length, head: range.start + node.data.length },\n \"compose\",\n );\n }\n\n /* --- The repair path ---------------------------------------------------- */\n\n /**\n * Everything `preventDefault` could not cancel arrives here.\n *\n * This path is not a safety net, it is a REQUIREMENT: Chrome on Android\n * reports `cancelable: true` on `deleteContentBackward` and deletes anyway,\n * `insertCompositionText` is non-cancelable by spec, and iOS dictation fires\n * no composition events at all. An editor with no observation path is simply\n * broken on those inputs, and cannot be told that it is.\n *\n * The repair is deliberately narrow: a character-data change to a stamped\n * node is read back into its range. Anything structural means the browser\n * built nodes we cannot map, and the honest response is to re-project from\n * the model we still trust, not to guess at what it did.\n */\n private onMutations(records: MutationRecord[]): void {\n if (this.writing > 0 || this.composing) return;\n\n let repaired = false;\n for (const record of records) {\n if (record.type !== \"characterData\") {\n this.render(this.getSelection());\n return;\n }\n const node = record.target as Text;\n const range = rangeOf(node);\n if (!range) {\n this.render(this.getSelection());\n return;\n }\n const was = this.source.slice(range.start, range.end);\n if (was === node.data) continue;\n /* Classified so undo still coalesces on the repair path. On Android that\n path is not an edge case, it is the ONLY path — recording every\n observed change as \"other\" would mean one undo entry per character,\n which is the most common complaint about hand-rolled editors. */\n this.apply({ start: range.start, end: range.end, text: node.data }, undefined, node.data.length >= was.length ? \"type\" : \"delete\");\n repaired = true;\n break;\n }\n if (!repaired) return;\n }\n\n /** Runs `fn` with our own mutations invisible to the observer. */\n private write(fn: () => void): void {\n this.writing++;\n try {\n fn();\n } finally {\n /* The records for our own writes are already queued; taking them here is\n what actually discards them. Clearing the flag without this leaves them\n to arrive on the next microtask and be treated as the user's. */\n this.observer?.takeRecords();\n this.writing--;\n }\n }\n}\n"],"names":["MarkdownSurface","root","source","options","History","project","caretMap","raw","readSelection","nearestStop","splice","select","kind","start","end","at","caret","from","to","swap","substituteAll","before","text","entry","association","projection","patch","error","CompositionConflictError","snapped","writeSelection","next","direction","extend","current","stepStop","edge","lineStartStop","lineEndStop","selection","node","rangeOf","records","range","was","repaired","record","fn"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useSyncExternalStore as r } from "react";
|
|
2
|
+
import { useMediaQuery as n } from "./use-media-query.js";
|
|
3
|
+
function d() {
|
|
4
|
+
const t = getComputedStyle(document.documentElement).getPropertyValue("--motion-scale").trim(), e = Number.parseFloat(t);
|
|
5
|
+
return Number.isFinite(e) ? e < 1 : window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? !1;
|
|
6
|
+
}
|
|
7
|
+
const o = "(prefers-reduced-motion: reduce)";
|
|
8
|
+
function u(t) {
|
|
9
|
+
const e = new MutationObserver(t);
|
|
10
|
+
return e.observe(document.documentElement, { attributes: !0, attributeFilter: ["data-motion"] }), () => e.disconnect();
|
|
11
|
+
}
|
|
12
|
+
const c = () => document.documentElement.getAttribute("data-motion");
|
|
13
|
+
function m() {
|
|
14
|
+
const t = n(o), e = r(u, c, () => null);
|
|
15
|
+
return e === "reduced" ? !0 : e === "full" ? !1 : t;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
o as OS_REDUCE,
|
|
19
|
+
d as reducedMotion,
|
|
20
|
+
m as useReducedMotion
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion.js","sources":["../../src/lib/motion.ts"],"sourcesContent":["import { useSyncExternalStore } from \"react\";\nimport { useMediaQuery } from \"./use-media-query\";\n\n/**\n * The one reduced-motion answer, read from `--motion-scale`.\n *\n * WHY THE TOKEN AND NOT `matchMedia` DIRECTLY. `--motion-scale` is the single\n * place where the OS media query and the app-level `data-motion` override are\n * reconciled (see `styles/motion.css`). Reading the media query alone would\n * ignore the in-app preference control, so a user who set \"reduced\" in the app\n * on a machine with no OS setting would get full-speed motion — the exact case\n * that control exists for. It is also why a raw `motion-reduce:` utility is the\n * wrong tool for anything this system builds (see the note on `Choice`'s\n * thumb): that variant reads the OS query alone and fires even for someone who\n * has explicitly chosen `data-motion=\"full\"`.\n *\n * ONLY THE COMPARISON IS EVER USED, never the value. Multiplying a SPEED by the\n * scale would be backwards — a slower auto-scroll ramp holds the user at the\n * edge longer and produces MORE motion overall — and a scroll has no \"half\"\n * anyway: it is smooth or it is a jump.\n *\n * ITS OWN MODULE because two unrelated layers need it. The drag engine's edge\n * auto-scroll had the only copy, and the tab strip's reveal-the-active-tab\n * scroll needs exactly the same question answered exactly the same way. A\n * second copy is a second place for the token name to go stale.\n */\nexport function reducedMotion(): boolean {\n const raw = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--motion-scale\")\n .trim();\n const scale = Number.parseFloat(raw);\n if (Number.isFinite(scale)) return scale < 1;\n /* The token is missing — the stylesheet is not loaded. Fall back to the OS\n query so the preference is still honoured rather than silently ignored. */\n return window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches ?? false;\n}\n\n/* DX-4504: the playground showed a static outline to someone whose Appearance menu read \"Reduce motion: off\",\n because the preference was `system` and Windows had \"Animation effects\" switched off. Anything that tells a\n person what motion they are getting must say what they ACTUALLY get, so it reads the same two inputs\n `styles/motion.css` reconciles: the app's `data-motion` override, then the OS preference. Not `reducedMotion()`\n above: that reads `--motion-scale`, which is also 0 for the single frame a theme change suspends motion, and a\n label must not flicker to \"reduced\" on every theme switch. */\n// I18N-ALLOW: CSS media query string\nexport const OS_REDUCE = \"(prefers-reduced-motion: reduce)\";\n\nfunction subscribePreference(onChange: () => void): () => void {\n const observer = new MutationObserver(onChange);\n observer.observe(document.documentElement, { attributes: true, attributeFilter: [\"data-motion\"] });\n return () => observer.disconnect();\n}\n\nconst readPreference = () => document.documentElement.getAttribute(\"data-motion\");\n\n/**\n * The effective reduced-motion state, live: it re-renders when the OS preference changes and when any\n * `useMotionPreference` anywhere in the page writes a new `data-motion`.\n */\nexport function useReducedMotion(): boolean {\n const osReduces = useMediaQuery(OS_REDUCE);\n const preference = useSyncExternalStore(subscribePreference, readPreference, () => null);\n if (preference === \"reduced\") return true;\n if (preference === \"full\") return false;\n return osReduces;\n}\n"],"names":["reducedMotion","raw","scale","OS_REDUCE","subscribePreference","onChange","observer","readPreference","useReducedMotion","osReduces","useMediaQuery","preference","useSyncExternalStore"],"mappings":";;AA0BO,SAASA,IAAyB;AACvC,QAAMC,IAAM,iBAAiB,SAAS,eAAe,EAClD,iBAAiB,gBAAgB,EACjC,KAAA,GACGC,IAAQ,OAAO,WAAWD,CAAG;AACnC,SAAI,OAAO,SAASC,CAAK,IAAUA,IAAQ,IAGpC,OAAO,aAAa,kCAAkC,EAAE,WAAW;AAC5E;AASO,MAAMC,IAAY;AAEzB,SAASC,EAAoBC,GAAkC;AAC7D,QAAMC,IAAW,IAAI,iBAAiBD,CAAQ;AAC9C,SAAAC,EAAS,QAAQ,SAAS,iBAAiB,EAAE,YAAY,IAAM,iBAAiB,CAAC,aAAa,GAAG,GAC1F,MAAMA,EAAS,WAAA;AACxB;AAEA,MAAMC,IAAiB,MAAM,SAAS,gBAAgB,aAAa,aAAa;AAMzE,SAASC,IAA4B;AAC1C,QAAMC,IAAYC,EAAcP,CAAS,GACnCQ,IAAaC,EAAqBR,GAAqBG,GAAgB,MAAM,IAAI;AACvF,SAAII,MAAe,YAAkB,KACjCA,MAAe,SAAe,KAC3BF;AACT;"}
|
package/dist/lib/pad.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pad.js","sources":["../../src/lib/pad.ts"],"sourcesContent":["/** Zero-pad a non-negative integer to `width` digits — `pad(9)` → `\"09\"`,\n * `pad(7, 3)` → `\"007\"`. Internal only: shared by the time and value\n * formatters that print fixed-width calendar/clock fields, not part of the\n * public package surface (DX-3254 — this one-liner used to be redefined\n * independently in four places). */\nexport function pad(n: number, width = 2): string {\n return String(n).padStart(width, \"0\");\n}\n"],"names":["pad","n","width"],"mappings":"AAKO,SAASA,EAAIC,GAAWC,IAAQ,GAAW;AAChD,SAAO,OAAOD,CAAC,EAAE,SAASC,GAAO,GAAG;AACtC;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function i(t) {
|
|
2
|
+
return t ? t.shown ? "ready" : t.status === "ready" ? "waiting" : t.status : "unheld";
|
|
3
|
+
}
|
|
4
|
+
function o(t, r) {
|
|
5
|
+
return t > 0 ? t : r > 0 ? 1 : 0;
|
|
6
|
+
}
|
|
7
|
+
function e(t, r, n, u) {
|
|
8
|
+
return Math.min(r, n - t * r) * u;
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
o as blockCountFor,
|
|
12
|
+
i as blockStatus,
|
|
13
|
+
e as placeholderHeight
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sources":["../../../src/lib/paged-window/layout.ts"],"sourcesContent":["import type { PageSnapshot } from \"./store\";\n\n/**\n * What a page's block is showing. One name for every case, so the list renders\n * ONE kind of block and only this changes:\n * ready the page's cards are shown\n * loading resident, its request is in flight\n * error resident, its request failed\n * waiting resident and ready, but past a hole in the loaded run — not shown until\n * the page that closes the hole arrives (see the store header)\n * unheld outside the window (its rows may be kept, not drawn): empty space of the right height\n */\nexport type BlockStatus = \"ready\" | \"loading\" | \"error\" | \"waiting\" | \"unheld\";\n\nexport function blockStatus<T>(page: PageSnapshot<T> | undefined): BlockStatus {\n if (!page) return \"unheld\";\n if (page.shown) return \"ready\";\n if (page.status === \"ready\") return \"waiting\";\n return page.status;\n}\n\n/**\n * How many page blocks to render. One per page of the list; before the first\n * response the length is unknown but page 0 is being asked for, and one block\n * stands in for it, so a new query does not flash an empty list.\n */\nexport function blockCountFor(pageCount: number, drawnPageCount: number): number {\n if (pageCount > 0) return pageCount;\n return drawnPageCount > 0 ? 1 : 0;\n}\n\n/** The height of a page's placeholder: the items it holds (the last page is short) times one item's height. */\nexport function placeholderHeight(page: number, pageSize: number, total: number, pitch: number): number {\n return Math.min(pageSize, total - page * pageSize) * pitch;\n}\n"],"names":["blockStatus","page","blockCountFor","pageCount","drawnPageCount","placeholderHeight","pageSize","total","pitch"],"mappings":"AAcO,SAASA,EAAeC,GAAgD;AAC7E,SAAKA,IACDA,EAAK,QAAc,UACnBA,EAAK,WAAW,UAAgB,YAC7BA,EAAK,SAHM;AAIpB;AAOO,SAASC,EAAcC,GAAmBC,GAAgC;AAC/E,SAAID,IAAY,IAAUA,IACnBC,IAAiB,IAAI,IAAI;AAClC;AAGO,SAASC,EAAkBJ,GAAcK,GAAkBC,GAAeC,GAAuB;AACtG,SAAO,KAAK,IAAIF,GAAUC,IAAQN,IAAOK,CAAQ,IAAIE;AACvD;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useContext as o, useLayoutEffect as u, createContext as i } from "react";
|
|
3
|
+
const e = i(null);
|
|
4
|
+
function c({ value: t, children: r }) {
|
|
5
|
+
return /* @__PURE__ */ n(e.Provider, { value: t, children: r });
|
|
6
|
+
}
|
|
7
|
+
function p() {
|
|
8
|
+
return o(e);
|
|
9
|
+
}
|
|
10
|
+
function x(t, r) {
|
|
11
|
+
u(() => {
|
|
12
|
+
if (!(!t || !r))
|
|
13
|
+
return t.reportBusy(1), () => t.reportBusy(-1);
|
|
14
|
+
}, [t, r]);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
c as ListOwnerProvider,
|
|
18
|
+
p as useListOwner,
|
|
19
|
+
x as useReportBusy
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=list-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-owner.js","sources":["../../../src/lib/paged-window/list-owner.tsx"],"sourcesContent":["import { createContext, useContext, useLayoutEffect, type ReactNode } from \"react\";\n\n/* DX-5084: WHO OWNS THE `role=\"list\"` A PAGED WINDOW SITS IN.\n\n A board lane puts a `role=\"list\"` around its cards, and a `PagedWindowList` renders\n inside it. A list may own only listitems (axe `aria-required-children`), so two things\n the window draws are invalid there:\n - its root box carrying `aria-busy` (a global ARIA attribute makes a role-less box a\n non-generic, non-listitem child), and\n - a page's `role=\"alert\"` retry row.\n The lane provides this context. The window then reports \"I am loading\" to the lane,\n which puts `aria-busy` on the list element itself (valid there, and the element an\n assistive technology reads as the busy region), and wraps the retry row in a\n `role=\"listitem\"`. Outside a lane there is no owner: `aria-busy` stays on the window's\n own root and the retry row stands alone. */\nexport interface ListOwner {\n /** Called with +1 when a window under this list starts loading and -1 when it stops. */\n reportBusy: (delta: 1 | -1) => void;\n}\n\nconst ListOwnerContext = createContext<ListOwner | null>(null);\n\nexport function ListOwnerProvider({ value, children }: { value: ListOwner; children: ReactNode }) {\n return <ListOwnerContext.Provider value={value}>{children}</ListOwnerContext.Provider>;\n}\n\nexport function useListOwner(): ListOwner | null {\n return useContext(ListOwnerContext);\n}\n\n/** Tell the enclosing list (if any) whether this window is loading. */\nexport function useReportBusy(owner: ListOwner | null, busy: boolean): void {\n /* A layout effect: the lane's `aria-busy` must land in the SAME commit as the loading\n state it reports, because capture tools poll `[aria-busy=\"true\"]` and a passive\n effect would leave a painted frame of loading content that reads as idle. */\n useLayoutEffect(() => {\n if (!owner || !busy) return;\n owner.reportBusy(1);\n return () => owner.reportBusy(-1);\n }, [owner, busy]);\n}\n"],"names":["ListOwnerContext","createContext","ListOwnerProvider","value","children","jsx","useListOwner","useContext","useReportBusy","owner","busy","useLayoutEffect"],"mappings":";;AAoBA,MAAMA,IAAmBC,EAAgC,IAAI;AAEtD,SAASC,EAAkB,EAAE,OAAAC,GAAO,UAAAC,KAAuD;AAChG,SAAO,gBAAAC,EAACL,EAAiB,UAAjB,EAA0B,OAAAG,GAAe,UAAAC,EAAA,CAAS;AAC5D;AAEO,SAASE,IAAiC;AAC/C,SAAOC,EAAWP,CAAgB;AACpC;AAGO,SAASQ,EAAcC,GAAyBC,GAAqB;AAI1E,EAAAC,EAAgB,MAAM;AACpB,QAAI,GAACF,KAAS,CAACC;AACf,aAAAD,EAAM,WAAW,CAAC,GACX,MAAMA,EAAM,WAAW,EAAE;AAAA,EAClC,GAAG,CAACA,GAAOC,CAAI,CAAC;AAClB;"}
|