@beyondwork/docx-react-component 1.0.106 → 1.0.108
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/package.json +19 -5
- package/src/api/geometry-overlay-rects.ts +5 -0
- package/src/api/package-version.ts +1 -1
- package/src/api/page-anchor-id.ts +5 -0
- package/src/api/public-types.ts +16 -9
- package/src/api/table-node-specs.ts +6 -0
- package/src/api/v3/_create.ts +2 -1
- package/src/api/v3/_page-anchor-id.ts +52 -0
- package/src/api/v3/_runtime-handle.ts +92 -1
- package/src/api/v3/ai/_audit-time.ts +5 -0
- package/src/api/v3/ai/_pe2-evidence.ts +38 -0
- package/src/api/v3/ai/attach.ts +7 -2
- package/src/api/v3/ai/replacement.ts +101 -18
- package/src/api/v3/ai/resolve.ts +2 -2
- package/src/api/v3/ai/review.ts +177 -3
- package/src/api/v3/index.ts +1 -0
- package/src/api/v3/runtime/collab.ts +462 -0
- package/src/api/v3/runtime/document.ts +503 -20
- package/src/api/v3/runtime/geometry.ts +97 -0
- package/src/api/v3/runtime/layout.ts +744 -0
- package/src/api/v3/runtime/perf-probe.ts +14 -0
- package/src/api/v3/runtime/viewport.ts +9 -8
- package/src/api/v3/ui/_types.ts +149 -55
- package/src/api/v3/ui/chrome-preset-model.ts +5 -5
- package/src/api/v3/ui/debug.ts +115 -2
- package/src/api/v3/ui/index.ts +13 -0
- package/src/api/v3/ui/overlays.ts +0 -8
- package/src/api/v3/ui/surface.ts +56 -0
- package/src/api/v3/ui/viewport.ts +22 -9
- package/src/core/commands/image-commands.ts +1 -0
- package/src/core/commands/index.ts +6 -0
- package/src/core/schema/text-schema.ts +43 -5
- package/src/core/selection/mapping.ts +8 -1
- package/src/core/selection/review-anchors.ts +5 -1
- package/src/core/state/text-transaction.ts +8 -2
- package/src/io/export/serialize-revisions.ts +149 -1
- package/src/io/normalize/normalize-text.ts +6 -0
- package/src/io/ooxml/parse-bookmark-references.ts +55 -0
- package/src/io/ooxml/parse-fields.ts +24 -2
- package/src/io/ooxml/parse-headers-footers.ts +38 -5
- package/src/io/ooxml/parse-main-document.ts +153 -9
- package/src/io/ooxml/parse-numbering.ts +20 -0
- package/src/io/ooxml/parse-revisions.ts +19 -8
- package/src/io/opc/package-reader.ts +98 -8
- package/src/model/anchor.ts +4 -3
- package/src/model/canonical-document.ts +220 -2
- package/src/model/canonical-hash.ts +221 -0
- package/src/model/canonical-layout-inputs.ts +245 -6
- package/src/model/layout/index.ts +1 -0
- package/src/model/layout/page-graph-types.ts +118 -1
- package/src/model/review/revision-types.ts +14 -3
- package/src/preservation/store.ts +20 -4
- package/src/review/README.md +1 -1
- package/src/review/store/revision-actions.ts +14 -2
- package/src/runtime/collab/event-types.ts +67 -1
- package/src/runtime/collab/runtime-collab-sync.ts +177 -5
- package/src/runtime/diagnostics/layout-guard-warning.ts +18 -0
- package/src/runtime/document-heading-outline.ts +147 -0
- package/src/runtime/document-navigation.ts +8 -243
- package/src/runtime/document-runtime.ts +240 -97
- package/src/runtime/edit-dispatch/dispatch-text-command.ts +11 -0
- package/src/runtime/formatting/layout-inputs.ts +38 -5
- package/src/runtime/formatting/numbering/geometry.ts +28 -2
- package/src/runtime/geometry/adjacent-geometry-intake.ts +835 -0
- package/src/runtime/geometry/caret-geometry.ts +5 -6
- package/src/runtime/geometry/geometry-facet.ts +60 -10
- package/src/runtime/geometry/geometry-index.ts +591 -20
- package/src/runtime/geometry/geometry-types.ts +59 -0
- package/src/runtime/geometry/hit-test.ts +11 -1
- package/src/runtime/geometry/overlay-rects.ts +5 -3
- package/src/runtime/geometry/project-anchors.ts +1 -1
- package/src/runtime/geometry/word-layout-v2-line-intake.ts +323 -0
- package/src/runtime/layout/index.ts +6 -0
- package/src/runtime/layout/layout-engine-instance.ts +6 -1
- package/src/runtime/layout/layout-engine-version.ts +181 -16
- package/src/runtime/layout/layout-facet-types.ts +6 -0
- package/src/runtime/layout/page-graph.ts +21 -4
- package/src/runtime/layout/paginated-layout-engine.ts +139 -15
- package/src/runtime/layout/project-block-fragments.ts +265 -7
- package/src/runtime/layout/public-facet.ts +78 -24
- package/src/runtime/layout/table-row-continuation-contract.ts +107 -0
- package/src/runtime/layout/table-row-split.ts +92 -35
- package/src/runtime/prerender/cache-envelope.ts +2 -2
- package/src/runtime/prerender/cache-key.ts +5 -4
- package/src/runtime/prerender/customxml-cache.ts +0 -1
- package/src/runtime/render/render-kernel.ts +1 -1
- package/src/runtime/revision-runtime.ts +112 -10
- package/src/runtime/scopes/_scope-dependencies.ts +1 -0
- package/src/runtime/scopes/action-validation.ts +22 -2
- package/src/runtime/scopes/capabilities.ts +316 -0
- package/src/runtime/scopes/compile-scope-bundle.ts +14 -0
- package/src/runtime/scopes/compiler-service.ts +108 -4
- package/src/runtime/scopes/content-control-evidence.ts +79 -0
- package/src/runtime/scopes/create-issue.ts +5 -5
- package/src/runtime/scopes/evidence.ts +91 -0
- package/src/runtime/scopes/formatting/apply.ts +2 -0
- package/src/runtime/scopes/geometry-evidence.ts +130 -0
- package/src/runtime/scopes/index.ts +54 -0
- package/src/runtime/scopes/issue-lifecycle.ts +224 -0
- package/src/runtime/scopes/layout-evidence.ts +374 -0
- package/src/runtime/scopes/multi-paragraph-refusal.ts +37 -0
- package/src/runtime/scopes/preservation-boundary.ts +7 -1
- package/src/runtime/scopes/replacement/apply.ts +97 -34
- package/src/runtime/scopes/scope-kinds/paragraph.ts +108 -12
- package/src/runtime/scopes/semantic-scope-types.ts +242 -3
- package/src/runtime/scopes/visualization.ts +28 -0
- package/src/runtime/surface-projection.ts +44 -5
- package/src/runtime/telemetry/perf-probe.ts +216 -0
- package/src/runtime/virtualized-rendering.ts +36 -1
- package/src/runtime/workflow/ai-issue-lifecycle.ts +253 -0
- package/src/runtime/workflow/coordinator.ts +39 -11
- package/src/runtime/workflow/derived-scope-resolver.ts +63 -9
- package/src/runtime/workflow/index.ts +3 -0
- package/src/runtime/workflow/overlay-lane-types.ts +58 -0
- package/src/runtime/workflow/overlay-lanes.ts +168 -10
- package/src/runtime/workflow/overlay-store.ts +2 -2
- package/src/runtime/workflow/redline-posture-calibration.ts +257 -0
- package/src/runtime/workflow/word-field-matrix-calibration.ts +231 -0
- package/src/session/_sync-legacy.ts +17 -27
- package/src/session/import/loader.ts +6 -4
- package/src/session/import/source-package-evidence.ts +186 -2
- package/src/session/index.ts +5 -6
- package/src/session/session.ts +30 -56
- package/src/session/types.ts +8 -13
- package/src/shell/session-bootstrap.ts +155 -81
- package/src/ui/WordReviewEditor.tsx +520 -12
- package/src/ui/editor-shell-view.tsx +14 -4
- package/src/ui/editor-surface-controller.tsx +5 -3
- package/src/ui/headless/selection-tool-resolver.ts +1 -2
- package/src/ui/presence-overlay-lane.ts +0 -1
- package/src/ui/ui-controller-factory.ts +7 -0
- package/src/ui-tailwind/chrome/build-context-menu-entries.ts +5 -1
- package/src/ui-tailwind/chrome/editor-action-registry.ts +105 -5
- package/src/ui-tailwind/chrome/editor-actions-to-palette.ts +7 -0
- package/src/ui-tailwind/chrome/layer-debug-contracts.ts +208 -0
- package/src/ui-tailwind/chrome/resolve-target-kind.ts +13 -0
- package/src/ui-tailwind/chrome/tw-alert-banner.tsx +11 -3
- package/src/ui-tailwind/chrome/tw-command-palette.tsx +36 -6
- package/src/ui-tailwind/chrome/tw-context-menu.tsx +6 -1
- package/src/ui-tailwind/chrome/tw-display-mode-selector.tsx +42 -109
- package/src/ui-tailwind/chrome/tw-inline-find-bar.tsx +26 -6
- package/src/ui-tailwind/chrome/tw-navigation-command-bar.tsx +328 -0
- package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +8 -4
- package/src/ui-tailwind/chrome/tw-runtime-repl-dialog.tsx +129 -1
- package/src/ui-tailwind/chrome/tw-selection-tool-host.tsx +19 -5
- package/src/ui-tailwind/chrome/tw-selection-tool-structure.tsx +5 -1
- package/src/ui-tailwind/chrome/tw-workspace-chrome-host.tsx +28 -12
- package/src/ui-tailwind/chrome-overlay/tw-chrome-overlay.tsx +30 -3
- package/src/ui-tailwind/chrome-overlay/tw-object-selection-overlay.tsx +116 -10
- package/src/ui-tailwind/chrome-overlay/tw-page-stack-overlay-layer.tsx +223 -94
- package/src/ui-tailwind/chrome-overlay/tw-presence-overlay-lane.tsx +157 -0
- package/src/ui-tailwind/chrome-overlay/tw-review-overlay-lane-markers.tsx +259 -0
- package/src/ui-tailwind/chrome-overlay/tw-scope-card-layer.tsx +5 -2
- package/src/ui-tailwind/chrome-overlay/tw-substrate-overlay-lanes.tsx +314 -0
- package/src/ui-tailwind/debug/README.md +4 -1
- package/src/ui-tailwind/debug/layer11-consumer-readiness.ts +272 -0
- package/src/ui-tailwind/debug/layer11-word-field-matrix-evidence.ts +160 -0
- package/src/ui-tailwind/editor-surface/perf-probe.ts +14 -215
- package/src/ui-tailwind/editor-surface/pm-decorations.ts +42 -0
- package/src/ui-tailwind/editor-surface/pm-position-map.ts +38 -2
- package/src/ui-tailwind/editor-surface/pm-schema.ts +14 -4
- package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +34 -5
- package/src/ui-tailwind/editor-surface/runtime-decoration-plugin.ts +9 -19
- package/src/ui-tailwind/editor-surface/surface-build-keys.ts +2 -2
- package/src/ui-tailwind/editor-surface/tw-page-block-view.helpers.ts +145 -0
- package/src/ui-tailwind/editor-surface/tw-page-block-view.tsx +16 -11
- package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +8 -10
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +3 -0
- package/src/ui-tailwind/page-stack/tw-page-chrome-entry.tsx +4 -2
- package/src/ui-tailwind/page-stack/tw-page-stack-chrome-layer.tsx +60 -20
- package/src/ui-tailwind/page-stack/tw-region-block-renderer.tsx +16 -11
- package/src/ui-tailwind/review/tw-health-panel.tsx +36 -17
- package/src/ui-tailwind/review/tw-review-rail.tsx +7 -4
- package/src/ui-tailwind/review-workspace/diagnostics-visibility.ts +44 -0
- package/src/ui-tailwind/review-workspace/page-shell-metrics.ts +11 -0
- package/src/ui-tailwind/review-workspace/tw-review-workspace-rail.tsx +16 -1
- package/src/ui-tailwind/review-workspace/types.ts +26 -12
- package/src/ui-tailwind/review-workspace/use-diagnostics-signal.ts +40 -11
- package/src/ui-tailwind/review-workspace/use-layout-facet-render-signal.ts +2 -1
- package/src/ui-tailwind/review-workspace/use-page-markers.ts +15 -26
- package/src/ui-tailwind/review-workspace/use-scope-card-state.ts +35 -18
- package/src/ui-tailwind/review-workspace/use-selection-toolbar-placement.ts +41 -32
- package/src/ui-tailwind/review-workspace/use-status-bar-page-facts.ts +2 -1
- package/src/ui-tailwind/review-workspace/use-workspace-side-effects.ts +2 -1
- package/src/ui-tailwind/status/tw-status-bar.tsx +6 -5
- package/src/ui-tailwind/toolbar/tw-role-action-region.tsx +52 -80
- package/src/ui-tailwind/toolbar/tw-shell-header.tsx +12 -48
- package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +9 -4
- package/src/ui-tailwind/toolbar/tw-toolbar.tsx +328 -361
- package/src/ui-tailwind/tw-review-workspace.tsx +152 -286
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { type ReactNode } from "react";
|
|
2
|
-
import * as Tabs from "@radix-ui/react-tabs";
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* TwShellHeader — the top "app chrome" bar above the document canvas.
|
|
@@ -7,20 +6,19 @@ import * as Tabs from "@radix-ui/react-tabs";
|
|
|
7
6
|
* Designsystem §6.1 — three subregions on a single 48-px row:
|
|
8
7
|
* ┌─────────────────────────────────────────────────────────────────────┐
|
|
9
8
|
* │ LEFT │ CENTER │ RIGHT │
|
|
10
|
-
* │ brand + slot │
|
|
9
|
+
* │ brand + slot │ host-neutral center gap │ icon actions + CTA │
|
|
11
10
|
* └─────────────────────────────────────────────────────────────────────┘
|
|
12
11
|
*
|
|
13
12
|
* Layout is CSS-grid `grid-cols-[1fr_auto_1fr]` so the center zone is
|
|
14
|
-
* always visually centred regardless of left / right slot width.
|
|
15
|
-
*
|
|
16
|
-
* unconditionally — Lane 6b §6b.S1 flips it from opt-in to always-on.
|
|
13
|
+
* always visually centred regardless of left / right slot width. Product
|
|
14
|
+
* role switching belongs to the main toolbar, not this top shell.
|
|
17
15
|
*
|
|
18
16
|
* All colors, shadows, radius, and motion bind to the Lane 6a token
|
|
19
17
|
* substrate (`var(--color-*)` / `var(--shadow-*)` / `var(--radius-*)` /
|
|
20
18
|
* `var(--motion-*)`) — no hex literals or legacy Tailwind palette names.
|
|
21
19
|
*/
|
|
22
20
|
|
|
23
|
-
export type ShellHeaderMode = "edit" | "review" | "workflow"
|
|
21
|
+
export type ShellHeaderMode = "edit" | "review" | "workflow";
|
|
24
22
|
|
|
25
23
|
export interface ShellHeaderModeOption {
|
|
26
24
|
id: ShellHeaderMode;
|
|
@@ -46,11 +44,13 @@ export interface ShellHeaderIconAction {
|
|
|
46
44
|
export interface TwShellHeaderProps {
|
|
47
45
|
brand?: ReactNode;
|
|
48
46
|
/**
|
|
49
|
-
*
|
|
50
|
-
* the
|
|
47
|
+
* @deprecated Product mode tabs no longer render in the shell header.
|
|
48
|
+
* Use the main toolbar role toggle instead.
|
|
51
49
|
*/
|
|
52
50
|
modes?: readonly ShellHeaderModeOption[];
|
|
51
|
+
/** @deprecated Product mode tabs no longer render in the shell header. */
|
|
53
52
|
activeMode?: ShellHeaderMode;
|
|
53
|
+
/** @deprecated Product mode tabs no longer render in the shell header. */
|
|
54
54
|
onModeChange?: (mode: ShellHeaderMode) => void;
|
|
55
55
|
iconActions?: readonly ShellHeaderIconAction[];
|
|
56
56
|
primaryAction?: ShellHeaderPrimaryAction;
|
|
@@ -60,26 +60,19 @@ export interface TwShellHeaderProps {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
|
-
* Default
|
|
64
|
-
*
|
|
63
|
+
* Default product roles for hosts migrating from the old shell tabs.
|
|
64
|
+
* Rendering now lives in the main toolbar role toggle.
|
|
65
65
|
*/
|
|
66
66
|
export const DEFAULT_SHELL_HEADER_MODES: readonly ShellHeaderModeOption[] = [
|
|
67
67
|
{ id: "edit", label: "Edit" },
|
|
68
68
|
{ id: "review", label: "Review" },
|
|
69
69
|
{ id: "workflow", label: "Workflow" },
|
|
70
|
-
{ id: "more", label: "More" },
|
|
71
70
|
];
|
|
72
71
|
|
|
73
72
|
const focusRingClass =
|
|
74
73
|
"focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)]";
|
|
75
74
|
|
|
76
75
|
export function TwShellHeader(props: TwShellHeaderProps): React.ReactElement {
|
|
77
|
-
const modes =
|
|
78
|
-
props.modes && props.modes.length > 0
|
|
79
|
-
? props.modes
|
|
80
|
-
: DEFAULT_SHELL_HEADER_MODES;
|
|
81
|
-
const activeMode: ShellHeaderMode = props.activeMode ?? modes[0]!.id;
|
|
82
|
-
|
|
83
76
|
const className = [
|
|
84
77
|
"grid h-12 shrink-0 grid-cols-[1fr_auto_1fr] items-center gap-2 px-4",
|
|
85
78
|
"bg-[var(--color-bg-chrome)]/92 backdrop-blur-sm",
|
|
@@ -110,41 +103,12 @@ export function TwShellHeader(props: TwShellHeaderProps): React.ReactElement {
|
|
|
110
103
|
) : null}
|
|
111
104
|
</div>
|
|
112
105
|
|
|
113
|
-
{/* CENTER: mode
|
|
106
|
+
{/* CENTER: intentionally empty; role mode lives in the main toolbar. */}
|
|
114
107
|
<div
|
|
115
108
|
className="flex items-center justify-center"
|
|
116
109
|
data-region="center"
|
|
117
110
|
data-testid="tw-shell-header__region-center"
|
|
118
|
-
|
|
119
|
-
<Tabs.Root
|
|
120
|
-
value={activeMode}
|
|
121
|
-
onValueChange={(v: string) =>
|
|
122
|
-
props.onModeChange?.(v as ShellHeaderMode)
|
|
123
|
-
}
|
|
124
|
-
>
|
|
125
|
-
<Tabs.List
|
|
126
|
-
aria-label="Workspace modes"
|
|
127
|
-
className="flex items-center gap-1"
|
|
128
|
-
>
|
|
129
|
-
{modes.map((mode) => (
|
|
130
|
-
<Tabs.Trigger
|
|
131
|
-
key={mode.id}
|
|
132
|
-
value={mode.id}
|
|
133
|
-
disabled={mode.disabled}
|
|
134
|
-
onClick={() => {
|
|
135
|
-
if (!mode.disabled) {
|
|
136
|
-
props.onModeChange?.(mode.id);
|
|
137
|
-
}
|
|
138
|
-
}}
|
|
139
|
-
className={`wre-rail-tab ${focusRingClass}`}
|
|
140
|
-
data-testid={`tw-shell-header__mode-${mode.id}`}
|
|
141
|
-
>
|
|
142
|
-
{mode.label}
|
|
143
|
-
</Tabs.Trigger>
|
|
144
|
-
))}
|
|
145
|
-
</Tabs.List>
|
|
146
|
-
</Tabs.Root>
|
|
147
|
-
</div>
|
|
111
|
+
/>
|
|
148
112
|
|
|
149
113
|
{/* RIGHT: icon actions + primary CTA */}
|
|
150
114
|
<div
|
|
@@ -7,6 +7,7 @@ export interface TwToolbarIconButtonProps {
|
|
|
7
7
|
icon: React.ComponentType<{ className?: string }>;
|
|
8
8
|
label: string;
|
|
9
9
|
disabled?: boolean;
|
|
10
|
+
disabledReason?: string;
|
|
10
11
|
/**
|
|
11
12
|
* Active / pressed state. Designsystem §6.2 + Lane 6b §6b.S2: active
|
|
12
13
|
* buttons paint an accent-soft tint with an accent border ring — NOT a
|
|
@@ -27,8 +28,6 @@ export interface TwToolbarIconButtonProps {
|
|
|
27
28
|
* vs. Windows however they like.
|
|
28
29
|
*/
|
|
29
30
|
shortcut?: string;
|
|
30
|
-
/** Explanation surfaced when the button is disabled by selection/mode state. */
|
|
31
|
-
disabledReason?: string;
|
|
32
31
|
onClick?: () => void;
|
|
33
32
|
}
|
|
34
33
|
|
|
@@ -36,6 +35,10 @@ const focusRingClass =
|
|
|
36
35
|
"focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)]";
|
|
37
36
|
|
|
38
37
|
export function TwToolbarIconButton(props: TwToolbarIconButtonProps) {
|
|
38
|
+
const titleAttr =
|
|
39
|
+
props.disabled && props.disabledReason
|
|
40
|
+
? `Not available: ${props.disabledReason}`
|
|
41
|
+
: undefined;
|
|
39
42
|
return (
|
|
40
43
|
<Tooltip.Root>
|
|
41
44
|
<Tooltip.Trigger asChild>
|
|
@@ -44,9 +47,11 @@ export function TwToolbarIconButton(props: TwToolbarIconButtonProps) {
|
|
|
44
47
|
aria-label={props.label}
|
|
45
48
|
aria-pressed={props.active ?? undefined}
|
|
46
49
|
data-active={props.active ? "true" : undefined}
|
|
47
|
-
data-disabled-reason={
|
|
50
|
+
data-disabled-reason={
|
|
51
|
+
props.disabled && props.disabledReason ? props.disabledReason : undefined
|
|
52
|
+
}
|
|
48
53
|
disabled={props.disabled}
|
|
49
|
-
title={
|
|
54
|
+
title={titleAttr}
|
|
50
55
|
onMouseDown={preserveEditorSelectionMouseDown}
|
|
51
56
|
onClick={props.onClick}
|
|
52
57
|
className={[
|