@a3s-lab/office 0.28.0 → 0.30.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.
Files changed (69) hide show
  1. package/README.md +126 -3
  2. package/dist/0~1403.js +1 -1
  3. package/dist/0~4980.js +1 -1
  4. package/dist/0~7048.js +1 -1
  5. package/dist/{0~7043.js → 0~7231.js} +400 -242
  6. package/dist/{0~5093.js → 0~7360.js} +293 -53
  7. package/dist/0~7614.js +1 -1
  8. package/dist/0~document-editor.js +1535 -102
  9. package/dist/0~presentation-editor.js +1 -1
  10. package/dist/0~spreadsheet-editor.js +184 -36
  11. package/dist/0~work-docx-export.js +437 -11
  12. package/dist/0~work-docx-import.js +32 -7
  13. package/dist/0~work-office-diagnostics.js +170 -7
  14. package/dist/0~work-pptx-export.js +1 -1
  15. package/dist/0~work-pptx-import.js +1 -1
  16. package/dist/0~work-presentation-charts.js +1 -1
  17. package/dist/1544.js +14 -2
  18. package/dist/4104.js +31 -8
  19. package/dist/4121.js +3448 -0
  20. package/dist/6282.js +558 -1688
  21. package/dist/8715.js +1 -1
  22. package/dist/core.js +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/internal/features/work/editors/document-command-catalog.d.ts +27 -0
  25. package/dist/internal/features/work/editors/document-font-dialog-model.d.ts +8 -2
  26. package/dist/internal/features/work/editors/document-font-dialog-run-border-model.d.ts +24 -0
  27. package/dist/internal/features/work/editors/document-font-dialog-run-border-section.d.ts +10 -0
  28. package/dist/internal/features/work/editors/document-font-dialog-run-shading-model.d.ts +23 -0
  29. package/dist/internal/features/work/editors/document-font-dialog-run-shading-section.d.ts +8 -0
  30. package/dist/internal/features/work/editors/document-page-chrome-ribbon.d.ts +2 -1
  31. package/dist/internal/features/work/editors/document-proofing-dialog-model.d.ts +22 -0
  32. package/dist/internal/features/work/editors/document-proofing-dialog.d.ts +7 -0
  33. package/dist/internal/features/work/editors/document-table-of-contents-dialog.d.ts +10 -0
  34. package/dist/internal/features/work/editors/document-toolbar.d.ts +3 -1
  35. package/dist/internal/features/work/editors/spreadsheet-data-validation.d.ts +7 -1
  36. package/dist/internal/features/work/editors/use-document-insert-commands.d.ts +2 -0
  37. package/dist/internal/features/work/work-document-character-formatting.d.ts +12 -0
  38. package/dist/internal/features/work/work-document-format-changes.d.ts +7 -0
  39. package/dist/internal/features/work/work-document-highlight.d.ts +9 -0
  40. package/dist/internal/features/work/work-document-outline.d.ts +1 -0
  41. package/dist/internal/features/work/work-document-paragraph-shading.d.ts +6 -0
  42. package/dist/internal/features/work/work-document-proofing.d.ts +19 -0
  43. package/dist/internal/features/work/work-document-run-border.d.ts +11 -0
  44. package/dist/internal/features/work/work-document-run-shading.d.ts +12 -0
  45. package/dist/internal/features/work/work-document-table-of-contents-node.d.ts +18 -0
  46. package/dist/internal/features/work/work-document-table-of-contents.d.ts +51 -0
  47. package/dist/internal/features/work/work-document-word-line-metrics.d.ts +4 -0
  48. package/dist/internal/features/work/work-docx-field-instructions.d.ts +1 -1
  49. package/dist/internal/features/work/work-docx-import.d.ts +3 -1
  50. package/dist/internal/features/work/work-docx-proofing-diagnostics.d.ts +3 -0
  51. package/dist/internal/features/work/work-docx-proofing.d.ts +38 -0
  52. package/dist/internal/features/work/work-docx-run-border-diagnostics.d.ts +3 -0
  53. package/dist/internal/features/work/work-docx-run-border-export.d.ts +17 -0
  54. package/dist/internal/features/work/work-docx-run-border.d.ts +20 -0
  55. package/dist/internal/features/work/work-docx-run-formatting-import.d.ts +9 -0
  56. package/dist/internal/features/work/work-docx-run-shading-diagnostics.d.ts +3 -0
  57. package/dist/internal/features/work/work-docx-run-shading-export.d.ts +17 -0
  58. package/dist/internal/features/work/work-docx-run-shading.d.ts +20 -0
  59. package/dist/internal/features/work/work-docx-table-of-contents-export.d.ts +11 -0
  60. package/dist/internal/features/work/work-docx-table-of-contents-import.d.ts +15 -0
  61. package/dist/internal/features/work/work-spreadsheet-data-validation.d.ts +7 -0
  62. package/dist/internal/features/work/work-types.d.ts +9 -0
  63. package/dist/internal/kernel/office-kernel-protocol.d.ts +1 -0
  64. package/dist/office-kernel.wasm +0 -0
  65. package/dist/styles.css +339 -1
  66. package/docs/latest/en/browser-editor-architecture.md +72 -1
  67. package/package.json +15 -2
  68. package/dist/5184.js +0 -662
  69. package/dist/9424.js +0 -16
package/README.md CHANGED
@@ -54,6 +54,23 @@ workflows, and a separate Rust automation plane.
54
54
  - **Automate deterministically** through the native CLI, standard MCP server,
55
55
  or packaged Office Skill.
56
56
 
57
+ ## Latest on `main`
58
+
59
+ The `0.30.0` release and current Pages deployment expose these capabilities as
60
+ normal user-facing Playground templates, with matching implementation detail
61
+ in the versioned documentation:
62
+
63
+ | Editor | Latest capability | Public entry |
64
+ | --- | --- | --- |
65
+ | Writer | Insert, customize, navigate, and explicitly refresh a typed Table of Contents with heading and native outline levels 1–9, hyperlinks, page numbers, alignment, four leader styles, and native DOCX `TOC` round trips | Playground **Latest capabilities → 可更新目录** · [Document reference](docs/latest/en/components/document.mdx#native-table-of-contents) |
66
+ | Writer | Native character shading with exact `w:shd` patterns, foreground/background color identity, explicit resets, authoring, and DOCX reopen | Playground **Latest capabilities → 字符底纹** · [Document reference](docs/latest/en/components/document.mdx#native-character-shading) |
67
+ | Writer | Independent Latin, East Asian, and bidi proofing languages plus explicit `w:noProof` inclusion/exclusion | Playground **Latest capabilities → 校对语言** · [Document reference](docs/latest/en/components/document.mdx#native-proofing-languages) |
68
+ | Spreadsheet | Complete common Data Validation input, blank/dropdown, and Stop/Warning/Information error settings with native XLSX round trips | Playground **Latest capabilities → 数据验证** · [Spreadsheet reference](docs/latest/en/components/spreadsheet.mdx#data-validation) |
69
+
70
+ The same four entries remain available under **新建**. The highlighted strip
71
+ exists so a capability is discoverable from the first Playground viewport
72
+ instead of only through a deep documentation section or an `?e2e=` fixture.
73
+
57
74
  ## See it working
58
75
 
59
76
  The images below are committed visual-regression baselines from the real
@@ -110,11 +127,11 @@ baseline rather than one specific release.
110
127
 
111
128
  | Capability | A3S Office today | Traditional Office baseline |
112
129
  | --- | --- | --- |
113
- | Text, paragraphs, lists, and styles | **Supported** — structured editing, independent native ASCII, high ANSI, East Asian, and complex-script font slots with direct/theme identity, native all-caps and small-caps effects, exact DOCX character scale plus signed spacing, half-point kerning thresholds, all five native East Asian emphasis marks, native hidden text with explicit visible resets, four independent native outline/shadow/emboss/imprint effects with conflict-safe authoring, and baseline position in one advanced font dialog, all 18 native DOCX underline values with direct or theme color identity, independent native single/double strikethrough with explicit resets, formatting revisions, clipboard, format painter, and undo/redo | Mature authoring with a broader long-tail style and typography catalog |
130
+ | Text, paragraphs, lists, and styles | **Supported** — structured editing, independent native ASCII, high ANSI, East Asian, and complex-script font slots with direct/theme identity, independent Latin/East Asian/bidi proofing-language slots and explicit proofing inclusion/exclusion, native all-caps and small-caps effects, exact DOCX character scale plus signed spacing, half-point kerning thresholds, all five native East Asian emphasis marks, native hidden text with explicit visible resets, native character borders with 25 visible line styles plus `nil` and `none`, direct or theme color, width, spacing, shadow, and frame semantics, four independent native outline/shadow/emboss/imprint effects with conflict-safe authoring, and baseline position in one advanced font dialog, all 18 native DOCX underline values with direct or theme color identity, independent native single/double strikethrough with explicit resets, formatting revisions, clipboard, format painter, and undo/redo | Mature authoring with a broader long-tail style and typography catalog |
114
131
  | Page layout and rendering | **Partial** — sections, margins, page size, columns, headers/footers, fields, and live pagination | Desktop-grade pagination, print layout, and vector output |
115
132
  | Tables, pictures, and equations | **Partial** — rich table geometry, floating pictures, crop/wrap, and structured OMML | Broader drawings, text boxes, charts, WordArt, and SmartArt |
116
133
  | Comments, revisions, and collaboration | **Partial** — comments, suggestions, text/format revisions, decisions, Yjs presence, and host relay contracts | Full revision families plus integrated sharing and review services |
117
- | References and document generation | **Partial** — bookmarks, links, captions, cross-references, citations, notes, and common fields | TOC/index authoring, mail merge, compare/combine, and broader fields |
134
+ | References and document generation | **Partial** — typed Table of Contents authoring and refresh, bookmarks, links, captions, cross-references, citations, notes, and common fields | Index authoring, mail merge, compare/combine, and broader fields |
118
135
  | Ribbon and shortcuts | **Supported** — responsive Office-style ribbon and editor-scoped daily-writing shortcuts | Complete desktop shortcut and contextual-tool surface |
119
136
  | Very large documents | **Supported with boundaries** — bounded 100,000-block plain-document windows and measured edit/navigation budgets | Native-engine virtualization with device-dependent limits |
120
137
  | DOCX and PDF fidelity | **Partial** — source-aware DOCX preservation and live-layout raster PDF export | Broader legacy/OOXML compatibility and searchable vector PDF output |
@@ -127,7 +144,7 @@ baseline rather than one specific release.
127
144
  | Formatting and style rendering | **Partial** — native fonts, colors, borders, alignment, number formats, cell styles, all 17 native non-solid OOXML pattern fills, native linear/path XLSX gradients, and one Format Cells surface that authors none, solid, pattern, or gradient fills with exact geometry and 2–256 ordered stops; static date/time entry, contrast-safe font preview, native XLSX rich-text runs, selected-text font formatting, direct formula-bar/F2 insertion or deletion, and bounded authenticated formatted-HTML paste | Disjoint multi-edit rich-text authoring, broader themes, locale formats, and advanced style effects |
128
145
  | Ribbon and shortcuts | **Partial** — common Office-style Home/Data/View commands, grid-scoped shortcuts, and focused Font-dialog aliases | Larger command catalog and platform-specific accelerators |
129
146
  | Formulas and recalculation | **Partial** — dependency-aware calculation and common formula paths | Wider functions, arrays, volatile semantics, and calculation parity |
130
- | Tables, pivots, charts, and rules | **Partial** — native tables, pivots, charts, conditional formatting, and validation | Calculated columns, slicers, pivot charts, advanced rules, and analysis |
147
+ | Tables, pivots, charts, and rules | **Partial** — native tables, pivots, charts, conditional formatting, and common validation rules with complete input/error-setting authoring | Calculated columns, slicers, pivot charts, custom/dependent validation rules, advanced analysis, and broader browser alert flows |
131
148
  | Large worksheets | **Supported with boundaries** — maximum-dimension sparse import/editing and viewport-bounded Canvas painting | Highly optimized native grid with hardware-dependent limits |
132
149
  | Files and printing | **Partial** — XLS/XLSX/ODS/CSV import, XLSX export, and PDF output | Broader round trips, external data, print fidelity, and legacy conversion |
133
150
  | External data, macros, and specialist analysis | **Gap** — active macros are never executed; bounded models are still needed for data connections and solver-like tools | Established data, macro/add-in, scenario, and optimization ecosystems |
@@ -216,6 +233,19 @@ is requested. The complete gap inventory and exit evidence live in the
216
233
  undoable action. Safe inline DOCX fields round-trip natively, while nested,
217
234
  incomplete, cross-paragraph, deleted, or instructionless structures stay
218
235
  text and produce an explicit compatibility warning.
236
+ Writer Table of Contents blocks reuse the same heading outline and live
237
+ Worker/WASM page resolver instead of maintaining parallel heading or page
238
+ state. Insert, customize, and explicit refresh each commit one TipTap
239
+ transaction and one Undo record. Semantic headings and native outline-level
240
+ paragraphs cover levels 1–9; included items without a native paragraph
241
+ identity receive one in the same transaction so hyperlinks survive
242
+ structural edits. Page-number visibility and alignment,
243
+ dot/dash/underline/no leaders, and at most 512 cached entries remain typed in
244
+ the DOM. DOCX export writes a native `w:sdt`/`TOC` content control and live
245
+ field with cached entries; import accepts the common `\\o`, `\\h`, `\\z`,
246
+ `\\u`, full-range `\\n`, and space-separator `\\p` subset while diagnosing
247
+ lossy custom style mappings. The Playground's **可更新目录** template exposes
248
+ the complete flow.
219
249
  - **Framework choice** — React components, Vue 3 adapters, Custom Elements,
220
250
  and a framework-neutral Core API over the same engine.
221
251
  - **Responsive computation** — Lazy editor chunks, cancellable Workers,
@@ -577,6 +607,34 @@ Protection ranges, passwordless editable ranges, and conditional formatting
577
607
  also remain compact and round-trip through native XLSX records without
578
608
  allocating every covered cell.
579
609
 
610
+ ### Complete Spreadsheet data-validation settings
611
+
612
+ Data → Data Validation authors list, whole-number, decimal, date, and text-length
613
+ rules across one or more selected ranges. The same dialog now owns the complete
614
+ common input and error metadata: `allowBlank`, `showDropdownArrow`,
615
+ `hintTitle`, `hintValue`, `prohibitInput`, `errorStyle`, `errorTitle`, and
616
+ `errorMessage`. Titles are bounded to 32 Unicode code points, the input message
617
+ to 255, and the error message to 225. Disabling a message keeps its text so a
618
+ later re-enable does not discard the user's draft.
619
+
620
+ The mounted grid reads compact rules without expanding blank cells, honors
621
+ `allowBlank`, can hide the in-cell list arrow, shows the authored input title
622
+ and message, and uses the authored error title and message when rejecting an
623
+ invalid value. The current Fortune boundary still has one blocking browser
624
+ alert path whenever error alerts are enabled. `stop`, `warning`, and
625
+ `information` therefore round-trip as exact native file semantics, but the
626
+ browser does not yet reproduce the separate warning/information confirmation
627
+ branches of a desktop suite. Custom formulas and dependent lists also remain
628
+ explicit gaps.
629
+
630
+ XLSX import and export preserve `allowBlank`, `showErrorMessage`,
631
+ `showInputMessage`, `errorStyle`, `errorTitle`, `error`, `promptTitle`, and
632
+ `prompt`. The public `showDropdownArrow` name describes what users see, while
633
+ SpreadsheetML stores the inverse in `showDropDown`. On the public Playground
634
+ home page, choose **新建 → 数据验证** to inspect list, date, and priority
635
+ examples with all three alert styles. This is a normal user-facing template,
636
+ not an `?e2e=` fixture or a documentation-only example.
637
+
580
638
  Native XLSX pattern fills retain all 17 non-solid OOXML pattern identities plus
581
639
  their foreground and background RGB, theme, indexed, automatic, and tint color
582
640
  origins. Canvas draws them only for visible cells, behind text and below table
@@ -732,6 +790,69 @@ model. CSS provides bounded browser and PDF paint projections while eligible
732
790
  paragraphs remain on the Worker/WASM layout path. The Playground's **文字效果**
733
791
  template demonstrates all four effects and the conflict-safe transition.
734
792
 
793
+ Native Writer character borders retain all 25 visible WordprocessingML
794
+ `w:bdr` line styles plus explicit `nil` and `none` resets. The typed model keeps
795
+ direct or theme colors with tint and shade, widths from 2 through 96
796
+ eighth-points, text spacing from 0 through 31 points, and explicit shadow and
797
+ frame flags. The Home Font group exposes a direct Character Border toggle, and
798
+ the shared `Cmd/Ctrl+D` Advanced Font Settings dialog distinguishes mixed,
799
+ Follow style, explicit no-border, and editable border states. Line style,
800
+ color, width, spacing, shadow, and frame changes apply through one transaction
801
+ and one Undo record; Format Painter uses the same mark. Traditional Office
802
+ defines no dedicated shortcut for this command, so A3S Office does not invent
803
+ one.
804
+
805
+ Document defaults, paragraph and character styles, body text, headers,
806
+ footers, footnotes, endnotes, formatting revisions, strict or transitional
807
+ DOCX import, exact export, and reopen share the model. Malformed, duplicated,
808
+ misplaced, namespace-spoofed, child- or text-bearing, extra-attribute,
809
+ art-style, out-of-range, and unresolved-theme input fails closed. The DOM uses
810
+ `data-office-run-border`; CSS renders every edge with bounded line-style,
811
+ padding, shadow, and cloned-fragment projections. Visible character borders use
812
+ browser-authoritative line measurement because border and padding alter inline
813
+ geometry, while explicit `nil` and `none` remain eligible for Worker/WASM
814
+ layout. Browser and PDF paint are bounded visual approximations; the OOXML
815
+ semantics remain exact. The Playground's **字符边框** template exercises the
816
+ complete authoring and one-step Undo path.
817
+
818
+ Native Writer character shading retains one exact `w:shd` value rather than a
819
+ flattened CSS fill. The typed model preserves every WordprocessingML pattern,
820
+ direct or automatic foreground/background colors, independent theme channels
821
+ with tint and shade, and explicit `nil`. Document defaults, paragraph and
822
+ character styles, conditional table styles, body, page chrome, notes,
823
+ formatting revisions, strict/transitional import, exact export, and reopen use
824
+ the same resolver. Invalid or spoofed leaves fail closed and are diagnosed.
825
+
826
+ The shared `Cmd/Ctrl+D` Advanced Font Settings dialog distinguishes mixed,
827
+ Follow style, explicit no-shading, and editable pattern/color states; changes
828
+ commit with Format Painter and one-step Undo semantics. The DOM stores bounded
829
+ JSON in `data-office-run-shading`, while CSS projects patterns without changing
830
+ line geometry, so eligible content stays on the Worker/WASM path. Native
831
+ `w:highlight` remains independent and takes display precedence without
832
+ clobbering shading. The Playground's **字符底纹** template demonstrates the
833
+ complete flow.
834
+
835
+ Native Writer proofing languages retain the three independent WordprocessingML
836
+ `w:lang` slots: Latin `w:val`, East Asian `w:eastAsia`, and bidi `w:bidi`.
837
+ Native `w:noProof` remains an independent three-state property: inherited,
838
+ explicitly checked with `w:val="false"`, or excluded from proofing. The Review
839
+ ribbon's **设置校对语言** dialog accepts bounded BCP 47 language tags, keeps
840
+ untouched mixed slots unchanged, exposes Follow style for each slot, and applies
841
+ the touched language and proofing-state fields through one transaction and one
842
+ Undo record. The same contract is available while editing headers and footers.
843
+
844
+ Document defaults, paragraph and character styles, body text, headers,
845
+ footers, footnotes, endnotes, formatting revisions, strict/transitional DOCX
846
+ import, exact export, and reopen share the closed model. Malformed, duplicated,
847
+ misplaced, namespace-spoofed, nested, text-bearing, extra-attribute, invalid-tag,
848
+ or invalid on/off input fails closed and appears in compatibility diagnostics.
849
+ The DOM stores canonical JSON in `data-office-proofing-languages`, stores an
850
+ explicit Boolean in `data-office-no-proof`, and projects the effective `lang`
851
+ and `spellcheck` attributes without claiming a bundled dictionary or grammar
852
+ service. Valid effective languages also reach the Worker/WASM text-layout run
853
+ and RustyBuzz shaping buffer. The Playground's **校对语言** template demonstrates
854
+ Latin, East Asian, bidi, explicitly checked, and excluded states.
855
+
735
856
  Supported native OMML equations now survive as bounded structured objects in
736
857
  the document body, headers, footers, footnotes, and endnotes. Inline and display
737
858
  math, Unicode runs with literal/normal-text semantics, math script/style,
@@ -1432,6 +1553,8 @@ without hard-coded return URLs.
1432
1553
 
1433
1554
  - [Live Playground](https://a3s-lab.github.io/Office/)
1434
1555
  - [Documentation center](https://a3s-lab.github.io/Office/docs/)
1556
+ - [A3S Office 0.30.0 documentation](https://a3s-lab.github.io/Office/docs/0.30.0/)
1557
+ - [A3S Office 0.29.0 documentation](https://a3s-lab.github.io/Office/docs/0.29.0/)
1435
1558
  - [A3S Office 0.28.0 documentation](https://a3s-lab.github.io/Office/docs/0.28.0/)
1436
1559
  - [A3S Office 0.27.0 documentation](https://a3s-lab.github.io/Office/docs/0.27.0/)
1437
1560
  - [A3S Office 0.26.0 documentation](https://a3s-lab.github.io/Office/docs/0.26.0/)
package/dist/0~1403.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createOfficeId as createWorkId } from "./5184.js";
1
+ import { createOfficeId as createWorkId } from "./4121.js";
2
2
  function expandPresentationGroupSelection(elements, selectedIds) {
3
3
  const byId = new Map();
4
4
  const membersByGroupId = new Map();
package/dist/0~4980.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import jszip from "jszip";
2
2
  import { documentNoteKey } from "./6282.js";
3
- import { directChild, xmlNamespacePrefix, attribute, parseXml } from "./5184.js";
3
+ import { directChild, xmlNamespacePrefix, attribute, parseXml } from "./4121.js";
4
4
  import { DEFAULT_DOCUMENT_PAGE_COLOR, normalizeDocumentPageColor } from "./0~work-document-page-color.js";
5
5
  const MAX_NATIVE_ID = 2147483647;
6
6
  const MIN_NATIVE_COMMENT_ID = -2147483648;
package/dist/0~7048.js CHANGED
@@ -3,7 +3,7 @@ import { useCallback, useEffect, useId, useRef, useState } from "react";
3
3
  import { Check, ChevronDown, ChevronUp, Minus } from "lucide-react";
4
4
  import { Dialog } from "./0~4595.js";
5
5
  import { button_Button, office_text_field_OfficeTextField, office_text_field_OfficeTextArea } from "./0~6090.js";
6
- import { OFFICE_KERNEL_SPREADSHEET_MAX_ROWS as office_kernel_spreadsheet_protocol_OFFICE_KERNEL_SPREADSHEET_MAX_ROWS, isOfficeKernelSpreadsheetError } from "./5184.js";
6
+ import { OFFICE_KERNEL_SPREADSHEET_MAX_ROWS as office_kernel_spreadsheet_protocol_OFFICE_KERNEL_SPREADSHEET_MAX_ROWS, isOfficeKernelSpreadsheetError } from "./4121.js";
7
7
  function CollectionState({ children, icon, actions, tone = 'neutral', role, className = '' }) {
8
8
  return /*#__PURE__*/ jsxs("div", {
9
9
  className: `ds-collection-state ${tone}${className ? ` ${className}` : ''}`,