@docx-editor.dev/core 2.9.1 → 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-QyVZdTUA.d.ts → custom-node-writes-BvpWCnW8.d.ts} +52 -5
- package/dist/{custom-node-writes-7ERv0f_X.d.cts → custom-node-writes-Db8H6Z3n.d.cts} +52 -5
- package/dist/{editor-PUlv5Pp7.d.ts → editor-C0my6Uta.d.ts} +35 -14
- package/dist/{editor-CojjwMmF.d.cts → editor-CwzY2Hcg.d.cts} +35 -14
- package/dist/editor.cjs +1 -1
- package/dist/editor.css +66 -461
- package/dist/editor.d.cts +20 -20
- package/dist/editor.d.ts +20 -20
- package/dist/editor.js +1 -1
- package/dist/{index-oN-v8DQ5.d.ts → index-kID8Ymkp.d.ts} +126 -20
- package/dist/{index-DGPSeLI0.d.cts → index-nLFwo_17.d.cts} +126 -20
- 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 +357 -310
- package/dist/layout.d.ts +357 -310
- 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-DpsqTHio.d.cts → review-items-CwixiHNe.d.cts} +1 -1
- package/dist/{review-items-D5SPFtsO.d.ts → review-items-Dw-8a6Ie.d.ts} +1 -1
- package/dist/{review-reads-CP106AHp.d.cts → review-reads-BqkiJTeR.d.cts} +1 -1
- package/dist/{review-reads-B2Ji3fVU.d.ts → review-reads-C0u-IKEA.d.ts} +1 -1
- package/dist/{semantic-cell-selection-DJPjBWzf.d.cts → semantic-cell-selection-DT9x9WLf.d.cts} +2 -2
- package/dist/{semantic-cell-selection-BWhVAk5B.d.ts → semantic-cell-selection-Utrf0lz7.d.ts} +2 -2
- package/dist/{semantic-interaction-BjOcDB06.d.cts → semantic-interaction-B6hFRQLy.d.ts} +21 -2
- package/dist/{semantic-interaction-Cca1-X_a.d.ts → semantic-interaction-Z0xKQcB4.d.cts} +21 -2
- package/dist/{semantic-paint-CufpIQFw.d.ts → semantic-paint-CQEOC0Od.d.cts} +2 -2
- package/dist/{semantic-paint-Ur7pAINj.d.cts → semantic-paint-quke354p.d.ts} +2 -2
- package/dist/{semantic-records-C3Z76KeN.d.cts → semantic-records-CMakzQ1X.d.cts} +36 -4
- package/dist/{semantic-records-Cc1MJrhM.d.ts → semantic-records-Do3-i5oB.d.ts} +36 -4
- package/dist/{shaped-measurer-CwlTPDJO.d.ts → shaped-measurer-BxwTUluj.d.ts} +1 -1
- package/dist/{shaped-measurer-CYSK20E2.d.cts → shaped-measurer-DzRwWrL5.d.cts} +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.d.cts +250 -134
- package/dist/store.d.ts +250 -134
- 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-XMVsJSpe.d.ts → tree-op-types-BuOfCrkp.d.ts} +280 -32
- package/dist/{tree-op-types-B0-sCtw-.d.cts → tree-op-types-DSJYmf5b.d.cts} +280 -32
- package/dist/{tree-session-D945D43B.d.cts → tree-session-contract-ByWx8eew.d.cts} +44 -104
- package/dist/{tree-session-DBJgmdmc.d.ts → tree-session-contract-C1dfE9hy.d.ts} +44 -104
- package/dist/{tree-store-ClA-qng4.d.ts → tree-store-ASBtz7UB.d.ts} +1 -1
- package/dist/{tree-store-C6vc8E_2.d.cts → tree-store-CWOUMGN8.d.cts} +1 -1
- package/package.json +2 -2
- package/dist/chunk-5VC5HGJA.js +0 -2
- package/dist/chunk-A2JIBG75.js +0 -1
- package/dist/chunk-DKMKH77K.cjs +0 -5
- package/dist/chunk-FWUI7EXG.cjs +0 -15
- package/dist/chunk-GZWMLQJO.js +0 -18
- package/dist/chunk-IEXDXWTA.cjs +0 -1
- package/dist/chunk-IMMAG4QP.cjs +0 -10
- package/dist/chunk-JTSNJQFO.js +0 -15
- package/dist/chunk-KBCC66CI.js +0 -5
- package/dist/chunk-LJ6BY6IU.cjs +0 -18
- package/dist/chunk-QDBAXFIK.js +0 -2
- package/dist/chunk-RD266XSK.cjs +0 -2
- package/dist/chunk-VUJGPCPU.js +0 -10
- package/dist/chunk-XMHWBL3K.cjs +0 -2
- package/dist/image-resources-DQOiwOuE.d.cts +0 -203
- package/dist/image-resources-eZqD_-vC.d.ts +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
|
|
@@ -3141,10 +2734,11 @@ a.docx-hyperlink:focus-visible {
|
|
|
3141
2734
|
|
|
3142
2735
|
.docx-editor-one-surface__caret {
|
|
3143
2736
|
position: absolute;
|
|
3144
|
-
/*
|
|
2737
|
+
/* 1.5px, not 1: a hairline caret disappears against body text at 100% zoom on a
|
|
3145
2738
|
* high-DPI screen, and reads as a rendering artefact rather than a cursor.
|
|
3146
|
-
*
|
|
3147
|
-
|
|
2739
|
+
* Not 2 either: with the contrast ring below, a 2px core read as a 4px slab that
|
|
2740
|
+
* overlapped the neighbouring glyphs — Word's insertion bar is thinner. */
|
|
2741
|
+
width: 1.5px;
|
|
3148
2742
|
background: var(--doc-caret);
|
|
3149
2743
|
/* A CONTRASTING 1px ring, because a caret position is not always beside text: the offset
|
|
3150
2744
|
* before an inline image puts the insertion point exactly on the picture's leading edge,
|
|
@@ -3153,7 +2747,10 @@ a.docx-hyperlink:focus-visible {
|
|
|
3153
2747
|
*
|
|
3154
2748
|
* The ring and the core are a complementary pair, so whichever one the backdrop hides,
|
|
3155
2749
|
* the other reads. On an ordinary white page the ring is white on white and the caret
|
|
3156
|
-
* looks exactly as it did before.
|
|
2750
|
+
* looks exactly as it did before. The ring is TRANSLUCENT: at full strength it drew a
|
|
2751
|
+
* hard outline on mid-tone backdrops (highlights, table shading) where both colours are
|
|
2752
|
+
* visible at once, and the caret read as a boxed slab instead of a bar. Half strength
|
|
2753
|
+
* still lifts the bar off a dark photo without outlining it on a pink highlight.
|
|
3157
2754
|
*
|
|
3158
2755
|
* NOT `mix-blend-mode: difference`, which is the textbook XOR caret and is wrong here:
|
|
3159
2756
|
* blending resolves against the nearest ISOLATED GROUP, and this stylesheet puts two of
|
|
@@ -3162,7 +2759,7 @@ a.docx-hyperlink:focus-visible {
|
|
|
3162
2759
|
* editing. Inside either, the backdrop is transparent rather than the sheet's paper, so
|
|
3163
2760
|
* the caret would blend to white and the dark page's inversion would then paint it black
|
|
3164
2761
|
* on black: the very bug this ring exists to fix. The pair needs no backdrop at all. */
|
|
3165
|
-
box-shadow: 0 0 0 1px var(--doc-caret-contrast);
|
|
2762
|
+
box-shadow: 0 0 0 1px color-mix(in srgb, var(--doc-caret-contrast) 50%, transparent);
|
|
3166
2763
|
animation: docx-editor-caret-blink 1.06s steps(1) infinite;
|
|
3167
2764
|
}
|
|
3168
2765
|
|
|
@@ -4063,6 +3660,14 @@ a.docx-hyperlink:focus-visible {
|
|
|
4063
3660
|
outline: none;
|
|
4064
3661
|
}
|
|
4065
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
|
+
|
|
4066
3671
|
/* Inactive furniture: Word-like affordance that the band is enterable. Active band and
|
|
4067
3672
|
* open-scope dimming live under `.docx-pages--hf-editing` so screen chrome never mutates
|
|
4068
3673
|
* painted ink for print (print media resets opacity). */
|