@docx-editor.dev/core 2.9.2 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/automation.cjs +1 -1
- package/dist/automation.js +1 -1
- package/dist/binding.cjs +1 -1
- package/dist/binding.d.cts +74 -10
- package/dist/binding.d.ts +74 -10
- package/dist/binding.js +1 -1
- package/dist/chunk-27APDXY2.js +2 -0
- package/dist/chunk-35MI6K7M.cjs +10 -0
- package/dist/chunk-4XL7SOWQ.cjs +2 -0
- package/dist/chunk-6K6QQVAZ.cjs +18 -0
- package/dist/chunk-7ZJL5AEY.cjs +1 -0
- package/dist/chunk-C6LK2BYA.cjs +2 -0
- package/dist/chunk-HBEBUCRM.cjs +5 -0
- package/dist/chunk-LG5K46OM.js +2 -0
- package/dist/chunk-LWADHMVV.js +5 -0
- package/dist/chunk-N725IUO7.js +18 -0
- package/dist/chunk-N7DBENH4.js +10 -0
- package/dist/chunk-NVGFWMCO.js +1 -0
- package/dist/chunk-SYTWKJPJ.cjs +18 -0
- package/dist/chunk-YI6JXF7U.js +18 -0
- package/dist/contracts/document.d.cts +6 -1
- package/dist/contracts/document.d.ts +6 -1
- package/dist/contracts/editor.d.cts +6 -6
- package/dist/contracts/editor.d.ts +6 -6
- package/dist/contracts/interaction.d.cts +6 -6
- package/dist/contracts/interaction.d.ts +6 -6
- package/dist/contracts/modules.d.cts +3 -4
- package/dist/contracts/modules.d.ts +3 -4
- package/dist/{custom-node-writes-D6SGwebL.d.ts → custom-node-writes-BvpWCnW8.d.ts} +35 -4
- package/dist/{custom-node-writes-Dy3b20PS.d.cts → custom-node-writes-Db8H6Z3n.d.cts} +35 -4
- package/dist/{editor-Cvd7Geoc.d.ts → editor-C0my6Uta.d.ts} +35 -14
- package/dist/{editor-cAEf1uXW.d.cts → editor-CwzY2Hcg.d.cts} +35 -14
- package/dist/editor.cjs +1 -1
- package/dist/editor.css +57 -456
- package/dist/editor.d.cts +20 -20
- package/dist/editor.d.ts +20 -20
- package/dist/editor.js +1 -1
- package/dist/{index-DRqY5JVF.d.ts → index-kID8Ymkp.d.ts} +79 -19
- package/dist/{index-wb-iOxfh.d.cts → index-nLFwo_17.d.cts} +79 -19
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.d.cts +38 -19
- package/dist/layout.d.ts +38 -19
- package/dist/layout.js +1 -1
- package/dist/output.cjs +1 -1
- package/dist/output.d.cts +6 -6
- package/dist/output.d.ts +6 -6
- package/dist/output.js +1 -1
- package/dist/{review-items-B8tffIXj.d.cts → review-items-CwixiHNe.d.cts} +1 -1
- package/dist/{review-items-bdGxFWNA.d.ts → review-items-Dw-8a6Ie.d.ts} +1 -1
- package/dist/{review-reads-Bxz03tHG.d.cts → review-reads-BqkiJTeR.d.cts} +1 -1
- package/dist/{review-reads-CHODU0LI.d.ts → review-reads-C0u-IKEA.d.ts} +1 -1
- package/dist/{semantic-cell-selection-BPzx6DdT.d.cts → semantic-cell-selection-DT9x9WLf.d.cts} +2 -2
- package/dist/{semantic-cell-selection-CsHcr-yk.d.ts → semantic-cell-selection-Utrf0lz7.d.ts} +2 -2
- package/dist/{semantic-interaction-BfWDD_0V.d.cts → semantic-interaction-B6hFRQLy.d.ts} +21 -2
- package/dist/{semantic-interaction-D-RZ9Ust.d.ts → semantic-interaction-Z0xKQcB4.d.cts} +21 -2
- package/dist/{semantic-paint-WhVtSDJK.d.ts → semantic-paint-CQEOC0Od.d.cts} +2 -2
- package/dist/{semantic-paint-Bd7EqzXV.d.cts → semantic-paint-quke354p.d.ts} +2 -2
- package/dist/{semantic-records-DadVT_E1.d.cts → semantic-records-CMakzQ1X.d.cts} +16 -2
- package/dist/{semantic-records-DCt-ZwKU.d.ts → semantic-records-Do3-i5oB.d.ts} +16 -2
- package/dist/{shaped-measurer-B9f4A7QA.d.ts → shaped-measurer-BxwTUluj.d.ts} +1 -1
- package/dist/{shaped-measurer-CninrHr_.d.cts → shaped-measurer-DzRwWrL5.d.cts} +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.d.cts +128 -12
- package/dist/store.d.ts +128 -12
- package/dist/store.js +1 -1
- package/dist/tree-op-revision-attribution-CN06Xshv.d.cts +24 -0
- package/dist/tree-op-revision-attribution-CN06Xshv.d.ts +24 -0
- package/dist/{tree-op-types-CnRb7AYo.d.ts → tree-op-types-BuOfCrkp.d.ts} +259 -32
- package/dist/{tree-op-types-D1vNJ7XC.d.cts → tree-op-types-DSJYmf5b.d.cts} +259 -32
- package/dist/{tree-session-Df02ajqc.d.cts → tree-session-contract-ByWx8eew.d.cts} +44 -104
- package/dist/{tree-session-ZuBFOhIh.d.ts → tree-session-contract-C1dfE9hy.d.ts} +44 -104
- package/dist/{tree-store-DgETo6Mf.d.ts → tree-store-ASBtz7UB.d.ts} +1 -1
- package/dist/{tree-store-B_sJBMIS.d.cts → tree-store-CWOUMGN8.d.cts} +1 -1
- package/package.json +2 -2
- package/dist/chunk-6JWP2H7K.js +0 -2
- package/dist/chunk-6KNLLEUW.cjs +0 -18
- package/dist/chunk-7ADTI533.cjs +0 -10
- package/dist/chunk-7ETDCPF6.cjs +0 -2
- package/dist/chunk-7I3BSGGS.js +0 -1
- package/dist/chunk-7UU5YFCD.cjs +0 -2
- package/dist/chunk-CKDAK3MV.js +0 -10
- package/dist/chunk-DIMEYVNS.js +0 -2
- package/dist/chunk-H2656QDI.cjs +0 -1
- package/dist/chunk-KQGENNL5.cjs +0 -15
- package/dist/chunk-LIXPSV4T.js +0 -18
- package/dist/chunk-O4UULRAQ.cjs +0 -5
- package/dist/chunk-SIIFNE6U.js +0 -15
- package/dist/chunk-VXYECPKA.js +0 -5
- package/dist/image-resources-BgA9EQxY.d.ts +0 -203
- package/dist/image-resources-BiA-IXgo.d.cts +0 -203
package/dist/editor.css
CHANGED
|
@@ -1106,9 +1106,8 @@
|
|
|
1106
1106
|
* via these token overrides (as below), never via a `dark:` utility placed
|
|
1107
1107
|
* directly on the `.docx-editor` node.
|
|
1108
1108
|
* ====================================================================== */
|
|
1109
|
-
/* Also targets nested `.docx-editor` elements (e.g.
|
|
1110
|
-
*
|
|
1111
|
-
* dark tree. */
|
|
1109
|
+
/* Also targets nested `.docx-editor` elements (e.g. Radix portals) so the base
|
|
1110
|
+
* `.docx-editor` light tokens don't shadow these inside a dark tree. */
|
|
1112
1111
|
.docx-editor.dark,
|
|
1113
1112
|
.docx-editor.dark .docx-editor {
|
|
1114
1113
|
/* Palette sampled from Microsoft Word Online dark mode (chrome + canvas).
|
|
@@ -1217,8 +1216,7 @@
|
|
|
1217
1216
|
* invert(1) hue-rotate(180deg) flips lightness but preserves hue for ALL
|
|
1218
1217
|
* authored colors, so nothing is unreadable. Media is double-inverted back so
|
|
1219
1218
|
* photos/logos render normally. */
|
|
1220
|
-
|
|
1221
|
-
/* The paginated lane paints its content into `.docx-page-content`; inverting the page
|
|
1219
|
+
/* The painter paints its content into `.docx-page-content`; inverting the page
|
|
1222
1220
|
FRAME as well would flip the paper itself, so the sheet keeps its own token background
|
|
1223
1221
|
and only the content it holds is lightness-inverted. */
|
|
1224
1222
|
/* Highlights are COUNTER-INVERTED, like images.
|
|
@@ -1227,8 +1225,7 @@
|
|
|
1227
1225
|
where it clamps to zero, landing on a dark olive that reads as a redaction bar. Word keeps
|
|
1228
1226
|
a highlight its authored colour, so the run is inverted back — the same treatment media
|
|
1229
1227
|
already gets, for the same reason. */
|
|
1230
|
-
.docx-editor.dark .docx-page-content [data-highlight]
|
|
1231
|
-
.docx-editor.dark .layout-page [data-highlight] {
|
|
1228
|
+
.docx-editor.dark .docx-page-content [data-highlight] {
|
|
1232
1229
|
filter: invert(1) hue-rotate(180deg);
|
|
1233
1230
|
}
|
|
1234
1231
|
|
|
@@ -1245,23 +1242,10 @@
|
|
|
1245
1242
|
.docx-editor.dark .docx-page-content {
|
|
1246
1243
|
/* contrast(0.92) softens the pure black/white extremes a plain invert
|
|
1247
1244
|
* produces, landing on Word's gentler off-white text / dark-grey fills
|
|
1248
|
-
* rather than #fff on #000.
|
|
1245
|
+
* rather than #fff on #000. The page FRAME sits outside this filter, so
|
|
1246
|
+
* its own shadow needs no counter-treatment. */
|
|
1249
1247
|
filter: invert(1) hue-rotate(180deg) contrast(0.92);
|
|
1250
|
-
|
|
1251
|
-
* light glow) with a 1px ring. Pre-invert dark → post-invert a subtle light
|
|
1252
|
-
* border, matching Word's framed dark page. */
|
|
1253
|
-
}
|
|
1254
|
-
/* The ring replaces the page frame's drop shadow, so it belongs to the FRAME. Applied to
|
|
1255
|
-
the content box as well it outlined the text area — a box Word never draws — while the
|
|
1256
|
-
real page edge lost its separation from the workspace. */
|
|
1257
|
-
.docx-editor.dark .layout-page {
|
|
1258
|
-
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.18) !important;
|
|
1259
|
-
}
|
|
1260
|
-
.docx-editor.dark .layout-page img,
|
|
1261
|
-
.docx-editor.dark .layout-page svg,
|
|
1262
|
-
.docx-editor.dark .layout-page canvas,
|
|
1263
|
-
.docx-editor.dark .layout-page video,
|
|
1264
|
-
.docx-editor.dark .layout-page [data-no-color-invert],
|
|
1248
|
+
}
|
|
1265
1249
|
.docx-editor.dark .docx-page-content img,
|
|
1266
1250
|
.docx-editor.dark .docx-page-content svg,
|
|
1267
1251
|
.docx-editor.dark .docx-page-content canvas,
|
|
@@ -1285,13 +1269,6 @@
|
|
|
1285
1269
|
lands on near-white. */
|
|
1286
1270
|
--doc-page-text: #000000;
|
|
1287
1271
|
}
|
|
1288
|
-
.docx-editor.dark .layout-page,
|
|
1289
|
-
.docx-editor.dark .layout-page img,
|
|
1290
|
-
.docx-editor.dark .layout-page svg,
|
|
1291
|
-
.docx-editor.dark .layout-page canvas,
|
|
1292
|
-
.docx-editor.dark .layout-page video {
|
|
1293
|
-
filter: none;
|
|
1294
|
-
}
|
|
1295
1272
|
}
|
|
1296
1273
|
|
|
1297
1274
|
/* ============================================================================
|
|
@@ -1609,22 +1586,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
1609
1586
|
border-bottom: 2px dashed rgba(156, 39, 176, 0.6);
|
|
1610
1587
|
}
|
|
1611
1588
|
|
|
1612
|
-
/* Transient paragraph flash used by scrollToParaId({ highlight }). */
|
|
1613
|
-
.docx-editor .layout-paragraph.docx-paragraph-flash {
|
|
1614
|
-
animation: docx-paragraph-flash-fade var(--docx-paragraph-flash-duration, 1200ms) ease-out both;
|
|
1615
|
-
}
|
|
1616
|
-
|
|
1617
|
-
@keyframes docx-paragraph-flash-fade {
|
|
1618
|
-
0%,
|
|
1619
|
-
70% {
|
|
1620
|
-
box-shadow: inset 0 0 0 9999px var(--docx-paragraph-flash-color, rgba(255, 235, 59, 0.55));
|
|
1621
|
-
}
|
|
1622
|
-
|
|
1623
|
-
100% {
|
|
1624
|
-
box-shadow: inset 0 0 0 9999px transparent;
|
|
1625
|
-
}
|
|
1626
|
-
}
|
|
1627
|
-
|
|
1628
1589
|
/* ============================================================================
|
|
1629
1590
|
* SELECTION OVERLAY (for programmatic highlighting)
|
|
1630
1591
|
* ============================================================================ */
|
|
@@ -2025,6 +1986,14 @@ a.docx-hyperlink:focus-visible {
|
|
|
2025
1986
|
|
|
2026
1987
|
.docx-drawing {
|
|
2027
1988
|
pointer-events: auto;
|
|
1989
|
+
/* An arrow over pictures, as Word shows. Inline drawings paint INSIDE the line, so
|
|
1990
|
+
* without this they inherit the content box's I-beam. */
|
|
1991
|
+
cursor: default;
|
|
1992
|
+
}
|
|
1993
|
+
|
|
1994
|
+
/* Text boxes carry rendered text, so they keep the I-beam the arrow above would cover. */
|
|
1995
|
+
.docx-drawing-textbox {
|
|
1996
|
+
cursor: text;
|
|
2028
1997
|
}
|
|
2029
1998
|
|
|
2030
1999
|
.docx-drawing-layer {
|
|
@@ -2125,10 +2094,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
2125
2094
|
cursor: pointer;
|
|
2126
2095
|
}
|
|
2127
2096
|
|
|
2128
|
-
.docx-editor .paged-editor--readonly .docx-table-furniture {
|
|
2129
|
-
display: none !important;
|
|
2130
|
-
}
|
|
2131
|
-
|
|
2132
2097
|
/* Table chrome — contextual border/fill controls (Task 9). */
|
|
2133
2098
|
.docx-table-chrome {
|
|
2134
2099
|
display: inline-flex;
|
|
@@ -2311,24 +2276,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
2311
2276
|
* LAYOUT TABLE COLUMN RESIZE
|
|
2312
2277
|
* ============================================================================ */
|
|
2313
2278
|
|
|
2314
|
-
/* ============================================================================
|
|
2315
|
-
* TABLE CELL SELECTION (visible layout table cells)
|
|
2316
|
-
* ============================================================================ */
|
|
2317
|
-
|
|
2318
|
-
.docx-editor .layout-table-cell-selected {
|
|
2319
|
-
position: relative;
|
|
2320
|
-
outline: 2px solid var(--doc-selection);
|
|
2321
|
-
outline-offset: -2px;
|
|
2322
|
-
}
|
|
2323
|
-
|
|
2324
|
-
.docx-editor .layout-table-cell-selected::after {
|
|
2325
|
-
content: '';
|
|
2326
|
-
position: absolute;
|
|
2327
|
-
inset: 0;
|
|
2328
|
-
background-color: rgba(66, 133, 244, 0.15);
|
|
2329
|
-
pointer-events: none;
|
|
2330
|
-
}
|
|
2331
|
-
|
|
2332
2279
|
.docx-editor .layout-table-resize-handle {
|
|
2333
2280
|
background-color: transparent;
|
|
2334
2281
|
transition: background-color 0.15s;
|
|
@@ -2363,8 +2310,7 @@ a.docx-hyperlink:focus-visible {
|
|
|
2363
2310
|
}
|
|
2364
2311
|
|
|
2365
2312
|
/* Row resize handles */
|
|
2366
|
-
.docx-editor .layout-table-row-resize-handle
|
|
2367
|
-
.docx-editor .layout-table-edge-handle-bottom {
|
|
2313
|
+
.docx-editor .layout-table-row-resize-handle {
|
|
2368
2314
|
background-color: transparent;
|
|
2369
2315
|
transition: background-color 0.15s;
|
|
2370
2316
|
}
|
|
@@ -2383,9 +2329,7 @@ a.docx-hyperlink:focus-visible {
|
|
|
2383
2329
|
}
|
|
2384
2330
|
|
|
2385
2331
|
.docx-editor .layout-table-row-resize-handle:hover,
|
|
2386
|
-
.docx-editor .layout-table-row-resize-handle.dragging
|
|
2387
|
-
.docx-editor .layout-table-edge-handle-bottom:hover,
|
|
2388
|
-
.docx-editor .layout-table-edge-handle-bottom.dragging {
|
|
2332
|
+
.docx-editor .layout-table-row-resize-handle.dragging {
|
|
2389
2333
|
background-color: transparent;
|
|
2390
2334
|
}
|
|
2391
2335
|
|
|
@@ -2414,30 +2358,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
2414
2358
|
opacity: 1;
|
|
2415
2359
|
}
|
|
2416
2360
|
|
|
2417
|
-
/* ============================================================================
|
|
2418
|
-
* READONLY MODE — suppress interactive editing cues
|
|
2419
|
-
* ============================================================================ */
|
|
2420
|
-
|
|
2421
|
-
/* Hide table resize handles */
|
|
2422
|
-
.docx-editor .paged-editor--readonly .layout-table-resize-handle,
|
|
2423
|
-
.docx-editor .paged-editor--readonly .layout-table-row-resize-handle,
|
|
2424
|
-
.docx-editor .paged-editor--readonly .layout-table-edge-handle-bottom,
|
|
2425
|
-
.docx-editor .paged-editor--readonly .layout-table-edge-handle-right {
|
|
2426
|
-
display: none !important;
|
|
2427
|
-
}
|
|
2428
|
-
|
|
2429
|
-
/* Remove header/footer hover effects and edit hints */
|
|
2430
|
-
.docx-editor .paged-editor--readonly .layout-page-header,
|
|
2431
|
-
.docx-editor .paged-editor--readonly .layout-page-footer {
|
|
2432
|
-
cursor: default;
|
|
2433
|
-
pointer-events: none;
|
|
2434
|
-
}
|
|
2435
|
-
|
|
2436
|
-
/* Remove text cursor from page content */
|
|
2437
|
-
.docx-editor .paged-editor--readonly .layout-page-content {
|
|
2438
|
-
cursor: default;
|
|
2439
|
-
}
|
|
2440
|
-
|
|
2441
2361
|
/* Outline heading hover */
|
|
2442
2362
|
.docx-outline-heading-btn:hover {
|
|
2443
2363
|
background-color: var(--doc-bg-hover);
|
|
@@ -2488,158 +2408,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
2488
2408
|
outline-offset: 2px;
|
|
2489
2409
|
}
|
|
2490
2410
|
|
|
2491
|
-
/* ============================================================================
|
|
2492
|
-
* HEADER / FOOTER EDITING
|
|
2493
|
-
*
|
|
2494
|
-
* These styles are needed when editing headers/footers inline (Google Docs style).
|
|
2495
|
-
* They must be in dist/styles.css since the runtime CSS import in
|
|
2496
|
-
* OffscreenEditorHost.tsx is stripped by tsup (injectStyle: false).
|
|
2497
|
-
* ============================================================================ */
|
|
2498
|
-
|
|
2499
|
-
/* Page content area — show text cursor when hovering over editable content */
|
|
2500
|
-
.docx-editor .layout-page-content {
|
|
2501
|
-
cursor: text;
|
|
2502
|
-
}
|
|
2503
|
-
|
|
2504
|
-
/* Block-level Structured Document Tag (content control) boundary.
|
|
2505
|
-
The painter lays body fragments as flat absolutely-positioned siblings, so
|
|
2506
|
-
the boundary is a single overlay box per control (see renderSdtBoundaryBoxes)
|
|
2507
|
-
spanning its fragments at content width — drawn as one rounded rectangle
|
|
2508
|
-
like Word, with a corner label chip revealed on hover/focus. The box is
|
|
2509
|
-
non-interactive so it never steals clicks from the editable content under it.
|
|
2510
|
-
Nested controls each draw their own (slightly inset) box. */
|
|
2511
|
-
.docx-editor .layout-block-sdt-box {
|
|
2512
|
-
pointer-events: none;
|
|
2513
|
-
border: 1px solid transparent;
|
|
2514
|
-
border-radius: 4px;
|
|
2515
|
-
box-sizing: border-box;
|
|
2516
|
-
transition: border-color 0.1s ease;
|
|
2517
|
-
z-index: 1;
|
|
2518
|
-
}
|
|
2519
|
-
.docx-editor .layout-block-sdt-box.is-active,
|
|
2520
|
-
.docx-editor .layout-block-sdt-box.is-focused {
|
|
2521
|
-
border-color: rgba(25, 103, 210, 0.5);
|
|
2522
|
-
}
|
|
2523
|
-
/* Corner label chip — hidden until its control is hovered/active. */
|
|
2524
|
-
.docx-editor .layout-block-sdt-label {
|
|
2525
|
-
position: absolute;
|
|
2526
|
-
left: -1px;
|
|
2527
|
-
bottom: 100%;
|
|
2528
|
-
max-width: 160px;
|
|
2529
|
-
height: 16px;
|
|
2530
|
-
padding: 0 6px;
|
|
2531
|
-
font-size: 10px;
|
|
2532
|
-
line-height: 16px;
|
|
2533
|
-
white-space: nowrap;
|
|
2534
|
-
overflow: hidden;
|
|
2535
|
-
text-overflow: ellipsis;
|
|
2536
|
-
color: #fff;
|
|
2537
|
-
background-color: rgba(25, 103, 210, 0.92);
|
|
2538
|
-
border-radius: 4px 4px 0 0;
|
|
2539
|
-
display: none;
|
|
2540
|
-
}
|
|
2541
|
-
.docx-editor .layout-block-sdt-box.is-active .layout-block-sdt-label,
|
|
2542
|
-
.docx-editor .layout-block-sdt-box.is-focused .layout-block-sdt-label {
|
|
2543
|
-
display: inline-flex;
|
|
2544
|
-
align-items: center;
|
|
2545
|
-
gap: 2px;
|
|
2546
|
-
}
|
|
2547
|
-
|
|
2548
|
-
/* Header/footer CONTENT is non-interactive in normal mode: a single click on a
|
|
2549
|
-
header/footer is already a no-op (Word parity), and — crucially — a page- or
|
|
2550
|
-
margin-anchored shape (e.g. a full-page letterhead in a header) overflows the
|
|
2551
|
-
band and would otherwise sit on top of the body and swallow clicks meant for
|
|
2552
|
-
the document text (#856). The band element itself keeps pointer events so it
|
|
2553
|
-
stays the double-click-to-edit target; only its content is passed through.
|
|
2554
|
-
Kept here (not only in prosemirror/editor.css) so the React adapter's
|
|
2555
|
-
styles.css build — which compiles this file — ships the rule. */
|
|
2556
|
-
.docx-editor .layout-page-header > *,
|
|
2557
|
-
.docx-editor .layout-page-footer > * {
|
|
2558
|
-
pointer-events: none;
|
|
2559
|
-
}
|
|
2560
|
-
|
|
2561
|
-
/* While editing a region, its content must be hittable again so clicks map to
|
|
2562
|
-
header/footer caret positions. */
|
|
2563
|
-
.docx-editor .paged-editor--editing-header .layout-page-header > *,
|
|
2564
|
-
.docx-editor .paged-editor--editing-footer .layout-page-footer > * {
|
|
2565
|
-
pointer-events: auto;
|
|
2566
|
-
}
|
|
2567
|
-
|
|
2568
|
-
/* Header/footer areas — double-click hint */
|
|
2569
|
-
.docx-editor .layout-page-header,
|
|
2570
|
-
.docx-editor .layout-page-footer {
|
|
2571
|
-
cursor: pointer;
|
|
2572
|
-
transition: background-color 0.15s ease;
|
|
2573
|
-
}
|
|
2574
|
-
.docx-editor .layout-page-header:hover,
|
|
2575
|
-
.docx-editor .layout-page-footer:hover {
|
|
2576
|
-
background-color: rgba(37, 99, 235, 0.06);
|
|
2577
|
-
}
|
|
2578
|
-
/* Show "Double-click to edit" hint on hover when area is empty */
|
|
2579
|
-
.docx-editor .layout-page-header:empty:hover::after {
|
|
2580
|
-
content: 'Double-click to add header';
|
|
2581
|
-
display: block;
|
|
2582
|
-
text-align: center;
|
|
2583
|
-
color: var(--doc-text-subtle);
|
|
2584
|
-
font-size: 11px;
|
|
2585
|
-
padding: 4px 0;
|
|
2586
|
-
}
|
|
2587
|
-
.docx-editor .layout-page-footer:empty:hover::after {
|
|
2588
|
-
content: 'Double-click to add footer';
|
|
2589
|
-
display: block;
|
|
2590
|
-
text-align: center;
|
|
2591
|
-
color: var(--doc-text-subtle);
|
|
2592
|
-
font-size: 11px;
|
|
2593
|
-
padding: 4px 0;
|
|
2594
|
-
}
|
|
2595
|
-
|
|
2596
|
-
/*
|
|
2597
|
-
* Phase 5 of HF editing unification (openspec/changes/unify-hf-editing/):
|
|
2598
|
-
* the inline overlay no longer mounts a PM EditorView, so the entire
|
|
2599
|
-
* `.hf-editor-pm` rule block (font-strut zeroing, table-layout overrides,
|
|
2600
|
-
* `top: 0.4em` shim, line-height resets) is gone. Painter + persistent
|
|
2601
|
-
* hidden PM are the only HF rendering paths now.
|
|
2602
|
-
*/
|
|
2603
|
-
|
|
2604
|
-
/* Dim body content when editing header/footer */
|
|
2605
|
-
.docx-editor .paged-editor--hf-editing .layout-page-content {
|
|
2606
|
-
opacity: 0.4;
|
|
2607
|
-
pointer-events: none;
|
|
2608
|
-
transition: opacity 0.15s ease;
|
|
2609
|
-
}
|
|
2610
|
-
|
|
2611
|
-
/* While editing one HF region, the sibling region (and the non-edited area)
|
|
2612
|
-
shows a normal arrow, not the double-click "pointer" hint. The active
|
|
2613
|
-
region's `cursor: text` below wins via later source order. */
|
|
2614
|
-
.docx-editor .paged-editor--hf-editing .layout-page-header,
|
|
2615
|
-
.docx-editor .paged-editor--hf-editing .layout-page-footer {
|
|
2616
|
-
cursor: default;
|
|
2617
|
-
}
|
|
2618
|
-
|
|
2619
|
-
/* Dotted border on active header area; text caret since it's being edited */
|
|
2620
|
-
.docx-editor .paged-editor--editing-header .layout-page-header {
|
|
2621
|
-
border-bottom: 1px dotted var(--doc-primary);
|
|
2622
|
-
cursor: text;
|
|
2623
|
-
}
|
|
2624
|
-
|
|
2625
|
-
/* Dotted border on active footer area; text caret since it's being edited */
|
|
2626
|
-
.docx-editor .paged-editor--editing-footer .layout-page-footer {
|
|
2627
|
-
border-top: 1px dotted var(--doc-primary);
|
|
2628
|
-
cursor: text;
|
|
2629
|
-
}
|
|
2630
|
-
|
|
2631
|
-
/*
|
|
2632
|
-
* HF editing unification phase 2 (openspec/changes/unify-hf-editing/):
|
|
2633
|
-
* removed; the painter is now the sole visible HF renderer in both modes
|
|
2634
|
-
* and the inline overlay's PM container moves off-screen instead.
|
|
2635
|
-
*/
|
|
2636
|
-
|
|
2637
|
-
/* Remove hover effect on header/footer when in editing mode */
|
|
2638
|
-
.docx-editor .paged-editor--hf-editing .layout-page-header:hover,
|
|
2639
|
-
.docx-editor .paged-editor--hf-editing .layout-page-footer:hover {
|
|
2640
|
-
background-color: transparent;
|
|
2641
|
-
}
|
|
2642
|
-
|
|
2643
2411
|
/* Body caret blink for the Vue adapter's painted caret (useSelectionSync sets
|
|
2644
2412
|
`animation: docx-editor-caret-blink ...` inline). React drives its caret's blink from a
|
|
2645
2413
|
JS timer instead; both land on the same 530ms half-period, which is the
|
|
@@ -2669,6 +2437,21 @@ a.docx-hyperlink:focus-visible {
|
|
|
2669
2437
|
}
|
|
2670
2438
|
}
|
|
2671
2439
|
|
|
2440
|
+
/* Error notification toast entrance (the React adapter's NotificationToast sets
|
|
2441
|
+
`animation: docx-notification-slide-in ...` inline; the rest of its styling is
|
|
2442
|
+
inline too). Keyframes names are document-global, so it lives here where the
|
|
2443
|
+
build's namespace guard (scripts/core-css-assertions.mjs) covers it. */
|
|
2444
|
+
@keyframes docx-notification-slide-in {
|
|
2445
|
+
from {
|
|
2446
|
+
opacity: 0;
|
|
2447
|
+
transform: translateX(100%);
|
|
2448
|
+
}
|
|
2449
|
+
to {
|
|
2450
|
+
opacity: 1;
|
|
2451
|
+
transform: translateX(0);
|
|
2452
|
+
}
|
|
2453
|
+
}
|
|
2454
|
+
|
|
2672
2455
|
/* Section break indicator */
|
|
2673
2456
|
.docx-section-break {
|
|
2674
2457
|
position: relative;
|
|
@@ -2690,25 +2473,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
2690
2473
|
background: var(--doc-bg-hover);
|
|
2691
2474
|
}
|
|
2692
2475
|
|
|
2693
|
-
/* =============================================================================
|
|
2694
|
-
* ProseMirror decoration forwarding overlay
|
|
2695
|
-
*
|
|
2696
|
-
* Generic surface for decorations published via PM plugins' `props.decorations`
|
|
2697
|
-
* (the painter doesn't render them itself — see `DecorationLayer.tsx`).
|
|
2698
|
-
* Children are absolutely-positioned inside this container; pointer-events
|
|
2699
|
-
* are off by default so editing isn't blocked. Plugins that need hover/click
|
|
2700
|
-
* on a decoration (e.g. cursor name labels) opt in via inline styles.
|
|
2701
|
-
*
|
|
2702
|
-
* z-index: 11 — one above SelectionOverlay (10) so cursor name labels render
|
|
2703
|
-
* above the local caret.
|
|
2704
|
-
* ============================================================================= */
|
|
2705
|
-
.docx-editor .paged-editor__decoration-overlay {
|
|
2706
|
-
position: absolute;
|
|
2707
|
-
inset: 0;
|
|
2708
|
-
pointer-events: none;
|
|
2709
|
-
z-index: 11;
|
|
2710
|
-
}
|
|
2711
|
-
|
|
2712
2476
|
/* Default styles for y-prosemirror remote cursor decorations. Consumers can
|
|
2713
2477
|
* override by providing their own `.ProseMirror-yjs-cursor` rules.
|
|
2714
2478
|
*
|
|
@@ -2741,155 +2505,11 @@ a.docx-hyperlink:focus-visible {
|
|
|
2741
2505
|
pointer-events: none;
|
|
2742
2506
|
}
|
|
2743
2507
|
|
|
2744
|
-
/* Tracked-revision styles live in core (prosemirror/editor.css), shared
|
|
2745
|
-
by React + Vue adapters. Do not duplicate here. */
|
|
2746
|
-
|
|
2747
|
-
/* Interactive trigger for typed controls (checkbox/dropdown/date). The box is
|
|
2748
|
-
pointer-events:none; the trigger re-enables them so it is clickable. Sits at
|
|
2749
|
-
the top-right corner of the control box. */
|
|
2750
|
-
.docx-editor .layout-sdt-widget {
|
|
2751
|
-
position: absolute;
|
|
2752
|
-
top: 1px;
|
|
2753
|
-
right: 1px;
|
|
2754
|
-
min-width: 18px;
|
|
2755
|
-
height: 18px;
|
|
2756
|
-
padding: 0 3px;
|
|
2757
|
-
display: inline-flex;
|
|
2758
|
-
align-items: center;
|
|
2759
|
-
justify-content: center;
|
|
2760
|
-
font-size: 12px;
|
|
2761
|
-
line-height: 1;
|
|
2762
|
-
color: var(--doc-primary);
|
|
2763
|
-
background: rgba(255, 255, 255, 0.9);
|
|
2764
|
-
border: 1px solid rgba(25, 103, 210, 0.5);
|
|
2765
|
-
border-radius: 3px;
|
|
2766
|
-
cursor: pointer;
|
|
2767
|
-
pointer-events: auto;
|
|
2768
|
-
opacity: 0.55;
|
|
2769
|
-
transition: opacity 0.1s ease;
|
|
2770
|
-
}
|
|
2771
|
-
.docx-editor .layout-block-sdt-box.is-active .layout-sdt-widget,
|
|
2772
|
-
.docx-editor .layout-block-sdt-box.is-focused .layout-sdt-widget,
|
|
2773
|
-
.docx-editor .layout-sdt-widget:focus {
|
|
2774
|
-
opacity: 1;
|
|
2775
|
-
}
|
|
2776
|
-
.docx-editor .layout-sdt-widget:hover {
|
|
2777
|
-
background: var(--doc-primary-light);
|
|
2778
|
-
}
|
|
2779
|
-
|
|
2780
|
-
.docx-editor .layout-inline-sdt-widget {
|
|
2781
|
-
cursor: pointer;
|
|
2782
|
-
pointer-events: auto;
|
|
2783
|
-
border-radius: 2px;
|
|
2784
|
-
outline-offset: 1px;
|
|
2785
|
-
-webkit-user-select: none;
|
|
2786
|
-
-moz-user-select: none;
|
|
2787
|
-
user-select: none;
|
|
2788
|
-
}
|
|
2789
|
-
.docx-editor .layout-inline-sdt-widget:hover,
|
|
2790
|
-
.docx-editor .layout-inline-sdt-widget:focus {
|
|
2791
|
-
background: var(--doc-primary-light);
|
|
2792
|
-
outline: 1px solid rgba(25, 103, 210, 0.55);
|
|
2793
|
-
}
|
|
2794
|
-
|
|
2795
|
-
/* Popup for dropdown/date content-control widgets (rendered by the adapter). */
|
|
2796
|
-
.docx-editor .layout-sdt-widget-popup {
|
|
2797
|
-
min-width: 120px;
|
|
2798
|
-
max-height: 240px;
|
|
2799
|
-
overflow-y: auto;
|
|
2800
|
-
background: var(--doc-surface);
|
|
2801
|
-
border: 1px solid var(--doc-border-light);
|
|
2802
|
-
border-radius: 6px;
|
|
2803
|
-
box-shadow: 0 2px 10px var(--doc-shadow);
|
|
2804
|
-
padding: 4px;
|
|
2805
|
-
font-size: 13px;
|
|
2806
|
-
}
|
|
2807
|
-
.docx-editor .layout-sdt-widget-option {
|
|
2808
|
-
display: block;
|
|
2809
|
-
width: 100%;
|
|
2810
|
-
text-align: left;
|
|
2811
|
-
padding: 6px 10px;
|
|
2812
|
-
border: 0;
|
|
2813
|
-
background: transparent;
|
|
2814
|
-
border-radius: 4px;
|
|
2815
|
-
cursor: pointer;
|
|
2816
|
-
color: var(--doc-text);
|
|
2817
|
-
}
|
|
2818
|
-
.docx-editor .layout-sdt-widget-option:hover {
|
|
2819
|
-
background: var(--doc-primary-light);
|
|
2820
|
-
}
|
|
2821
|
-
.docx-editor .layout-sdt-widget-empty {
|
|
2822
|
-
padding: 6px 10px;
|
|
2823
|
-
color: var(--doc-text-muted);
|
|
2824
|
-
}
|
|
2825
|
-
.docx-editor .layout-sdt-widget-date {
|
|
2826
|
-
font: inherit;
|
|
2827
|
-
padding: 4px 6px;
|
|
2828
|
-
border: 1px solid var(--doc-border-light);
|
|
2829
|
-
border-radius: 4px;
|
|
2830
|
-
}
|
|
2831
|
-
.docx-editor .layout-sdt-widget-option.is-selected {
|
|
2832
|
-
font-weight: 600;
|
|
2833
|
-
background: var(--doc-bg-hover);
|
|
2834
|
-
}
|
|
2835
|
-
|
|
2836
|
-
/* Repeating-section item add/remove affordances (bottom-right of the item box). */
|
|
2837
|
-
.docx-editor .layout-sdt-repeat-controls {
|
|
2838
|
-
position: absolute;
|
|
2839
|
-
bottom: 1px;
|
|
2840
|
-
right: 1px;
|
|
2841
|
-
display: flex;
|
|
2842
|
-
gap: 2px;
|
|
2843
|
-
opacity: 0.55;
|
|
2844
|
-
pointer-events: none;
|
|
2845
|
-
}
|
|
2846
|
-
.docx-editor .layout-block-sdt-box.is-active .layout-sdt-repeat-controls,
|
|
2847
|
-
.docx-editor .layout-block-sdt-box.is-focused .layout-sdt-repeat-controls {
|
|
2848
|
-
opacity: 1;
|
|
2849
|
-
}
|
|
2850
|
-
.docx-editor .layout-sdt-repeat-btn {
|
|
2851
|
-
min-width: 16px;
|
|
2852
|
-
height: 16px;
|
|
2853
|
-
padding: 0 3px;
|
|
2854
|
-
font-size: 11px;
|
|
2855
|
-
line-height: 1;
|
|
2856
|
-
color: var(--doc-primary);
|
|
2857
|
-
background: rgba(255, 255, 255, 0.9);
|
|
2858
|
-
border: 1px solid rgba(25, 103, 210, 0.5);
|
|
2859
|
-
border-radius: 3px;
|
|
2860
|
-
cursor: pointer;
|
|
2861
|
-
pointer-events: auto;
|
|
2862
|
-
}
|
|
2863
|
-
.docx-editor .layout-sdt-repeat-btn:hover {
|
|
2864
|
-
background: var(--doc-primary-light);
|
|
2865
|
-
}
|
|
2866
|
-
|
|
2867
2508
|
/* ============================================================================
|
|
2868
2509
|
* Revision indicators shared by both adapters.
|
|
2869
2510
|
* Visible painter cues live here so React and Vue stay in lockstep.
|
|
2870
2511
|
* ========================================================================== */
|
|
2871
2512
|
|
|
2872
|
-
.docx-editor .layout-revision-bars {
|
|
2873
|
-
position: absolute;
|
|
2874
|
-
inset: 0;
|
|
2875
|
-
pointer-events: none;
|
|
2876
|
-
}
|
|
2877
|
-
|
|
2878
|
-
.docx-editor .layout-revision-change-bar {
|
|
2879
|
-
position: absolute;
|
|
2880
|
-
left: -10px;
|
|
2881
|
-
width: 2px;
|
|
2882
|
-
pointer-events: none;
|
|
2883
|
-
}
|
|
2884
|
-
|
|
2885
|
-
.docx-editor .layout-revision-change-bar.layout-revision-ins {
|
|
2886
|
-
background-color: var(--doc-revision-insertion);
|
|
2887
|
-
}
|
|
2888
|
-
|
|
2889
|
-
.docx-editor .layout-revision-change-bar.layout-revision-del {
|
|
2890
|
-
background-color: var(--doc-revision-deletion);
|
|
2891
|
-
}
|
|
2892
|
-
|
|
2893
2513
|
.docx-table-row--revision::before {
|
|
2894
2514
|
content: '';
|
|
2895
2515
|
position: absolute;
|
|
@@ -2929,6 +2549,23 @@ a.docx-hyperlink:focus-visible {
|
|
|
2929
2549
|
background-color: var(--doc-revision-deletion-wash);
|
|
2930
2550
|
}
|
|
2931
2551
|
|
|
2552
|
+
/* A DRAWING inside a tracked change. The outline is the box's underline/strike: there is no
|
|
2553
|
+
text to decorate, so the frame carries the claim, in the same kind tokens the text rules
|
|
2554
|
+
use. Drawn INSIDE the box (negative offset) because pages, cells and clipped paint bounds
|
|
2555
|
+
crop at the box edge and would shave an outer ring off. Under author colouring the painter
|
|
2556
|
+
overrides `outline-color` inline, exactly as span ink follows the author. */
|
|
2557
|
+
.docx-drawing--revision-insertion {
|
|
2558
|
+
outline: 2px solid var(--doc-revision-insertion);
|
|
2559
|
+
outline-offset: -2px;
|
|
2560
|
+
}
|
|
2561
|
+
|
|
2562
|
+
.docx-drawing--revision-deletion {
|
|
2563
|
+
outline: 2px solid var(--doc-revision-deletion);
|
|
2564
|
+
outline-offset: -2px;
|
|
2565
|
+
/* Pending removal reads as on its way out — the box twin of the strike-through. */
|
|
2566
|
+
opacity: 0.6;
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2932
2569
|
/* FIELD SHADING — the grey block Word draws behind computed text (a page number, a
|
|
2933
2570
|
cross-reference, the blank in a form). It marks where text came from, not what it says.
|
|
2934
2571
|
|
|
@@ -2968,27 +2605,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
2968
2605
|
text-decoration-color: var(--doc-revision-format);
|
|
2969
2606
|
}
|
|
2970
2607
|
|
|
2971
|
-
.docx-editor .layout-revision-pmark {
|
|
2972
|
-
position: relative;
|
|
2973
|
-
}
|
|
2974
|
-
|
|
2975
|
-
.docx-editor .layout-revision-pmark-glyph {
|
|
2976
|
-
display: inline;
|
|
2977
|
-
margin-left: 2px;
|
|
2978
|
-
font-weight: normal;
|
|
2979
|
-
opacity: 0.75;
|
|
2980
|
-
pointer-events: none;
|
|
2981
|
-
}
|
|
2982
|
-
|
|
2983
|
-
.docx-editor .layout-revision-pmark-glyph.layout-revision-ins {
|
|
2984
|
-
color: var(--doc-revision-insertion);
|
|
2985
|
-
}
|
|
2986
|
-
|
|
2987
|
-
.docx-editor .layout-revision-pmark-glyph.layout-revision-del {
|
|
2988
|
-
color: var(--doc-revision-deletion);
|
|
2989
|
-
text-decoration: line-through;
|
|
2990
|
-
}
|
|
2991
|
-
|
|
2992
2608
|
.docx-editor-revision-cell.docx-editor-revision-ins {
|
|
2993
2609
|
box-shadow: inset 0 3px 0 var(--doc-revision-insertion);
|
|
2994
2610
|
background-color: var(--doc-revision-insertion-tint);
|
|
@@ -3006,29 +2622,6 @@ a.docx-hyperlink:focus-visible {
|
|
|
3006
2622
|
background-color: color-mix(in srgb, var(--doc-text-muted) 8%, transparent);
|
|
3007
2623
|
}
|
|
3008
2624
|
|
|
3009
|
-
.docx-editor .layout-run-image.docx-insertion,
|
|
3010
|
-
.docx-editor .layout-run-image-wrapper.docx-insertion > .layout-run-image,
|
|
3011
|
-
.docx-editor .layout-block-image.docx-insertion,
|
|
3012
|
-
.docx-editor .layout-image.docx-insertion,
|
|
3013
|
-
.docx-editor .layout-page-floating-image.docx-insertion > img,
|
|
3014
|
-
.docx-editor .layout-cell-floating-image.docx-insertion > img,
|
|
3015
|
-
.docx-editor .layout-header-footer-floating-image.docx-insertion > img {
|
|
3016
|
-
outline: 2px solid var(--doc-revision-insertion);
|
|
3017
|
-
outline-offset: 1px;
|
|
3018
|
-
}
|
|
3019
|
-
|
|
3020
|
-
.docx-editor .layout-run-image.docx-deletion,
|
|
3021
|
-
.docx-editor .layout-run-image-wrapper.docx-deletion > .layout-run-image,
|
|
3022
|
-
.docx-editor .layout-block-image.docx-deletion,
|
|
3023
|
-
.docx-editor .layout-image.docx-deletion,
|
|
3024
|
-
.docx-editor .layout-page-floating-image.docx-deletion > img,
|
|
3025
|
-
.docx-editor .layout-cell-floating-image.docx-deletion > img,
|
|
3026
|
-
.docx-editor .layout-header-footer-floating-image.docx-deletion > img {
|
|
3027
|
-
outline: 2px solid var(--doc-revision-deletion);
|
|
3028
|
-
outline-offset: 1px;
|
|
3029
|
-
opacity: 0.6;
|
|
3030
|
-
}
|
|
3031
|
-
|
|
3032
2625
|
/* ========================================================================
|
|
3033
2626
|
* ONE-SURFACE PAINT LAYER — restored after the legacy stylesheet swap dropped
|
|
3034
2627
|
* it. NOT legacy chrome: these belong to the greenfield painter, which owns the
|
|
@@ -4067,6 +3660,14 @@ a.docx-hyperlink:focus-visible {
|
|
|
4067
3660
|
outline: none;
|
|
4068
3661
|
}
|
|
4069
3662
|
|
|
3663
|
+
/* The text column shows an I-beam over its whole box, as Word does — over the gaps
|
|
3664
|
+
* between paragraphs and below the last one, not only over glyphs (where selectable
|
|
3665
|
+
* text already produces one). Anchored drawings live in sibling layers; inline
|
|
3666
|
+
* drawings opt back to the arrow on `.docx-drawing`. */
|
|
3667
|
+
.docx-paginated-surface .docx-page-content {
|
|
3668
|
+
cursor: text;
|
|
3669
|
+
}
|
|
3670
|
+
|
|
4070
3671
|
/* Inactive furniture: Word-like affordance that the band is enterable. Active band and
|
|
4071
3672
|
* open-scope dimming live under `.docx-pages--hf-editing` so screen chrome never mutates
|
|
4072
3673
|
* painted ink for print (print media resets opacity). */
|