@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,94 @@
|
|
|
1
|
+
import { jsx as b, Fragment as M } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as p, useContext as A, useSyncExternalStore as F, useState as P, useRef as g, useEffect as x, createContext as C, Fragment as y } from "react";
|
|
3
|
+
import { subscribeToTenant as L, getRecordStoreTenant as v } from "../../records/store.js";
|
|
4
|
+
const S = C(null), X = C(null);
|
|
5
|
+
function $({ pattern: t, resolve: e, renderRef: n, children: r }) {
|
|
6
|
+
if (!t.global)
|
|
7
|
+
throw new Error("MarkdownRefProvider: `pattern` needs the global flag (g), e.g. /\\bDX-\\d+\\b/g");
|
|
8
|
+
const o = p(() => ({ pattern: t, resolve: e, renderRef: n }), [t, e, n]);
|
|
9
|
+
return /* @__PURE__ */ b(S.Provider, { value: o, children: r });
|
|
10
|
+
}
|
|
11
|
+
function T(t, e) {
|
|
12
|
+
const n = [];
|
|
13
|
+
for (const r of t.matchAll(new RegExp(e.source, e.flags)))
|
|
14
|
+
r[0] !== "" && n.push({ ref: r[0], index: r.index });
|
|
15
|
+
return n;
|
|
16
|
+
}
|
|
17
|
+
function u(t, e) {
|
|
18
|
+
for (const n of t)
|
|
19
|
+
n.kind === "text" ? e(n.value) : (n.kind === "emphasis" || n.kind === "strong" || n.kind === "strike") && u(n.children, e);
|
|
20
|
+
}
|
|
21
|
+
function d(t, e) {
|
|
22
|
+
for (const n of t)
|
|
23
|
+
switch (n.kind) {
|
|
24
|
+
case "paragraph":
|
|
25
|
+
case "heading":
|
|
26
|
+
u(n.children, e);
|
|
27
|
+
break;
|
|
28
|
+
case "quote":
|
|
29
|
+
d(n.children, e);
|
|
30
|
+
break;
|
|
31
|
+
case "list":
|
|
32
|
+
for (const r of n.items) d(r.children, e);
|
|
33
|
+
break;
|
|
34
|
+
case "table":
|
|
35
|
+
for (const r of n.head) u(r.children, e);
|
|
36
|
+
for (const r of n.rows) for (const o of r) u(o.children, e);
|
|
37
|
+
break;
|
|
38
|
+
case "footnotes":
|
|
39
|
+
for (const r of n.items) d(r.children, e);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function N(t, e) {
|
|
44
|
+
const n = /* @__PURE__ */ new Set(), r = (o) => {
|
|
45
|
+
for (const { ref: s } of T(o, e)) n.add(s);
|
|
46
|
+
};
|
|
47
|
+
return typeof t == "string" ? r(t) : d(t, r), [...n];
|
|
48
|
+
}
|
|
49
|
+
const m = /* @__PURE__ */ new Map();
|
|
50
|
+
function j(t) {
|
|
51
|
+
const e = A(S), n = e?.pattern, r = p(() => n ? N(t, n) : [], [t, n]), o = F(L, v, v), [s, E] = P({ tenant: o, map: m }), w = s.tenant === o ? s.map : m, f = g(/* @__PURE__ */ new Set()), h = g(null), R = g(e?.resolve);
|
|
52
|
+
return R.current = e?.resolve, x(() => (h.current = new AbortController(), () => {
|
|
53
|
+
h.current?.abort(), f.current.clear();
|
|
54
|
+
}), [o]), x(() => {
|
|
55
|
+
const k = R.current, a = h.current?.signal, i = r.filter((c) => !f.current.has(c));
|
|
56
|
+
if (!(!k || !a || i.length === 0)) {
|
|
57
|
+
for (const c of i) f.current.add(c);
|
|
58
|
+
k(i, a).then(
|
|
59
|
+
(c) => {
|
|
60
|
+
a.aborted || E((l) => ({ tenant: o, map: new Map([...l.tenant === o ? l.map : m, ...c]) }));
|
|
61
|
+
},
|
|
62
|
+
(c) => {
|
|
63
|
+
if (!a.aborted) {
|
|
64
|
+
for (const l of i) f.current.delete(l);
|
|
65
|
+
throw c;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
}, [r, o]), p(
|
|
71
|
+
() => e ? { pattern: e.pattern, resolved: w, renderRef: e.renderRef } : null,
|
|
72
|
+
[e, w]
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
function q(t, e) {
|
|
76
|
+
if (!e || e.resolved.size === 0) return t;
|
|
77
|
+
const n = [];
|
|
78
|
+
let r = 0;
|
|
79
|
+
for (const { ref: o, index: s } of T(t, e.pattern))
|
|
80
|
+
e.resolved.has(o) && (s > r && n.push(t.slice(r, s)), n.push(/* @__PURE__ */ b(y, { children: e.renderRef(o, e.resolved.get(o)) }, s)), r = s + o.length);
|
|
81
|
+
return n.length === 0 ? t : (r < t.length && n.push(t.slice(r)), n);
|
|
82
|
+
}
|
|
83
|
+
function B({ children: t }) {
|
|
84
|
+
const e = j(t);
|
|
85
|
+
return /* @__PURE__ */ b(M, { children: q(t, e) });
|
|
86
|
+
}
|
|
87
|
+
export {
|
|
88
|
+
$ as MarkdownRefProvider,
|
|
89
|
+
X as RefLinksContext,
|
|
90
|
+
B as RefText,
|
|
91
|
+
q as linkRefs,
|
|
92
|
+
j as useRefLinks
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.js","sources":["../../../../src/lib/syntax/markdown/refs.tsx"],"sourcesContent":["import { createContext, Fragment, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore, type ReactNode } from \"react\";\nimport { getRecordStoreTenant, subscribeToTenant } from \"../../records\";\nimport type { MdInline, MdNode } from \"./types\";\n\n/* ============================================================================\n RESOURCE REFS (DXUI-32) — `DX-6144`, `PLAN-46`, `PBLM-2757` as links.\n\n An app mounts ONE `MarkdownRefProvider` and says three things the library\n cannot know: which text runs ARE refs (`pattern`), how to turn a batch of\n them into the ones that really exist (`resolve`), and how a real one draws\n (`renderRef`, normally the app's router link — a plain `<a href>` would\n reload the page). Which kinds of ref exist, and where each goes, is the\n app's business and never appears in this file.\n\n WHAT THE LIBRARY OWNS is where a ref may become a link, and that anything\n short of a resolved ref is exactly the text it was. A ref is only ever found\n in a `text` inline: code spans and fenced blocks are other node kinds, and a\n link's label is skipped (an anchor inside an anchor is invalid HTML, and the\n author already chose where that text goes). A ref that is pending, unknown\n or whose batch failed stays plain text, so a link never flickers in and out.\n\n Resolution is per rendered document: `MarkdownNodes` (and `RefText` for a\n plain string) collects the distinct refs it holds, asks `resolve` once for\n the ones it has not asked about yet, and merges the answers in. Caching\n ACROSS documents is the app's — its `resolve` answers a ref it already knows\n without a request. With no provider none of this runs.\n ========================================================================= */\n\n/**\n * Pass stable references: a module-level `pattern` and a memoised (or module-level) `resolve` and\n * `renderRef`. The provider's context value memoises on all three, so an inline arrow or a regex\n * literal written in render makes every document beneath it re-collect its refs on each render.\n */\nexport interface MarkdownRefProviderProps<T> {\n /**\n * Matches ONE ref per match; the whole match is the ref. It must carry the\n * `g` flag and should anchor its edges (`\\b`) so `ADX-1` is not a `DX-1`.\n */\n pattern: RegExp;\n /**\n * Resolves a batch of distinct refs to the ones that exist. A ref missing\n * from the answer renders as text. It should honour `signal`, which aborts\n * when the text that asked unmounts. A rejection is not swallowed.\n */\n resolve: (refs: string[], signal: AbortSignal) => Promise<ReadonlyMap<string, T>>;\n /** Draws one resolved ref — the app's router link. */\n renderRef: (ref: string, resolved: T) => ReactNode;\n children?: ReactNode;\n}\n\ntype RefConfig = Omit<MarkdownRefProviderProps<unknown>, \"children\">;\n\n/** What a document that holds refs draws them with. */\nexport interface RefLinks {\n pattern: RegExp;\n resolved: ReadonlyMap<string, unknown>;\n renderRef: (ref: string, resolved: unknown) => ReactNode;\n}\n\nconst RefConfigContext = createContext<RefConfig | null>(null);\n/** Provided by a rendered document to its inlines: the resolved refs, or none. */\nexport const RefLinksContext = createContext<RefLinks | null>(null);\n\n/** Makes ref linking available to every `Markdown`, `MarkdownNodes` and `RefText` beneath it. */\nexport function MarkdownRefProvider<T>({ pattern, resolve, renderRef, children }: MarkdownRefProviderProps<T>) {\n if (!pattern.global) {\n throw new Error(\"MarkdownRefProvider: `pattern` needs the global flag (g), e.g. /\\\\bDX-\\\\d+\\\\b/g\");\n }\n const value = useMemo(() => ({ pattern, resolve, renderRef }) as RefConfig, [pattern, resolve, renderRef]);\n return <RefConfigContext.Provider value={value}>{children}</RefConfigContext.Provider>;\n}\n\n/* --- Finding refs --------------------------------------------------------- */\n\n/** Every ref in `text`, in order, with its position. */\nfunction matchRefs(text: string, pattern: RegExp): Array<{ ref: string; index: number }> {\n /* `matchAll` starts at the source regex's `lastIndex`, which the app's own `.test()` or `.exec()` on this same\n global pattern can leave non-zero; a fresh copy always starts at 0. */\n const found: Array<{ ref: string; index: number }> = [];\n for (const m of text.matchAll(new RegExp(pattern.source, pattern.flags))) {\n if (m[0] !== \"\") found.push({ ref: m[0], index: m.index });\n }\n return found;\n}\n\nfunction inlineTexts(nodes: readonly MdInline[], visit: (text: string) => void): void {\n for (const node of nodes) {\n if (node.kind === \"text\") visit(node.value);\n else if (node.kind === \"emphasis\" || node.kind === \"strong\" || node.kind === \"strike\") inlineTexts(node.children, visit);\n /* `link` is skipped on purpose; `code`, `image`, `footnoteRef` and `break` hold no prose. */\n }\n}\n\nfunction blockTexts(nodes: readonly MdNode[], visit: (text: string) => void): void {\n for (const node of nodes) {\n switch (node.kind) {\n case \"paragraph\":\n case \"heading\":\n inlineTexts(node.children, visit);\n break;\n case \"quote\":\n blockTexts(node.children, visit);\n break;\n case \"list\":\n for (const item of node.items) blockTexts(item.children, visit);\n break;\n case \"table\":\n for (const cell of node.head) inlineTexts(cell.children, visit);\n for (const row of node.rows) for (const cell of row) inlineTexts(cell.children, visit);\n break;\n case \"footnotes\":\n for (const item of node.items) blockTexts(item.children, visit);\n break;\n case \"code\":\n case \"rule\":\n case \"frontmatter\":\n break;\n }\n }\n}\n\nfunction distinctRefs(source: string | readonly MdNode[], pattern: RegExp): string[] {\n const refs = new Set<string>();\n const visit = (text: string) => {\n for (const { ref } of matchRefs(text, pattern)) refs.add(ref);\n };\n if (typeof source === \"string\") visit(source);\n else blockTexts(source, visit);\n return [...refs];\n}\n\n/* --- Resolving them ------------------------------------------------------- */\n\nconst NONE: ReadonlyMap<string, unknown> = new Map();\n\n/**\n * The refs of one document, resolved. `null` with no provider above, which is\n * how \"no provider: nothing changes\" holds.\n */\nexport function useRefLinks(source: string | readonly MdNode[]): RefLinks | null {\n const config = useContext(RefConfigContext);\n const pattern = config?.pattern;\n const candidates = useMemo(() => (pattern ? distinctRefs(source, pattern) : []), [source, pattern]);\n /* DXUI-84: the answers are the tenant's. They are kept with the tenant they were asked under, so a team switch\n shows none of the old team's links at once, and the effects below re-ask under the new one. */\n const tenant = useSyncExternalStore(subscribeToTenant, getRecordStoreTenant, getRecordStoreTenant);\n const [answers, setAnswers] = useState<{ tenant: unknown; map: ReadonlyMap<string, unknown> }>({ tenant, map: NONE });\n const resolved = answers.tenant === tenant ? answers.map : NONE;\n const asked = useRef(new Set<string>());\n const abort = useRef<AbortController | null>(null);\n const resolveRef = useRef(config?.resolve);\n resolveRef.current = config?.resolve;\n\n /* One controller per tenant, for the document's lifetime in it. Created in the effect (not\n lazily in render) and `asked` cleared on teardown, so a StrictMode\n mount-unmount-mount re-asks what the aborted first mount never delivered, and a tenant switch\n aborts the old team's questions. */\n useEffect(() => {\n abort.current = new AbortController();\n return () => {\n abort.current?.abort();\n asked.current.clear();\n };\n }, [tenant]);\n\n useEffect(() => {\n const resolve = resolveRef.current;\n const signal = abort.current?.signal;\n const fresh = candidates.filter((ref) => !asked.current.has(ref));\n if (!resolve || !signal || fresh.length === 0) return;\n for (const ref of fresh) asked.current.add(ref);\n resolve(fresh, signal).then(\n (found) => {\n if (!signal.aborted) {\n setAnswers((prev) => ({ tenant, map: new Map([...(prev.tenant === tenant ? prev.map : NONE), ...found]) }));\n }\n },\n (error: unknown) => {\n if (signal.aborted) return;\n /* Ask again next time the text changes, and let the failure surface. */\n for (const ref of fresh) asked.current.delete(ref);\n throw error;\n },\n );\n }, [candidates, tenant]);\n\n return useMemo(\n () => (config ? { pattern: config.pattern, resolved, renderRef: config.renderRef } : null),\n [config, resolved],\n );\n}\n\n/* --- Drawing them --------------------------------------------------------- */\n\n/** `text` with each resolved ref drawn by the app; the text itself when there is nothing to draw. */\nexport function linkRefs(text: string, links: RefLinks | null): ReactNode {\n if (!links || links.resolved.size === 0) return text;\n const out: ReactNode[] = [];\n let at = 0;\n for (const { ref, index } of matchRefs(text, links.pattern)) {\n if (!links.resolved.has(ref)) continue;\n if (index > at) out.push(text.slice(at, index));\n out.push(<Fragment key={index}>{links.renderRef(ref, links.resolved.get(ref))}</Fragment>);\n at = index + ref.length;\n }\n if (out.length === 0) return text;\n if (at < text.length) out.push(text.slice(at));\n return out;\n}\n\n/**\n * Plain (non-markdown) card text with its refs linked: a one-line statement, a\n * for/against note. With no provider it is the string.\n */\nexport function RefText({ children }: { children: string }) {\n const links = useRefLinks(children);\n return <>{linkRefs(children, links)}</>;\n}\n"],"names":["RefConfigContext","createContext","RefLinksContext","MarkdownRefProvider","pattern","resolve","renderRef","children","value","useMemo","jsx","matchRefs","text","found","m","inlineTexts","nodes","visit","node","blockTexts","item","cell","row","distinctRefs","source","refs","ref","NONE","useRefLinks","config","useContext","candidates","tenant","useSyncExternalStore","subscribeToTenant","getRecordStoreTenant","answers","setAnswers","useState","resolved","asked","useRef","abort","resolveRef","useEffect","signal","fresh","prev","error","linkRefs","links","out","at","index","Fragment","RefText"],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { jsx as r, Fragment as o, jsxs as d } from "react/jsx-runtime";
|
|
2
|
+
import { useContext as y, useState as N } from "react";
|
|
3
|
+
import { Dialog as w } from "../../../components/Dialog.js";
|
|
4
|
+
import { Tooltip as v } from "../../../components/Popover.js";
|
|
5
|
+
import { cn as i } from "../../cn.js";
|
|
6
|
+
import { useRefLinks as I, RefLinksContext as p, linkRefs as R } from "./refs.js";
|
|
7
|
+
import { useUiStrings as u } from "../../i18n/provider.js";
|
|
8
|
+
function x({ title: e, children: t }) {
|
|
9
|
+
return e ? /* @__PURE__ */ r(v, { content: e, children: t }) : t;
|
|
10
|
+
}
|
|
11
|
+
function H({ nodes: e, renderCode: t }) {
|
|
12
|
+
const n = I(e);
|
|
13
|
+
return /* @__PURE__ */ r(p.Provider, { value: n, children: /* @__PURE__ */ r(m, { nodes: e, renderCode: t }) });
|
|
14
|
+
}
|
|
15
|
+
function m({ nodes: e, renderCode: t }) {
|
|
16
|
+
return e.map((n, l) => /* @__PURE__ */ r(L, { node: n, renderCode: t }, l));
|
|
17
|
+
}
|
|
18
|
+
const z = {
|
|
19
|
+
1: "text-xl",
|
|
20
|
+
2: "text-lg",
|
|
21
|
+
3: "text-base",
|
|
22
|
+
4: "text-sm",
|
|
23
|
+
5: "text-sm",
|
|
24
|
+
6: "text-xs uppercase tracking-wide text-secondary"
|
|
25
|
+
};
|
|
26
|
+
function L({ node: e, renderCode: t }) {
|
|
27
|
+
switch (e.kind) {
|
|
28
|
+
case "heading": {
|
|
29
|
+
const n = `h${e.level}`;
|
|
30
|
+
return /* @__PURE__ */ r(
|
|
31
|
+
n,
|
|
32
|
+
{
|
|
33
|
+
id: e.id,
|
|
34
|
+
className: i(
|
|
35
|
+
"mt-4 mb-1 scroll-mt-4 font-display font-semibold text-primary first:mt-0",
|
|
36
|
+
z[e.level]
|
|
37
|
+
),
|
|
38
|
+
children: /* @__PURE__ */ r(c, { nodes: e.children })
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
case "paragraph":
|
|
43
|
+
return /* @__PURE__ */ r("p", { className: "my-1.5 first:mt-0 last:mb-0", children: /* @__PURE__ */ r(c, { nodes: e.children }) });
|
|
44
|
+
case "code":
|
|
45
|
+
return /* @__PURE__ */ r(o, { children: t(e) });
|
|
46
|
+
/* Front matter is a code block that happens to sit at the top of the file,
|
|
47
|
+
so it renders through the same consumer-supplied renderer — which is also
|
|
48
|
+
what gets it highlighted as YAML rather than shown as grey prose. */
|
|
49
|
+
case "frontmatter":
|
|
50
|
+
return /* @__PURE__ */ r(o, { children: t({ language: e.language, code: e.body, open: !1 }) });
|
|
51
|
+
case "quote":
|
|
52
|
+
return /* @__PURE__ */ r("blockquote", { className: "my-2 border-l-2 border-accent-border pl-3 text-secondary italic", children: /* @__PURE__ */ r(m, { nodes: e.children, renderCode: t }) });
|
|
53
|
+
case "rule":
|
|
54
|
+
return /* @__PURE__ */ r("hr", { className: "my-3 border-0 border-t border-border-subtle" });
|
|
55
|
+
case "list":
|
|
56
|
+
return /* @__PURE__ */ r(S, { node: e, renderCode: t });
|
|
57
|
+
case "table":
|
|
58
|
+
return /* @__PURE__ */ r($, { node: e });
|
|
59
|
+
case "footnotes":
|
|
60
|
+
return /* @__PURE__ */ r(A, { node: e, renderCode: t });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function S({
|
|
64
|
+
node: e,
|
|
65
|
+
renderCode: t
|
|
66
|
+
}) {
|
|
67
|
+
const n = e.ordered ? "ol" : "ul", l = e.items.some((s) => s.checked !== null);
|
|
68
|
+
return /* @__PURE__ */ r(
|
|
69
|
+
n,
|
|
70
|
+
{
|
|
71
|
+
start: e.ordered && e.start !== 1 ? e.start : void 0,
|
|
72
|
+
className: i(
|
|
73
|
+
"my-1.5 flex flex-col pl-5 marker:text-tertiary",
|
|
74
|
+
e.tight ? "gap-1" : "gap-2",
|
|
75
|
+
/* A checkbox IS the marker. Leaving the disc in place gives every task
|
|
76
|
+
two bullets, one of which does nothing. */
|
|
77
|
+
l ? "list-none pl-1" : e.ordered ? "list-decimal" : "list-disc"
|
|
78
|
+
),
|
|
79
|
+
children: e.items.map((s, a) => /* @__PURE__ */ r(T, { item: s, tight: e.tight, renderCode: t }, a))
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
function T({
|
|
84
|
+
item: e,
|
|
85
|
+
tight: t,
|
|
86
|
+
renderCode: n
|
|
87
|
+
}) {
|
|
88
|
+
const l = u().markdownRender, s = e.children.length === 1 ? e.children[0] : null, a = t && s && s.kind === "paragraph" ? /* @__PURE__ */ r(c, { nodes: s.children }) : /* @__PURE__ */ r(m, { nodes: e.children, renderCode: n });
|
|
89
|
+
return e.checked === null ? /* @__PURE__ */ r("li", { className: "pl-0.5", children: a }) : /* @__PURE__ */ d("li", { className: "flex items-baseline gap-2 pl-0.5", children: [
|
|
90
|
+
/* @__PURE__ */ r(
|
|
91
|
+
"input",
|
|
92
|
+
{
|
|
93
|
+
type: "checkbox",
|
|
94
|
+
checked: e.checked,
|
|
95
|
+
readOnly: !0,
|
|
96
|
+
disabled: !0,
|
|
97
|
+
"aria-label": e.checked ? l.done : l.notDone,
|
|
98
|
+
className: "mt-0.5 size-3.5 shrink-0 accent-accent"
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
/* @__PURE__ */ r("span", { className: i("min-w-0 flex-1", e.checked && "text-tertiary line-through"), children: a })
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
const h = {
|
|
105
|
+
left: "text-left",
|
|
106
|
+
center: "text-center",
|
|
107
|
+
right: "text-right"
|
|
108
|
+
};
|
|
109
|
+
function $({ node: e }) {
|
|
110
|
+
const t = u().markdownRender;
|
|
111
|
+
return (
|
|
112
|
+
/* Focusable because it scrolls sideways. A region that can only be panned
|
|
113
|
+
with a pointer is unreachable by keyboard, and a wide table is the most
|
|
114
|
+
common place that happens. */
|
|
115
|
+
/* @__PURE__ */ r(
|
|
116
|
+
"div",
|
|
117
|
+
{
|
|
118
|
+
tabIndex: 0,
|
|
119
|
+
role: "region",
|
|
120
|
+
"aria-label": t.table,
|
|
121
|
+
className: "my-2 overflow-x-auto rounded-lg border border-border-subtle outline-none focus-visible:ring-2 focus-visible:ring-focus-ring",
|
|
122
|
+
children: /* @__PURE__ */ d("table", { className: "w-full border-collapse text-xs", children: [
|
|
123
|
+
/* @__PURE__ */ r("thead", { children: /* @__PURE__ */ r("tr", { children: e.head.map((n, l) => /* @__PURE__ */ r(
|
|
124
|
+
"th",
|
|
125
|
+
{
|
|
126
|
+
scope: "col",
|
|
127
|
+
className: i(
|
|
128
|
+
"border-b border-border-subtle bg-surface-inset px-3 py-1.5 font-semibold text-primary",
|
|
129
|
+
h[e.align[l] ?? "left"]
|
|
130
|
+
),
|
|
131
|
+
children: /* @__PURE__ */ r(c, { nodes: n.children })
|
|
132
|
+
},
|
|
133
|
+
l
|
|
134
|
+
)) }) }),
|
|
135
|
+
/* @__PURE__ */ r("tbody", { children: e.rows.map((n, l) => /* @__PURE__ */ r("tr", { children: n.map((s, a) => /* @__PURE__ */ r(
|
|
136
|
+
"td",
|
|
137
|
+
{
|
|
138
|
+
className: i(
|
|
139
|
+
"border-b border-border-subtle px-3 py-1.5 text-secondary last:border-b-0",
|
|
140
|
+
h[e.align[a] ?? "left"]
|
|
141
|
+
),
|
|
142
|
+
children: /* @__PURE__ */ r(c, { nodes: s.children })
|
|
143
|
+
},
|
|
144
|
+
a
|
|
145
|
+
)) }, l)) })
|
|
146
|
+
] })
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
function A({
|
|
152
|
+
node: e,
|
|
153
|
+
renderCode: t
|
|
154
|
+
}) {
|
|
155
|
+
const n = u().markdownRender;
|
|
156
|
+
return /* @__PURE__ */ r("section", { "aria-label": n.footnotes, className: "mt-4 border-t border-border-subtle pt-2 text-xs text-tertiary", children: /* @__PURE__ */ r("ol", { className: "flex list-decimal flex-col gap-1 pl-5 marker:text-tertiary", children: e.items.map((l) => /* @__PURE__ */ d("li", { id: g(l.label), children: [
|
|
157
|
+
/* @__PURE__ */ r(m, { nodes: l.children, renderCode: t }),
|
|
158
|
+
" ",
|
|
159
|
+
/* @__PURE__ */ r("a", { href: `#${k(l.label)}`, "aria-label": n.backToReference, className: "text-accent-text", children: "↩" })
|
|
160
|
+
] }, l.label)) }) });
|
|
161
|
+
}
|
|
162
|
+
const g = (e) => `fn-${e}`, k = (e) => `fnref-${e}`, D = "rounded-[4px] border border-border-subtle bg-surface-inset px-1 py-px font-mono text-[0.88em] text-primary", f = "text-accent-text underline decoration-accent-border underline-offset-2 transition-colors duration-(--dur-fast) hover:decoration-accent";
|
|
163
|
+
function c({ nodes: e, linked: t = !0 }) {
|
|
164
|
+
return e.map((n, l) => /* @__PURE__ */ r(O, { node: n, linked: t }, l));
|
|
165
|
+
}
|
|
166
|
+
function O({ node: e, linked: t }) {
|
|
167
|
+
const n = y(p);
|
|
168
|
+
switch (e.kind) {
|
|
169
|
+
case "text":
|
|
170
|
+
return /* @__PURE__ */ r(o, { children: R(e.value, t ? n : null) });
|
|
171
|
+
case "code":
|
|
172
|
+
return /* @__PURE__ */ r("code", { className: D, children: e.value });
|
|
173
|
+
case "emphasis":
|
|
174
|
+
return /* @__PURE__ */ r("em", { children: /* @__PURE__ */ r(c, { nodes: e.children, linked: t }) });
|
|
175
|
+
case "strong":
|
|
176
|
+
return /* @__PURE__ */ r("strong", { className: "font-semibold text-primary", children: /* @__PURE__ */ r(c, { nodes: e.children, linked: t }) });
|
|
177
|
+
case "strike":
|
|
178
|
+
return /* @__PURE__ */ r("del", { className: "text-tertiary", children: /* @__PURE__ */ r(c, { nodes: e.children, linked: t }) });
|
|
179
|
+
case "break":
|
|
180
|
+
return /* @__PURE__ */ r("br", {});
|
|
181
|
+
case "footnoteRef":
|
|
182
|
+
return /* @__PURE__ */ r("sup", { id: k(e.label), children: /* @__PURE__ */ r("a", { href: `#${g(e.label)}`, className: f, children: e.label }) });
|
|
183
|
+
case "image": {
|
|
184
|
+
const l = b(e.src);
|
|
185
|
+
return l ? /* @__PURE__ */ r(_, { src: l, alt: e.alt, title: e.title }) : /* @__PURE__ */ r("span", { className: "text-tertiary italic", children: e.alt });
|
|
186
|
+
}
|
|
187
|
+
case "link": {
|
|
188
|
+
const l = b(e.href);
|
|
189
|
+
if (!l)
|
|
190
|
+
return /* @__PURE__ */ r("span", { "data-unsafe-href": "", children: /* @__PURE__ */ r(c, { nodes: e.children, linked: !1 }) });
|
|
191
|
+
const s = /^[a-z][a-z0-9+.-]*:/i.test(l);
|
|
192
|
+
return /* @__PURE__ */ r(x, { title: e.title, children: /* @__PURE__ */ r(
|
|
193
|
+
"a",
|
|
194
|
+
{
|
|
195
|
+
href: l,
|
|
196
|
+
target: s ? "_blank" : void 0,
|
|
197
|
+
rel: s ? "noreferrer noopener" : void 0,
|
|
198
|
+
className: f,
|
|
199
|
+
children: /* @__PURE__ */ r(c, { nodes: e.children, linked: !1 })
|
|
200
|
+
}
|
|
201
|
+
) });
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function _({ src: e, alt: t, title: n }) {
|
|
206
|
+
const l = u().markdownRender, [s, a] = N(!1);
|
|
207
|
+
return /* @__PURE__ */ d(o, { children: [
|
|
208
|
+
/* @__PURE__ */ r(x, { title: n, children: /* @__PURE__ */ r(
|
|
209
|
+
"img",
|
|
210
|
+
{
|
|
211
|
+
src: e,
|
|
212
|
+
alt: t,
|
|
213
|
+
loading: "lazy",
|
|
214
|
+
decoding: "async",
|
|
215
|
+
onClick: () => a(!0),
|
|
216
|
+
className: "my-2 max-h-40 w-auto max-w-full cursor-zoom-in rounded-lg border border-border-subtle"
|
|
217
|
+
}
|
|
218
|
+
) }),
|
|
219
|
+
/* @__PURE__ */ r(w, { open: s, onOpenChange: a, title: t || l.image, size: "xl", children: /* @__PURE__ */ r("img", { src: e, alt: t, className: "max-w-full rounded-lg" }) })
|
|
220
|
+
] });
|
|
221
|
+
}
|
|
222
|
+
function b(e) {
|
|
223
|
+
const n = e.trim().replace(/[\u0000-\u0020]/g, "");
|
|
224
|
+
return /^[a-z][a-z0-9+.-]*:/i.test(n) ? /^(https?|mailto|tel|ftp):/i.test(n) ? n : null : n;
|
|
225
|
+
}
|
|
226
|
+
export {
|
|
227
|
+
H as MarkdownNodes,
|
|
228
|
+
b as sanitizeHref
|
|
229
|
+
};
|
|
230
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sources":["../../../../src/lib/syntax/markdown/render.tsx"],"sourcesContent":["import { useContext, useState, type ReactElement, type ReactNode } from \"react\";\nimport { Dialog } from \"../../../components/Dialog\";\nimport { Tooltip } from \"../../../components/Popover\";\nimport { cn } from \"../../cn\";\nimport { useUiStrings } from \"../../i18n\";\nimport { linkRefs, RefLinksContext, useRefLinks } from \"./refs\";\nimport type { MdAlign, MdCell, MdCodeRenderer, MdInline, MdListItem, MdNode } from \"./types\";\n\n/**\n * Markdown's link and image `title` becomes a real Tooltip, never the native\n * `title=` attribute.\n *\n * The native one is banned system-wide (D-24) and every reason applies here:\n * it ignores the theme, never appears on touch, and is read inconsistently by\n * screen readers — so the supplementary text an author deliberately wrote is\n * invisible to a large share of the people reading it. There is a source sweep\n * that fails the build on any lowercase element carrying it.\n *\n * A title is rare, so the Tooltip is mounted only when one exists and ordinary\n * links cost nothing.\n */\nfunction Titled({ title, children }: { title?: string; children: ReactElement }): ReactNode {\n return title ? <Tooltip content={title}>{children}</Tooltip> : children;\n}\n\n/* ============================================================================\n MARKDOWN RENDERER — React elements from the tree, and nothing else.\n\n RULE ONE: React elements, never `dangerouslySetInnerHTML`. Markdown is the\n format you receive from somewhere else — a chat reply, a card description, a\n file on disk — which makes it the single place a component library must not\n trust its input. The escape hatch is not merely unused here, it is absent,\n and the parser upstream never produces raw HTML for it to use: `<div>` in the\n source arrives as the literal text `<div>`.\n\n RULE TWO: every href and every image src goes through `sanitizeHref`.\n `javascript:` and `data:text/html` are working attacks against any renderer\n that passes a URL through untouched, and the interesting cases are the ones\n that do not look like attacks — `JaVaScRiPt:` and a tab inside the scheme\n both survive a naive prefix test and both execute.\n\n RULE THREE: `renderCode` is a PROP. This module must not import the\n `CodeEditor` component, because `CodeEditor` renders markdown — the import would be a cycle.\n Handing the fence renderer in also means a chat bubble and a docs page can\n present the same block differently without either of them forking this file.\n\n Every colour here is a semantic token utility (`text-primary`, `bg-surface-\n inset`, `border-border-subtle`). A raw palette class like `bg-slate-800` is a\n bug in this repo: it survives the light theme and inverts nothing.\n ========================================================================= */\n\nexport interface MarkdownNodesProps {\n nodes: MdNode[];\n /** How a fenced block renders. Supplied by the consumer to avoid a cycle. */\n renderCode: MdCodeRenderer;\n}\n\n/**\n * The document. It owns the resource-ref scope (DXUI-32): the refs of the whole\n * tree are collected and resolved once here, and every inline beneath reads the\n * answer from context. Nested block lists (quote, list item, footnote) use\n * `Blocks`, so a document is one scope however deeply it nests.\n */\nexport function MarkdownNodes({ nodes, renderCode }: MarkdownNodesProps): ReactNode {\n const links = useRefLinks(nodes);\n return (\n <RefLinksContext.Provider value={links}>\n <Blocks nodes={nodes} renderCode={renderCode} />\n </RefLinksContext.Provider>\n );\n}\n\nfunction Blocks({ nodes, renderCode }: MarkdownNodesProps): ReactNode {\n return nodes.map((node, i) => <Block key={i} node={node} renderCode={renderCode} />);\n}\n\n/* --- Blocks --------------------------------------------------------------- */\n\nconst HEADING_SIZE: Record<number, string> = {\n 1: \"text-xl\",\n 2: \"text-lg\",\n 3: \"text-base\",\n 4: \"text-sm\",\n 5: \"text-sm\",\n 6: \"text-xs uppercase tracking-wide text-secondary\",\n};\n\nfunction Block({ node, renderCode }: { node: MdNode; renderCode: MdCodeRenderer }): ReactNode {\n switch (node.kind) {\n case \"heading\": {\n const Tag = `h${node.level}` as \"h1\";\n return (\n <Tag\n id={node.id}\n className={cn(\n \"mt-4 mb-1 scroll-mt-4 font-display font-semibold text-primary first:mt-0\",\n HEADING_SIZE[node.level],\n )}\n >\n <Inlines nodes={node.children} />\n </Tag>\n );\n }\n\n case \"paragraph\":\n return (\n <p className=\"my-1.5 first:mt-0 last:mb-0\">\n <Inlines nodes={node.children} />\n </p>\n );\n\n case \"code\":\n return <>{renderCode(node)}</>;\n\n /* Front matter is a code block that happens to sit at the top of the file,\n so it renders through the same consumer-supplied renderer — which is also\n what gets it highlighted as YAML rather than shown as grey prose. */\n case \"frontmatter\":\n return <>{renderCode({ language: node.language, code: node.body, open: false })}</>;\n\n case \"quote\":\n return (\n <blockquote className=\"my-2 border-l-2 border-accent-border pl-3 text-secondary italic\">\n <Blocks nodes={node.children} renderCode={renderCode} />\n </blockquote>\n );\n\n case \"rule\":\n return <hr className=\"my-3 border-0 border-t border-border-subtle\" />;\n\n case \"list\":\n return <List node={node} renderCode={renderCode} />;\n\n case \"table\":\n return <Table node={node} />;\n\n case \"footnotes\":\n return <Footnotes node={node} renderCode={renderCode} />;\n }\n}\n\nfunction List({\n node,\n renderCode,\n}: {\n node: Extract<MdNode, { kind: \"list\" }>;\n renderCode: MdCodeRenderer;\n}): ReactNode {\n const Tag = node.ordered ? \"ol\" : \"ul\";\n const tasks = node.items.some((item) => item.checked !== null);\n\n return (\n <Tag\n start={node.ordered && node.start !== 1 ? node.start : undefined}\n className={cn(\n \"my-1.5 flex flex-col pl-5 marker:text-tertiary\",\n node.tight ? \"gap-1\" : \"gap-2\",\n /* A checkbox IS the marker. Leaving the disc in place gives every task\n two bullets, one of which does nothing. */\n tasks ? \"list-none pl-1\" : node.ordered ? \"list-decimal\" : \"list-disc\",\n )}\n >\n {node.items.map((item, i) => (\n <Item key={i} item={item} tight={node.tight} renderCode={renderCode} />\n ))}\n </Tag>\n );\n}\n\nfunction Item({\n item,\n tight,\n renderCode,\n}: {\n item: MdListItem;\n tight: boolean;\n renderCode: MdCodeRenderer;\n}): ReactNode {\n const strings = useUiStrings().markdownRender;\n /* A tight item's single paragraph renders WITHOUT the `<p>`: that wrapper is\n what puts a blank line between every bullet, and the difference between a\n tight and a loose list is exactly this. */\n const only = item.children.length === 1 ? item.children[0] : null;\n const body =\n tight && only && only.kind === \"paragraph\" ? (\n <Inlines nodes={only.children} />\n ) : (\n <Blocks nodes={item.children} renderCode={renderCode} />\n );\n\n if (item.checked === null) return <li className=\"pl-0.5\">{body}</li>;\n\n return (\n <li className=\"flex items-baseline gap-2 pl-0.5\">\n <input\n type=\"checkbox\"\n checked={item.checked}\n readOnly\n disabled\n aria-label={item.checked ? strings.done : strings.notDone}\n className=\"mt-0.5 size-3.5 shrink-0 accent-accent\"\n />\n <span className={cn(\"min-w-0 flex-1\", item.checked && \"text-tertiary line-through\")}>{body}</span>\n </li>\n );\n}\n\nconst ALIGN: Record<MdAlign, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\nfunction Table({ node }: { node: Extract<MdNode, { kind: \"table\" }> }): ReactNode {\n const strings = useUiStrings().markdownRender;\n return (\n /* Focusable because it scrolls sideways. A region that can only be panned\n with a pointer is unreachable by keyboard, and a wide table is the most\n common place that happens. */\n <div\n tabIndex={0}\n role=\"region\"\n aria-label={strings.table}\n className=\"my-2 overflow-x-auto rounded-lg border border-border-subtle outline-none focus-visible:ring-2 focus-visible:ring-focus-ring\"\n >\n <table className=\"w-full border-collapse text-xs\">\n <thead>\n <tr>\n {node.head.map((cell, i) => (\n <th\n key={i}\n scope=\"col\"\n className={cn(\n \"border-b border-border-subtle bg-surface-inset px-3 py-1.5 font-semibold text-primary\",\n ALIGN[node.align[i] ?? \"left\"],\n )}\n >\n <Inlines nodes={cell.children} />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {node.rows.map((row, r) => (\n <tr key={r}>\n {row.map((cell: MdCell, c) => (\n <td\n key={c}\n className={cn(\n \"border-b border-border-subtle px-3 py-1.5 text-secondary last:border-b-0\",\n ALIGN[node.align[c] ?? \"left\"],\n )}\n >\n <Inlines nodes={cell.children} />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction Footnotes({\n node,\n renderCode,\n}: {\n node: Extract<MdNode, { kind: \"footnotes\" }>;\n renderCode: MdCodeRenderer;\n}): ReactNode {\n const strings = useUiStrings().markdownRender;\n return (\n <section aria-label={strings.footnotes} className=\"mt-4 border-t border-border-subtle pt-2 text-xs text-tertiary\">\n <ol className=\"flex list-decimal flex-col gap-1 pl-5 marker:text-tertiary\">\n {node.items.map((item) => (\n <li key={item.label} id={footnoteId(item.label)}>\n <Blocks nodes={item.children} renderCode={renderCode} />{\" \"}\n {/* The return link is what makes footnotes usable at all: without it\n a reader who followed a reference has no way back to the sentence\n they left. */}\n <a href={`#${footnoteRefId(item.label)}`} aria-label={strings.backToReference} className=\"text-accent-text\">\n ↩\n </a>\n </li>\n ))}\n </ol>\n </section>\n );\n}\n\nconst footnoteId = (label: string) => `fn-${label}`;\nconst footnoteRefId = (label: string) => `fnref-${label}`;\n\n/* --- Inlines -------------------------------------------------------------- */\n\nconst CODE_CLASS =\n \"rounded-[4px] border border-border-subtle bg-surface-inset px-1 py-px font-mono text-[0.88em] text-primary\";\nconst LINK_CLASS =\n \"text-accent-text underline decoration-accent-border underline-offset-2 transition-colors duration-(--dur-fast) hover:decoration-accent\";\n\n/** `linked` is false inside a link's label: an anchor never holds another one. */\nfunction Inlines({ nodes, linked = true }: { nodes: MdInline[]; linked?: boolean }): ReactNode {\n return nodes.map((node, i) => <Inline key={i} node={node} linked={linked} />);\n}\n\nfunction Inline({ node, linked }: { node: MdInline; linked: boolean }): ReactNode {\n const links = useContext(RefLinksContext);\n switch (node.kind) {\n case \"text\":\n return <>{linkRefs(node.value, linked ? links : null)}</>;\n\n case \"code\":\n return <code className={CODE_CLASS}>{node.value}</code>;\n\n case \"emphasis\":\n return (\n <em>\n <Inlines nodes={node.children} linked={linked} />\n </em>\n );\n\n case \"strong\":\n return (\n <strong className=\"font-semibold text-primary\">\n <Inlines nodes={node.children} linked={linked} />\n </strong>\n );\n\n case \"strike\":\n return (\n <del className=\"text-tertiary\">\n <Inlines nodes={node.children} linked={linked} />\n </del>\n );\n\n case \"break\":\n return <br />;\n\n case \"footnoteRef\":\n return (\n <sup id={footnoteRefId(node.label)}>\n <a href={`#${footnoteId(node.label)}`} className={LINK_CLASS}>\n {node.label}\n </a>\n </sup>\n );\n\n case \"image\": {\n const src = sanitizeHref(node.src);\n /* An image with a rejected src renders as its alt text. Rendering a\n broken `<img>` would hide the fact that something was filtered. */\n if (!src) return <span className=\"text-tertiary italic\">{node.alt}</span>;\n return <MarkdownImage src={src} alt={node.alt} title={node.title} />;\n }\n\n case \"link\": {\n const href = sanitizeHref(node.href);\n /* A rejected scheme renders as TEXT, not as a dead anchor. An anchor that\n looks like a link and does nothing teaches people to click harder; the\n label survives so the attempt is still visible in the prose. */\n if (!href) {\n return (\n <span data-unsafe-href=\"\">\n <Inlines nodes={node.children} linked={false} />\n </span>\n );\n }\n const external = /^[a-z][a-z0-9+.-]*:/i.test(href);\n return (\n <Titled title={node.title}>\n <a\n href={href}\n target={external ? \"_blank\" : undefined}\n rel={external ? \"noreferrer noopener\" : undefined}\n className={LINK_CLASS}\n >\n <Inlines nodes={node.children} linked={false} />\n </a>\n </Titled>\n );\n }\n }\n}\n\n/**\n * An inline image, capped to a compact thumbnail and click-to-enlarge.\n *\n * A screenshot dropped into a markdown field (a card comment, a problem\n * statement, a plan record) is the most common image this renders, and an\n * uncapped one would blow past the width of any of those surfaces and,\n * worse, a TALL one (a full-page screenshot) would still run on forever even\n * with a width cap alone — hence a HEIGHT cap here, not a width cap, with\n * `w-auto` left free to shrink for a narrow source image.\n *\n * Clicking opens the full-resolution image in a `Dialog` rather than\n * navigating or replacing the thumbnail in place, so the surrounding prose\n * never loses its layout while the image is being inspected.\n */\nfunction MarkdownImage({ src, alt, title }: { src: string; alt: string; title?: string }): ReactNode {\n const strings = useUiStrings().markdownRender;\n const [open, setOpen] = useState(false);\n\n return (\n <>\n <Titled title={title}>\n <img\n src={src}\n alt={alt}\n loading=\"lazy\"\n decoding=\"async\"\n onClick={() => setOpen(true)}\n className=\"my-2 max-h-40 w-auto max-w-full cursor-zoom-in rounded-lg border border-border-subtle\"\n />\n </Titled>\n <Dialog open={open} onOpenChange={setOpen} title={alt || strings.image} size=\"xl\">\n <img src={src} alt={alt} className=\"max-w-full rounded-lg\" />\n </Dialog>\n </>\n );\n}\n\n/**\n * RULE TWO, the implementation: a link's scheme is checked before it is\n * rendered.\n *\n * `[click](javascript:fetch('/api/keys').then(…))` is a working attack against\n * every renderer that passes href through untouched, and `data:text/html` is\n * the same hole wearing a different scheme. Anything not on the allowed list\n * returns null, and the caller renders the label as plain text rather than\n * dropping it — silently swallowing it would hide the attempt.\n */\nexport function sanitizeHref(href: string): string | null {\n const trimmed = href.trim();\n /* Control characters are stripped first: `java\\tscript:` is parsed as\n `javascript:` by browsers but not by a naive prefix test. */\n const clean = trimmed.replace(/[\\u0000-\\u0020]/g, \"\");\n if (/^[a-z][a-z0-9+.-]*:/i.test(clean)) {\n return /^(https?|mailto|tel|ftp):/i.test(clean) ? clean : null;\n }\n /* Relative, protocol-relative, fragment and query hrefs carry no scheme and\n cannot execute. */\n return clean;\n}\n"],"names":["Titled","title","children","jsx","Tooltip","MarkdownNodes","nodes","renderCode","links","useRefLinks","RefLinksContext","Blocks","node","i","Block","HEADING_SIZE","Tag","cn","Inlines","Fragment","List","Table","Footnotes","tasks","item","Item","tight","strings","useUiStrings","only","body","jsxs","ALIGN","cell","row","r","c","footnoteId","footnoteRefId","label","CODE_CLASS","LINK_CLASS","linked","Inline","useContext","linkRefs","src","sanitizeHref","MarkdownImage","href","external","alt","open","setOpen","useState","Dialog","clean"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
function u(e) {
|
|
2
|
+
const a = [];
|
|
3
|
+
let n = "";
|
|
4
|
+
for (let t = 0; t < e.length; t++) {
|
|
5
|
+
t > 0 && (n += `
|
|
6
|
+
`);
|
|
7
|
+
const r = n.length;
|
|
8
|
+
n += e[t].text, n.length > r && a.push({ ja: r, jb: n.length, sa: e[t].start });
|
|
9
|
+
}
|
|
10
|
+
return { text: n, parts: a };
|
|
11
|
+
}
|
|
12
|
+
function c(e) {
|
|
13
|
+
return u([e]);
|
|
14
|
+
}
|
|
15
|
+
function f(e, a, n) {
|
|
16
|
+
const t = [];
|
|
17
|
+
for (const r of e.parts) {
|
|
18
|
+
if (r.jb <= a) continue;
|
|
19
|
+
if (r.ja >= n) break;
|
|
20
|
+
const o = Math.max(a, r.ja), s = Math.min(n, r.jb);
|
|
21
|
+
s > o && t.push({ start: r.sa + (o - r.ja), end: r.sa + (s - r.ja) });
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
}
|
|
25
|
+
function i(e, a, n) {
|
|
26
|
+
const t = f(e, a, n);
|
|
27
|
+
return t.length ? { start: t[0].start, end: t[t.length - 1].end } : null;
|
|
28
|
+
}
|
|
29
|
+
function l(e, a, n, t, r) {
|
|
30
|
+
if (!(!a || t <= n))
|
|
31
|
+
for (const o of f(e, n, t)) a.span(o.start, o.end, r);
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
i as hullOf,
|
|
35
|
+
u as makeSegments,
|
|
36
|
+
f as mapRange,
|
|
37
|
+
l as markRange,
|
|
38
|
+
c as segmentOf
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=spans.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spans.js","sources":["../../../../src/lib/syntax/markdown/spans.ts"],"sourcesContent":["/* ============================================================================\n SPANS — the one thing that lets a parse tree and a token list come out of a\n SINGLE pass over the document.\n\n THE PROBLEM. Markdown is the only language here that parses into a tree, but\n the editor still needs a flat `Token[]` covering the source exactly. Deriving\n those tokens from the tree afterwards is impossible: `MdNode` carries no\n offsets, so a second pass has to go looking for its own text with\n `indexOf` — which finds the wrong occurrence the moment a document repeats\n itself, and silently produces a token list that no longer lines up with the\n textarea underneath it.\n\n THE FIX IS A SINK. The parser is handed an optional `Sink` and reports every\n span it consumes AS IT CONSUMES IT, while it still knows the absolute offset.\n `parseMarkdown` passes no sink and pays nothing; the grammar passes one and\n gets a token list from the same parse the tree came from. One parse, two\n consumers, and no way for them to disagree about where anything is.\n\n SEGMENTS EXIST BECAUSE INLINE TEXT IS NOT CONTIGUOUS. The content of a\n blockquote paragraph is several source lines with `> ` cut off the front of\n each; a list item's is several lines with their indentation removed. The\n inline scanner wants one string, but a span in that string maps back to\n SEVERAL disjoint source ranges. `Segments` keeps that mapping, and\n `mapRange` is the only place a joined-text offset ever becomes a source\n offset — so the \"off by the width of a `> ` prefix\" class of bug has exactly\n one place it can live.\n ========================================================================= */\n\nimport type { TokenType } from \"../types\";\nimport type { Frame, Range } from \"./frames\";\n\n/** A run of source text with the absolute offset of its first character. */\nexport interface Piece {\n text: string;\n start: number;\n}\n\n/**\n * Pieces joined into one string for the inline scanner, plus the map back.\n *\n * The `\"\\n\"` inserted BETWEEN pieces is synthetic — in the source those two\n * lines may be separated by a newline plus a `> ` prefix, or by nothing at all.\n * It is deliberately covered by no part, so a span crossing it maps to two\n * source ranges and the prefix in between is left for the caller to have\n * already claimed.\n */\nexport interface Segments {\n text: string;\n parts: ReadonlyArray<{ ja: number; jb: number; sa: number }>;\n}\n\nexport function makeSegments(pieces: Piece[]): Segments {\n const parts: Array<{ ja: number; jb: number; sa: number }> = [];\n let text = \"\";\n for (let i = 0; i < pieces.length; i++) {\n if (i > 0) text += \"\\n\";\n const ja = text.length;\n text += pieces[i].text;\n /* Empty pieces carry no characters, so they can carry no mapping — an\n entry of zero width would make `mapRange` emit a reversed token. */\n if (text.length > ja) parts.push({ ja, jb: text.length, sa: pieces[i].start });\n }\n return { text, parts };\n}\n\n/** One line of prose is the common case; spelled out so callers do not build a\n single-element array by hand at forty call sites. */\nexport function segmentOf(piece: Piece): Segments {\n return makeSegments([piece]);\n}\n\n/**\n * Maps a joined-text range to the absolute source ranges it covers.\n *\n * Returns several ranges when the span crosses a piece boundary, and none when\n * it falls entirely on a synthetic separator.\n */\nexport function mapRange(seg: Segments, a: number, b: number): Array<{ start: number; end: number }> {\n const out: Array<{ start: number; end: number }> = [];\n for (const part of seg.parts) {\n if (part.jb <= a) continue;\n if (part.ja >= b) break;\n const from = Math.max(a, part.ja);\n const to = Math.min(b, part.jb);\n if (to > from) out.push({ start: part.sa + (from - part.ja), end: part.sa + (to - part.ja) });\n }\n return out;\n}\n\n/**\n * Where the parser reports what it consumed.\n *\n * `span` takes ABSOLUTE source offsets — never joined-text ones — because a\n * token that is right relative to some intermediate string is a token the\n * editor cannot use. `embed` is the entire nesting feature for markdown: the\n * grammar forwards it to `ctx.sub`, and a fenced block gets highlighted in its\n * own language with no code anywhere that knows which language that is.\n */\nexport interface Sink {\n span(start: number, end: number, type: TokenType): void;\n embed(code: string, language: string | null, at: number): void;\n /**\n * Opens a structural frame. `content` names the absolute source ranges this\n * frame holds as its own TEXT; omitting it means the frame is opaque and its\n * children claim what they need. See ./frames.ts for why that default.\n *\n * Required rather than optional so a new consumer cannot silently receive\n * spans without structure — the grammar, which genuinely wants only spans,\n * says so with an explicit no-op rather than by omission.\n */\n open(frame: Frame, start: number, content?: readonly Range[]): void;\n /**\n * Closes the innermost frame. `content` adds ranges the frame could not know\n * at open time — in practice its own trailing line terminator, which is not\n * known until the reader has found where the block ends.\n */\n close(end: number, content?: readonly Range[]): void;\n}\n\n/**\n * The source ranges a `Segments` covers — its parts, in absolute coordinates.\n *\n * This is the whole reason frames could reuse the existing bookkeeping: a\n * block's content ranges are ALREADY computed, as the pieces it cut its\n * prefixes off to build. Deriving them a second time is how the two would drift.\n */\nexport function contentOf(seg: Segments): Range[] {\n return seg.parts.map((part) => ({ start: part.sa, end: part.sa + (part.jb - part.ja) }));\n}\n\n/** The absolute range spanned by a joined-text range, prefixes included.\n *\n * Deliberately the OUTER hull rather than the list `mapRange` returns: a\n * frame's interval must contain the `> ` prefixes sitting between its pieces,\n * or the frames those prefixes belong to would not nest inside it. The pieces\n * themselves are what `contentOf`/`mapRange` report; this is the envelope. */\nexport function hullOf(seg: Segments, a: number, b: number): Range | null {\n const ranges = mapRange(seg, a, b);\n if (!ranges.length) return null;\n return { start: ranges[0].start, end: ranges[ranges.length - 1].end };\n}\n\n/** Reports a joined-text range, split across pieces, at one token type. */\nexport function markRange(seg: Segments, sink: Sink | undefined, a: number, b: number, type: TokenType): void {\n if (!sink || b <= a) return;\n for (const r of mapRange(seg, a, b)) sink.span(r.start, r.end, type);\n}\n"],"names":["makeSegments","pieces","parts","text","i","ja","segmentOf","piece","mapRange","seg","b","out","part","from","to","hullOf","ranges","markRange","sink","a","type","r"],"mappings":"AAmDO,SAASA,EAAaC,GAA2B;AACtD,QAAMC,IAAuD,CAAA;AAC7D,MAAIC,IAAO;AACX,WAASC,IAAI,GAAGA,IAAIH,EAAO,QAAQG,KAAK;AACtC,IAAIA,IAAI,MAAGD,KAAQ;AAAA;AACnB,UAAME,IAAKF,EAAK;AAChB,IAAAA,KAAQF,EAAOG,CAAC,EAAE,MAGdD,EAAK,SAASE,KAAIH,EAAM,KAAK,EAAE,IAAAG,GAAI,IAAIF,EAAK,QAAQ,IAAIF,EAAOG,CAAC,EAAE,OAAO;AAAA,EAC/E;AACA,SAAO,EAAE,MAAAD,GAAM,OAAAD,EAAA;AACjB;AAIO,SAASI,EAAUC,GAAwB;AAChD,SAAOP,EAAa,CAACO,CAAK,CAAC;AAC7B;AAQO,SAASC,EAASC,GAAe,GAAWC,GAAkD;AACnG,QAAMC,IAA6C,CAAA;AACnD,aAAWC,KAAQH,EAAI,OAAO;AAC5B,QAAIG,EAAK,MAAM,EAAG;AAClB,QAAIA,EAAK,MAAMF,EAAG;AAClB,UAAMG,IAAO,KAAK,IAAI,GAAGD,EAAK,EAAE,GAC1BE,IAAK,KAAK,IAAIJ,GAAGE,EAAK,EAAE;AAC9B,IAAIE,IAAKD,KAAMF,EAAI,KAAK,EAAE,OAAOC,EAAK,MAAMC,IAAOD,EAAK,KAAK,KAAKA,EAAK,MAAME,IAAKF,EAAK,KAAK;AAAA,EAC9F;AACA,SAAOD;AACT;AAiDO,SAASI,EAAON,GAAe,GAAWC,GAAyB;AACxE,QAAMM,IAASR,EAASC,GAAK,GAAGC,CAAC;AACjC,SAAKM,EAAO,SACL,EAAE,OAAOA,EAAO,CAAC,EAAE,OAAO,KAAKA,EAAOA,EAAO,SAAS,CAAC,EAAE,IAAA,IADrC;AAE7B;AAGO,SAASC,EAAUR,GAAeS,GAAwBC,GAAWT,GAAWU,GAAuB;AAC5G,MAAI,GAACF,KAAQR,KAAKS;AAClB,eAAWE,KAAKb,EAASC,GAAKU,GAAGT,CAAC,EAAG,CAAAQ,EAAK,KAAKG,EAAE,OAAOA,EAAE,KAAKD,CAAI;AACrE;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
function f(e) {
|
|
2
|
+
const t = {};
|
|
3
|
+
for (const [o, s] of Object.entries(e.states))
|
|
4
|
+
t[o] = s.map((n, c) => {
|
|
5
|
+
const i = `${e.name}.${o}[${c}]`;
|
|
6
|
+
if (n.token && n.groups)
|
|
7
|
+
throw new Error(`${i}: a rule sets both token and groups; pick one`);
|
|
8
|
+
if (n.embed && !n.until)
|
|
9
|
+
throw new Error(`${i}: embed needs until, or the region never ends`);
|
|
10
|
+
if (n.push && n.pop)
|
|
11
|
+
throw new Error(`${i}: a rule cannot push and pop at once`);
|
|
12
|
+
if (n.push && !e.states[n.push])
|
|
13
|
+
throw new Error(`${i}: pushes state "${n.push}", which does not exist`);
|
|
14
|
+
return {
|
|
15
|
+
...n,
|
|
16
|
+
match: a(n.match),
|
|
17
|
+
until: n.until ? a(n.until) : void 0
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
if (!e.tokenize && !t.root)
|
|
21
|
+
throw new Error(`${e.name}: needs a root state or a tokenize override`);
|
|
22
|
+
return { ...e, states: t };
|
|
23
|
+
}
|
|
24
|
+
function a(e) {
|
|
25
|
+
let t = e.flags;
|
|
26
|
+
return t.includes("y") || (t += "y"), t.includes("d") || (t += "d"), t = t.replace("g", ""), new RegExp(e.source, t);
|
|
27
|
+
}
|
|
28
|
+
const r = /* @__PURE__ */ new Map();
|
|
29
|
+
function h(e) {
|
|
30
|
+
const t = [e.name, ...e.aliases ?? []];
|
|
31
|
+
for (const o of t) {
|
|
32
|
+
const s = o.toLowerCase(), n = r.get(s);
|
|
33
|
+
if (n && n.name !== e.name)
|
|
34
|
+
throw new Error(`language "${o}" is claimed by both ${n.name} and ${e.name}`);
|
|
35
|
+
r.set(s, e);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function u(e) {
|
|
39
|
+
if (e)
|
|
40
|
+
return r.get(e.trim().toLowerCase());
|
|
41
|
+
}
|
|
42
|
+
function p(e) {
|
|
43
|
+
return u(e)?.name ?? null;
|
|
44
|
+
}
|
|
45
|
+
function w() {
|
|
46
|
+
return [...new Set([...r.values()].map((e) => e.name))].sort();
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
f as defineGrammar,
|
|
50
|
+
u as getGrammar,
|
|
51
|
+
w as listLanguages,
|
|
52
|
+
h as registerGrammar,
|
|
53
|
+
p as resolveLanguage
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sources":["../../../src/lib/syntax/registry.ts"],"sourcesContent":["import type { Grammar, Rule } from \"./types\";\n\n/**\n * Normalises and checks a grammar at definition time, so a malformed rule fails\n * where it was written rather than as slightly-wrong colours in a browser.\n *\n * Every pattern is rebuilt with two flags forced on:\n *\n * `y` (sticky) — a plain regex SEARCHES FORWARD from the position, so a rule\n * can match text the scanner has not reached yet and silently swallow\n * everything in between. Sticky anchors it to exactly where the scanner is.\n *\n * `d` (hasIndices) — `groups` needs the offset of each capture, and\n * `match.indices` is the only way to get it that survives optional groups.\n *\n * Forcing them beats throwing on their absence: a grammar author writes an\n * ordinary regex and the one thing they could get subtly wrong is unreachable.\n */\nexport function defineGrammar(grammar: Grammar): Grammar {\n const states: Record<string, Rule[]> = {};\n\n for (const [state, rules] of Object.entries(grammar.states)) {\n states[state] = rules.map((rule, i) => {\n const where = `${grammar.name}.${state}[${i}]`;\n\n if (rule.token && rule.groups) {\n throw new Error(`${where}: a rule sets both token and groups; pick one`);\n }\n if (rule.embed && !rule.until) {\n throw new Error(`${where}: embed needs until, or the region never ends`);\n }\n if (rule.push && rule.pop) {\n throw new Error(`${where}: a rule cannot push and pop at once`);\n }\n if (rule.push && !grammar.states[rule.push]) {\n throw new Error(`${where}: pushes state \"${rule.push}\", which does not exist`);\n }\n\n return {\n ...rule,\n match: sticky(rule.match),\n until: rule.until ? sticky(rule.until) : undefined,\n };\n });\n }\n\n if (!grammar.tokenize && !states.root) {\n throw new Error(`${grammar.name}: needs a root state or a tokenize override`);\n }\n\n return { ...grammar, states };\n}\n\nfunction sticky(re: RegExp): RegExp {\n let flags = re.flags;\n if (!flags.includes(\"y\")) flags += \"y\";\n if (!flags.includes(\"d\")) flags += \"d\";\n /* `g` and `y` together make lastIndex behave inconsistently across engines\n for a pattern that can match empty — drop it, the scanner drives position\n explicitly. */\n flags = flags.replace(\"g\", \"\");\n return new RegExp(re.source, flags);\n}\n\n/* --- The registry --------------------------------------------------------- */\n\nconst byName = new Map<string, Grammar>();\n\n/**\n * Registered explicitly from a VALUE import rather than by each language module\n * importing the registry for its side effect. `package.json` declares\n * `sideEffects: [\"*.css\"]`, which tells every bundler a bare `import \"./x\"` of\n * a `.ts` module is safe to delete — and esbuild does. That already cost this\n * project its entire icon set once (CAV-11); the registry that a table is\n * pushed INTO cannot be pruned while the table is reachable.\n */\nexport function registerGrammar(grammar: Grammar): void {\n const names = [grammar.name, ...(grammar.aliases ?? [])];\n for (const name of names) {\n const key = name.toLowerCase();\n const existing = byName.get(key);\n if (existing && existing.name !== grammar.name) {\n throw new Error(`language \"${name}\" is claimed by both ${existing.name} and ${grammar.name}`);\n }\n byName.set(key, grammar);\n }\n}\n\n/**\n * Looks up a language by name or alias. Returns undefined for anything\n * unregistered — callers render it as plain text, because an unknown language\n * on a code block must never be an error. The block still has to be readable.\n */\nexport function getGrammar(language: string | null | undefined): Grammar | undefined {\n if (!language) return undefined;\n return byName.get(language.trim().toLowerCase());\n}\n\n/** The canonical name for an alias — `ts` becomes `typescript`. */\nexport function resolveLanguage(language: string | null | undefined): string | null {\n return getGrammar(language)?.name ?? null;\n}\n\n/** Every registered language, canonical names only, sorted. Drives the picker. */\nexport function listLanguages(): string[] {\n return [...new Set([...byName.values()].map((g) => g.name))].sort();\n}\n"],"names":["defineGrammar","grammar","states","state","rules","rule","i","where","sticky","re","flags","byName","registerGrammar","names","name","key","existing","getGrammar","language","resolveLanguage","listLanguages","g"],"mappings":"AAkBO,SAASA,EAAcC,GAA2B;AACvD,QAAMC,IAAiC,CAAA;AAEvC,aAAW,CAACC,GAAOC,CAAK,KAAK,OAAO,QAAQH,EAAQ,MAAM;AACxD,IAAAC,EAAOC,CAAK,IAAIC,EAAM,IAAI,CAACC,GAAMC,MAAM;AACrC,YAAMC,IAAQ,GAAGN,EAAQ,IAAI,IAAIE,CAAK,IAAIG,CAAC;AAE3C,UAAID,EAAK,SAASA,EAAK;AACrB,cAAM,IAAI,MAAM,GAAGE,CAAK,+CAA+C;AAEzE,UAAIF,EAAK,SAAS,CAACA,EAAK;AACtB,cAAM,IAAI,MAAM,GAAGE,CAAK,+CAA+C;AAEzE,UAAIF,EAAK,QAAQA,EAAK;AACpB,cAAM,IAAI,MAAM,GAAGE,CAAK,sCAAsC;AAEhE,UAAIF,EAAK,QAAQ,CAACJ,EAAQ,OAAOI,EAAK,IAAI;AACxC,cAAM,IAAI,MAAM,GAAGE,CAAK,mBAAmBF,EAAK,IAAI,yBAAyB;AAG/E,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,OAAOG,EAAOH,EAAK,KAAK;AAAA,QACxB,OAAOA,EAAK,QAAQG,EAAOH,EAAK,KAAK,IAAI;AAAA,MAAA;AAAA,IAE7C,CAAC;AAGH,MAAI,CAACJ,EAAQ,YAAY,CAACC,EAAO;AAC/B,UAAM,IAAI,MAAM,GAAGD,EAAQ,IAAI,6CAA6C;AAG9E,SAAO,EAAE,GAAGA,GAAS,QAAAC,EAAA;AACvB;AAEA,SAASM,EAAOC,GAAoB;AAClC,MAAIC,IAAQD,EAAG;AACf,SAAKC,EAAM,SAAS,GAAG,MAAGA,KAAS,MAC9BA,EAAM,SAAS,GAAG,MAAGA,KAAS,MAInCA,IAAQA,EAAM,QAAQ,KAAK,EAAE,GACtB,IAAI,OAAOD,EAAG,QAAQC,CAAK;AACpC;AAIA,MAAMC,wBAAa,IAAA;AAUZ,SAASC,EAAgBX,GAAwB;AACtD,QAAMY,IAAQ,CAACZ,EAAQ,MAAM,GAAIA,EAAQ,WAAW,EAAG;AACvD,aAAWa,KAAQD,GAAO;AACxB,UAAME,IAAMD,EAAK,YAAA,GACXE,IAAWL,EAAO,IAAII,CAAG;AAC/B,QAAIC,KAAYA,EAAS,SAASf,EAAQ;AACxC,YAAM,IAAI,MAAM,aAAaa,CAAI,wBAAwBE,EAAS,IAAI,QAAQf,EAAQ,IAAI,EAAE;AAE9F,IAAAU,EAAO,IAAII,GAAKd,CAAO;AAAA,EACzB;AACF;AAOO,SAASgB,EAAWC,GAA0D;AACnF,MAAKA;AACL,WAAOP,EAAO,IAAIO,EAAS,KAAA,EAAO,aAAa;AACjD;AAGO,SAASC,EAAgBD,GAAoD;AAClF,SAAOD,EAAWC,CAAQ,GAAG,QAAQ;AACvC;AAGO,SAASE,IAA0B;AACxC,SAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAGT,EAAO,OAAA,CAAQ,EAAE,IAAI,CAACU,MAAMA,EAAE,IAAI,CAAC,CAAC,EAAE,KAAA;AAC/D;"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { getGrammar as k } from "./registry.js";
|
|
2
|
+
const y = 12;
|
|
3
|
+
function z(n, i) {
|
|
4
|
+
return $(n, k(i), 0, 0);
|
|
5
|
+
}
|
|
6
|
+
function $(n, i, t, e) {
|
|
7
|
+
if (!n) return [];
|
|
8
|
+
if (!i || e > y)
|
|
9
|
+
return [{ start: t, end: t + n.length, type: "text", lang: i?.name ?? "text" }];
|
|
10
|
+
if (i.tokenize) {
|
|
11
|
+
const o = {
|
|
12
|
+
sub: (c, r, s) => $(c, k(r), s, e + 1)
|
|
13
|
+
};
|
|
14
|
+
return f(i.tokenize(n, o), t);
|
|
15
|
+
}
|
|
16
|
+
return m(n, i, t, e);
|
|
17
|
+
}
|
|
18
|
+
function f(n, i) {
|
|
19
|
+
return i === 0 ? n : n.map((t) => ({ ...t, start: t.start + i, end: t.end + i }));
|
|
20
|
+
}
|
|
21
|
+
function m(n, i, t, e) {
|
|
22
|
+
const o = [], c = ["root"];
|
|
23
|
+
let r = 0, s = 0;
|
|
24
|
+
const a = () => {
|
|
25
|
+
r > s && x(o, t + s, t + r, "text", i.name), s = r;
|
|
26
|
+
};
|
|
27
|
+
for (; r < n.length; ) {
|
|
28
|
+
const d = c[c.length - 1], h = i.states[d] ?? [];
|
|
29
|
+
let l = !1;
|
|
30
|
+
for (let g = 0; g < h.length; g++) {
|
|
31
|
+
const u = h[g];
|
|
32
|
+
u.match.lastIndex = r;
|
|
33
|
+
const p = u.match.exec(n);
|
|
34
|
+
if (!(!p || p.index !== r)) {
|
|
35
|
+
if (p[0].length === 0)
|
|
36
|
+
throw new Error(`${i.name}.${d}[${g}] matched empty at ${r}`);
|
|
37
|
+
a(), w(o, p, u, t, i.name), r += p[0].length, u.embed ? r = v(n, p, u, o, i, t, e, r) : u.push ? c.push(u.push) : u.pop && c.length > 1 && c.pop(), s = r, l = !0;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
l || (r += 1);
|
|
42
|
+
}
|
|
43
|
+
return r = n.length, a(), o;
|
|
44
|
+
}
|
|
45
|
+
function v(n, i, t, e, o, c, r, s) {
|
|
46
|
+
const a = typeof t.embed == "function" ? t.embed(i) : t.embed, d = t.until, h = new RegExp(d.source, d.flags.replace("y", "") + "g");
|
|
47
|
+
h.lastIndex = s;
|
|
48
|
+
const l = h.exec(n), g = l ? l.index : n.length, u = n.slice(s, g);
|
|
49
|
+
if (u) {
|
|
50
|
+
const p = $(u, k(a), c + s, r + 1);
|
|
51
|
+
for (const b of p) e.push(b);
|
|
52
|
+
}
|
|
53
|
+
return l ? (x(e, c + l.index, c + l.index + l[0].length, t.untilToken ?? "punctuation", o.name), l.index + l[0].length) : n.length;
|
|
54
|
+
}
|
|
55
|
+
function w(n, i, t, e, o) {
|
|
56
|
+
const c = i.index, r = c + i[0].length;
|
|
57
|
+
if (t.token) {
|
|
58
|
+
x(n, e + c, e + r, t.token, o);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (t.groups) {
|
|
62
|
+
const s = i.indices;
|
|
63
|
+
let a = c;
|
|
64
|
+
for (let d = 0; d < t.groups.length; d++) {
|
|
65
|
+
const h = s?.[d + 1];
|
|
66
|
+
h && (h[0] > a && x(n, e + a, e + h[0], "text", o), x(n, e + h[0], e + h[1], t.groups[d] ?? "text", o), a = h[1]);
|
|
67
|
+
}
|
|
68
|
+
a < r && x(n, e + a, e + r, "text", o);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
x(n, e + c, e + r, "text", o);
|
|
72
|
+
}
|
|
73
|
+
function x(n, i, t, e, o) {
|
|
74
|
+
if (t <= i) return;
|
|
75
|
+
const c = n[n.length - 1];
|
|
76
|
+
if (c && c.end === i && c.type === e && c.lang === o) {
|
|
77
|
+
c.end = t;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
n.push({ start: i, end: t, type: e, lang: o });
|
|
81
|
+
}
|
|
82
|
+
function T(n, i) {
|
|
83
|
+
let t = 0;
|
|
84
|
+
for (const e of i) {
|
|
85
|
+
if (e.start !== t)
|
|
86
|
+
return e.start < t ? `token at ${e.start} overlaps the previous one, which ended at ${t}` : `gap in coverage from ${t} to ${e.start}`;
|
|
87
|
+
if (e.end <= e.start) return `empty or reversed token at ${e.start}`;
|
|
88
|
+
t = e.end;
|
|
89
|
+
}
|
|
90
|
+
return t !== n.length ? `coverage stops at ${t} of ${n.length}` : null;
|
|
91
|
+
}
|
|
92
|
+
export {
|
|
93
|
+
T as checkCoverage,
|
|
94
|
+
z as tokenize
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=tokenize.js.map
|