@orbit-work/ui 0.1.1 → 0.1.2
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/README.md +59 -57
- package/dist/about-window.cjs +271 -1
- package/dist/about-window.cjs.map +1 -0
- package/dist/about-window.d.cts +20 -2
- package/dist/about-window.d.ts +20 -2
- package/dist/about-window.js +271 -1
- package/dist/about-window.js.map +1 -0
- package/dist/appearance-D7uh_ZTy.d.cts +192 -0
- package/dist/appearance-D7uh_ZTy.d.ts +192 -0
- package/dist/appearance.cjs +39 -1
- package/dist/appearance.cjs.map +1 -0
- package/dist/appearance.d.cts +1 -1
- package/dist/appearance.d.ts +1 -1
- package/dist/appearance.js +39 -1
- package/dist/appearance.js.map +1 -0
- package/dist/browser-annotation-popup.cjs +9 -1
- package/dist/browser-annotation-popup.cjs.map +1 -0
- package/dist/browser-annotation-popup.d.cts +6 -6
- package/dist/browser-annotation-popup.d.ts +6 -6
- package/dist/browser-annotation-popup.js +9 -1
- package/dist/browser-annotation-popup.js.map +1 -0
- package/dist/chunk-66VEV7G2.js +111 -0
- package/dist/chunk-66VEV7G2.js.map +1 -0
- package/dist/chunk-KRP43SUA.cjs +1130 -0
- package/dist/chunk-KRP43SUA.cjs.map +1 -0
- package/dist/chunk-QS55W5Q5.cjs +111 -0
- package/dist/chunk-QS55W5Q5.cjs.map +1 -0
- package/dist/chunk-S3R5QFO4.js +1130 -0
- package/dist/chunk-S3R5QFO4.js.map +1 -0
- package/dist/chunk-UT5LC6MR.js +38 -0
- package/dist/chunk-UT5LC6MR.js.map +1 -0
- package/dist/chunk-ZZTEY4YX.cjs +38 -0
- package/dist/chunk-ZZTEY4YX.cjs.map +1 -0
- package/dist/core.css +7886 -0
- package/dist/file-tree.css +85 -0
- package/dist/index-nLo7jMlP.d.cts +166 -0
- package/dist/index-nLo7jMlP.d.ts +166 -0
- package/dist/index.cjs +39161 -26
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3785 -3031
- package/dist/index.d.ts +3785 -3031
- package/dist/index.js +39161 -26
- package/dist/index.js.map +1 -0
- package/dist/locale.cjs +15 -0
- package/dist/locale.cjs.map +1 -0
- package/dist/locale.d.cts +28 -0
- package/dist/locale.d.ts +28 -0
- package/dist/locale.js +15 -0
- package/dist/locale.js.map +1 -0
- package/dist/office.css +1146 -0
- package/dist/slot-core.cjs +200 -0
- package/dist/slot-core.cjs.map +1 -0
- package/dist/slot-core.d.cts +146 -0
- package/dist/slot-core.d.ts +146 -0
- package/dist/slot-core.js +200 -0
- package/dist/slot-core.js.map +1 -0
- package/dist/slot-react.cjs +153 -0
- package/dist/slot-react.cjs.map +1 -0
- package/dist/slot-react.d.cts +36 -0
- package/dist/slot-react.d.ts +36 -0
- package/dist/slot-react.js +153 -0
- package/dist/slot-react.js.map +1 -0
- package/dist/tailwind.css +137 -0
- package/dist/workbench.css +9014 -0
- package/package.json +112 -47
- package/dist/appearance-D5uQ53j3.d.cts +0 -210
- package/dist/appearance-D5uQ53j3.d.ts +0 -210
- package/dist/chunk-3KT7IU4X.js +0 -13
- package/dist/chunk-5VLBKOG7.cjs +0 -194
- package/dist/chunk-7YJY64LZ.js +0 -82
- package/dist/chunk-EF2BSN3K.cjs +0 -13
- package/dist/chunk-GMMYDILD.cjs +0 -82
- package/dist/chunk-VG7FQQ7K.js +0 -194
- package/dist/fonts/JetBrainsMono-Medium.ttf +0 -0
- package/dist/fonts/JetBrainsMono-Regular.ttf +0 -0
- package/dist/fonts/SpaceGrotesk-700-latin-ext.woff2 +0 -0
- package/dist/fonts/SpaceGrotesk-700-latin.woff2 +0 -0
- package/dist/index.css +0 -1
- package/dist/orbitwork.css +0 -22145
- package/src/components/Layout/AppLayout/AppLayout.stories.tsx +0 -246
- package/src/components/Layout/AppLayout/AppLayoutSource.test.mjs +0 -37
- package/src/components/Layout/AppLayout/index.tsx +0 -122
- package/src/components/Layout/Sidebar/index.tsx +0 -13
- package/src/components/Layout/SidebarShell/SidebarShell.stories.tsx +0 -676
- package/src/components/Layout/SidebarShell/SidebarShellSource.test.mjs +0 -161
- package/src/components/Layout/SidebarShell/index.tsx +0 -326
- package/src/components/Layout/index.ts +0 -10
- package/src/components/composite/ActionBar/ActionBar.stories.tsx +0 -26
- package/src/components/composite/ActionBar/index.tsx +0 -31
- package/src/components/composite/ActionStatus/ActionStatus.stories.tsx +0 -60
- package/src/components/composite/ActionStatus/index.tsx +0 -21
- package/src/components/composite/AskQuestionCardView/AskQuestionCardView.stories.tsx +0 -175
- package/src/components/composite/AskQuestionCardView/AskQuestionCardViewSource.test.mjs +0 -92
- package/src/components/composite/AskQuestionCardView/index.tsx +0 -119
- package/src/components/composite/AssistantChannelCard/AssistantChannelCard.stories.tsx +0 -265
- package/src/components/composite/AssistantChannelCard/AssistantChannelCardSource.test.mjs +0 -45
- package/src/components/composite/AssistantChannelCard/index.tsx +0 -102
- package/src/components/composite/AssistantToggleRow/AssistantToggleRow.stories.tsx +0 -197
- package/src/components/composite/AssistantToggleRow/index.tsx +0 -35
- package/src/components/composite/AttachmentCard/AttachmentCard.stories.tsx +0 -125
- package/src/components/composite/AttachmentCard/index.tsx +0 -80
- package/src/components/composite/BackButton/BackButton.stories.tsx +0 -93
- package/src/components/composite/BackButton/BackButtonSource.test.mjs +0 -29
- package/src/components/composite/BackButton/index.tsx +0 -48
- package/src/components/composite/Banner/Banner.stories.tsx +0 -180
- package/src/components/composite/Banner/BannerSource.test.mjs +0 -67
- package/src/components/composite/Banner/index.tsx +0 -125
- package/src/components/composite/BeaconIcons/BeaconIcons.stories.tsx +0 -153
- package/src/components/composite/BeaconIcons/index.tsx +0 -265
- package/src/components/composite/BeaconSpinner/BeaconSpinner.stories.tsx +0 -144
- package/src/components/composite/BeaconSpinner/index.tsx +0 -185
- package/src/components/composite/CatalogStates/CatalogEmptyState.stories.tsx +0 -108
- package/src/components/composite/CatalogStates/CatalogStates.stories.tsx +0 -53
- package/src/components/composite/CatalogStates/CatalogStatesSource.test.mjs +0 -149
- package/src/components/composite/CatalogStates/index.tsx +0 -113
- package/src/components/composite/Charts/Charts.stories.tsx +0 -174
- package/src/components/composite/Charts/ChartsSource.test.mjs +0 -111
- package/src/components/composite/Charts/index.tsx +0 -385
- package/src/components/composite/CodeBlock/CodeBlock.stories.tsx +0 -308
- package/src/components/composite/CodeBlock/CodeFaceSource.test.mjs +0 -89
- package/src/components/composite/CodeBlock/index.tsx +0 -300
- package/src/components/composite/CodeDiff/CodeDiff.stories.tsx +0 -169
- package/src/components/composite/CodeDiff/index.tsx +0 -373
- package/src/components/composite/CodePreview/CodePreview.stories.tsx +0 -127
- package/src/components/composite/CodePreview/CodePreviewSource.test.mjs +0 -43
- package/src/components/composite/CodePreview/index.tsx +0 -98
- package/src/components/composite/CommandPalette/CommandPalette.stories.tsx +0 -89
- package/src/components/composite/CommandPalette/CommandPaletteSource.test.mjs +0 -61
- package/src/components/composite/CommandPalette/index.tsx +0 -310
- package/src/components/composite/ContentRecommendation/ContentRecommendation.stories.tsx +0 -300
- package/src/components/composite/ContentRecommendation/ContentRecommendationSource.test.mjs +0 -48
- package/src/components/composite/ContentRecommendation/index.tsx +0 -116
- package/src/components/composite/ContextChip/ContextChip.stories.tsx +0 -123
- package/src/components/composite/ContextChip/ContextChipSource.test.mjs +0 -24
- package/src/components/composite/ContextChip/index.tsx +0 -25
- package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorSizeSource.test.mjs +0 -15
- package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorView.stories.tsx +0 -110
- package/src/components/composite/ContextUsageIndicatorView/ContextUsageLoadingSource.test.mjs +0 -23
- package/src/components/composite/ContextUsageIndicatorView/index.tsx +0 -139
- package/src/components/composite/Controls/Controls.stories.tsx +0 -227
- package/src/components/composite/Controls/index.tsx +0 -15
- package/src/components/composite/CreateProjectDialog/CreateProjectDialog.stories.tsx +0 -56
- package/src/components/composite/CreateProjectDialog/index.tsx +0 -70
- package/src/components/composite/DataManagementSectionView/DataManagementSectionView.stories.tsx +0 -123
- package/src/components/composite/DataManagementSectionView/DataManagementSectionViewSource.test.mjs +0 -45
- package/src/components/composite/DataManagementSectionView/index.tsx +0 -110
- package/src/components/composite/DataTable/DataTable.stories.tsx +0 -159
- package/src/components/composite/DataTable/DataTableSource.test.mjs +0 -96
- package/src/components/composite/DataTable/index.tsx +0 -373
- package/src/components/composite/DetailChrome/DetailChrome.stories.tsx +0 -61
- package/src/components/composite/DetailChrome/DetailChromeSource.test.mjs +0 -31
- package/src/components/composite/DetailChrome/index.tsx +0 -94
- package/src/components/composite/DetailPanel/DetailPanel.stories.tsx +0 -185
- package/src/components/composite/DetailPanel/DetailPanelSource.test.mjs +0 -49
- package/src/components/composite/DetailPanel/index.tsx +0 -120
- package/src/components/composite/DetailScaffold/DetailScaffold.stories.tsx +0 -203
- package/src/components/composite/DetailScaffold/DetailScaffoldSource.test.mjs +0 -38
- package/src/components/composite/DetailScaffold/index.tsx +0 -114
- package/src/components/composite/Dialog/Dialog.stories.tsx +0 -343
- package/src/components/composite/Dialog/DialogSource.test.mjs +0 -130
- package/src/components/composite/Dialog/index.tsx +0 -333
- package/src/components/composite/DropZone/DropZone.stories.tsx +0 -105
- package/src/components/composite/DropZone/DropZoneSource.test.mjs +0 -68
- package/src/components/composite/DropZone/index.tsx +0 -196
- package/src/components/composite/FSelect/FSelect.stories.tsx +0 -64
- package/src/components/composite/FSelect/index.tsx +0 -29
- package/src/components/composite/FeedbackContextMenuView/FeedbackContextMenuView.stories.tsx +0 -106
- package/src/components/composite/FeedbackContextMenuView/index.tsx +0 -51
- package/src/components/composite/FeedbackDialogView/FeedbackDialogView.stories.tsx +0 -291
- package/src/components/composite/FeedbackDialogView/index.tsx +0 -95
- package/src/components/composite/FileReferenceCard/FileReferenceCard.stories.tsx +0 -364
- package/src/components/composite/FileReferenceCard/FileReferenceCardSource.test.mjs +0 -48
- package/src/components/composite/FileReferenceCard/index.tsx +0 -122
- package/src/components/composite/FilterBar/FilterBar.stories.tsx +0 -167
- package/src/components/composite/FilterBar/FilterBarSource.test.mjs +0 -75
- package/src/components/composite/FilterBar/index.tsx +0 -206
- package/src/components/composite/FormField/FormField.stories.tsx +0 -158
- package/src/components/composite/FormField/FormFieldSource.test.mjs +0 -56
- package/src/components/composite/FormField/index.tsx +0 -219
- package/src/components/composite/HomeBackdrop/HomeBackdrop.stories.tsx +0 -54
- package/src/components/composite/HomeBackdrop/HomeBackdropSource.test.mjs +0 -50
- package/src/components/composite/HomeBackdrop/index.tsx +0 -53
- package/src/components/composite/Icons/Icons.stories.tsx +0 -153
- package/src/components/composite/Icons/IconsSource.test.mjs +0 -23
- package/src/components/composite/Icons/index.tsx +0 -1361
- package/src/components/composite/ImageCard/ImageCard.stories.tsx +0 -54
- package/src/components/composite/ImageCard/index.tsx +0 -33
- package/src/components/composite/ImagePreview/ImagePreview.stories.tsx +0 -172
- package/src/components/composite/ImagePreview/ImagePreviewSource.test.mjs +0 -95
- package/src/components/composite/ImagePreview/index.tsx +0 -339
- package/src/components/composite/ListRow/ListRow.stories.tsx +0 -257
- package/src/components/composite/ListRow/ListRowSource.test.mjs +0 -101
- package/src/components/composite/ListRow/index.tsx +0 -309
- package/src/components/composite/Markdown/Markdown.stories.tsx +0 -192
- package/src/components/composite/Markdown/MarkdownSource.test.mjs +0 -126
- package/src/components/composite/Markdown/MarkdownStyleSource.test.mjs +0 -152
- package/src/components/composite/Markdown/index.tsx +0 -702
- package/src/components/composite/MarkdownPreview/MarkdownPreview.stories.tsx +0 -174
- package/src/components/composite/MarkdownPreview/MarkdownPreviewTabsSource.test.mjs +0 -31
- package/src/components/composite/MarkdownPreview/MarkdownRenderedStyleSource.test.mjs +0 -84
- package/src/components/composite/MarkdownPreview/index.tsx +0 -140
- package/src/components/composite/MarkdownPreviewModalView/MarkdownPreviewModalView.stories.tsx +0 -104
- package/src/components/composite/MarkdownPreviewModalView/index.tsx +0 -85
- package/src/components/composite/MessageFeedbackDialog/MessageFeedbackDialog.stories.tsx +0 -66
- package/src/components/composite/MessageFeedbackDialog/index.tsx +0 -115
- package/src/components/composite/ModelCatalogErrorState/ModelCatalogErrorState.stories.tsx +0 -101
- package/src/components/composite/ModelCatalogErrorState/ModelCatalogRetrySource.test.mjs +0 -86
- package/src/components/composite/ModelCatalogErrorState/index.tsx +0 -59
- package/src/components/composite/ModelModalityFlow/ModelModalityFlow.stories.tsx +0 -224
- package/src/components/composite/ModelModalityFlow/ModelModalityFlowSource.test.mjs +0 -56
- package/src/components/composite/ModelModalityFlow/index.tsx +0 -113
- package/src/components/composite/ModelPickerList/ModelPickerList.stories.tsx +0 -313
- package/src/components/composite/ModelPickerList/index.tsx +0 -142
- package/src/components/composite/ModelSelect/ModelSelect.stories.tsx +0 -90
- package/src/components/composite/ModelSelect/index.tsx +0 -148
- package/src/components/composite/ModelsSettingsSectionView/ModelsSettingsSectionView.stories.tsx +0 -170
- package/src/components/composite/ModelsSettingsSectionView/index.tsx +0 -139
- package/src/components/composite/NativeControls/NativeControls.stories.tsx +0 -386
- package/src/components/composite/NativeControls/NativeControlsStyleSource.test.mjs +0 -63
- package/src/components/composite/NativeControls/index.tsx +0 -97
- package/src/components/composite/NavMenu/NavMenu.stories.tsx +0 -383
- package/src/components/composite/NavMenu/NavMenuSource.test.mjs +0 -56
- package/src/components/composite/NavMenu/index.tsx +0 -142
- package/src/components/composite/NoPlanPanelView/NoPlanPanelView.stories.tsx +0 -344
- package/src/components/composite/NoPlanPanelView/NoPlanPanelViewSource.test.mjs +0 -34
- package/src/components/composite/NoPlanPanelView/index.tsx +0 -97
- package/src/components/composite/OpenWithButton/OpenWithButton.stories.tsx +0 -78
- package/src/components/composite/OpenWithButton/index.tsx +0 -46
- package/src/components/composite/OrbitworkLogo/OrbitworkLogo.stories.tsx +0 -192
- package/src/components/composite/OrbitworkLogo/index.tsx +0 -207
- package/src/components/composite/OrbitworkModal/OrbitworkModal.stories.tsx +0 -58
- package/src/components/composite/OrbitworkModal/index.tsx +0 -31
- package/src/components/composite/PageHead/PageHead.stories.tsx +0 -235
- package/src/components/composite/PageHead/PageHeadSource.test.mjs +0 -76
- package/src/components/composite/PageHead/index.tsx +0 -128
- package/src/components/composite/PlanFeatureIcon/PlanFeatureIcon.stories.tsx +0 -205
- package/src/components/composite/PlanFeatureIcon/PlanFeatureIconSource.test.mjs +0 -38
- package/src/components/composite/PlanFeatureIcon/index.tsx +0 -48
- package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionView.stories.tsx +0 -231
- package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionViewSource.test.mjs +0 -85
- package/src/components/composite/PlanSettingsSectionView/index.tsx +0 -264
- package/src/components/composite/Popover/Popover.stories.tsx +0 -175
- package/src/components/composite/Popover/PopoverSource.test.mjs +0 -59
- package/src/components/composite/Popover/index.tsx +0 -176
- package/src/components/composite/PptxRenderer/ElementDispatcher/index.tsx +0 -70
- package/src/components/composite/PptxRenderer/PptxChromeStyleSource.test.mjs +0 -36
- package/src/components/composite/PptxRenderer/PptxRenderer.stories.tsx +0 -128
- package/src/components/composite/PptxRenderer/PptxSlide/index.tsx +0 -48
- package/src/components/composite/PptxRenderer/constants.ts +0 -2
- package/src/components/composite/PptxRenderer/elements/AudioElement/index.tsx +0 -48
- package/src/components/composite/PptxRenderer/elements/ChartElement/index.tsx +0 -172
- package/src/components/composite/PptxRenderer/elements/DiagramElement/index.tsx +0 -46
- package/src/components/composite/PptxRenderer/elements/GroupElement/index.tsx +0 -28
- package/src/components/composite/PptxRenderer/elements/ImageElement/index.tsx +0 -61
- package/src/components/composite/PptxRenderer/elements/MathElement/index.tsx +0 -57
- package/src/components/composite/PptxRenderer/elements/ShapeElement/index.tsx +0 -327
- package/src/components/composite/PptxRenderer/elements/TableElement/index.tsx +0 -90
- package/src/components/composite/PptxRenderer/elements/TextElement/index.tsx +0 -57
- package/src/components/composite/PptxRenderer/elements/VideoElement/index.tsx +0 -43
- package/src/components/composite/PptxRenderer/index.ts +0 -24
- package/src/components/composite/PptxRenderer/types.ts +0 -326
- package/src/components/composite/PptxRenderer/utils.ts +0 -129
- package/src/components/composite/ProjectSelect/ProjectSelect.stories.tsx +0 -112
- package/src/components/composite/ProjectSelect/ProjectSelectSource.test.mjs +0 -34
- package/src/components/composite/ProjectSelect/index.tsx +0 -155
- package/src/components/composite/RadioCard/RadioCard.stories.tsx +0 -130
- package/src/components/composite/RadioCard/RadioCardSource.test.mjs +0 -42
- package/src/components/composite/RadioCard/index.tsx +0 -171
- package/src/components/composite/RowOverflowMenu/RowOverflowMenu.stories.tsx +0 -113
- package/src/components/composite/RowOverflowMenu/RowOverflowMenuSource.test.mjs +0 -59
- package/src/components/composite/RowOverflowMenu/index.tsx +0 -101
- package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPrompt.stories.tsx +0 -159
- package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPromptSource.test.mjs +0 -71
- package/src/components/composite/SandboxPermissionPrompt/index.tsx +0 -157
- package/src/components/composite/SearchInput/SearchInput.stories.tsx +0 -127
- package/src/components/composite/SearchInput/index.tsx +0 -91
- package/src/components/composite/SearchResult/SearchResult.stories.tsx +0 -305
- package/src/components/composite/SearchResult/SearchResultSource.test.mjs +0 -45
- package/src/components/composite/SearchResult/index.tsx +0 -148
- package/src/components/composite/Section/Section.stories.tsx +0 -148
- package/src/components/composite/Section/SectionSource.test.mjs +0 -59
- package/src/components/composite/Section/index.tsx +0 -105
- package/src/components/composite/SelectionBulkBar/SelectionBulkBar.stories.tsx +0 -111
- package/src/components/composite/SelectionBulkBar/SelectionBulkBarSource.test.mjs +0 -44
- package/src/components/composite/SelectionBulkBar/index.tsx +0 -99
- package/src/components/composite/ShareStrip/ShareStrip.stories.tsx +0 -123
- package/src/components/composite/ShareStrip/index.tsx +0 -83
- package/src/components/composite/ShortcutSheet/ShortcutSheet.stories.tsx +0 -90
- package/src/components/composite/ShortcutSheet/ShortcutSheetSource.test.mjs +0 -49
- package/src/components/composite/ShortcutSheet/index.tsx +0 -163
- package/src/components/composite/SitesArtifactCardView/SitesArtifactCardView.stories.tsx +0 -328
- package/src/components/composite/SitesArtifactCardView/SitesArtifactCardViewSource.test.mjs +0 -45
- package/src/components/composite/SitesArtifactCardView/index.tsx +0 -100
- package/src/components/composite/Skeleton/Skeleton.stories.tsx +0 -188
- package/src/components/composite/Skeleton/SkeletonSource.test.mjs +0 -25
- package/src/components/composite/Skeleton/index.tsx +0 -152
- package/src/components/composite/Splash/Splash.stories.tsx +0 -150
- package/src/components/composite/Splash/index.tsx +0 -229
- package/src/components/composite/StatusTag/StatusTag.stories.tsx +0 -66
- package/src/components/composite/StatusTag/StatusTagSource.test.mjs +0 -64
- package/src/components/composite/StatusTag/index.tsx +0 -78
- package/src/components/composite/StepList/StepList.stories.tsx +0 -352
- package/src/components/composite/StepList/index.tsx +0 -23
- package/src/components/composite/Tag/Tag.stories.tsx +0 -279
- package/src/components/composite/Tag/TagSource.test.mjs +0 -67
- package/src/components/composite/Tag/index.tsx +0 -229
- package/src/components/composite/TimePicker/TimePicker.stories.tsx +0 -91
- package/src/components/composite/TimePicker/TimePickerSource.test.mjs +0 -98
- package/src/components/composite/TimePicker/index.tsx +0 -208
- package/src/components/composite/TitleBar/TitleBar.stories.tsx +0 -329
- package/src/components/composite/TitleBar/TitleBarSource.test.mjs +0 -140
- package/src/components/composite/TitleBar/index.tsx +0 -350
- package/src/components/composite/Toast/Toast.stories.tsx +0 -304
- package/src/components/composite/Toast/ToastSource.test.mjs +0 -63
- package/src/components/composite/Toast/index.tsx +0 -135
- package/src/components/composite/Tooltip/Tooltip.stories.tsx +0 -304
- package/src/components/composite/Tooltip/TooltipSource.test.mjs +0 -34
- package/src/components/composite/Tooltip/index.tsx +0 -204
- package/src/components/composite/TranscriptDividers/TranscriptDividers.stories.tsx +0 -160
- package/src/components/composite/TranscriptDividers/TranscriptDividersSource.test.mjs +0 -90
- package/src/components/composite/TranscriptDividers/index.tsx +0 -352
- package/src/components/composite/WCardShell/WCardShell.stories.tsx +0 -228
- package/src/components/composite/WCardShell/index.tsx +0 -101
- package/src/components/composite/index.ts +0 -81
- package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarView.stories.tsx +0 -128
- package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarViewSource.test.mjs +0 -69
- package/src/components/domain/artifacts/ArtifactPreviewSidebarView/index.tsx +0 -212
- package/src/components/domain/artifacts/index.ts +0 -1
- package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupView.stories.tsx +0 -211
- package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupViewSource.test.mjs +0 -82
- package/src/components/domain/browser/BrowserAnnotationPopupView/index.tsx +0 -235
- package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarView.stories.tsx +0 -260
- package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarViewSource.test.mjs +0 -12
- package/src/components/domain/browser/BrowserDeviceToolbarView/index.tsx +0 -154
- package/src/components/domain/browser/BrowserFindBarView/BrowserFindBarView.stories.tsx +0 -52
- package/src/components/domain/browser/BrowserFindBarView/index.tsx +0 -111
- package/src/components/domain/browser/BrowserImportDialogView/BrowserImportDialogView.stories.tsx +0 -89
- package/src/components/domain/browser/BrowserImportDialogView/index.tsx +0 -155
- package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorView.stories.tsx +0 -197
- package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorViewSource.test.mjs +0 -29
- package/src/components/domain/browser/BrowserLoadErrorView/index.tsx +0 -45
- package/src/components/domain/browser/BrowserMoreMenuView/BrowserMoreMenuView.stories.tsx +0 -66
- package/src/components/domain/browser/BrowserMoreMenuView/index.tsx +0 -268
- package/src/components/domain/browser/BrowserNavBarView/BrowserNavBarView.stories.tsx +0 -149
- package/src/components/domain/browser/BrowserNavBarView/index.tsx +0 -156
- package/src/components/domain/browser/BrowserTabBarView/index.tsx +0 -18
- package/src/components/domain/browser/SubAgentPane/SubAgentPane.stories.tsx +0 -96
- package/src/components/domain/browser/SubAgentPane/SubAgentPaneSource.test.mjs +0 -48
- package/src/components/domain/browser/SubAgentPane/index.tsx +0 -121
- package/src/components/domain/browser/TerminalPane/TerminalPane.stories.tsx +0 -95
- package/src/components/domain/browser/TerminalPane/TerminalPaneSource.test.mjs +0 -52
- package/src/components/domain/browser/TerminalPane/index.tsx +0 -75
- package/src/components/domain/browser/WebPreview/WebPreview.stories.tsx +0 -71
- package/src/components/domain/browser/WebPreview/index.tsx +0 -141
- package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsole.stories.tsx +0 -61
- package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsoleSource.test.mjs +0 -66
- package/src/components/domain/browser/WebPreviewConsole/index.tsx +0 -239
- package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialog.stories.tsx +0 -288
- package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialogSource.test.mjs +0 -62
- package/src/components/domain/browser/WebPreviewDialog/index.tsx +0 -82
- package/src/components/domain/browser/WebPreviewNav/WebPreviewNav.stories.tsx +0 -462
- package/src/components/domain/browser/WebPreviewNav/WebPreviewNavSource.test.mjs +0 -353
- package/src/components/domain/browser/WebPreviewNav/index.tsx +0 -351
- package/src/components/domain/browser/WebPreviewShell/WebPreviewShell.stories.tsx +0 -226
- package/src/components/domain/browser/WebPreviewShell/WebPreviewShellSource.test.mjs +0 -172
- package/src/components/domain/browser/WebPreviewShell/index.tsx +0 -324
- package/src/components/domain/browser/index.ts +0 -45
- package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegment.stories.tsx +0 -107
- package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegmentSource.test.mjs +0 -45
- package/src/components/domain/chat/AgentLoopSegment/index.tsx +0 -29
- package/src/components/domain/chat/AgentTurn/AgentTurn.stories.tsx +0 -162
- package/src/components/domain/chat/AgentTurn/AgentTurnSource.test.mjs +0 -98
- package/src/components/domain/chat/AgentTurn/beaconContext.ts +0 -37
- package/src/components/domain/chat/AgentTurn/index.tsx +0 -226
- package/src/components/domain/chat/ArtifactCard/ArtifactCard.stories.tsx +0 -127
- package/src/components/domain/chat/ArtifactCard/index.tsx +0 -249
- package/src/components/domain/chat/Attachment/Attachment.stories.tsx +0 -235
- package/src/components/domain/chat/Attachment/AttachmentSource.test.mjs +0 -160
- package/src/components/domain/chat/Attachment/index.tsx +0 -857
- package/src/components/domain/chat/AuthorizationCard/AuthorizationCard.stories.tsx +0 -53
- package/src/components/domain/chat/AuthorizationCard/AuthorizationCardSource.test.mjs +0 -80
- package/src/components/domain/chat/AuthorizationCard/index.tsx +0 -89
- package/src/components/domain/chat/ChatBubble/ChatBubble.stories.tsx +0 -32
- package/src/components/domain/chat/ChatBubble/index.tsx +0 -24
- package/src/components/domain/chat/ChatMessage/ChatMessage.stories.tsx +0 -31
- package/src/components/domain/chat/ChatMessage/index.tsx +0 -23
- package/src/components/domain/chat/ChatR2ReviewSource.test.mjs +0 -98
- package/src/components/domain/chat/ChatThinking/ChatThinking.stories.tsx +0 -125
- package/src/components/domain/chat/ChatThinking/index.tsx +0 -55
- package/src/components/domain/chat/Chatbot/Chatbot.stories.tsx +0 -49
- package/src/components/domain/chat/Chatbot/index.tsx +0 -37
- package/src/components/domain/chat/Composer/Composer.stories.tsx +0 -227
- package/src/components/domain/chat/Composer/ComposerSource.test.mjs +0 -175
- package/src/components/domain/chat/Composer/index.tsx +0 -450
- package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.stories.tsx +0 -203
- package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.tsx +0 -110
- package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrumSource.test.mjs +0 -54
- package/src/components/domain/chat/Composer/parts/ComposerAuthorization.stories.tsx +0 -155
- package/src/components/domain/chat/Composer/parts/ComposerAuthorization.tsx +0 -108
- package/src/components/domain/chat/Composer/parts/ComposerMentions.stories.tsx +0 -76
- package/src/components/domain/chat/Composer/parts/ComposerMentions.tsx +0 -83
- package/src/components/domain/chat/Composer/parts/ComposerMentionsSource.test.mjs +0 -85
- package/src/components/domain/chat/Composer/parts/ComposerMenu.stories.tsx +0 -266
- package/src/components/domain/chat/Composer/parts/ComposerMenu.tsx +0 -232
- package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.stories.tsx +0 -166
- package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.tsx +0 -87
- package/src/components/domain/chat/Composer/parts/ComposerMenuPopoverSource.test.mjs +0 -56
- package/src/components/domain/chat/Composer/parts/ComposerPopover.stories.tsx +0 -257
- package/src/components/domain/chat/Composer/parts/ComposerPopover.tsx +0 -221
- package/src/components/domain/chat/Composer/parts/ComposerPopoverSource.test.mjs +0 -71
- package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.stories.tsx +0 -260
- package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.tsx +0 -246
- package/src/components/domain/chat/Composer/parts/ComposerProjectPickerSource.test.mjs +0 -46
- package/src/components/domain/chat/Composer/parts/ComposerQueue.stories.tsx +0 -275
- package/src/components/domain/chat/Composer/parts/ComposerQueue.tsx +0 -155
- package/src/components/domain/chat/Composer/parts/ComposerQueueSource.test.mjs +0 -95
- package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.stories.tsx +0 -77
- package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.tsx +0 -70
- package/src/components/domain/chat/Composer/parts/mountChip.ts +0 -21
- package/src/components/domain/chat/ContextUsage/ContextUsage.stories.tsx +0 -62
- package/src/components/domain/chat/ContextUsage/index.tsx +0 -69
- package/src/components/domain/chat/ExecutionSummary/ExecutionSummary.stories.tsx +0 -238
- package/src/components/domain/chat/ExecutionSummary/ExecutionSummarySource.test.mjs +0 -210
- package/src/components/domain/chat/ExecutionSummary/index.tsx +0 -487
- package/src/components/domain/chat/Message/Message.stories.tsx +0 -264
- package/src/components/domain/chat/Message/index.tsx +0 -44
- package/src/components/domain/chat/MessageActions/MessageActions.stories.tsx +0 -132
- package/src/components/domain/chat/MessageActions/MessageActionsSource.test.mjs +0 -79
- package/src/components/domain/chat/MessageActions/index.tsx +0 -186
- package/src/components/domain/chat/PlanCard/PlanCard.stories.tsx +0 -87
- package/src/components/domain/chat/PlanCard/index.tsx +0 -170
- package/src/components/domain/chat/RichContent/RichContent.stories.tsx +0 -102
- package/src/components/domain/chat/RichContent/RichContentSource.test.mjs +0 -82
- package/src/components/domain/chat/RichContent/index.tsx +0 -465
- package/src/components/domain/chat/SubAgentThread/SubAgentThread.stories.tsx +0 -119
- package/src/components/domain/chat/SubAgentThread/index.tsx +0 -104
- package/src/components/domain/chat/Thinking/Thinking.stories.tsx +0 -196
- package/src/components/domain/chat/Thinking/ThinkingInlineSource.test.mjs +0 -154
- package/src/components/domain/chat/Thinking/index.tsx +0 -237
- package/src/components/domain/chat/ToolCallRow/ToolCallRow.stories.tsx +0 -105
- package/src/components/domain/chat/ToolCallRow/ToolCallRowSource.test.mjs +0 -83
- package/src/components/domain/chat/ToolCallRow/index.tsx +0 -113
- package/src/components/domain/chat/Transcript/Transcript.stories.tsx +0 -296
- package/src/components/domain/chat/Transcript/TranscriptSource.test.mjs +0 -189
- package/src/components/domain/chat/Transcript/index.tsx +0 -187
- package/src/components/domain/chat/TranscriptSpine/TranscriptSpine.stories.tsx +0 -124
- package/src/components/domain/chat/TranscriptSpine/index.tsx +0 -245
- package/src/components/domain/chat/UserTurn/UserTurn.stories.tsx +0 -176
- package/src/components/domain/chat/UserTurn/UserTurnSource.test.mjs +0 -150
- package/src/components/domain/chat/UserTurn/index.tsx +0 -194
- package/src/components/domain/chat/index.ts +0 -22
- package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuView.stories.tsx +0 -116
- package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuViewSource.test.mjs +0 -80
- package/src/components/domain/desktop/DesktopAccountMenuView/index.tsx +0 -355
- package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettings.stories.tsx +0 -96
- package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettingsSource.test.mjs +0 -89
- package/src/components/domain/desktop/DesktopAppearanceSettings/index.tsx +0 -155
- package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigView.stories.tsx +0 -275
- package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigViewSource.test.mjs +0 -37
- package/src/components/domain/desktop/DesktopAssistantConfigView/index.tsx +0 -221
- package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogView.stories.tsx +0 -537
- package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogViewSource.test.mjs +0 -339
- package/src/components/domain/desktop/DesktopCatalogView/index.tsx +0 -1074
- package/src/components/domain/desktop/DesktopChatBranchDivider/DesktopChatBranchDivider.stories.tsx +0 -58
- package/src/components/domain/desktop/DesktopChatBranchDivider/index.tsx +0 -33
- package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateView.stories.tsx +0 -75
- package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateViewSource.test.mjs +0 -54
- package/src/components/domain/desktop/DesktopChatEmptyStateView/index.tsx +0 -64
- package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderView.stories.tsx +0 -83
- package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderViewSource.test.mjs +0 -126
- package/src/components/domain/desktop/DesktopChatHeaderView/index.tsx +0 -169
- package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageView.stories.tsx +0 -170
- package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageViewSource.test.mjs +0 -47
- package/src/components/domain/desktop/DesktopChatMessageView/index.tsx +0 -213
- package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnView.stories.tsx +0 -498
- package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnViewSource.test.mjs +0 -187
- package/src/components/domain/desktop/DesktopChatTurnView/index.tsx +0 -490
- package/src/components/domain/desktop/DesktopComposer/DesktopComposer.stories.tsx +0 -195
- package/src/components/domain/desktop/DesktopComposer/DesktopComposerModelPickerSource.test.mjs +0 -132
- package/src/components/domain/desktop/DesktopComposer/DesktopComposerMountChipSource.test.mjs +0 -43
- package/src/components/domain/desktop/DesktopComposer/DesktopComposerResponsiveSource.test.mjs +0 -44
- package/src/components/domain/desktop/DesktopComposer/DesktopMcpFormThemeSource.test.mjs +0 -30
- package/src/components/domain/desktop/DesktopComposer/index.tsx +0 -206
- package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailView.stories.tsx +0 -72
- package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailViewSource.test.mjs +0 -81
- package/src/components/domain/desktop/DesktopConnectorDetailView/index.tsx +0 -301
- package/src/components/domain/desktop/DesktopHomeView/DesktopHomeView.stories.tsx +0 -103
- package/src/components/domain/desktop/DesktopHomeView/DesktopHomeViewSource.test.mjs +0 -51
- package/src/components/domain/desktop/DesktopHomeView/index.tsx +0 -122
- package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialog.stories.tsx +0 -55
- package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -156
- package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -42
- package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -35
- package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
- package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
- package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -149
- package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -418
- package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
- package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
- package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
- package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
- package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
- package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
- package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
- package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
- package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
- package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
- package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
- package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
- package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
- package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
- package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
- package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
- package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
- package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
- package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
- package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
- package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
- package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
- package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
- package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
- package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
- package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
- package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -386
- package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1075
- package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
- package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
- package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
- package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
- package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
- package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
- package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
- package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
- package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
- package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
- package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
- package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
- package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
- package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
- package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
- package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
- package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
- package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
- package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
- package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
- package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
- package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
- package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
- package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
- package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
- package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
- package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
- package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
- package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
- package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
- package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
- package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
- package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
- package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
- package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
- package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
- package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
- package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
- package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
- package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
- package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
- package/src/components/domain/desktop/index.ts +0 -64
- package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
- package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
- package/src/components/domain/files/FileBrowser/index.tsx +0 -221
- package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
- package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
- package/src/components/domain/files/FileIcon/index.tsx +0 -133
- package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
- package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
- package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
- package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
- package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
- package/src/components/domain/files/FileTree/index.tsx +0 -106
- package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
- package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
- package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
- package/src/components/domain/files/index.ts +0 -5
- package/src/components/domain/index.ts +0 -8
- package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
- package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
- package/src/components/domain/office/CsvPreview/index.tsx +0 -224
- package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
- package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
- package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
- package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
- package/src/components/domain/office/OfficePreview/index.tsx +0 -782
- package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
- package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
- package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
- package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
- package/src/components/domain/office/PdfPreview/index.tsx +0 -217
- package/src/components/domain/office/index.ts +0 -5
- package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
- package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
- package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
- package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
- package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
- package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
- package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
- package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
- package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
- package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
- package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
- package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
- package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
- package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
- package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
- package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
- package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
- package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
- package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
- package/src/components/domain/skills/index.ts +0 -7
- package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
- package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
- package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
- package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
- package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
- package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
- package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
- package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
- package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
- package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
- package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
- package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
- package/src/components/domain/tasks/index.ts +0 -4
- package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
- package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
- package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
- package/src/components/domain/theme/ThemeDemo.tsx +0 -224
- package/src/components/index.ts +0 -11
- package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
- package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
- package/src/components/primitives/Avatar/index.tsx +0 -180
- package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
- package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
- package/src/components/primitives/BackTop/index.tsx +0 -93
- package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
- package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
- package/src/components/primitives/Badge/index.tsx +0 -65
- package/src/components/primitives/Button/Button.stories.tsx +0 -287
- package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
- package/src/components/primitives/Button/index.tsx +0 -216
- package/src/components/primitives/Card/Card.stories.tsx +0 -186
- package/src/components/primitives/Card/CardSource.test.mjs +0 -73
- package/src/components/primitives/Card/index.tsx +0 -137
- package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
- package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
- package/src/components/primitives/Checkbox/index.tsx +0 -87
- package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
- package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
- package/src/components/primitives/Chip/index.tsx +0 -252
- package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
- package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
- package/src/components/primitives/Divider/index.tsx +0 -65
- package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
- package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
- package/src/components/primitives/Dropdown/index.tsx +0 -29
- package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
- package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
- package/src/components/primitives/EmptyState/index.tsx +0 -185
- package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
- package/src/components/primitives/ErrorCard/index.tsx +0 -78
- package/src/components/primitives/Field/Field.stories.tsx +0 -208
- package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
- package/src/components/primitives/Field/index.tsx +0 -297
- package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
- package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
- package/src/components/primitives/InlineMessage/index.tsx +0 -141
- package/src/components/primitives/Input/Input.stories.tsx +0 -30
- package/src/components/primitives/Input/index.tsx +0 -12
- package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
- package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
- package/src/components/primitives/Keycap/index.tsx +0 -67
- package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
- package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
- package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
- package/src/components/primitives/Menu/index.tsx +0 -922
- package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
- package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
- package/src/components/primitives/Pagination/index.tsx +0 -85
- package/src/components/primitives/Pagination/pagination.ts +0 -25
- package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
- package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
- package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
- package/src/components/primitives/ProgressBar/index.tsx +0 -68
- package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
- package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
- package/src/components/primitives/Radio/index.tsx +0 -161
- package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
- package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
- package/src/components/primitives/SegmentedControl/index.tsx +0 -188
- package/src/components/primitives/Select/Select.stories.tsx +0 -158
- package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
- package/src/components/primitives/Select/index.tsx +0 -364
- package/src/components/primitives/Spinner/index.tsx +0 -58
- package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
- package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
- package/src/components/primitives/Switch/index.tsx +0 -84
- package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
- package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
- package/src/components/primitives/Tabs/index.tsx +0 -183
- package/src/components/primitives/index.ts +0 -24
- package/src/examples/ResourceManagementExample.tsx +0 -119
- package/src/examples/SiteWorkbenchExample.tsx +0 -96
- package/src/hooks/index.ts +0 -7
- package/src/hooks/useClickOutside.ts +0 -20
- package/src/hooks/useDragReorder.ts +0 -29
- package/src/hooks/useImeAwareEnter.ts +0 -59
- package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
- package/src/hooks/useKeyboard.ts +0 -16
- package/src/hooks/usePopover.ts +0 -67
- package/src/hooks/useSelectedOptionLocator.ts +0 -33
- package/src/hooks/useSidebarResize.ts +0 -107
- package/src/hooks/useTenantTheme.ts +0 -53
- package/src/hooks/useUnifiedTheme.ts +0 -85
- package/src/index.ts +0 -6
- package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
- package/src/lib/about-window.test.mjs +0 -46
- package/src/lib/about-window.ts +0 -218
- package/src/lib/appearance.test.mjs +0 -283
- package/src/lib/appearance.ts +0 -46
- package/src/lib/browser-annotation-popup.ts +0 -151
- package/src/lib/focusTrap.ts +0 -51
- package/src/lib/index.ts +0 -5
- package/src/lib/shortcut.test.mjs +0 -100
- package/src/lib/shortcut.ts +0 -97
- package/src/lib/twMergeOw.ts +0 -18
- package/src/lib/utils.ts +0 -6
- package/src/screens/Browser.stories.tsx +0 -353
- package/src/screens/Chat.stories.tsx +0 -808
- package/src/screens/Home.stories.tsx +0 -253
- package/src/screens/Login.stories.tsx +0 -134
- package/src/screens/McpManager.stories.tsx +0 -159
- package/src/screens/Onboarding.stories.tsx +0 -155
- package/src/screens/ScheduledTasks.stories.tsx +0 -134
- package/src/screens/ScreenFrameSource.test.mjs +0 -77
- package/src/screens/SettingsAppearance.stories.tsx +0 -117
- package/src/screens/SettingsMemory.stories.tsx +0 -128
- package/src/screens/SettingsModels.stories.tsx +0 -228
- package/src/screens/SettingsSections.stories.tsx +0 -164
- package/src/screens/Share.stories.tsx +0 -202
- package/src/screens/SharePage.stories.tsx +0 -29
- package/src/screens/Sites.stories.tsx +0 -183
- package/src/screens/Skills.stories.tsx +0 -83
- package/src/screens/Workspace.stories.tsx +0 -191
- package/src/screens/_home.tsx +0 -46
- package/src/screens/_screen.tsx +0 -355
- package/src/screens/_settingsNav.ts +0 -27
- package/src/screens/_skillsCatalog.tsx +0 -372
- package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
- package/src/theme/__tests__/skins.test.mjs +0 -84
- package/src/theme/core/semanticAdapter.ts +0 -116
- package/src/theme/core/skin.ts +0 -605
- package/src/theme/core/skinScoped.ts +0 -289
- package/src/theme/core/tenantTheme.test.mjs +0 -127
- package/src/theme/core/tenantTheme.ts +0 -124
- package/src/theme/core/types.ts +0 -60
- package/src/theme/core/unifiedTheme.ts +0 -157
- package/src/theme/index.ts +0 -33
- package/src/theme/providers/BrandingProvider.tsx +0 -57
- package/src/theme/providers/ThemeProvider.tsx +0 -221
- package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
- package/src/theme/skins/index.ts +0 -107
- package/src/theme/utils/cssSafety.ts +0 -92
- package/src/theme/utils/skinManager.ts +0 -159
- package/src/theme/utils/themeApplier.ts +0 -75
- package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
- package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
- package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
- package/src/tokens/base.ts +0 -199
- package/src/tokens/dark.ts +0 -288
- package/src/tokens/index.ts +0 -4
- package/src/tokens/light.ts +0 -320
- package/src/tokens/tailwind.ts +0 -216
- package/src/types/desktop-pet.ts +0 -100
- package/src/types/file-browser.ts +0 -51
- package/src/types/file-tree.ts +0 -34
- package/src/types/index.ts +0 -3
- package/src/types/xspreadsheet.d.ts +0 -4
- package/src/utils/cn.ts +0 -6
- package/src/utils/glyphColor.ts +0 -32
- package/src/utils/index.ts +0 -4
- package/src/utils/localPathInline.test.mjs +0 -45
- package/src/utils/localPathInline.ts +0 -49
- package/src/utils/markdownFileRefs.test.mjs +0 -88
- package/src/utils/markdownFileRefs.ts +0 -140
- package/src/utils/office-excel.ts +0 -452
- package/src/utils/shiki.ts +0 -156
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// src/slot/core.ts
|
|
2
|
+
function defineSlot(kind, mode) {
|
|
3
|
+
return { kind, mode };
|
|
4
|
+
}
|
|
5
|
+
var EMPTY_ENTRIES = Object.freeze([]);
|
|
6
|
+
function assertKnownRegistrationKeys(value, kind) {
|
|
7
|
+
const allowed = /* @__PURE__ */ new Set([
|
|
8
|
+
"name",
|
|
9
|
+
"locale",
|
|
10
|
+
"inject",
|
|
11
|
+
...kind === "list" ? ["id", "order"] : [],
|
|
12
|
+
...kind === "keyed" ? ["key"] : []
|
|
13
|
+
]);
|
|
14
|
+
const unknown = Object.keys(value).find((key) => !allowed.has(key));
|
|
15
|
+
if (unknown) throw new Error(`Slot "${value.name}" registration contains unsupported field: ${unknown}`);
|
|
16
|
+
}
|
|
17
|
+
function cellOf(entry) {
|
|
18
|
+
if (entry.kind === "list") return entry.id;
|
|
19
|
+
if (entry.kind === "keyed") return entry.key;
|
|
20
|
+
return "single";
|
|
21
|
+
}
|
|
22
|
+
function createSlotCore() {
|
|
23
|
+
const declarations = /* @__PURE__ */ new Map();
|
|
24
|
+
const entries = /* @__PURE__ */ new Map();
|
|
25
|
+
const listeners = /* @__PURE__ */ new Map();
|
|
26
|
+
const versions = /* @__PURE__ */ new Map();
|
|
27
|
+
let sequence = 0;
|
|
28
|
+
const notify = (name) => {
|
|
29
|
+
versions.set(name, (versions.get(name) ?? 0) + 1);
|
|
30
|
+
for (const listener of listeners.get(name) ?? []) listener();
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
declare(name, decl) {
|
|
34
|
+
if (declarations.has(name)) throw new Error(`Slot "${name}" is already declared`);
|
|
35
|
+
const token = Symbol(name);
|
|
36
|
+
declarations.set(name, { token, kind: decl.kind });
|
|
37
|
+
entries.set(name, []);
|
|
38
|
+
notify(name);
|
|
39
|
+
let disposed = false;
|
|
40
|
+
return () => {
|
|
41
|
+
if (disposed) return;
|
|
42
|
+
disposed = true;
|
|
43
|
+
if (declarations.get(name)?.token !== token) return;
|
|
44
|
+
declarations.delete(name);
|
|
45
|
+
entries.delete(name);
|
|
46
|
+
notify(name);
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
register(options, renderer) {
|
|
50
|
+
const declaration = declarations.get(options.name);
|
|
51
|
+
if (!declaration) throw new Error(`Slot "${options.name}" must be declared before registration`);
|
|
52
|
+
if (typeof renderer !== "function") throw new Error(`Slot "${options.name}" renderer must be a function`);
|
|
53
|
+
const raw = options;
|
|
54
|
+
const order = raw.order ?? 0;
|
|
55
|
+
if (!Number.isFinite(order)) throw new Error(`Slot "${options.name}" order must be a finite number`);
|
|
56
|
+
if (raw.inject !== void 0 && typeof raw.inject !== "function") {
|
|
57
|
+
throw new Error(`Slot "${options.name}" inject must be a function`);
|
|
58
|
+
}
|
|
59
|
+
if (declaration.kind === "single" && (raw.id !== void 0 || raw.key !== void 0 || raw.order !== void 0)) {
|
|
60
|
+
throw new Error(`Single slot "${options.name}" does not accept id, key, or order`);
|
|
61
|
+
}
|
|
62
|
+
if (declaration.kind === "list") {
|
|
63
|
+
if (typeof raw.id !== "string" || raw.id.trim() === "") {
|
|
64
|
+
throw new Error(`List slot "${options.name}" requires a non-empty id`);
|
|
65
|
+
}
|
|
66
|
+
if (raw.key !== void 0) throw new Error(`List slot "${options.name}" does not accept key`);
|
|
67
|
+
}
|
|
68
|
+
if (declaration.kind === "keyed") {
|
|
69
|
+
if (typeof raw.key !== "string" || raw.key.trim() === "") {
|
|
70
|
+
throw new Error(`Keyed slot "${options.name}" requires a non-empty key`);
|
|
71
|
+
}
|
|
72
|
+
if (raw.id !== void 0 || raw.order !== void 0) {
|
|
73
|
+
throw new Error(`Keyed slot "${options.name}" does not accept id or order`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
assertKnownRegistrationKeys(raw, declaration.kind);
|
|
77
|
+
const entry = {
|
|
78
|
+
name: options.name,
|
|
79
|
+
kind: declaration.kind,
|
|
80
|
+
...raw.id !== void 0 ? { id: raw.id } : {},
|
|
81
|
+
...raw.key !== void 0 ? { key: raw.key } : {},
|
|
82
|
+
order,
|
|
83
|
+
...raw.locale !== void 0 ? { locale: raw.locale } : {},
|
|
84
|
+
...raw.inject !== void 0 ? { inject: raw.inject } : {},
|
|
85
|
+
renderer,
|
|
86
|
+
sequence: sequence++
|
|
87
|
+
};
|
|
88
|
+
const current = entries.get(options.name) ?? [];
|
|
89
|
+
const cell = cellOf(entry);
|
|
90
|
+
if (declaration.kind === "list" && current.some((candidate) => cellOf(candidate) === cell && candidate.order !== order)) {
|
|
91
|
+
throw new Error(`List slot "${options.name}" cell "${cell}" must use one shared order`);
|
|
92
|
+
}
|
|
93
|
+
current.push(entry);
|
|
94
|
+
entries.set(options.name, current);
|
|
95
|
+
notify(options.name);
|
|
96
|
+
let disposed = false;
|
|
97
|
+
return () => {
|
|
98
|
+
if (disposed) return;
|
|
99
|
+
disposed = true;
|
|
100
|
+
const active = entries.get(options.name);
|
|
101
|
+
if (!active) return;
|
|
102
|
+
const index = active.indexOf(entry);
|
|
103
|
+
if (index < 0) return;
|
|
104
|
+
active.splice(index, 1);
|
|
105
|
+
notify(options.name);
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
entriesOf(name, kind) {
|
|
109
|
+
const declaration = declarations.get(name);
|
|
110
|
+
if (!declaration) return EMPTY_ENTRIES;
|
|
111
|
+
if (declaration.kind !== kind) {
|
|
112
|
+
throw new Error(`Slot "${name}" is ${declaration.kind}, not ${kind}`);
|
|
113
|
+
}
|
|
114
|
+
const current = entries.get(name);
|
|
115
|
+
if (!current?.length) return EMPTY_ENTRIES;
|
|
116
|
+
const firstSequenceByCell = /* @__PURE__ */ new Map();
|
|
117
|
+
for (const entry of current) {
|
|
118
|
+
const cell = cellOf(entry);
|
|
119
|
+
if (!firstSequenceByCell.has(cell)) firstSequenceByCell.set(cell, entry.sequence);
|
|
120
|
+
}
|
|
121
|
+
return [...current].sort((left, right) => {
|
|
122
|
+
if (kind === "list" && left.order !== right.order) return left.order - right.order;
|
|
123
|
+
const leftCell = cellOf(left);
|
|
124
|
+
const rightCell = cellOf(right);
|
|
125
|
+
if (leftCell !== rightCell) {
|
|
126
|
+
if (kind === "list") {
|
|
127
|
+
const leftSequence = firstSequenceByCell.get(leftCell) ?? left.sequence;
|
|
128
|
+
const rightSequence = firstSequenceByCell.get(rightCell) ?? right.sequence;
|
|
129
|
+
return leftSequence - rightSequence;
|
|
130
|
+
}
|
|
131
|
+
return leftCell.localeCompare(rightCell);
|
|
132
|
+
}
|
|
133
|
+
return right.sequence - left.sequence;
|
|
134
|
+
});
|
|
135
|
+
},
|
|
136
|
+
subscribe(name, callback) {
|
|
137
|
+
let slotListeners = listeners.get(name);
|
|
138
|
+
if (!slotListeners) {
|
|
139
|
+
slotListeners = /* @__PURE__ */ new Set();
|
|
140
|
+
listeners.set(name, slotListeners);
|
|
141
|
+
}
|
|
142
|
+
slotListeners.add(callback);
|
|
143
|
+
let disposed = false;
|
|
144
|
+
return () => {
|
|
145
|
+
if (disposed) return;
|
|
146
|
+
disposed = true;
|
|
147
|
+
slotListeners?.delete(callback);
|
|
148
|
+
if (slotListeners?.size === 0) listeners.delete(name);
|
|
149
|
+
};
|
|
150
|
+
},
|
|
151
|
+
versionOf(name) {
|
|
152
|
+
return versions.get(name) ?? 0;
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// src/slot/map.ts
|
|
158
|
+
var WORKBENCH_KEYED_SLOT_KEYS = {
|
|
159
|
+
"workbench.settings.section": [
|
|
160
|
+
"general",
|
|
161
|
+
"appearance",
|
|
162
|
+
"usage",
|
|
163
|
+
"models",
|
|
164
|
+
"auth",
|
|
165
|
+
"security",
|
|
166
|
+
"assistant",
|
|
167
|
+
"memory",
|
|
168
|
+
"keys",
|
|
169
|
+
"about"
|
|
170
|
+
],
|
|
171
|
+
"widget.card": ["subtasks", "scheduled", "todo"]
|
|
172
|
+
};
|
|
173
|
+
var WORKBENCH_SLOT_DECLARATIONS = {
|
|
174
|
+
"workbench.login": defineSlot("single", "replacement"),
|
|
175
|
+
"workbench.sidebar.footer": defineSlot("list", "insertion"),
|
|
176
|
+
"workbench.settings.section": defineSlot("keyed", "wrapper"),
|
|
177
|
+
"workbench.view.chat": defineSlot("single", "wrapper"),
|
|
178
|
+
"workbench.view.skills": defineSlot("single", "wrapper"),
|
|
179
|
+
"workbench.view.sites": defineSlot("single", "wrapper"),
|
|
180
|
+
"workbench.view.scheduled-tasks": defineSlot("single", "wrapper"),
|
|
181
|
+
"workbench.view.library": defineSlot("single", "wrapper"),
|
|
182
|
+
"workbench.view.task-detail": defineSlot("single", "wrapper"),
|
|
183
|
+
"workbench.composer.action": defineSlot("list", "insertion"),
|
|
184
|
+
"palette.group": defineSlot("list", "insertion"),
|
|
185
|
+
"widget.card": defineSlot("keyed", "wrapper")
|
|
186
|
+
};
|
|
187
|
+
function declareWorkbenchSlots(core) {
|
|
188
|
+
const disposers = Object.entries(WORKBENCH_SLOT_DECLARATIONS).map(([name, declaration]) => core.declare(name, declaration));
|
|
189
|
+
return () => {
|
|
190
|
+
for (let index = disposers.length - 1; index >= 0; index -= 1) disposers[index]?.();
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
export {
|
|
194
|
+
WORKBENCH_KEYED_SLOT_KEYS,
|
|
195
|
+
WORKBENCH_SLOT_DECLARATIONS,
|
|
196
|
+
createSlotCore,
|
|
197
|
+
declareWorkbenchSlots,
|
|
198
|
+
defineSlot
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=slot-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/slot/core.ts","../src/slot/map.ts"],"sourcesContent":["import type { WorkbenchSlotMap } from \"./map\"\n\nexport type SlotKind = \"single\" | \"list\" | \"keyed\"\nexport type SlotMode = \"replacement\" | \"wrapper\" | \"insertion\"\n\nexport type SlotTranslator<Key extends string = string> = (\n key: Key,\n values?: Readonly<Record<string, string | number>>,\n) => string\n\n/**\n * Slot declaration metadata. The function-shaped phantom fields preserve the\n * owner, entry-key, and child-slot types without adding runtime dependencies.\n */\nexport type SlotDecl<\n Kind extends SlotKind,\n Owner extends object,\n EntryKey extends string = never,\n Child extends string = never,\n> = {\n readonly kind: Kind\n /** Stable composition semantics exposed by the host for this slot. */\n readonly mode: SlotMode\n readonly __types?: readonly [owner: Owner, entryKey: EntryKey, child: Child]\n}\n\nexport function defineSlot<\n Kind extends SlotKind,\n Owner extends object,\n EntryKey extends string = never,\n Child extends string = never,\n>(kind: Kind, mode: SlotMode): SlotDecl<Kind, Owner, EntryKey, Child> {\n return { kind, mode }\n}\n\n/** Public host slot map retained as a named interface for downstream extension. */\nexport interface SlotMap extends WorkbenchSlotMap {}\n\nexport type SlotName = keyof SlotMap & string\nexport type SlotDeclOf<Name extends SlotName> = SlotMap[Name]\nexport type SlotOwnerOf<Name extends SlotName> = SlotDeclOf<Name> extends SlotDecl<SlotKind, infer Owner, any, any>\n ? Owner\n : never\nexport type SlotEntryKeyOf<Name extends SlotName> = SlotDeclOf<Name> extends SlotDecl<\n SlotKind,\n object,\n infer EntryKey,\n any\n>\n ? EntryKey\n : never\nexport type SlotChildOf<Name extends SlotName> = SlotDeclOf<Name> extends SlotDecl<SlotKind, object, any, infer Child>\n ? Child\n : never\n\ntype SlotRenderArguments<Child extends SlotName> = {\n [Name in Child]: [name: Name, owner: SlotOwnerOf<Name>, fallback?: unknown]\n}[Child]\n\nexport type SlotRenderFunction<Child extends SlotName = SlotName> = (...args: SlotRenderArguments<Child>) => unknown\n\nexport type SlotProps<Name extends SlotName> = SlotOwnerOf<Name> & {\n /** Scoped bridge supplied by the owner; registered components never receive SlotCore. */\n renderSlot: SlotRenderFunction<Extract<SlotChildOf<Name>, SlotName>>\n /** Namespace-aware translator. Without a locale namespace it returns the key. */\n t: SlotTranslator\n}\n\nexport type SlotRenderer<Props extends object = Record<string, unknown>> = (props: Props) => unknown\nexport type SlotInjectFactory<Injected extends object = Readonly<Record<string, unknown>>> = () => Injected\n\ntype CommonRegisterOptions<Name extends SlotName> = {\n name: Name\n /** Optional dictionary namespace supplied to the renderer's t function. */\n locale?: string\n}\n\nexport type RegisterOptions<Name extends SlotName> = SlotDeclOf<Name>[\"kind\"] extends \"list\"\n ? CommonRegisterOptions<Name> & { id: string; order?: number; key?: never }\n : SlotDeclOf<Name>[\"kind\"] extends \"keyed\"\n ? CommonRegisterOptions<Name> & { key: SlotEntryKeyOf<Name>; id?: never; order?: never }\n : CommonRegisterOptions<Name> & { id?: never; key?: never; order?: never }\n\nexport type SlotEntry = {\n readonly name: string\n readonly kind: SlotKind\n readonly id?: string\n readonly key?: string\n readonly order: number\n readonly locale?: string\n /** Registration-private values and callbacks resolved at the render boundary. */\n readonly inject?: SlotInjectFactory\n readonly renderer: SlotRenderer\n readonly sequence: number\n}\n\nexport interface SlotCore {\n declare<Name extends SlotName>(name: Name, decl: SlotDeclOf<Name>): () => void\n register<Name extends SlotName, Injected extends object = object>(\n options: RegisterOptions<Name> & { inject?: SlotInjectFactory<Injected> },\n renderer: SlotRenderer<SlotProps<Name> & Injected>,\n ): () => void\n entriesOf(name: string, kind: SlotKind): readonly SlotEntry[]\n subscribe(name: string, callback: () => void): () => void\n versionOf(name: string): number\n}\n\ntype Declaration = {\n readonly token: symbol\n readonly kind: SlotKind\n}\n\ntype RuntimeRegisterOptions = {\n name: string\n id?: string\n key?: string\n order?: number\n inject?: SlotInjectFactory\n locale?: string\n}\n\nconst EMPTY_ENTRIES: readonly SlotEntry[] = Object.freeze([])\n\nfunction assertKnownRegistrationKeys(value: RuntimeRegisterOptions, kind: SlotKind): void {\n const allowed = new Set([\n \"name\",\n \"locale\",\n \"inject\",\n ...(kind === \"list\" ? [\"id\", \"order\"] : []),\n ...(kind === \"keyed\" ? [\"key\"] : []),\n ])\n const unknown = Object.keys(value).find((key) => !allowed.has(key))\n if (unknown) throw new Error(`Slot \"${value.name}\" registration contains unsupported field: ${unknown}`)\n}\n\nfunction cellOf(entry: Pick<SlotEntry, \"kind\" | \"id\" | \"key\">): string {\n if (entry.kind === \"list\") return entry.id as string\n if (entry.kind === \"keyed\") return entry.key as string\n return \"single\"\n}\n\nexport function createSlotCore(): SlotCore {\n const declarations = new Map<string, Declaration>()\n const entries = new Map<string, SlotEntry[]>()\n const listeners = new Map<string, Set<() => void>>()\n const versions = new Map<string, number>()\n let sequence = 0\n\n const notify = (name: string) => {\n versions.set(name, (versions.get(name) ?? 0) + 1)\n for (const listener of listeners.get(name) ?? []) listener()\n }\n\n return {\n declare(name, decl) {\n if (declarations.has(name)) throw new Error(`Slot \"${name}\" is already declared`)\n const token = Symbol(name)\n declarations.set(name, { token, kind: decl.kind })\n entries.set(name, [])\n notify(name)\n\n let disposed = false\n return () => {\n if (disposed) return\n disposed = true\n if (declarations.get(name)?.token !== token) return\n declarations.delete(name)\n entries.delete(name)\n notify(name)\n }\n },\n\n register(options, renderer) {\n const declaration = declarations.get(options.name)\n if (!declaration) throw new Error(`Slot \"${options.name}\" must be declared before registration`)\n if (typeof renderer !== \"function\") throw new Error(`Slot \"${options.name}\" renderer must be a function`)\n\n const raw = options as RuntimeRegisterOptions\n const order = raw.order ?? 0\n if (!Number.isFinite(order)) throw new Error(`Slot \"${options.name}\" order must be a finite number`)\n if (raw.inject !== undefined && typeof raw.inject !== \"function\") {\n throw new Error(`Slot \"${options.name}\" inject must be a function`)\n }\n\n if (declaration.kind === \"single\" && (raw.id !== undefined || raw.key !== undefined || raw.order !== undefined)) {\n throw new Error(`Single slot \"${options.name}\" does not accept id, key, or order`)\n }\n if (declaration.kind === \"list\") {\n if (typeof raw.id !== \"string\" || raw.id.trim() === \"\") {\n throw new Error(`List slot \"${options.name}\" requires a non-empty id`)\n }\n if (raw.key !== undefined) throw new Error(`List slot \"${options.name}\" does not accept key`)\n }\n if (declaration.kind === \"keyed\") {\n if (typeof raw.key !== \"string\" || raw.key.trim() === \"\") {\n throw new Error(`Keyed slot \"${options.name}\" requires a non-empty key`)\n }\n if (raw.id !== undefined || raw.order !== undefined) {\n throw new Error(`Keyed slot \"${options.name}\" does not accept id or order`)\n }\n }\n assertKnownRegistrationKeys(raw, declaration.kind)\n\n const entry: SlotEntry = {\n name: options.name,\n kind: declaration.kind,\n ...(raw.id !== undefined ? { id: raw.id } : {}),\n ...(raw.key !== undefined ? { key: raw.key } : {}),\n order,\n ...(raw.locale !== undefined ? { locale: raw.locale } : {}),\n ...(raw.inject !== undefined ? { inject: raw.inject } : {}),\n renderer: renderer as SlotRenderer,\n sequence: sequence++,\n }\n const current = entries.get(options.name) ?? []\n const cell = cellOf(entry)\n if (\n declaration.kind === \"list\" &&\n current.some((candidate) => cellOf(candidate) === cell && candidate.order !== order)\n ) {\n throw new Error(`List slot \"${options.name}\" cell \"${cell}\" must use one shared order`)\n }\n current.push(entry)\n entries.set(options.name, current)\n notify(options.name)\n\n let disposed = false\n return () => {\n if (disposed) return\n disposed = true\n const active = entries.get(options.name)\n if (!active) return\n const index = active.indexOf(entry)\n if (index < 0) return\n active.splice(index, 1)\n notify(options.name)\n }\n },\n\n entriesOf(name, kind) {\n const declaration = declarations.get(name)\n if (!declaration) return EMPTY_ENTRIES\n if (declaration.kind !== kind) {\n throw new Error(`Slot \"${name}\" is ${declaration.kind}, not ${kind}`)\n }\n const current = entries.get(name)\n if (!current?.length) return EMPTY_ENTRIES\n const firstSequenceByCell = new Map<string, number>()\n for (const entry of current) {\n const cell = cellOf(entry)\n if (!firstSequenceByCell.has(cell)) firstSequenceByCell.set(cell, entry.sequence)\n }\n return [...current].sort((left, right) => {\n if (kind === \"list\" && left.order !== right.order) return left.order - right.order\n const leftCell = cellOf(left)\n const rightCell = cellOf(right)\n if (leftCell !== rightCell) {\n if (kind === \"list\") {\n const leftSequence = firstSequenceByCell.get(leftCell) ?? left.sequence\n const rightSequence = firstSequenceByCell.get(rightCell) ?? right.sequence\n return leftSequence - rightSequence\n }\n return leftCell.localeCompare(rightCell)\n }\n // The host registers first-party fallbacks before applying its single,\n // reviewed OEM entry. Newest-first is therefore OEM candidate → official\n // content without exposing candidate ranking to public registrations.\n return right.sequence - left.sequence\n })\n },\n\n subscribe(name, callback) {\n let slotListeners = listeners.get(name)\n if (!slotListeners) {\n slotListeners = new Set()\n listeners.set(name, slotListeners)\n }\n slotListeners.add(callback)\n let disposed = false\n return () => {\n if (disposed) return\n disposed = true\n slotListeners?.delete(callback)\n if (slotListeners?.size === 0) listeners.delete(name)\n }\n },\n\n versionOf(name) {\n return versions.get(name) ?? 0\n },\n }\n}\n","import type { ReactNode } from \"react\"\nimport type { DesktopLoginViewProps } from \"../components/domain/desktop/DesktopLoginView\"\nimport type { HostPlatform } from \"../platform\"\nimport { type SlotCore, type SlotDecl, defineSlot } from \"./core\"\n\nexport interface SidebarFooterOwnerProps {\n platform: HostPlatform\n fullscreen: boolean\n}\n\nexport interface SettingsSectionOwnerProps {\n activeId: string\n onClose: () => void\n /** First-party section content; OEM renderers may preserve, replace, or wrap it. */\n content: ReactNode\n}\n\nexport interface WorkbenchViewOwnerProps {\n active: boolean\n}\n\nexport interface ComposableWorkbenchViewOwnerProps extends WorkbenchViewOwnerProps {\n /** First-party view content; OEM renderers may preserve, replace, or wrap it. */\n content: ReactNode\n}\n\nexport interface ChatViewOwnerProps extends ComposableWorkbenchViewOwnerProps {\n platform: HostPlatform\n}\n\nexport interface PaletteGroupOwnerProps {\n query: string\n anchorRect: DOMRect | null\n onClose: () => void\n}\n\nexport interface ComposerActionOwnerProps {\n disabled: boolean\n layout: \"toolbar-start\"\n}\n\nexport interface WidgetOwnerProps extends ComposableWorkbenchViewOwnerProps {}\n\nexport const WORKBENCH_KEYED_SLOT_KEYS = {\n \"workbench.settings.section\": [\n \"general\",\n \"appearance\",\n \"usage\",\n \"models\",\n \"auth\",\n \"security\",\n \"assistant\",\n \"memory\",\n \"keys\",\n \"about\",\n ],\n \"widget.card\": [\"subtasks\", \"scheduled\", \"todo\"],\n} as const\n\nexport type SettingsSectionKey = (typeof WORKBENCH_KEYED_SLOT_KEYS)[\"workbench.settings.section\"][number]\nexport type WidgetKey = (typeof WORKBENCH_KEYED_SLOT_KEYS)[\"widget.card\"][number]\n\nexport interface WorkbenchSlotMap {\n \"workbench.login\": SlotDecl<\"single\", DesktopLoginViewProps>\n \"workbench.sidebar.footer\": SlotDecl<\"list\", SidebarFooterOwnerProps>\n \"workbench.settings.section\": SlotDecl<\"keyed\", SettingsSectionOwnerProps, SettingsSectionKey>\n \"workbench.view.chat\": SlotDecl<\"single\", ChatViewOwnerProps, never, \"palette.group\">\n \"workbench.view.skills\": SlotDecl<\"single\", ComposableWorkbenchViewOwnerProps>\n \"workbench.view.sites\": SlotDecl<\"single\", ComposableWorkbenchViewOwnerProps>\n \"workbench.view.scheduled-tasks\": SlotDecl<\"single\", ComposableWorkbenchViewOwnerProps>\n \"workbench.view.library\": SlotDecl<\"single\", ComposableWorkbenchViewOwnerProps>\n \"workbench.view.task-detail\": SlotDecl<\"single\", ComposableWorkbenchViewOwnerProps>\n \"workbench.composer.action\": SlotDecl<\"list\", ComposerActionOwnerProps>\n \"palette.group\": SlotDecl<\"list\", PaletteGroupOwnerProps>\n \"widget.card\": SlotDecl<\"keyed\", WidgetOwnerProps, WidgetKey>\n}\n\nexport const WORKBENCH_SLOT_DECLARATIONS = {\n \"workbench.login\": defineSlot<\"single\", DesktopLoginViewProps>(\"single\", \"replacement\"),\n \"workbench.sidebar.footer\": defineSlot<\"list\", SidebarFooterOwnerProps>(\"list\", \"insertion\"),\n \"workbench.settings.section\": defineSlot<\"keyed\", SettingsSectionOwnerProps, SettingsSectionKey>(\"keyed\", \"wrapper\"),\n \"workbench.view.chat\": defineSlot<\"single\", ChatViewOwnerProps, never, \"palette.group\">(\"single\", \"wrapper\"),\n \"workbench.view.skills\": defineSlot<\"single\", ComposableWorkbenchViewOwnerProps>(\"single\", \"wrapper\"),\n \"workbench.view.sites\": defineSlot<\"single\", ComposableWorkbenchViewOwnerProps>(\"single\", \"wrapper\"),\n \"workbench.view.scheduled-tasks\": defineSlot<\"single\", ComposableWorkbenchViewOwnerProps>(\"single\", \"wrapper\"),\n \"workbench.view.library\": defineSlot<\"single\", ComposableWorkbenchViewOwnerProps>(\"single\", \"wrapper\"),\n \"workbench.view.task-detail\": defineSlot<\"single\", ComposableWorkbenchViewOwnerProps>(\"single\", \"wrapper\"),\n \"workbench.composer.action\": defineSlot<\"list\", ComposerActionOwnerProps>(\"list\", \"insertion\"),\n \"palette.group\": defineSlot<\"list\", PaletteGroupOwnerProps>(\"list\", \"insertion\"),\n \"widget.card\": defineSlot<\"keyed\", WidgetOwnerProps, WidgetKey>(\"keyed\", \"wrapper\"),\n} as const satisfies WorkbenchSlotMap\n\nexport function declareWorkbenchSlots(core: SlotCore): () => void {\n const disposers = (\n Object.entries(WORKBENCH_SLOT_DECLARATIONS) as Array<\n [keyof WorkbenchSlotMap & string, WorkbenchSlotMap[keyof WorkbenchSlotMap]]\n >\n ).map(([name, declaration]) => core.declare(name, declaration))\n\n return () => {\n for (let index = disposers.length - 1; index >= 0; index -= 1) disposers[index]?.()\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;// src/slot/react.tsx
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _react = require('react');
|
|
12
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
13
|
+
var SlotCoreContext = _react.createContext.call(void 0, null);
|
|
14
|
+
var SlotTranslateContext = _react.createContext.call(void 0, (_namespace, key) => key);
|
|
15
|
+
function SlotProvider({ children, core, translate }) {
|
|
16
|
+
const translation = _nullishCoalesce(translate, () => ( ((_namespace, key) => key)));
|
|
17
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SlotCoreContext.Provider, { value: core, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SlotTranslateContext.Provider, { value: translation, children }) });
|
|
18
|
+
}
|
|
19
|
+
function useHostSlotCore() {
|
|
20
|
+
const core = _react.useContext.call(void 0, SlotCoreContext);
|
|
21
|
+
if (!core) throw new Error("SlotOutlet must be used inside SlotProvider");
|
|
22
|
+
return core;
|
|
23
|
+
}
|
|
24
|
+
var SlotErrorBoundary = (_class = class extends _react.Component {constructor(...args) { super(...args); _class.prototype.__init.call(this); }
|
|
25
|
+
__init() {this.state = { failed: false }}
|
|
26
|
+
static getDerivedStateFromError() {
|
|
27
|
+
return { failed: true };
|
|
28
|
+
}
|
|
29
|
+
componentDidCatch(error, _info) {
|
|
30
|
+
try {
|
|
31
|
+
this.props.onError(error, this.props.entry);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
}
|
|
34
|
+
this.props.onFailed();
|
|
35
|
+
}
|
|
36
|
+
render() {
|
|
37
|
+
return this.state.failed ? null : this.props.children;
|
|
38
|
+
}
|
|
39
|
+
}, _class);
|
|
40
|
+
function CandidateRenderer({
|
|
41
|
+
entry,
|
|
42
|
+
owner,
|
|
43
|
+
renderSlot,
|
|
44
|
+
translate
|
|
45
|
+
}) {
|
|
46
|
+
const injected = _optionalChain([entry, 'access', _ => _.inject, 'optionalCall', _2 => _2()]);
|
|
47
|
+
if (injected !== void 0 && (injected === null || typeof injected !== "object" || Array.isArray(injected))) {
|
|
48
|
+
throw new Error(`Slot "${entry.name}" inject must return an object`);
|
|
49
|
+
}
|
|
50
|
+
for (const key of Object.keys(_nullishCoalesce(injected, () => ( {})))) {
|
|
51
|
+
if (key === "renderSlot" || key === "t" || Object.hasOwn(owner, key)) {
|
|
52
|
+
throw new Error(`Slot "${entry.name}" inject conflicts with owner prop: ${key}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const Renderer = entry.renderer;
|
|
56
|
+
const t = (key, values) => translate(entry.locale, key, values);
|
|
57
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Renderer, { ...injected, ...owner, renderSlot, t });
|
|
58
|
+
}
|
|
59
|
+
function CandidateCell({ candidates, fallback = null, owner, renderSlot, translate, onError }) {
|
|
60
|
+
const [failedCount, setFailedCount] = _react.useState.call(void 0, 0);
|
|
61
|
+
const entry = candidates[failedCount];
|
|
62
|
+
if (!entry) return fallback;
|
|
63
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
64
|
+
SlotErrorBoundary,
|
|
65
|
+
{
|
|
66
|
+
entry,
|
|
67
|
+
onError,
|
|
68
|
+
onFailed: () => setFailedCount((count) => count + 1),
|
|
69
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CandidateRenderer, { entry, owner, renderSlot, translate })
|
|
70
|
+
},
|
|
71
|
+
entry.sequence
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
function groupByCell(entries) {
|
|
75
|
+
const cells = /* @__PURE__ */ new Map();
|
|
76
|
+
for (const entry of entries) {
|
|
77
|
+
const cell = entry.kind === "list" ? entry.id : entry.kind === "keyed" ? entry.key : "single";
|
|
78
|
+
const candidates = cells.get(cell);
|
|
79
|
+
if (candidates) candidates.push(entry);
|
|
80
|
+
else cells.set(cell, [entry]);
|
|
81
|
+
}
|
|
82
|
+
return [...cells.entries()];
|
|
83
|
+
}
|
|
84
|
+
function SlotOutlet({
|
|
85
|
+
name,
|
|
86
|
+
owner,
|
|
87
|
+
entryKey,
|
|
88
|
+
fallback,
|
|
89
|
+
renderSlot = () => null,
|
|
90
|
+
onError = (error, entry) => console.error(`[SlotOutlet] ${entry.name} failed`, error)
|
|
91
|
+
}) {
|
|
92
|
+
const core = useHostSlotCore();
|
|
93
|
+
const translate = _react.useContext.call(void 0, SlotTranslateContext);
|
|
94
|
+
const subscribe = _react.useCallback.call(void 0, (callback) => core.subscribe(name, callback), [core, name]);
|
|
95
|
+
const getSnapshot = _react.useCallback.call(void 0, () => core.versionOf(name), [core, name]);
|
|
96
|
+
const version = _react.useSyncExternalStore.call(void 0, subscribe, getSnapshot, getSnapshot);
|
|
97
|
+
const entries = _react.useMemo.call(void 0, () => {
|
|
98
|
+
for (const kind2 of ["single", "list", "keyed"]) {
|
|
99
|
+
try {
|
|
100
|
+
return core.entriesOf(name, kind2);
|
|
101
|
+
} catch (e2) {
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return [];
|
|
105
|
+
}, [core, name, version]);
|
|
106
|
+
if (entries.length === 0) return _nullishCoalesce(fallback, () => ( null));
|
|
107
|
+
const kind = _optionalChain([entries, 'access', _3 => _3[0], 'optionalAccess', _4 => _4.kind]);
|
|
108
|
+
const ownerRecord = owner;
|
|
109
|
+
if (kind === "single") {
|
|
110
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
111
|
+
CandidateCell,
|
|
112
|
+
{
|
|
113
|
+
candidates: entries,
|
|
114
|
+
fallback,
|
|
115
|
+
owner: ownerRecord,
|
|
116
|
+
renderSlot,
|
|
117
|
+
translate,
|
|
118
|
+
onError
|
|
119
|
+
},
|
|
120
|
+
`${name}:single:${version}`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
if (kind === "keyed") {
|
|
124
|
+
const candidates = entries.filter((entry) => entry.key === entryKey);
|
|
125
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
126
|
+
CandidateCell,
|
|
127
|
+
{
|
|
128
|
+
candidates,
|
|
129
|
+
fallback,
|
|
130
|
+
owner: ownerRecord,
|
|
131
|
+
renderSlot,
|
|
132
|
+
translate,
|
|
133
|
+
onError
|
|
134
|
+
},
|
|
135
|
+
`${name}:${String(entryKey)}:${version}`
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
return groupByCell(entries).map(
|
|
139
|
+
([cell, candidates]) => _react.createElement.call(void 0, CandidateCell, {
|
|
140
|
+
key: `${name}:${cell}:${version}`,
|
|
141
|
+
candidates,
|
|
142
|
+
owner: ownerRecord,
|
|
143
|
+
renderSlot,
|
|
144
|
+
translate,
|
|
145
|
+
onError
|
|
146
|
+
})
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
exports.SlotOutlet = SlotOutlet; exports.SlotProvider = SlotProvider;
|
|
153
|
+
//# sourceMappingURL=slot-react.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/wowzin/projects/orbit/packages/ui/dist/slot-react.cjs","../src/slot/react.tsx"],"names":[],"mappings":"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","file":"/Users/wowzin/projects/orbit/packages/ui/dist/slot-react.cjs","sourcesContent":[null,"\"use client\"\n\nimport {\n Component,\n type ComponentType,\n type ErrorInfo,\n type ReactNode,\n createContext,\n createElement,\n useCallback,\n useContext,\n useMemo,\n useState,\n useSyncExternalStore,\n} from \"react\"\nimport type {\n SlotChildOf,\n SlotCore,\n SlotDeclOf,\n SlotEntry,\n SlotEntryKeyOf,\n SlotName,\n SlotOwnerOf,\n SlotRenderFunction,\n SlotTranslator,\n} from \"./core\"\n\nexport type SlotDiagnostics = (error: Error, entry: SlotEntry) => void\nexport type SlotTranslate = (\n namespace: string | undefined,\n key: string,\n values?: Readonly<Record<string, string | number>>,\n) => string\n\nconst SlotCoreContext = createContext<SlotCore | null>(null)\nconst SlotTranslateContext = createContext<SlotTranslate>((_namespace, key) => key)\n\nexport interface SlotProviderProps {\n children: ReactNode\n core: SlotCore\n translate?: SlotTranslate\n}\n\nexport function SlotProvider({ children, core, translate }: SlotProviderProps) {\n const translation = translate ?? ((_namespace: string | undefined, key: string) => key)\n return (\n <SlotCoreContext.Provider value={core}>\n <SlotTranslateContext.Provider value={translation}>{children}</SlotTranslateContext.Provider>\n </SlotCoreContext.Provider>\n )\n}\n\nfunction useHostSlotCore(): SlotCore {\n const core = useContext(SlotCoreContext)\n if (!core) throw new Error(\"SlotOutlet must be used inside SlotProvider\")\n return core\n}\n\ntype ErrorBoundaryProps = {\n children: ReactNode\n entry: SlotEntry\n onError: SlotDiagnostics\n onFailed: () => void\n}\n\ntype ErrorBoundaryState = { failed: boolean }\n\nclass SlotErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { failed: false }\n\n static getDerivedStateFromError(): ErrorBoundaryState {\n return { failed: true }\n }\n\n componentDidCatch(error: Error, _info: ErrorInfo): void {\n try {\n this.props.onError(error, this.props.entry)\n } catch {\n // Diagnostics are observational. A broken reporter must never prevent\n // the next candidate or first-party fallback from rendering.\n }\n this.props.onFailed()\n }\n\n render(): ReactNode {\n return this.state.failed ? null : this.props.children\n }\n}\n\ntype CandidateCellProps = {\n candidates: readonly SlotEntry[]\n fallback?: ReactNode\n owner: Readonly<Record<string, unknown>>\n renderSlot: SlotRenderFunction<any>\n translate: SlotTranslate\n onError: SlotDiagnostics\n}\n\nfunction CandidateRenderer({\n entry,\n owner,\n renderSlot,\n translate,\n}: Pick<CandidateCellProps, \"owner\" | \"renderSlot\" | \"translate\"> & { entry: SlotEntry }) {\n const injected = entry.inject?.()\n if (injected !== undefined && (injected === null || typeof injected !== \"object\" || Array.isArray(injected))) {\n throw new Error(`Slot \"${entry.name}\" inject must return an object`)\n }\n for (const key of Object.keys(injected ?? {})) {\n if (key === \"renderSlot\" || key === \"t\" || Object.hasOwn(owner, key)) {\n throw new Error(`Slot \"${entry.name}\" inject conflicts with owner prop: ${key}`)\n }\n }\n\n const Renderer = entry.renderer as ComponentType<Record<string, unknown>>\n const t: SlotTranslator = (key, values) => translate(entry.locale, key, values)\n return <Renderer {...injected} {...owner} renderSlot={renderSlot} t={t} />\n}\n\nfunction CandidateCell({ candidates, fallback = null, owner, renderSlot, translate, onError }: CandidateCellProps) {\n const [failedCount, setFailedCount] = useState(0)\n const entry = candidates[failedCount]\n if (!entry) return fallback\n\n return (\n <SlotErrorBoundary\n key={entry.sequence}\n entry={entry}\n onError={onError}\n onFailed={() => setFailedCount((count) => count + 1)}\n >\n <CandidateRenderer entry={entry} owner={owner} renderSlot={renderSlot} translate={translate} />\n </SlotErrorBoundary>\n )\n}\n\ntype CommonSlotOutletProps<Name extends SlotName> = {\n name: Name\n owner: SlotOwnerOf<Name>\n fallback?: ReactNode\n renderSlot?: SlotRenderFunction<Extract<SlotChildOf<Name>, SlotName>>\n onError?: SlotDiagnostics\n}\n\nexport type SlotOutletProps<Name extends SlotName> = SlotDeclOf<Name>[\"kind\"] extends \"keyed\"\n ? CommonSlotOutletProps<Name> & { entryKey: SlotEntryKeyOf<Name> }\n : CommonSlotOutletProps<Name> & { entryKey?: never }\n\nfunction groupByCell(entries: readonly SlotEntry[]): Array<[string, SlotEntry[]]> {\n const cells = new Map<string, SlotEntry[]>()\n for (const entry of entries) {\n const cell =\n entry.kind === \"list\" ? (entry.id as string) : entry.kind === \"keyed\" ? (entry.key as string) : \"single\"\n const candidates = cells.get(cell)\n if (candidates) candidates.push(entry)\n else cells.set(cell, [entry])\n }\n return [...cells.entries()]\n}\n\nexport function SlotOutlet<Name extends SlotName>({\n name,\n owner,\n entryKey,\n fallback,\n renderSlot = () => null,\n onError = (error, entry) => console.error(`[SlotOutlet] ${entry.name} failed`, error),\n}: SlotOutletProps<Name>) {\n const core = useHostSlotCore()\n const translate = useContext(SlotTranslateContext)\n const subscribe = useCallback((callback: () => void) => core.subscribe(name, callback), [core, name])\n const getSnapshot = useCallback(() => core.versionOf(name), [core, name])\n const version = useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n\n const entries = useMemo(() => {\n for (const kind of [\"single\", \"list\", \"keyed\"] as const) {\n try {\n return core.entriesOf(name, kind)\n } catch {\n // The runtime declaration is authoritative; try the next kind.\n }\n }\n return []\n }, [core, name, version])\n\n if (entries.length === 0) return fallback ?? null\n const kind = entries[0]?.kind\n const ownerRecord = owner as Readonly<Record<string, unknown>>\n\n if (kind === \"single\") {\n return (\n <CandidateCell\n key={`${name}:single:${version}`}\n candidates={entries}\n fallback={fallback}\n owner={ownerRecord}\n renderSlot={renderSlot}\n translate={translate}\n onError={onError}\n />\n )\n }\n\n if (kind === \"keyed\") {\n const candidates = entries.filter((entry) => entry.key === entryKey)\n return (\n <CandidateCell\n key={`${name}:${String(entryKey)}:${version}`}\n candidates={candidates}\n fallback={fallback}\n owner={ownerRecord}\n renderSlot={renderSlot}\n translate={translate}\n onError={onError}\n />\n )\n }\n\n return groupByCell(entries).map(([cell, candidates]) =>\n createElement(CandidateCell, {\n key: `${name}:${cell}:${version}`,\n candidates,\n owner: ownerRecord,\n renderSlot,\n translate,\n onError,\n }),\n )\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { SlotEntry, SlotName, SlotDeclOf, SlotOwnerOf, SlotRenderFunction, SlotChildOf, SlotEntryKeyOf, SlotCore } from './slot-core.cjs';
|
|
4
|
+
import './index-nLo7jMlP.cjs';
|
|
5
|
+
|
|
6
|
+
type SlotDiagnostics = (error: Error, entry: SlotEntry) => void;
|
|
7
|
+
type SlotTranslate = (namespace: string | undefined, key: string, values?: Readonly<Record<string, string | number>>) => string;
|
|
8
|
+
interface SlotProviderProps {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
core: SlotCore;
|
|
11
|
+
translate?: SlotTranslate;
|
|
12
|
+
}
|
|
13
|
+
declare function SlotProvider({ children, core, translate }: SlotProviderProps): react.JSX.Element;
|
|
14
|
+
type CandidateCellProps = {
|
|
15
|
+
candidates: readonly SlotEntry[];
|
|
16
|
+
fallback?: ReactNode;
|
|
17
|
+
owner: Readonly<Record<string, unknown>>;
|
|
18
|
+
renderSlot: SlotRenderFunction<any>;
|
|
19
|
+
translate: SlotTranslate;
|
|
20
|
+
onError: SlotDiagnostics;
|
|
21
|
+
};
|
|
22
|
+
type CommonSlotOutletProps<Name extends SlotName> = {
|
|
23
|
+
name: Name;
|
|
24
|
+
owner: SlotOwnerOf<Name>;
|
|
25
|
+
fallback?: ReactNode;
|
|
26
|
+
renderSlot?: SlotRenderFunction<Extract<SlotChildOf<Name>, SlotName>>;
|
|
27
|
+
onError?: SlotDiagnostics;
|
|
28
|
+
};
|
|
29
|
+
type SlotOutletProps<Name extends SlotName> = SlotDeclOf<Name>["kind"] extends "keyed" ? CommonSlotOutletProps<Name> & {
|
|
30
|
+
entryKey: SlotEntryKeyOf<Name>;
|
|
31
|
+
} : CommonSlotOutletProps<Name> & {
|
|
32
|
+
entryKey?: never;
|
|
33
|
+
};
|
|
34
|
+
declare function SlotOutlet<Name extends SlotName>({ name, owner, entryKey, fallback, renderSlot, onError, }: SlotOutletProps<Name>): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react.JSX.Element | react.FunctionComponentElement<CandidateCellProps>[] | null;
|
|
35
|
+
|
|
36
|
+
export { type SlotDiagnostics, SlotOutlet, type SlotOutletProps, SlotProvider, type SlotProviderProps, type SlotTranslate };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { SlotEntry, SlotName, SlotDeclOf, SlotOwnerOf, SlotRenderFunction, SlotChildOf, SlotEntryKeyOf, SlotCore } from './slot-core.js';
|
|
4
|
+
import './index-nLo7jMlP.js';
|
|
5
|
+
|
|
6
|
+
type SlotDiagnostics = (error: Error, entry: SlotEntry) => void;
|
|
7
|
+
type SlotTranslate = (namespace: string | undefined, key: string, values?: Readonly<Record<string, string | number>>) => string;
|
|
8
|
+
interface SlotProviderProps {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
core: SlotCore;
|
|
11
|
+
translate?: SlotTranslate;
|
|
12
|
+
}
|
|
13
|
+
declare function SlotProvider({ children, core, translate }: SlotProviderProps): react.JSX.Element;
|
|
14
|
+
type CandidateCellProps = {
|
|
15
|
+
candidates: readonly SlotEntry[];
|
|
16
|
+
fallback?: ReactNode;
|
|
17
|
+
owner: Readonly<Record<string, unknown>>;
|
|
18
|
+
renderSlot: SlotRenderFunction<any>;
|
|
19
|
+
translate: SlotTranslate;
|
|
20
|
+
onError: SlotDiagnostics;
|
|
21
|
+
};
|
|
22
|
+
type CommonSlotOutletProps<Name extends SlotName> = {
|
|
23
|
+
name: Name;
|
|
24
|
+
owner: SlotOwnerOf<Name>;
|
|
25
|
+
fallback?: ReactNode;
|
|
26
|
+
renderSlot?: SlotRenderFunction<Extract<SlotChildOf<Name>, SlotName>>;
|
|
27
|
+
onError?: SlotDiagnostics;
|
|
28
|
+
};
|
|
29
|
+
type SlotOutletProps<Name extends SlotName> = SlotDeclOf<Name>["kind"] extends "keyed" ? CommonSlotOutletProps<Name> & {
|
|
30
|
+
entryKey: SlotEntryKeyOf<Name>;
|
|
31
|
+
} : CommonSlotOutletProps<Name> & {
|
|
32
|
+
entryKey?: never;
|
|
33
|
+
};
|
|
34
|
+
declare function SlotOutlet<Name extends SlotName>({ name, owner, entryKey, fallback, renderSlot, onError, }: SlotOutletProps<Name>): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react.JSX.Element | react.FunctionComponentElement<CandidateCellProps>[] | null;
|
|
35
|
+
|
|
36
|
+
export { type SlotDiagnostics, SlotOutlet, type SlotOutletProps, SlotProvider, type SlotProviderProps, type SlotTranslate };
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// src/slot/react.tsx
|
|
2
|
+
import {
|
|
3
|
+
Component,
|
|
4
|
+
createContext,
|
|
5
|
+
createElement,
|
|
6
|
+
useCallback,
|
|
7
|
+
useContext,
|
|
8
|
+
useMemo,
|
|
9
|
+
useState,
|
|
10
|
+
useSyncExternalStore
|
|
11
|
+
} from "react";
|
|
12
|
+
import { jsx } from "react/jsx-runtime";
|
|
13
|
+
var SlotCoreContext = createContext(null);
|
|
14
|
+
var SlotTranslateContext = createContext((_namespace, key) => key);
|
|
15
|
+
function SlotProvider({ children, core, translate }) {
|
|
16
|
+
const translation = translate ?? ((_namespace, key) => key);
|
|
17
|
+
return /* @__PURE__ */ jsx(SlotCoreContext.Provider, { value: core, children: /* @__PURE__ */ jsx(SlotTranslateContext.Provider, { value: translation, children }) });
|
|
18
|
+
}
|
|
19
|
+
function useHostSlotCore() {
|
|
20
|
+
const core = useContext(SlotCoreContext);
|
|
21
|
+
if (!core) throw new Error("SlotOutlet must be used inside SlotProvider");
|
|
22
|
+
return core;
|
|
23
|
+
}
|
|
24
|
+
var SlotErrorBoundary = class extends Component {
|
|
25
|
+
state = { failed: false };
|
|
26
|
+
static getDerivedStateFromError() {
|
|
27
|
+
return { failed: true };
|
|
28
|
+
}
|
|
29
|
+
componentDidCatch(error, _info) {
|
|
30
|
+
try {
|
|
31
|
+
this.props.onError(error, this.props.entry);
|
|
32
|
+
} catch {
|
|
33
|
+
}
|
|
34
|
+
this.props.onFailed();
|
|
35
|
+
}
|
|
36
|
+
render() {
|
|
37
|
+
return this.state.failed ? null : this.props.children;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function CandidateRenderer({
|
|
41
|
+
entry,
|
|
42
|
+
owner,
|
|
43
|
+
renderSlot,
|
|
44
|
+
translate
|
|
45
|
+
}) {
|
|
46
|
+
const injected = entry.inject?.();
|
|
47
|
+
if (injected !== void 0 && (injected === null || typeof injected !== "object" || Array.isArray(injected))) {
|
|
48
|
+
throw new Error(`Slot "${entry.name}" inject must return an object`);
|
|
49
|
+
}
|
|
50
|
+
for (const key of Object.keys(injected ?? {})) {
|
|
51
|
+
if (key === "renderSlot" || key === "t" || Object.hasOwn(owner, key)) {
|
|
52
|
+
throw new Error(`Slot "${entry.name}" inject conflicts with owner prop: ${key}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const Renderer = entry.renderer;
|
|
56
|
+
const t = (key, values) => translate(entry.locale, key, values);
|
|
57
|
+
return /* @__PURE__ */ jsx(Renderer, { ...injected, ...owner, renderSlot, t });
|
|
58
|
+
}
|
|
59
|
+
function CandidateCell({ candidates, fallback = null, owner, renderSlot, translate, onError }) {
|
|
60
|
+
const [failedCount, setFailedCount] = useState(0);
|
|
61
|
+
const entry = candidates[failedCount];
|
|
62
|
+
if (!entry) return fallback;
|
|
63
|
+
return /* @__PURE__ */ jsx(
|
|
64
|
+
SlotErrorBoundary,
|
|
65
|
+
{
|
|
66
|
+
entry,
|
|
67
|
+
onError,
|
|
68
|
+
onFailed: () => setFailedCount((count) => count + 1),
|
|
69
|
+
children: /* @__PURE__ */ jsx(CandidateRenderer, { entry, owner, renderSlot, translate })
|
|
70
|
+
},
|
|
71
|
+
entry.sequence
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
function groupByCell(entries) {
|
|
75
|
+
const cells = /* @__PURE__ */ new Map();
|
|
76
|
+
for (const entry of entries) {
|
|
77
|
+
const cell = entry.kind === "list" ? entry.id : entry.kind === "keyed" ? entry.key : "single";
|
|
78
|
+
const candidates = cells.get(cell);
|
|
79
|
+
if (candidates) candidates.push(entry);
|
|
80
|
+
else cells.set(cell, [entry]);
|
|
81
|
+
}
|
|
82
|
+
return [...cells.entries()];
|
|
83
|
+
}
|
|
84
|
+
function SlotOutlet({
|
|
85
|
+
name,
|
|
86
|
+
owner,
|
|
87
|
+
entryKey,
|
|
88
|
+
fallback,
|
|
89
|
+
renderSlot = () => null,
|
|
90
|
+
onError = (error, entry) => console.error(`[SlotOutlet] ${entry.name} failed`, error)
|
|
91
|
+
}) {
|
|
92
|
+
const core = useHostSlotCore();
|
|
93
|
+
const translate = useContext(SlotTranslateContext);
|
|
94
|
+
const subscribe = useCallback((callback) => core.subscribe(name, callback), [core, name]);
|
|
95
|
+
const getSnapshot = useCallback(() => core.versionOf(name), [core, name]);
|
|
96
|
+
const version = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
97
|
+
const entries = useMemo(() => {
|
|
98
|
+
for (const kind2 of ["single", "list", "keyed"]) {
|
|
99
|
+
try {
|
|
100
|
+
return core.entriesOf(name, kind2);
|
|
101
|
+
} catch {
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return [];
|
|
105
|
+
}, [core, name, version]);
|
|
106
|
+
if (entries.length === 0) return fallback ?? null;
|
|
107
|
+
const kind = entries[0]?.kind;
|
|
108
|
+
const ownerRecord = owner;
|
|
109
|
+
if (kind === "single") {
|
|
110
|
+
return /* @__PURE__ */ jsx(
|
|
111
|
+
CandidateCell,
|
|
112
|
+
{
|
|
113
|
+
candidates: entries,
|
|
114
|
+
fallback,
|
|
115
|
+
owner: ownerRecord,
|
|
116
|
+
renderSlot,
|
|
117
|
+
translate,
|
|
118
|
+
onError
|
|
119
|
+
},
|
|
120
|
+
`${name}:single:${version}`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
if (kind === "keyed") {
|
|
124
|
+
const candidates = entries.filter((entry) => entry.key === entryKey);
|
|
125
|
+
return /* @__PURE__ */ jsx(
|
|
126
|
+
CandidateCell,
|
|
127
|
+
{
|
|
128
|
+
candidates,
|
|
129
|
+
fallback,
|
|
130
|
+
owner: ownerRecord,
|
|
131
|
+
renderSlot,
|
|
132
|
+
translate,
|
|
133
|
+
onError
|
|
134
|
+
},
|
|
135
|
+
`${name}:${String(entryKey)}:${version}`
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
return groupByCell(entries).map(
|
|
139
|
+
([cell, candidates]) => createElement(CandidateCell, {
|
|
140
|
+
key: `${name}:${cell}:${version}`,
|
|
141
|
+
candidates,
|
|
142
|
+
owner: ownerRecord,
|
|
143
|
+
renderSlot,
|
|
144
|
+
translate,
|
|
145
|
+
onError
|
|
146
|
+
})
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
export {
|
|
150
|
+
SlotOutlet,
|
|
151
|
+
SlotProvider
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=slot-react.js.map
|