superdoc 2.0.0-next.27 → 2.0.0-next.28
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/dist/chunks/{create-super-doc-ui-Dvl3EZsv.es.js → create-super-doc-ui-BlnUCtrx.es.js} +171 -51
- package/dist/chunks/{create-super-doc-ui-pYMthdDn.cjs → create-super-doc-ui-CZBUMdjl.cjs} +171 -51
- package/dist/collaboration-upgrade-engine.cjs +1 -1
- package/dist/collaboration-upgrade-engine.es.js +1 -1
- package/dist/document-api/src/contract/operation-definitions.d.ts +1 -1
- package/dist/document-api/src/track-changes/track-changes.d.ts +6 -2
- package/dist/document-api/src/types/clipboard.d.ts +5 -1
- package/dist/document-api/src/types/table-operations.types.d.ts +6 -4
- package/dist/document-api/src/types/track-changes.types.d.ts +15 -0
- package/dist/layout-engine/contracts/src/incremental-dependency.d.ts +10 -0
- package/dist/layout-engine/contracts/src/index.d.ts +38 -0
- package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +23 -1
- package/dist/layout-engine/layout-engine/src/index.d.ts +17 -0
- package/dist/layout-engine/layout-engine/src/paginator.d.ts +16 -0
- package/dist/layout-engine/layout-engine/src/paragraph-layout-eligibility.d.ts +1 -4
- package/dist/public/ui-react.cjs +1 -1
- package/dist/public/ui-react.es.js +1 -1
- package/dist/public/ui.cjs +1 -1
- package/dist/public/ui.es.js +1 -1
- package/dist/style.css +82 -63
- package/dist/style.layered.css +82 -63
- package/dist/superdoc/src/core/types/index.d.ts +7 -0
- package/dist/superdoc/src/public/ui/reasons.d.ts +8 -0
- package/dist/superdoc/src/stores/comments-store.d.ts +9 -9
- package/dist/superdoc/src/stores/helpers/floating-comment-instances.d.ts +2 -10
- package/dist/superdoc/src/stores/superdoc-store.d.ts +27 -27
- package/dist/superdoc.cjs +137 -29
- package/dist/superdoc.es.js +137 -29
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +37 -37
- package/package.json +1 -1
|
@@ -1749,6 +1749,11 @@ export type ListBlock = {
|
|
|
1749
1749
|
sourceAnchor?: SourceAnchor;
|
|
1750
1750
|
};
|
|
1751
1751
|
export type FlowBlock = ParagraphBlock | ImageBlock | DrawingBlock | ListBlock | TableBlock | SectionBreakBlock | PageBreakBlock | ColumnBreakBlock;
|
|
1752
|
+
export declare const isReviewableSectionBoundaryMarkerBlock: (block: FlowBlock | null | undefined) => boolean;
|
|
1753
|
+
/** Shared eligibility for paragraphs the layout loop deliberately omits. */
|
|
1754
|
+
export declare const shouldSkipParagraphDuringLayout: (blocks: FlowBlock[], index: number) => boolean;
|
|
1755
|
+
/** True only for block kinds that produce an addressable layout fragment. */
|
|
1756
|
+
export declare const doesFlowBlockProduceLayoutFragment: (blocks: FlowBlock[], index: number) => boolean;
|
|
1752
1757
|
export type ColumnLayout = {
|
|
1753
1758
|
count: number;
|
|
1754
1759
|
gap: number;
|
|
@@ -2355,6 +2360,36 @@ export type HeaderFooterLayout = {
|
|
|
2355
2360
|
renderHeight?: number;
|
|
2356
2361
|
pages: HeaderFooterPage[];
|
|
2357
2362
|
};
|
|
2363
|
+
/**
|
|
2364
|
+
* Engine-owned paginator state immediately before a top-level paragraph.
|
|
2365
|
+
* Incremental layout may resume from this state only after independently
|
|
2366
|
+
* proving that every preceding fragment on the page is stable.
|
|
2367
|
+
*/
|
|
2368
|
+
export type LayoutBlockResumeCheckpoint = {
|
|
2369
|
+
blockId: BlockId;
|
|
2370
|
+
pageIndex: number;
|
|
2371
|
+
prefixFragmentCount: number;
|
|
2372
|
+
cursorY: number;
|
|
2373
|
+
maxCursorY: number;
|
|
2374
|
+
columnIndex: number;
|
|
2375
|
+
trailingSpacing: number;
|
|
2376
|
+
lastParagraphStyleId?: string;
|
|
2377
|
+
lastParagraphContextualSpacing: boolean;
|
|
2378
|
+
lastParagraphBorderHash?: string;
|
|
2379
|
+
constraintBoundaries: readonly {
|
|
2380
|
+
y: number;
|
|
2381
|
+
columns: ColumnLayout;
|
|
2382
|
+
}[];
|
|
2383
|
+
activeConstraintIndex: number;
|
|
2384
|
+
footnoteDemandThisPage: number;
|
|
2385
|
+
footnoteRefsThisPage: number;
|
|
2386
|
+
footnoteAnchorsThisPage: readonly {
|
|
2387
|
+
pmPos: number;
|
|
2388
|
+
refId: string;
|
|
2389
|
+
fullHeight: number;
|
|
2390
|
+
firstLineHeight: number;
|
|
2391
|
+
}[];
|
|
2392
|
+
};
|
|
2358
2393
|
/** Final layout output ready for painting. */
|
|
2359
2394
|
export type Layout = {
|
|
2360
2395
|
pageSize: {
|
|
@@ -2380,6 +2415,8 @@ export type Layout = {
|
|
|
2380
2415
|
* from DOM-derived positions back to the current ProseMirror document state.
|
|
2381
2416
|
*/
|
|
2382
2417
|
layoutEpoch?: number;
|
|
2418
|
+
/** Exact paragraph-boundary resume sidecar; never inferred from painted geometry. */
|
|
2419
|
+
blockResumeCheckpoints?: ReadonlyMap<BlockId, LayoutBlockResumeCheckpoint>;
|
|
2383
2420
|
};
|
|
2384
2421
|
export type WrapTextMode = 'bothSides' | 'left' | 'right' | 'largest';
|
|
2385
2422
|
export type WrapExclusion = {
|
|
@@ -2402,4 +2439,5 @@ export declare const extractHeaderFooterSpace: (margins?: PageMargins | null) =>
|
|
|
2402
2439
|
export type { ResolvedLayout, ResolvedPage, ResolvedPaintItem, ResolvedGroupItem, ResolvedFragmentItem, ResolvedParagraphContent, ResolvedTextLineItem, ResolvedDropCapItem, ResolvedListMarkerItem, ResolvedTableItem, ResolvedImageItem, ResolvedDrawingItem, ResolvedHeaderFooterPage, ResolvedHeaderFooterLayout, } from './resolved-layout.js';
|
|
2403
2440
|
export { isResolvedTableItem, isResolvedImageItem, isResolvedDrawingItem } from './resolved-layout.js';
|
|
2404
2441
|
export { expandRunsForInlineNewlines, isEmptyInlineSdtPlaceholderRun, isEmptySdtPlaceholderRun, sliceRunsForLine, } from './run-helpers.js';
|
|
2442
|
+
export { PAGE_CHECKPOINT_DEPENDENCY_CLASSES, areValidPageCheckpointDependencyClasses, type PageCheckpointDependencyClass, } from './incremental-dependency.js';
|
|
2405
2443
|
export * as Engines from './engines/index.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FlowBlock, Layout, Measure, HeaderFooterLayout, ParagraphBlock, ParagraphMeasure } from '../../contracts/src/index.js';
|
|
1
|
+
import { PageCheckpointDependencyClass, FlowBlock, Layout, Measure, HeaderFooterLayout, ParagraphBlock, ParagraphMeasure } from '../../contracts/src/index.js';
|
|
2
2
|
import { FontMeasureContext } from '../../../shared/font-system/src/index.js';
|
|
3
3
|
import { LayoutOptions, HeaderFooterConstraints } from '../../layout-engine/src/index.js';
|
|
4
4
|
import { computeDirtyRegions } from './diff.js';
|
|
@@ -33,10 +33,18 @@ export type HeaderFooterLayoutResult = {
|
|
|
33
33
|
*/
|
|
34
34
|
export type FootnoteReserveSeed = {
|
|
35
35
|
reserves: number[];
|
|
36
|
+
/** Sparse page indexes that held a reserve, ledger, or injected note slice. */
|
|
37
|
+
notePageIndexes?: number[];
|
|
36
38
|
separatorSpacingBefore: number | undefined;
|
|
37
39
|
fontSignature: string;
|
|
38
40
|
measurementWidth: number;
|
|
39
41
|
measurementHeight: number;
|
|
42
|
+
/** Exact note block objects retained by the host's authoritative note-bundle proof. */
|
|
43
|
+
noteBlocksByBlockId?: Map<string, FlowBlock>;
|
|
44
|
+
/** Measures paired with `noteBlocksByBlockId`; object identity is revalidated before reuse. */
|
|
45
|
+
noteMeasuresByBlockId?: Map<string, Measure>;
|
|
46
|
+
noteBodyHeightById?: Map<string, number>;
|
|
47
|
+
noteFirstLineHeightById?: Map<string, number>;
|
|
40
48
|
};
|
|
41
49
|
export type IncrementalLayoutResult = {
|
|
42
50
|
layout: Layout;
|
|
@@ -165,6 +173,12 @@ type IncrementalPaginationProofBase = {
|
|
|
165
173
|
blockIdsUnchanged: true;
|
|
166
174
|
blockIdsUnique: true;
|
|
167
175
|
renderInputsUnchanged: true;
|
|
176
|
+
/** The retained dependency scan proved that no body or furniture PAGE_REF token exists. */
|
|
177
|
+
pageReferencesAbsent: boolean;
|
|
178
|
+
pageReferenceDependencyClosure?: {
|
|
179
|
+
referenceBlockIds: readonly string[];
|
|
180
|
+
targetBookmarkIds: readonly string[];
|
|
181
|
+
};
|
|
168
182
|
};
|
|
169
183
|
export type IncrementalPaginationProof = IncrementalPaginationProofBase & ({
|
|
170
184
|
profile: 'single-section-local-text';
|
|
@@ -181,6 +195,12 @@ export type IncrementalPaginationProof = IncrementalPaginationProofBase & ({
|
|
|
181
195
|
profile: 'page-checkpoint-local-text';
|
|
182
196
|
globalDependenciesAbsent: false;
|
|
183
197
|
globalDependenciesFencedByPageCheckpoint: true;
|
|
198
|
+
admittedDependencyClasses: readonly PageCheckpointDependencyClass[];
|
|
199
|
+
localKeepDependencyClosure?: {
|
|
200
|
+
checkpointPageIndex: number;
|
|
201
|
+
checkpointBlockId: string | null;
|
|
202
|
+
predecessorBlockId: string | null;
|
|
203
|
+
};
|
|
184
204
|
/**
|
|
185
205
|
* SD-3772 D1: the host proved (via the shared
|
|
186
206
|
* `hasGenuinelyUnequalExplicitColumnWidths` predicate) that no
|
|
@@ -269,6 +289,8 @@ export declare function incrementalLayout(previousBlocks: FlowBlock[], _previous
|
|
|
269
289
|
previousFontSignature?: string;
|
|
270
290
|
}, warmStart?: {
|
|
271
291
|
footnoteReserveSeed?: FootnoteReserveSeed | null;
|
|
292
|
+
/** Host proved the authoritative note projection bundle was retained exactly. */
|
|
293
|
+
noteMeasurePlaneRetainedExact?: true;
|
|
272
294
|
}, layoutReuse?: IncrementalLayoutReuseOptions, measureReuseProof?: IncrementalMeasureReuseProof, execution?: IncrementalLayoutExecutionControl): Promise<IncrementalLayoutResult>;
|
|
273
295
|
/**
|
|
274
296
|
* Normalizes a margin value, using a fallback for undefined or non-finite values.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ColumnLayout, FlowBlock, HeaderFooterLayout, Layout, Measure, Page, ParagraphBlock, ParagraphMeasure, SectionMetadata, FlowMode, DocumentBackground } from '../../contracts/src/index.js';
|
|
2
|
+
import { PageState, ConstraintBoundary } from './paginator.js';
|
|
2
3
|
type PageSize = {
|
|
3
4
|
w: number;
|
|
4
5
|
h: number;
|
|
@@ -197,6 +198,22 @@ export type LayoutOptions = {
|
|
|
197
198
|
};
|
|
198
199
|
/** Resolved active column layout at the resumed boundary. */
|
|
199
200
|
activeColumns?: ColumnLayout;
|
|
201
|
+
/** Engine-authored exact state for a paragraph boundary inside the first emitted page. */
|
|
202
|
+
initialPageState?: {
|
|
203
|
+
prefixFragments: readonly Page['fragments'][number][];
|
|
204
|
+
cursorY: number;
|
|
205
|
+
maxCursorY: number;
|
|
206
|
+
columnIndex: number;
|
|
207
|
+
trailingSpacing: number;
|
|
208
|
+
lastParagraphStyleId?: string;
|
|
209
|
+
lastParagraphContextualSpacing: boolean;
|
|
210
|
+
lastParagraphBorderHash?: string;
|
|
211
|
+
constraintBoundaries: readonly ConstraintBoundary[];
|
|
212
|
+
activeConstraintIndex: number;
|
|
213
|
+
footnoteDemandThisPage: number;
|
|
214
|
+
footnoteRefsThisPage: number;
|
|
215
|
+
footnoteAnchorsThisPage: readonly PageState['footnoteAnchorsThisPage'][number][];
|
|
216
|
+
};
|
|
200
217
|
};
|
|
201
218
|
/**
|
|
202
219
|
* Optional page-boundary stop callback. Called after a page has completed
|
|
@@ -73,6 +73,22 @@ export type PaginatorOptions = {
|
|
|
73
73
|
h: number;
|
|
74
74
|
};
|
|
75
75
|
getActiveColumns(): ColumnLayout;
|
|
76
|
+
/** Exact first-page state from an engine-authored paragraph checkpoint. */
|
|
77
|
+
initialPageState?: {
|
|
78
|
+
prefixFragments: readonly Page['fragments'][number][];
|
|
79
|
+
cursorY: number;
|
|
80
|
+
maxCursorY: number;
|
|
81
|
+
columnIndex: number;
|
|
82
|
+
trailingSpacing: number;
|
|
83
|
+
lastParagraphStyleId?: string;
|
|
84
|
+
lastParagraphContextualSpacing: boolean;
|
|
85
|
+
lastParagraphBorderHash?: string;
|
|
86
|
+
constraintBoundaries: readonly ConstraintBoundary[];
|
|
87
|
+
activeConstraintIndex: number;
|
|
88
|
+
footnoteDemandThisPage: number;
|
|
89
|
+
footnoteRefsThisPage: number;
|
|
90
|
+
footnoteAnchorsThisPage: readonly PageState['footnoteAnchorsThisPage'][number][];
|
|
91
|
+
};
|
|
76
92
|
pageNumberOffset?: number;
|
|
77
93
|
createPage(number: number, pageMargins: PageMargins, pageSizeOverride?: {
|
|
78
94
|
w: number;
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const isReviewableSectionBoundaryMarkerBlock: (block: FlowBlock | null | undefined) => boolean;
|
|
3
|
-
/** Paragraphs omitted by the main layout loop must not receive anchored objects. */
|
|
4
|
-
export declare const shouldSkipParagraphDuringLayout: (blocks: FlowBlock[], index: number) => boolean;
|
|
1
|
+
export { isReviewableSectionBoundaryMarkerBlock, shouldSkipParagraphDuringLayout } from '../../contracts/src/index.js';
|
package/dist/public/ui-react.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_rolldown_runtime = require("../chunks/rolldown-runtime-_dR15c8t.cjs");
|
|
3
|
-
const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-
|
|
3
|
+
const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-CZBUMdjl.cjs");
|
|
4
4
|
let react = require("react");
|
|
5
5
|
var SuperDocUIContext = (0, react.createContext)(null);
|
|
6
6
|
function SuperDocUIProvider(props) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-
|
|
1
|
+
import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-BlnUCtrx.es.js";
|
|
2
2
|
import { createContext, createElement, useCallback, useContext, useEffect, useRef, useState } from "react";
|
|
3
3
|
var SuperDocUIContext = createContext(null);
|
|
4
4
|
function SuperDocUIProvider(props) {
|
package/dist/public/ui.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-
|
|
2
|
+
const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-CZBUMdjl.cjs");
|
|
3
3
|
exports.BUILT_IN_COMMAND_IDS = require_create_super_doc_ui.BUILT_IN_COMMAND_IDS;
|
|
4
4
|
exports.createSuperDocUI = require_create_super_doc_ui.createSuperDocUI;
|
|
5
5
|
exports.shallowEqual = require_create_super_doc_ui.shallowEqual;
|
package/dist/public/ui.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as BUILT_IN_COMMAND_IDS, r as shallowEqual, t as createSuperDocUI } from "../chunks/create-super-doc-ui-
|
|
1
|
+
import { n as BUILT_IN_COMMAND_IDS, r as shallowEqual, t as createSuperDocUI } from "../chunks/create-super-doc-ui-BlnUCtrx.es.js";
|
|
2
2
|
export { BUILT_IN_COMMAND_IDS, createSuperDocUI, shallowEqual };
|
package/dist/style.css
CHANGED
|
@@ -960,7 +960,7 @@ img[data-v-c95b2073] {
|
|
|
960
960
|
box-shadow: 0 0 0 2px rgba(79, 124, 255, 0.16);
|
|
961
961
|
}
|
|
962
962
|
|
|
963
|
-
.comments-dialog[data-v-
|
|
963
|
+
.comments-dialog[data-v-35236c9c] {
|
|
964
964
|
display: flex;
|
|
965
965
|
flex-direction: column;
|
|
966
966
|
padding: var(--sd-ui-comments-card-padding, 16px);
|
|
@@ -979,73 +979,73 @@ img[data-v-c95b2073] {
|
|
|
979
979
|
overflow-wrap: break-word;
|
|
980
980
|
word-break: break-word;
|
|
981
981
|
}
|
|
982
|
-
.comments-dialog[data-v-
|
|
982
|
+
.comments-dialog[data-v-35236c9c]:not(.is-active) {
|
|
983
983
|
cursor: pointer;
|
|
984
984
|
}
|
|
985
|
-
.comments-dialog[data-v-
|
|
985
|
+
.comments-dialog[data-v-35236c9c]:not(.is-active):not(.is-resolved):hover {
|
|
986
986
|
background-color: var(--sd-ui-comments-card-hover-bg, #f3f6fd);
|
|
987
987
|
}
|
|
988
|
-
.comments-dialog[data-v-
|
|
988
|
+
.comments-dialog[data-v-35236c9c]:not(.is-resolved):hover .overflow-menu {
|
|
989
989
|
opacity: 1;
|
|
990
990
|
pointer-events: auto;
|
|
991
991
|
}
|
|
992
|
-
.comments-dialog.is-active[data-v-
|
|
992
|
+
.comments-dialog.is-active[data-v-35236c9c] {
|
|
993
993
|
background-color: var(--sd-ui-comments-card-active-bg, #ffffff);
|
|
994
994
|
border-color: var(--sd-ui-comments-card-active-border, #e0e0e0);
|
|
995
995
|
box-shadow: var(--sd-ui-comments-card-shadow, 0px 4px 12px 0px rgba(50, 50, 50, 0.15));
|
|
996
996
|
z-index: 10;
|
|
997
997
|
}
|
|
998
|
-
.comments-dialog.is-resolved[data-v-
|
|
998
|
+
.comments-dialog.is-resolved[data-v-35236c9c] {
|
|
999
999
|
background-color: var(--sd-ui-comments-card-resolved-bg, #f0f0f0);
|
|
1000
1000
|
}
|
|
1001
|
-
.comment-separator[data-v-
|
|
1001
|
+
.comment-separator[data-v-35236c9c] {
|
|
1002
1002
|
background-color: var(--sd-ui-comments-separator, #e0e0e0);
|
|
1003
1003
|
height: 1px;
|
|
1004
1004
|
width: 100%;
|
|
1005
1005
|
margin: 10px 0;
|
|
1006
1006
|
}
|
|
1007
|
-
.comment[data-v-
|
|
1007
|
+
.comment[data-v-35236c9c] {
|
|
1008
1008
|
font-size: var(--sd-ui-comments-body-size, 14px);
|
|
1009
1009
|
line-height: 1.5;
|
|
1010
1010
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1011
1011
|
margin: 4px 0 0 0;
|
|
1012
1012
|
}
|
|
1013
|
-
.comment[data-v-
|
|
1013
|
+
.comment[data-v-35236c9c] p {
|
|
1014
1014
|
margin: 0;
|
|
1015
1015
|
}
|
|
1016
|
-
.tracked-change[data-v-
|
|
1016
|
+
.tracked-change[data-v-35236c9c] {
|
|
1017
1017
|
font-size: var(--sd-ui-comments-body-size, 14px);
|
|
1018
1018
|
line-height: 1.5;
|
|
1019
1019
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1020
1020
|
margin: 4px 0 0 0;
|
|
1021
1021
|
}
|
|
1022
|
-
.change-type[data-v-
|
|
1022
|
+
.change-type[data-v-35236c9c] {
|
|
1023
1023
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1024
1024
|
}
|
|
1025
|
-
.tracked-change-text[data-v-
|
|
1025
|
+
.tracked-change-text[data-v-35236c9c] {
|
|
1026
1026
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1027
1027
|
}
|
|
1028
|
-
.tracked-change-text.is-deleted[data-v-
|
|
1028
|
+
.tracked-change-text.is-deleted[data-v-35236c9c] {
|
|
1029
1029
|
color: var(--sd-ui-comments-delete-text, #cb0e47);
|
|
1030
1030
|
}
|
|
1031
|
-
.tracked-change-text.is-inserted[data-v-
|
|
1031
|
+
.tracked-change-text.is-inserted[data-v-35236c9c] {
|
|
1032
1032
|
color: var(--sd-ui-comments-insert-text, #1f6feb);
|
|
1033
1033
|
font-weight: 500;
|
|
1034
1034
|
}
|
|
1035
|
-
.tracked-change[data-track-change-semantic-color-key='move-from'] .tracked-change-text.is-deleted[data-v-
|
|
1035
|
+
.tracked-change[data-track-change-semantic-color-key='move-from'] .tracked-change-text.is-deleted[data-v-35236c9c] {
|
|
1036
1036
|
color: var(--sd-ui-comments-move-from-text, #00853d);
|
|
1037
1037
|
}
|
|
1038
|
-
.tracked-change[data-track-change-semantic-color-key='move-to'] .tracked-change-text.is-inserted[data-v-
|
|
1038
|
+
.tracked-change[data-track-change-semantic-color-key='move-to'] .tracked-change-text.is-inserted[data-v-35236c9c] {
|
|
1039
1039
|
color: var(--sd-ui-comments-move-to-text, #00853d);
|
|
1040
1040
|
}
|
|
1041
|
-
.tracked-change-detail-lines[data-v-
|
|
1041
|
+
.tracked-change-detail-lines[data-v-35236c9c] {
|
|
1042
1042
|
margin-top: 4px;
|
|
1043
1043
|
}
|
|
1044
|
-
.tracked-change-detail-line[data-v-
|
|
1044
|
+
.tracked-change-detail-line[data-v-35236c9c] {
|
|
1045
1045
|
font-size: 12px;
|
|
1046
1046
|
line-height: 1.4;
|
|
1047
1047
|
}
|
|
1048
|
-
.tracked-change-image-preview[data-v-
|
|
1048
|
+
.tracked-change-image-preview[data-v-35236c9c] {
|
|
1049
1049
|
display: inline-flex;
|
|
1050
1050
|
align-items: center;
|
|
1051
1051
|
justify-content: center;
|
|
@@ -1056,7 +1056,7 @@ img[data-v-c95b2073] {
|
|
|
1056
1056
|
max-width: 96px;
|
|
1057
1057
|
max-height: 96px;
|
|
1058
1058
|
}
|
|
1059
|
-
.tracked-change-image-preview__image[data-v-
|
|
1059
|
+
.tracked-change-image-preview__image[data-v-35236c9c] {
|
|
1060
1060
|
display: block;
|
|
1061
1061
|
width: auto;
|
|
1062
1062
|
height: auto;
|
|
@@ -1065,8 +1065,27 @@ img[data-v-c95b2073] {
|
|
|
1065
1065
|
object-fit: contain;
|
|
1066
1066
|
}
|
|
1067
1067
|
|
|
1068
|
+
/* ── Failed tracked-change decision alert (SD-3772 §6) ── */
|
|
1069
|
+
.tracked-change-decision-alert[data-v-35236c9c] {
|
|
1070
|
+
display: flex;
|
|
1071
|
+
align-items: center;
|
|
1072
|
+
justify-content: space-between;
|
|
1073
|
+
gap: 8px;
|
|
1074
|
+
margin-top: 8px;
|
|
1075
|
+
padding: 8px 10px;
|
|
1076
|
+
border-radius: 8px;
|
|
1077
|
+
border: 1px solid var(--sd-ui-comments-alert-border, #f0b4b4);
|
|
1078
|
+
background-color: var(--sd-ui-comments-alert-bg, #fdf3f3);
|
|
1079
|
+
color: var(--sd-ui-comments-alert-text, #a4262c);
|
|
1080
|
+
font-size: var(--sd-ui-comments-body-size, 14px);
|
|
1081
|
+
line-height: 1.4;
|
|
1082
|
+
}
|
|
1083
|
+
.tracked-change-decision-alert__retry[data-v-35236c9c] {
|
|
1084
|
+
flex-shrink: 0;
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1068
1087
|
/* ── Resolved badge ── */
|
|
1069
|
-
.resolved-badge[data-v-
|
|
1088
|
+
.resolved-badge[data-v-35236c9c] {
|
|
1070
1089
|
display: inline-flex;
|
|
1071
1090
|
align-items: center;
|
|
1072
1091
|
gap: 4px;
|
|
@@ -1075,26 +1094,26 @@ img[data-v-c95b2073] {
|
|
|
1075
1094
|
color: var(--sd-ui-comments-resolved-text, #00853d);
|
|
1076
1095
|
margin-bottom: 4px;
|
|
1077
1096
|
}
|
|
1078
|
-
.resolved-badge__icon[data-v-
|
|
1097
|
+
.resolved-badge__icon[data-v-35236c9c] {
|
|
1079
1098
|
display: inline-flex;
|
|
1080
1099
|
width: 12px;
|
|
1081
1100
|
height: 12px;
|
|
1082
1101
|
}
|
|
1083
|
-
.resolved-badge__icon[data-v-
|
|
1102
|
+
.resolved-badge__icon[data-v-35236c9c] svg {
|
|
1084
1103
|
width: 100%;
|
|
1085
1104
|
height: 100%;
|
|
1086
1105
|
fill: currentColor;
|
|
1087
1106
|
}
|
|
1088
1107
|
|
|
1089
1108
|
/* ── Text truncation ── */
|
|
1090
|
-
.comment.is-truncated[data-v-
|
|
1091
|
-
.tracked-change.is-truncated[data-v-
|
|
1109
|
+
.comment.is-truncated[data-v-35236c9c],
|
|
1110
|
+
.tracked-change.is-truncated[data-v-35236c9c] {
|
|
1092
1111
|
display: -webkit-box;
|
|
1093
1112
|
-webkit-line-clamp: 3;
|
|
1094
1113
|
-webkit-box-orient: vertical;
|
|
1095
1114
|
overflow: hidden;
|
|
1096
1115
|
}
|
|
1097
|
-
.show-more-toggle[data-v-
|
|
1116
|
+
.show-more-toggle[data-v-35236c9c] {
|
|
1098
1117
|
font-size: 12px;
|
|
1099
1118
|
color: var(--sd-ui-action, #1355ff);
|
|
1100
1119
|
cursor: pointer;
|
|
@@ -1102,12 +1121,12 @@ img[data-v-c95b2073] {
|
|
|
1102
1121
|
margin-top: 4px;
|
|
1103
1122
|
user-select: none;
|
|
1104
1123
|
}
|
|
1105
|
-
.show-more-toggle[data-v-
|
|
1124
|
+
.show-more-toggle[data-v-35236c9c]:hover {
|
|
1106
1125
|
text-decoration: underline;
|
|
1107
1126
|
}
|
|
1108
1127
|
|
|
1109
1128
|
/* ── Thread collapse ── */
|
|
1110
|
-
.collapsed-replies[data-v-
|
|
1129
|
+
.collapsed-replies[data-v-35236c9c] {
|
|
1111
1130
|
display: flex;
|
|
1112
1131
|
align-items: center;
|
|
1113
1132
|
gap: 6px;
|
|
@@ -1118,24 +1137,24 @@ img[data-v-c95b2073] {
|
|
|
1118
1137
|
cursor: pointer;
|
|
1119
1138
|
user-select: none;
|
|
1120
1139
|
}
|
|
1121
|
-
.collapsed-replies[data-v-
|
|
1140
|
+
.collapsed-replies[data-v-35236c9c]:hover {
|
|
1122
1141
|
text-decoration: underline;
|
|
1123
1142
|
}
|
|
1124
|
-
.collapsed-avatars[data-v-
|
|
1143
|
+
.collapsed-avatars[data-v-35236c9c] {
|
|
1125
1144
|
display: flex;
|
|
1126
1145
|
}
|
|
1127
|
-
.collapsed-avatars .mini-avatar[data-v-
|
|
1146
|
+
.collapsed-avatars .mini-avatar[data-v-35236c9c] {
|
|
1128
1147
|
--sd-comment-avatar-size: 20px;
|
|
1129
1148
|
--sd-comment-avatar-font-size: 8px;
|
|
1130
1149
|
margin-left: -4px;
|
|
1131
1150
|
border: 2px solid var(--sd-ui-comments-card-active-bg, #ffffff);
|
|
1132
1151
|
}
|
|
1133
|
-
.collapsed-avatars .mini-avatar[data-v-
|
|
1152
|
+
.collapsed-avatars .mini-avatar[data-v-35236c9c]:first-child {
|
|
1134
1153
|
margin-left: 0;
|
|
1135
1154
|
}
|
|
1136
1155
|
|
|
1137
1156
|
/* ── New comment input ── */
|
|
1138
|
-
.new-comment-input-wrapper[data-v-
|
|
1157
|
+
.new-comment-input-wrapper[data-v-35236c9c] {
|
|
1139
1158
|
border: 1.5px solid var(--sd-ui-comments-input-border, #dbdbdb);
|
|
1140
1159
|
border-radius: 12px;
|
|
1141
1160
|
padding: 8.5px 10.5px;
|
|
@@ -1144,17 +1163,17 @@ img[data-v-c95b2073] {
|
|
|
1144
1163
|
max-height: 150px;
|
|
1145
1164
|
overflow-y: auto;
|
|
1146
1165
|
}
|
|
1147
|
-
.new-comment-input-wrapper[data-v-
|
|
1166
|
+
.new-comment-input-wrapper[data-v-35236c9c]:focus-within {
|
|
1148
1167
|
border-color: var(--sd-ui-comments-input-focus-border, #4f7cff);
|
|
1149
1168
|
box-shadow: 0 0 0 2px rgba(79, 124, 255, 0.16);
|
|
1150
1169
|
}
|
|
1151
|
-
.new-comment-input-wrapper[data-v-
|
|
1170
|
+
.new-comment-input-wrapper[data-v-35236c9c] .comment-entry {
|
|
1152
1171
|
border-radius: 0;
|
|
1153
1172
|
}
|
|
1154
|
-
.new-comment-input-wrapper[data-v-
|
|
1173
|
+
.new-comment-input-wrapper[data-v-35236c9c] .input-section {
|
|
1155
1174
|
margin: 0;
|
|
1156
1175
|
}
|
|
1157
|
-
.new-comment-input-wrapper[data-v-
|
|
1176
|
+
.new-comment-input-wrapper[data-v-35236c9c] .superdoc-field {
|
|
1158
1177
|
font-size: 14px;
|
|
1159
1178
|
line-height: 20px;
|
|
1160
1179
|
border: none;
|
|
@@ -1165,18 +1184,18 @@ img[data-v-c95b2073] {
|
|
|
1165
1184
|
max-height: 132px;
|
|
1166
1185
|
resize: none;
|
|
1167
1186
|
}
|
|
1168
|
-
.new-comment-input-wrapper[data-v-
|
|
1169
|
-
.new-comment-input-wrapper[data-v-
|
|
1187
|
+
.new-comment-input-wrapper[data-v-35236c9c] .superdoc-field:focus,
|
|
1188
|
+
.new-comment-input-wrapper[data-v-35236c9c] .superdoc-field:active {
|
|
1170
1189
|
border: none;
|
|
1171
1190
|
box-shadow: none;
|
|
1172
1191
|
outline: none;
|
|
1173
1192
|
}
|
|
1174
|
-
.new-comment-input-wrapper[data-v-
|
|
1193
|
+
.new-comment-input-wrapper[data-v-35236c9c] .sd-editor-placeholder::before {
|
|
1175
1194
|
content: 'Comment or add others with @';
|
|
1176
1195
|
}
|
|
1177
1196
|
|
|
1178
1197
|
/* ── Reply pill & expanded input ── */
|
|
1179
|
-
.reply-pill[data-v-
|
|
1198
|
+
.reply-pill[data-v-35236c9c] {
|
|
1180
1199
|
padding: 8.5px 10.5px;
|
|
1181
1200
|
border: 1.5px solid transparent;
|
|
1182
1201
|
border-radius: 9999px;
|
|
@@ -1187,13 +1206,13 @@ img[data-v-c95b2073] {
|
|
|
1187
1206
|
cursor: text;
|
|
1188
1207
|
transition: background 150ms ease;
|
|
1189
1208
|
}
|
|
1190
|
-
.reply-pill[data-v-
|
|
1209
|
+
.reply-pill[data-v-35236c9c]:hover {
|
|
1191
1210
|
background: var(--sd-color-gray-200, #f2f2f2);
|
|
1192
1211
|
}
|
|
1193
|
-
.reply-expanded[data-v-
|
|
1212
|
+
.reply-expanded[data-v-35236c9c] {
|
|
1194
1213
|
margin-top: 10px;
|
|
1195
1214
|
}
|
|
1196
|
-
.reply-input-wrapper[data-v-
|
|
1215
|
+
.reply-input-wrapper[data-v-35236c9c] {
|
|
1197
1216
|
border: 1.5px solid var(--sd-ui-comments-input-border, #dbdbdb);
|
|
1198
1217
|
border-radius: 12px;
|
|
1199
1218
|
padding: 8.5px 10.5px;
|
|
@@ -1201,17 +1220,17 @@ img[data-v-c95b2073] {
|
|
|
1201
1220
|
max-height: 150px;
|
|
1202
1221
|
overflow-y: auto;
|
|
1203
1222
|
}
|
|
1204
|
-
.reply-input-wrapper[data-v-
|
|
1223
|
+
.reply-input-wrapper[data-v-35236c9c]:focus-within {
|
|
1205
1224
|
border-color: var(--sd-ui-comments-input-focus-border, #4f7cff);
|
|
1206
1225
|
box-shadow: 0 0 0 2px rgba(79, 124, 255, 0.16);
|
|
1207
1226
|
}
|
|
1208
|
-
.reply-input-wrapper[data-v-
|
|
1227
|
+
.reply-input-wrapper[data-v-35236c9c] .comment-entry {
|
|
1209
1228
|
border-radius: 0;
|
|
1210
1229
|
}
|
|
1211
|
-
.reply-input-wrapper[data-v-
|
|
1230
|
+
.reply-input-wrapper[data-v-35236c9c] .input-section {
|
|
1212
1231
|
margin: 0;
|
|
1213
1232
|
}
|
|
1214
|
-
.reply-input-wrapper[data-v-
|
|
1233
|
+
.reply-input-wrapper[data-v-35236c9c] .superdoc-field {
|
|
1215
1234
|
font-size: 14px;
|
|
1216
1235
|
line-height: 20px;
|
|
1217
1236
|
border: none;
|
|
@@ -1222,23 +1241,23 @@ img[data-v-c95b2073] {
|
|
|
1222
1241
|
max-height: 132px;
|
|
1223
1242
|
resize: none;
|
|
1224
1243
|
}
|
|
1225
|
-
.reply-input-wrapper[data-v-
|
|
1226
|
-
.reply-input-wrapper[data-v-
|
|
1244
|
+
.reply-input-wrapper[data-v-35236c9c] .superdoc-field:focus,
|
|
1245
|
+
.reply-input-wrapper[data-v-35236c9c] .superdoc-field:active {
|
|
1227
1246
|
border: none;
|
|
1228
1247
|
box-shadow: none;
|
|
1229
1248
|
outline: none;
|
|
1230
1249
|
}
|
|
1231
|
-
.reply-input-wrapper[data-v-
|
|
1250
|
+
.reply-input-wrapper[data-v-35236c9c] .sd-editor-placeholder::before {
|
|
1232
1251
|
content: 'Reply or add others with @';
|
|
1233
1252
|
}
|
|
1234
|
-
.reply-actions[data-v-
|
|
1253
|
+
.reply-actions[data-v-35236c9c] {
|
|
1235
1254
|
display: flex;
|
|
1236
1255
|
justify-content: flex-end;
|
|
1237
1256
|
align-items: center;
|
|
1238
1257
|
gap: 16px;
|
|
1239
1258
|
margin-top: 8px;
|
|
1240
1259
|
}
|
|
1241
|
-
.reply-btn-cancel[data-v-
|
|
1260
|
+
.reply-btn-cancel[data-v-35236c9c] {
|
|
1242
1261
|
background: none;
|
|
1243
1262
|
border: none;
|
|
1244
1263
|
font-size: 13px;
|
|
@@ -1249,10 +1268,10 @@ img[data-v-c95b2073] {
|
|
|
1249
1268
|
font-family: inherit;
|
|
1250
1269
|
transition: color 150ms;
|
|
1251
1270
|
}
|
|
1252
|
-
.reply-btn-cancel[data-v-
|
|
1271
|
+
.reply-btn-cancel[data-v-35236c9c]:hover {
|
|
1253
1272
|
color: var(--sd-ui-text, #212121);
|
|
1254
1273
|
}
|
|
1255
|
-
.reply-btn-primary[data-v-
|
|
1274
|
+
.reply-btn-primary[data-v-35236c9c] {
|
|
1256
1275
|
background: var(--sd-ui-action, #1355ff);
|
|
1257
1276
|
border: none;
|
|
1258
1277
|
font-size: 13px;
|
|
@@ -1264,19 +1283,19 @@ img[data-v-c95b2073] {
|
|
|
1264
1283
|
font-family: inherit;
|
|
1265
1284
|
transition: background 150ms;
|
|
1266
1285
|
}
|
|
1267
|
-
.reply-btn-primary[data-v-
|
|
1286
|
+
.reply-btn-primary[data-v-35236c9c]:hover {
|
|
1268
1287
|
background: var(--sd-ui-action-hover, #0f44cc);
|
|
1269
1288
|
}
|
|
1270
|
-
.reply-btn-primary.sd-is-disabled[data-v-
|
|
1289
|
+
.reply-btn-primary.sd-is-disabled[data-v-35236c9c] {
|
|
1271
1290
|
background: var(--sd-color-gray-400, #dbdbdb);
|
|
1272
1291
|
color: var(--sd-color-gray-600, #888888);
|
|
1273
1292
|
cursor: default;
|
|
1274
1293
|
pointer-events: none;
|
|
1275
1294
|
}
|
|
1276
|
-
.existing-internal-input[data-v-
|
|
1295
|
+
.existing-internal-input[data-v-35236c9c] {
|
|
1277
1296
|
margin-bottom: 10px;
|
|
1278
1297
|
}
|
|
1279
|
-
.sd-internal-dropdown[data-v-
|
|
1298
|
+
.sd-internal-dropdown[data-v-35236c9c] {
|
|
1280
1299
|
display: inline-block;
|
|
1281
1300
|
}
|
|
1282
1301
|
|
|
@@ -1324,24 +1343,24 @@ img[data-v-c95b2073] {
|
|
|
1324
1343
|
background-color: #1355ff7f;
|
|
1325
1344
|
}
|
|
1326
1345
|
|
|
1327
|
-
.comment-placeholder[data-v-
|
|
1346
|
+
.comment-placeholder[data-v-3672b976] {
|
|
1328
1347
|
position: absolute;
|
|
1329
1348
|
width: 300px;
|
|
1330
1349
|
transition: top 0.3s ease;
|
|
1331
1350
|
}
|
|
1332
|
-
.floating-comment[data-v-
|
|
1351
|
+
.floating-comment[data-v-3672b976] {
|
|
1333
1352
|
position: relative;
|
|
1334
1353
|
display: block;
|
|
1335
1354
|
min-width: 300px;
|
|
1336
1355
|
}
|
|
1337
|
-
.sidebar-container[data-v-
|
|
1356
|
+
.sidebar-container[data-v-3672b976] {
|
|
1338
1357
|
position: absolute;
|
|
1339
1358
|
width: 300px;
|
|
1340
1359
|
min-height: 300px;
|
|
1341
1360
|
transition: transform 0.3s ease;
|
|
1342
1361
|
will-change: transform;
|
|
1343
1362
|
}
|
|
1344
|
-
.section-wrapper[data-v-
|
|
1363
|
+
.section-wrapper[data-v-3672b976] {
|
|
1345
1364
|
position: relative;
|
|
1346
1365
|
min-height: 100%;
|
|
1347
1366
|
width: 300px;
|