@cohesivesystems/presentation-react-shadcn 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +55 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts +58 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts.map +1 -0
- package/dist/document-workspace-surface-slot-renderers.js +206 -0
- package/dist/document-workspace-surface-slot-renderers.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts +8 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.js +2 -0
- package/dist/navigation-shell-frame-renderer-registry.js.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts +9 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.js +2 -0
- package/dist/navigation-shell-slot-renderer-registry.js.map +1 -0
- package/dist/page-host-unavailable-renderer.d.ts +10 -0
- package/dist/page-host-unavailable-renderer.d.ts.map +1 -0
- package/dist/page-host-unavailable-renderer.js +27 -0
- package/dist/page-host-unavailable-renderer.js.map +1 -0
- package/dist/presentation-action-group.d.ts +99 -0
- package/dist/presentation-action-group.d.ts.map +1 -0
- package/dist/presentation-action-group.js +214 -0
- package/dist/presentation-action-group.js.map +1 -0
- package/dist/presentation-badge-target-interpreter.d.ts +26 -0
- package/dist/presentation-badge-target-interpreter.d.ts.map +1 -0
- package/dist/presentation-badge-target-interpreter.js +17 -0
- package/dist/presentation-badge-target-interpreter.js.map +1 -0
- package/dist/presentation-component-groups.d.ts +968 -0
- package/dist/presentation-component-groups.d.ts.map +1 -0
- package/dist/presentation-component-groups.js +505 -0
- package/dist/presentation-component-groups.js.map +1 -0
- package/dist/presentation-component-system-diagnostics.d.ts +27 -0
- package/dist/presentation-component-system-diagnostics.d.ts.map +1 -0
- package/dist/presentation-component-system-diagnostics.js +399 -0
- package/dist/presentation-component-system-diagnostics.js.map +1 -0
- package/dist/presentation-component-system.d.ts +31 -0
- package/dist/presentation-component-system.d.ts.map +1 -0
- package/dist/presentation-component-system.js +61 -0
- package/dist/presentation-component-system.js.map +1 -0
- package/dist/presentation-icon-diagnostics.d.ts +12 -0
- package/dist/presentation-icon-diagnostics.d.ts.map +1 -0
- package/dist/presentation-icon-diagnostics.js +17 -0
- package/dist/presentation-icon-diagnostics.js.map +1 -0
- package/dist/presentation-icon-registry.d.ts +28 -0
- package/dist/presentation-icon-registry.d.ts.map +1 -0
- package/dist/presentation-icon-registry.js +80 -0
- package/dist/presentation-icon-registry.js.map +1 -0
- package/dist/presentation-projection-trace-panel.d.ts +10 -0
- package/dist/presentation-projection-trace-panel.d.ts.map +1 -0
- package/dist/presentation-projection-trace-panel.js +48 -0
- package/dist/presentation-projection-trace-panel.js.map +1 -0
- package/dist/presentation-routed-surface-host.d.ts +19 -0
- package/dist/presentation-routed-surface-host.d.ts.map +1 -0
- package/dist/presentation-routed-surface-host.js +12 -0
- package/dist/presentation-routed-surface-host.js.map +1 -0
- package/dist/presentation-shadcn-component-system.d.ts +22 -0
- package/dist/presentation-shadcn-component-system.d.ts.map +1 -0
- package/dist/presentation-shadcn-component-system.js +2 -0
- package/dist/presentation-shadcn-component-system.js.map +1 -0
- package/dist/presentation-standard-renderers.d.ts +168 -0
- package/dist/presentation-standard-renderers.d.ts.map +1 -0
- package/dist/presentation-standard-renderers.js +440 -0
- package/dist/presentation-standard-renderers.js.map +1 -0
- package/dist/presentation-surface-renderer.d.ts +23 -0
- package/dist/presentation-surface-renderer.d.ts.map +1 -0
- package/dist/presentation-surface-renderer.js +119 -0
- package/dist/presentation-surface-renderer.js.map +1 -0
- package/dist/presentation-value-renderers.d.ts +10 -0
- package/dist/presentation-value-renderers.d.ts.map +1 -0
- package/dist/presentation-value-renderers.js +14 -0
- package/dist/presentation-value-renderers.js.map +1 -0
- package/dist/process-task-icons.d.ts +49 -0
- package/dist/process-task-icons.d.ts.map +1 -0
- package/dist/process-task-icons.js +154 -0
- package/dist/process-task-icons.js.map +1 -0
- package/dist/projected-activity-state.d.ts +17 -0
- package/dist/projected-activity-state.d.ts.map +1 -0
- package/dist/projected-activity-state.js +22 -0
- package/dist/projected-activity-state.js.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts +4 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.js +9 -0
- package/dist/projected-collection-action-runtime-diagnostics.js.map +1 -0
- package/dist/projected-collection-view.d.ts +90 -0
- package/dist/projected-collection-view.d.ts.map +1 -0
- package/dist/projected-collection-view.js +532 -0
- package/dist/projected-collection-view.js.map +1 -0
- package/dist/projected-document-action-status-notices.d.ts +15 -0
- package/dist/projected-document-action-status-notices.d.ts.map +1 -0
- package/dist/projected-document-action-status-notices.js +33 -0
- package/dist/projected-document-action-status-notices.js.map +1 -0
- package/dist/projected-document-badges.d.ts +24 -0
- package/dist/projected-document-badges.d.ts.map +1 -0
- package/dist/projected-document-badges.js +53 -0
- package/dist/projected-document-badges.js.map +1 -0
- package/dist/projected-document-editor-surface.d.ts +46 -0
- package/dist/projected-document-editor-surface.d.ts.map +1 -0
- package/dist/projected-document-editor-surface.js +399 -0
- package/dist/projected-document-editor-surface.js.map +1 -0
- package/dist/projected-document-workspace-notices.d.ts +24 -0
- package/dist/projected-document-workspace-notices.d.ts.map +1 -0
- package/dist/projected-document-workspace-notices.js +14 -0
- package/dist/projected-document-workspace-notices.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts +25 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js +41 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts +32 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js +77 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js.map +1 -0
- package/dist/projected-document-workspace-shell.d.ts +100 -0
- package/dist/projected-document-workspace-shell.d.ts.map +1 -0
- package/dist/projected-document-workspace-shell.js +153 -0
- package/dist/projected-document-workspace-shell.js.map +1 -0
- package/dist/projected-document-workspace.d.ts +39 -0
- package/dist/projected-document-workspace.d.ts.map +1 -0
- package/dist/projected-document-workspace.js +63 -0
- package/dist/projected-document-workspace.js.map +1 -0
- package/dist/projected-field-value-rendering.d.ts +94 -0
- package/dist/projected-field-value-rendering.d.ts.map +1 -0
- package/dist/projected-field-value-rendering.js +377 -0
- package/dist/projected-field-value-rendering.js.map +1 -0
- package/dist/projected-inline-list.d.ts +20 -0
- package/dist/projected-inline-list.d.ts.map +1 -0
- package/dist/projected-inline-list.js +149 -0
- package/dist/projected-inline-list.js.map +1 -0
- package/dist/projected-input-form.d.ts +143 -0
- package/dist/projected-input-form.d.ts.map +1 -0
- package/dist/projected-input-form.js +612 -0
- package/dist/projected-input-form.js.map +1 -0
- package/dist/projected-metric-dashboard.d.ts +26 -0
- package/dist/projected-metric-dashboard.d.ts.map +1 -0
- package/dist/projected-metric-dashboard.js +20 -0
- package/dist/projected-metric-dashboard.js.map +1 -0
- package/dist/projected-metric-strip.d.ts +20 -0
- package/dist/projected-metric-strip.d.ts.map +1 -0
- package/dist/projected-metric-strip.js +131 -0
- package/dist/projected-metric-strip.js.map +1 -0
- package/dist/projected-navigation-shell-view-host.d.ts +34 -0
- package/dist/projected-navigation-shell-view-host.d.ts.map +1 -0
- package/dist/projected-navigation-shell-view-host.js +75 -0
- package/dist/projected-navigation-shell-view-host.js.map +1 -0
- package/dist/projected-navigation-shell.d.ts +33 -0
- package/dist/projected-navigation-shell.d.ts.map +1 -0
- package/dist/projected-navigation-shell.js +112 -0
- package/dist/projected-navigation-shell.js.map +1 -0
- package/dist/projected-presentation-badges.d.ts +34 -0
- package/dist/projected-presentation-badges.d.ts.map +1 -0
- package/dist/projected-presentation-badges.js +22 -0
- package/dist/projected-presentation-badges.js.map +1 -0
- package/dist/projected-presentation-diagnostics.d.ts +10 -0
- package/dist/projected-presentation-diagnostics.d.ts.map +1 -0
- package/dist/projected-presentation-diagnostics.js +40 -0
- package/dist/projected-presentation-diagnostics.js.map +1 -0
- package/dist/projected-presentation-flow-layer.d.ts +33 -0
- package/dist/projected-presentation-flow-layer.d.ts.map +1 -0
- package/dist/projected-presentation-flow-layer.js +71 -0
- package/dist/projected-presentation-flow-layer.js.map +1 -0
- package/dist/projected-process-task-notices.d.ts +37 -0
- package/dist/projected-process-task-notices.d.ts.map +1 -0
- package/dist/projected-process-task-notices.js +225 -0
- package/dist/projected-process-task-notices.js.map +1 -0
- package/dist/projected-prompt-child-view-renderer.d.ts +101 -0
- package/dist/projected-prompt-child-view-renderer.d.ts.map +1 -0
- package/dist/projected-prompt-child-view-renderer.js +442 -0
- package/dist/projected-prompt-child-view-renderer.js.map +1 -0
- package/dist/projected-prompt-document-preview.d.ts +39 -0
- package/dist/projected-prompt-document-preview.d.ts.map +1 -0
- package/dist/projected-prompt-document-preview.js +50 -0
- package/dist/projected-prompt-document-preview.js.map +1 -0
- package/dist/projected-prompt-view.d.ts +35 -0
- package/dist/projected-prompt-view.d.ts.map +1 -0
- package/dist/projected-prompt-view.js +292 -0
- package/dist/projected-prompt-view.js.map +1 -0
- package/dist/projected-query-form.d.ts +56 -0
- package/dist/projected-query-form.d.ts.map +1 -0
- package/dist/projected-query-form.js +100 -0
- package/dist/projected-query-form.js.map +1 -0
- package/dist/projected-record-details.d.ts +20 -0
- package/dist/projected-record-details.d.ts.map +1 -0
- package/dist/projected-record-details.js +60 -0
- package/dist/projected-record-details.js.map +1 -0
- package/dist/projected-routed-surface-runtime.d.ts +86 -0
- package/dist/projected-routed-surface-runtime.d.ts.map +1 -0
- package/dist/projected-routed-surface-runtime.js +332 -0
- package/dist/projected-routed-surface-runtime.js.map +1 -0
- package/dist/projected-tabs-view.d.ts +21 -0
- package/dist/projected-tabs-view.d.ts.map +1 -0
- package/dist/projected-tabs-view.js +140 -0
- package/dist/projected-tabs-view.js.map +1 -0
- package/dist/projected-view-chrome.d.ts +15 -0
- package/dist/projected-view-chrome.d.ts.map +1 -0
- package/dist/projected-view-chrome.js +67 -0
- package/dist/projected-view-chrome.js.map +1 -0
- package/dist/projected-view-surface.d.ts +34 -0
- package/dist/projected-view-surface.d.ts.map +1 -0
- package/dist/projected-view-surface.js +40 -0
- package/dist/projected-view-surface.js.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts +26 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.js +250 -0
- package/dist/standard-collection-chrome-slot-renderers.js.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts +57 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.js +614 -0
- package/dist/standard-view-chrome-slot-renderers.js.map +1 -0
- package/package.json +68 -0
- package/src/document-workspace-surface-slot-renderers.tsx +395 -0
- package/src/index.ts +53 -0
- package/src/navigation-shell-frame-renderer-registry.ts +29 -0
- package/src/navigation-shell-slot-renderer-registry.ts +46 -0
- package/src/page-host-unavailable-renderer.tsx +79 -0
- package/src/presentation-action-group.tsx +475 -0
- package/src/presentation-badge-target-interpreter.ts +54 -0
- package/src/presentation-component-groups.ts +2505 -0
- package/src/presentation-component-system-diagnostics.ts +848 -0
- package/src/presentation-component-system.ts +365 -0
- package/src/presentation-icon-diagnostics.ts +53 -0
- package/src/presentation-icon-registry.tsx +181 -0
- package/src/presentation-projection-trace-panel.tsx +140 -0
- package/src/presentation-routed-surface-host.tsx +48 -0
- package/src/presentation-shadcn-component-system.ts +102 -0
- package/src/presentation-standard-renderers.tsx +1290 -0
- package/src/presentation-surface-renderer.tsx +263 -0
- package/src/presentation-value-renderers.tsx +40 -0
- package/src/process-task-icons.tsx +258 -0
- package/src/projected-activity-state.tsx +63 -0
- package/src/projected-collection-action-runtime-diagnostics.ts +22 -0
- package/src/projected-collection-view.tsx +1273 -0
- package/src/projected-document-action-status-notices.tsx +66 -0
- package/src/projected-document-badges.tsx +134 -0
- package/src/projected-document-editor-surface.tsx +808 -0
- package/src/projected-document-workspace-notices.tsx +77 -0
- package/src/projected-document-workspace-prompt-child-view-registry.ts +99 -0
- package/src/projected-document-workspace-prompt-child-view-renderers.tsx +205 -0
- package/src/projected-document-workspace-shell.tsx +427 -0
- package/src/projected-document-workspace.tsx +216 -0
- package/src/projected-field-value-rendering.tsx +704 -0
- package/src/projected-inline-list.tsx +434 -0
- package/src/projected-input-form.tsx +1218 -0
- package/src/projected-metric-dashboard.tsx +106 -0
- package/src/projected-metric-strip.tsx +244 -0
- package/src/projected-navigation-shell-view-host.tsx +177 -0
- package/src/projected-navigation-shell.tsx +219 -0
- package/src/projected-presentation-badges.tsx +95 -0
- package/src/projected-presentation-diagnostics.tsx +120 -0
- package/src/projected-presentation-flow-layer.tsx +186 -0
- package/src/projected-process-task-notices.tsx +501 -0
- package/src/projected-prompt-child-view-renderer.tsx +698 -0
- package/src/projected-prompt-document-preview.tsx +197 -0
- package/src/projected-prompt-view.tsx +592 -0
- package/src/projected-query-form.tsx +286 -0
- package/src/projected-record-details.tsx +133 -0
- package/src/projected-routed-surface-runtime.tsx +713 -0
- package/src/projected-tabs-view.tsx +308 -0
- package/src/projected-view-chrome.tsx +148 -0
- package/src/projected-view-surface.tsx +131 -0
- package/src/standard-collection-chrome-slot-renderers.tsx +391 -0
- package/src/standard-view-chrome-slot-renderers.tsx +1064 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { PresentationDesignSystem } from '@cohesivesystems/presentation-tailwind'
|
|
2
|
+
import type {
|
|
3
|
+
DocumentProfileProjection,
|
|
4
|
+
ProcessTask,
|
|
5
|
+
ProcessTaskSelector,
|
|
6
|
+
ProcessTaskSelectorDefinition,
|
|
7
|
+
ProjectedDocumentActionStatusMap,
|
|
8
|
+
} from '@cohesivesystems/presentation-core'
|
|
9
|
+
import type {
|
|
10
|
+
PresentationShadcnComponentSystem as PresentationComponentSystem,
|
|
11
|
+
} from './presentation-shadcn-component-system'
|
|
12
|
+
import {
|
|
13
|
+
ProjectedDocumentActionStatusNotices,
|
|
14
|
+
} from './projected-document-action-status-notices'
|
|
15
|
+
import {
|
|
16
|
+
ProjectedProcessTaskNotices,
|
|
17
|
+
type ProjectedProcessTaskNoticeRenderer,
|
|
18
|
+
} from './projected-process-task-notices'
|
|
19
|
+
|
|
20
|
+
export interface ProjectedDocumentWorkspaceNoticesProps<TContext> {
|
|
21
|
+
readonly actionStatuses: ProjectedDocumentActionStatusMap
|
|
22
|
+
readonly componentSystem: PresentationComponentSystem
|
|
23
|
+
readonly context: TContext
|
|
24
|
+
readonly designSystem: PresentationDesignSystem
|
|
25
|
+
readonly findActiveTask?: (selector: ProcessTaskSelector) => ProcessTask | null
|
|
26
|
+
readonly profile: Pick<
|
|
27
|
+
DocumentProfileProjection,
|
|
28
|
+
'ActionStatusNotices' | 'ProcessTaskNotices' | 'ProcessTaskSelectors'
|
|
29
|
+
> | null
|
|
30
|
+
readonly projectSelector: (
|
|
31
|
+
selector: ProcessTaskSelectorDefinition | null | undefined,
|
|
32
|
+
context: TContext,
|
|
33
|
+
) => ProcessTaskSelector | null
|
|
34
|
+
readonly region?: string
|
|
35
|
+
readonly renderProcessTaskNotice?: ProjectedProcessTaskNoticeRenderer
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Projects all document-profile notices for a workspace chrome region.
|
|
40
|
+
*
|
|
41
|
+
* Action status notices are rendered by the shared presentation layer. Process
|
|
42
|
+
* task notices resolve from IR selectors here, then delegate their concrete
|
|
43
|
+
* visual interpretation to the host adapter.
|
|
44
|
+
*/
|
|
45
|
+
export function ProjectedDocumentWorkspaceNotices<TContext>({
|
|
46
|
+
actionStatuses,
|
|
47
|
+
componentSystem,
|
|
48
|
+
context,
|
|
49
|
+
designSystem,
|
|
50
|
+
findActiveTask,
|
|
51
|
+
profile,
|
|
52
|
+
projectSelector,
|
|
53
|
+
region,
|
|
54
|
+
renderProcessTaskNotice,
|
|
55
|
+
}: ProjectedDocumentWorkspaceNoticesProps<TContext>) {
|
|
56
|
+
return (
|
|
57
|
+
<>
|
|
58
|
+
<ProjectedDocumentActionStatusNotices
|
|
59
|
+
actionStatuses={actionStatuses}
|
|
60
|
+
profile={profile}
|
|
61
|
+
region={region}
|
|
62
|
+
/>
|
|
63
|
+
{findActiveTask ? (
|
|
64
|
+
<ProjectedProcessTaskNotices
|
|
65
|
+
componentSystem={componentSystem}
|
|
66
|
+
context={context}
|
|
67
|
+
designSystem={designSystem}
|
|
68
|
+
findActiveTask={findActiveTask}
|
|
69
|
+
profile={profile}
|
|
70
|
+
projectSelector={projectSelector}
|
|
71
|
+
region={region}
|
|
72
|
+
renderNotice={renderProcessTaskNotice}
|
|
73
|
+
/>
|
|
74
|
+
) : null}
|
|
75
|
+
</>
|
|
76
|
+
)
|
|
77
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { createElement } from 'react'
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
DocumentWorkspaceProjectionRendererRegistry,
|
|
5
|
+
} from '@cohesivesystems/presentation-react'
|
|
6
|
+
import type {
|
|
7
|
+
PresentationShadcnComponentSystem as PresentationComponentSystem,
|
|
8
|
+
} from './presentation-shadcn-component-system'
|
|
9
|
+
import type {
|
|
10
|
+
PresentationDesignSystem,
|
|
11
|
+
} from '@cohesivesystems/presentation-tailwind'
|
|
12
|
+
import type {
|
|
13
|
+
ProjectedDocumentActionStatusMap,
|
|
14
|
+
} from '@cohesivesystems/presentation-core'
|
|
15
|
+
import {
|
|
16
|
+
mergeProjectedPromptChildViewRendererRegistries,
|
|
17
|
+
promptChildViewSemanticRoles,
|
|
18
|
+
type ProjectedPromptChildViewRenderer,
|
|
19
|
+
type ProjectedPromptChildViewRendererRegistry,
|
|
20
|
+
} from './projected-prompt-child-view-renderer'
|
|
21
|
+
import {
|
|
22
|
+
ProjectedDocumentWorkspacePromptPreviewProjection,
|
|
23
|
+
ProjectedJsonDocumentDiffProjection,
|
|
24
|
+
type ProjectedDocumentWorkspacePromptPreviewRenderContextOptions,
|
|
25
|
+
} from './projected-document-workspace-prompt-child-view-renderers'
|
|
26
|
+
import {
|
|
27
|
+
promptChildViewComponentRoles,
|
|
28
|
+
} from '@cohesivesystems/presentation-contracts'
|
|
29
|
+
|
|
30
|
+
export type {
|
|
31
|
+
ProjectedDocumentWorkspacePromptPreviewRenderContextOptions,
|
|
32
|
+
} from './projected-document-workspace-prompt-child-view-renderers'
|
|
33
|
+
|
|
34
|
+
export interface CreateProjectedDocumentWorkspacePromptChildViewRegistryOptions<TContext> {
|
|
35
|
+
readonly actionStatuses: ProjectedDocumentActionStatusMap
|
|
36
|
+
readonly createPromptPreviewRenderContext: (
|
|
37
|
+
context: ProjectedDocumentWorkspacePromptPreviewRenderContextOptions,
|
|
38
|
+
) => TContext
|
|
39
|
+
readonly projectionRenderers: DocumentWorkspaceProjectionRendererRegistry<
|
|
40
|
+
TContext,
|
|
41
|
+
PresentationComponentSystem,
|
|
42
|
+
PresentationDesignSystem
|
|
43
|
+
>
|
|
44
|
+
readonly registries?: readonly ProjectedPromptChildViewRendererRegistry<TContext>[]
|
|
45
|
+
readonly renderJsonDocumentDiff?: ProjectedPromptChildViewRenderer<TContext>
|
|
46
|
+
readonly renderPromptDocumentPreview?: ProjectedPromptChildViewRenderer<TContext>
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Creates the standard prompt child-view registry for document workspaces.
|
|
51
|
+
*
|
|
52
|
+
* The backend declares semantic child views such as JSON document diffs and
|
|
53
|
+
* prompt document previews. This helper binds those roles to reusable
|
|
54
|
+
* document-workspace renderers while leaving the concrete projection render
|
|
55
|
+
* context to the app adapter.
|
|
56
|
+
*/
|
|
57
|
+
export function createProjectedDocumentWorkspacePromptChildViewRegistry<TContext>({
|
|
58
|
+
actionStatuses,
|
|
59
|
+
createPromptPreviewRenderContext,
|
|
60
|
+
projectionRenderers,
|
|
61
|
+
registries = [],
|
|
62
|
+
renderJsonDocumentDiff,
|
|
63
|
+
renderPromptDocumentPreview,
|
|
64
|
+
}: CreateProjectedDocumentWorkspacePromptChildViewRegistryOptions<TContext>): ProjectedPromptChildViewRendererRegistry<TContext> {
|
|
65
|
+
const jsonDocumentDiffRenderer =
|
|
66
|
+
renderJsonDocumentDiff ?? ((context) =>
|
|
67
|
+
createElement(ProjectedJsonDocumentDiffProjection, {
|
|
68
|
+
componentSystem: context.componentSystem,
|
|
69
|
+
dataSourceResolver: context.dataSourceResolver,
|
|
70
|
+
view: context.view,
|
|
71
|
+
}))
|
|
72
|
+
const promptDocumentPreviewRenderer =
|
|
73
|
+
renderPromptDocumentPreview ?? ((context) =>
|
|
74
|
+
createElement(ProjectedDocumentWorkspacePromptPreviewProjection<TContext>, {
|
|
75
|
+
actionStatuses,
|
|
76
|
+
componentSystem: context.componentSystem,
|
|
77
|
+
createProjectionRenderContext: createPromptPreviewRenderContext,
|
|
78
|
+
dataSourceResolver: context.dataSourceResolver,
|
|
79
|
+
designSystem: context.designSystem,
|
|
80
|
+
projectionRenderers,
|
|
81
|
+
promptView: context.promptView,
|
|
82
|
+
view: context.view,
|
|
83
|
+
viewId: context.viewId,
|
|
84
|
+
}))
|
|
85
|
+
|
|
86
|
+
return mergeProjectedPromptChildViewRendererRegistries(
|
|
87
|
+
{
|
|
88
|
+
byComponentRole: {
|
|
89
|
+
[promptChildViewComponentRoles.jsonDocumentDiff]: jsonDocumentDiffRenderer,
|
|
90
|
+
[promptChildViewComponentRoles.promptDocumentPreview]: promptDocumentPreviewRenderer,
|
|
91
|
+
},
|
|
92
|
+
bySemanticRole: {
|
|
93
|
+
[promptChildViewSemanticRoles.jsonDocumentDiff]: jsonDocumentDiffRenderer,
|
|
94
|
+
[promptChildViewSemanticRoles.promptDocumentPreview]: promptDocumentPreviewRenderer,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
...registries,
|
|
98
|
+
)
|
|
99
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
DocumentWorkspaceProjectionRendererRegistry,
|
|
3
|
+
} from '@cohesivesystems/presentation-react'
|
|
4
|
+
import type {
|
|
5
|
+
PresentationShadcnComponentSystem as PresentationComponentSystem,
|
|
6
|
+
} from './presentation-shadcn-component-system'
|
|
7
|
+
import type {
|
|
8
|
+
PresentationDesignSystem,
|
|
9
|
+
} from '@cohesivesystems/presentation-tailwind'
|
|
10
|
+
import {
|
|
11
|
+
findPromptDocumentPreviewRegionId,
|
|
12
|
+
findPromptDocumentPreviewStatusRegionId,
|
|
13
|
+
getErrorMessage,
|
|
14
|
+
readObjectProperty,
|
|
15
|
+
resolvePromptDocumentPreviewPath,
|
|
16
|
+
resolvePromptDocumentPreviewText,
|
|
17
|
+
resolvePromptStatusMessages,
|
|
18
|
+
resolvePromptStatusMessageText,
|
|
19
|
+
type PresentationDataSourceResolver,
|
|
20
|
+
type ProjectedDocumentActionStatusMap,
|
|
21
|
+
type ProjectedPromptDocumentPreviewData,
|
|
22
|
+
type ViewDefinition,
|
|
23
|
+
} from '@cohesivesystems/presentation-core'
|
|
24
|
+
import {
|
|
25
|
+
ProjectedStatusBlock,
|
|
26
|
+
} from './projected-activity-state'
|
|
27
|
+
import {
|
|
28
|
+
ProjectedPromptDocumentPreview,
|
|
29
|
+
} from './projected-prompt-document-preview'
|
|
30
|
+
|
|
31
|
+
export interface ProjectedDocumentWorkspacePromptPreviewRenderContextOptions {
|
|
32
|
+
readonly editorPath: string
|
|
33
|
+
readonly editorText: string
|
|
34
|
+
readonly isReadOnly: boolean
|
|
35
|
+
readonly previewData: ProjectedPromptDocumentPreviewData
|
|
36
|
+
readonly view: ViewDefinition
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface ProjectedJsonDocumentDiffProjectionProps {
|
|
40
|
+
readonly componentSystem: PresentationComponentSystem
|
|
41
|
+
readonly dataSourceResolver: PresentationDataSourceResolver
|
|
42
|
+
readonly view: ViewDefinition
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
interface JsonDocumentDiffReviewData {
|
|
46
|
+
readonly error?: string | null
|
|
47
|
+
readonly modified?: string | null
|
|
48
|
+
readonly original?: string | null
|
|
49
|
+
readonly path?: string | null
|
|
50
|
+
readonly title?: string | null
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface ProjectedDocumentWorkspacePromptPreviewProjectionProps<TContext> {
|
|
54
|
+
readonly actionStatuses: ProjectedDocumentActionStatusMap
|
|
55
|
+
readonly componentSystem: PresentationComponentSystem
|
|
56
|
+
readonly createProjectionRenderContext: (
|
|
57
|
+
context: ProjectedDocumentWorkspacePromptPreviewRenderContextOptions,
|
|
58
|
+
) => TContext
|
|
59
|
+
readonly dataSourceResolver: PresentationDataSourceResolver
|
|
60
|
+
readonly designSystem: PresentationDesignSystem
|
|
61
|
+
readonly projectionRenderers: DocumentWorkspaceProjectionRendererRegistry<
|
|
62
|
+
TContext,
|
|
63
|
+
PresentationComponentSystem,
|
|
64
|
+
PresentationDesignSystem
|
|
65
|
+
>
|
|
66
|
+
readonly promptView: ViewDefinition
|
|
67
|
+
readonly statusRegionId?: string | null
|
|
68
|
+
readonly view: ViewDefinition
|
|
69
|
+
readonly viewId: string
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function ProjectedJsonDocumentDiffProjection({
|
|
73
|
+
componentSystem,
|
|
74
|
+
dataSourceResolver,
|
|
75
|
+
view,
|
|
76
|
+
}: ProjectedJsonDocumentDiffProjectionProps) {
|
|
77
|
+
const state = dataSourceResolver.resolveViewPrimary<JsonDocumentDiffReviewData>(view)
|
|
78
|
+
const data = state?.data
|
|
79
|
+
if (!data || typeof data !== 'object') {
|
|
80
|
+
return <ProjectedStatusBlock label="JSON diff data is not available." />
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return componentSystem.documentWorkspaces.JsonDocumentDiff({
|
|
84
|
+
error: readString(data, 'error') ?? (state.error ? getErrorMessage(state.error) : null),
|
|
85
|
+
modified: readString(data, 'modified') ?? '',
|
|
86
|
+
original: readString(data, 'original') ?? '',
|
|
87
|
+
path: readString(data, 'path') ?? 'document.json',
|
|
88
|
+
title: readString(data, 'title') ?? view.Name,
|
|
89
|
+
viewId: view.Id,
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function ProjectedDocumentWorkspacePromptPreviewProjection<TContext>({
|
|
94
|
+
actionStatuses,
|
|
95
|
+
createProjectionRenderContext,
|
|
96
|
+
componentSystem,
|
|
97
|
+
dataSourceResolver,
|
|
98
|
+
designSystem,
|
|
99
|
+
projectionRenderers,
|
|
100
|
+
promptView,
|
|
101
|
+
statusRegionId,
|
|
102
|
+
view,
|
|
103
|
+
viewId,
|
|
104
|
+
}: ProjectedDocumentWorkspacePromptPreviewProjectionProps<TContext>) {
|
|
105
|
+
const previewDefinition = view.PromptDocumentPreview
|
|
106
|
+
const previewRegionId = findPromptDocumentPreviewRegionId(promptView, view.Id) ?? view.Id
|
|
107
|
+
const previewMessages = resolvePromptStatusMessages({
|
|
108
|
+
actionStatuses,
|
|
109
|
+
dataSourceResolver,
|
|
110
|
+
region: previewRegionId,
|
|
111
|
+
view: promptView,
|
|
112
|
+
})
|
|
113
|
+
const previewState = resolvePromptDocumentPreviewState({
|
|
114
|
+
dataSourceResolver,
|
|
115
|
+
view,
|
|
116
|
+
})
|
|
117
|
+
const preview = readPromptDocumentPreviewData({
|
|
118
|
+
state: previewState,
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
if (!preview) {
|
|
122
|
+
if (previewState?.error) {
|
|
123
|
+
return (
|
|
124
|
+
<ProjectedStatusBlock
|
|
125
|
+
label={getErrorMessage(previewState.error)}
|
|
126
|
+
tone="error"
|
|
127
|
+
/>
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const pendingMessage = previewMessages[0]
|
|
132
|
+
return pendingMessage ? (
|
|
133
|
+
<ProjectedStatusBlock
|
|
134
|
+
label={pendingMessage.label}
|
|
135
|
+
tone={pendingMessage.tone}
|
|
136
|
+
/>
|
|
137
|
+
) : null
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const previewError = previewMessages.find((message) => message.tone === 'error')?.label ?? null
|
|
141
|
+
const resolvedStatusRegionId =
|
|
142
|
+
statusRegionId ?? findPromptDocumentPreviewStatusRegionId(promptView, view.Id)
|
|
143
|
+
const statusLabel = resolvedStatusRegionId
|
|
144
|
+
? resolvePromptStatusMessageText({
|
|
145
|
+
actionStatuses,
|
|
146
|
+
dataSourceResolver,
|
|
147
|
+
region: resolvedStatusRegionId,
|
|
148
|
+
view: promptView,
|
|
149
|
+
})
|
|
150
|
+
: null
|
|
151
|
+
const previewText = resolvePromptDocumentPreviewText(previewDefinition, preview)
|
|
152
|
+
const previewRenderContext = createProjectionRenderContext({
|
|
153
|
+
editorPath: resolvePromptDocumentPreviewPath(previewDefinition, preview),
|
|
154
|
+
editorText: previewText,
|
|
155
|
+
isReadOnly: previewDefinition?.IsReadOnly ?? true,
|
|
156
|
+
previewData: preview,
|
|
157
|
+
view,
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
return (
|
|
161
|
+
<ProjectedPromptDocumentPreview
|
|
162
|
+
componentSystem={componentSystem}
|
|
163
|
+
designSystem={designSystem}
|
|
164
|
+
definition={previewDefinition}
|
|
165
|
+
error={previewError}
|
|
166
|
+
fallback={<ProjectedStatusBlock label="Document preview workspace is not available." />}
|
|
167
|
+
previewData={preview}
|
|
168
|
+
projectionRenderContext={previewRenderContext}
|
|
169
|
+
projectionRenderers={projectionRenderers}
|
|
170
|
+
renderUnavailableProjection={() => (
|
|
171
|
+
<ProjectedStatusBlock label="This preview view is not available." />
|
|
172
|
+
)}
|
|
173
|
+
statusLabel={statusLabel ?? undefined}
|
|
174
|
+
viewId={viewId}
|
|
175
|
+
/>
|
|
176
|
+
)
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function readPromptDocumentPreviewData({
|
|
180
|
+
state,
|
|
181
|
+
}: {
|
|
182
|
+
readonly state: ReturnType<typeof resolvePromptDocumentPreviewState>
|
|
183
|
+
}) {
|
|
184
|
+
return state?.data ?? null
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function resolvePromptDocumentPreviewState({
|
|
188
|
+
dataSourceResolver,
|
|
189
|
+
view,
|
|
190
|
+
}: {
|
|
191
|
+
readonly dataSourceResolver: PresentationDataSourceResolver
|
|
192
|
+
readonly view: ViewDefinition
|
|
193
|
+
}) {
|
|
194
|
+
const dataSourceId = view.PromptDocumentPreview?.DataSourceId
|
|
195
|
+
if (dataSourceId) {
|
|
196
|
+
return dataSourceResolver.resolve<ProjectedPromptDocumentPreviewData>(dataSourceId)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return dataSourceResolver.resolveViewPrimary<ProjectedPromptDocumentPreviewData>(view)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
function readString(source: object, key: string) {
|
|
203
|
+
const value = readObjectProperty(source, key)
|
|
204
|
+
return typeof value === 'string' ? value : null
|
|
205
|
+
}
|