@silurus/ooxml 0.16.1 → 0.18.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/README.md CHANGED
@@ -76,29 +76,38 @@ flowchart TB
76
76
  end
77
77
 
78
78
  subgraph browser["🌐 Runtime (Browser)"]
79
+ subgraph core_pkg["@silurus/ooxml-core (shared primitives)"]
80
+ CORE["renderChart · resolveFill · applyStroke\nbuildCustomPath · autoResize · shared types"]
81
+ end
79
82
  subgraph docx_pkg["@silurus/ooxml · docx"]
80
83
  DV["DocxViewer"] --> DD["DocxDocument"]
81
- DD --> DR["renderer.ts\n〈Canvas 2D〉"]
84
+ DD --> DW["worker.ts\n〈Web Worker — parse only〉"]
85
+ DD --> DR["renderer.ts\n〈Canvas 2D — main thread〉"]
82
86
  end
83
87
  subgraph xlsx_pkg["@silurus/ooxml · xlsx"]
84
- XV["XlsxViewer"] --> XR["renderer.ts\n〈Canvas 2D〉"]
88
+ XV["XlsxViewer"] --> XB["XlsxWorkbook"]
89
+ XB --> XW["worker.ts\n〈Web Worker — parse only〉"]
90
+ XB --> XR["renderer.ts\n〈Canvas 2D — main thread〉"]
85
91
  end
86
92
  subgraph pptx_pkg["@silurus/ooxml · pptx"]
87
93
  PV["PptxViewer"] --> PP["PptxPresentation"]
88
94
  PP --> PW["worker.ts\n〈Web Worker — parse only〉"]
89
95
  PP --> PR["renderer.ts\n〈Canvas 2D — main thread〉"]
90
96
  end
97
+ DR -. uses .-> CORE
98
+ XR -. uses .-> CORE
99
+ PR -. uses .-> CORE
91
100
  end
92
101
 
93
- docx_wasm --> DD
94
- xlsx_wasm --> XV
102
+ docx_wasm --> DW
103
+ xlsx_wasm --> XW
95
104
  pptx_wasm --> PW
96
105
  DR --> canvas["<canvas>"]
97
106
  XR --> canvas
98
107
  PR --> canvas
99
108
  ```
100
109
 
101
- The pptx worker parses the `.pptx` archive via WASM and returns a JSON model to the main thread. Rendering runs on the main thread so the canvas shares the document's `FontFaceSet` — an `OffscreenCanvas` in a worker has its own font registry and would silently fall back to a system font, producing subtly different text measurements (and wrap positions) from the installed theme webfonts.
110
+ All three formats follow the same shape: the worker parses the `.docx` / `.xlsx` / `.pptx` archive via WASM and posts a JSON model back to the main thread, where the renderer draws to the canvas. Rendering stays on the main thread so the canvas shares the document's `FontFaceSet` — an `OffscreenCanvas` in a worker has its own font registry and would silently fall back to a system font, producing subtly different text measurements (and wrap positions) from the installed theme webfonts. `@silurus/ooxml-core` holds the cross-format primitives that the three renderers all depend on: a unified chart renderer (bar / line / area / radar / waterfall), shape helpers (`resolveFill`, `applyStroke`, `buildCustomPath`, `hexToRgba`), the `autoResize` viewer utility, and the shared type definitions.
102
111
 
103
112
  ### Key files
104
113
 
@@ -107,11 +116,12 @@ The pptx worker parses the `.pptx` archive via WASM and returns a JSON model to
107
116
  | `packages/docx/parser/src/lib.rs` | Rust WASM parser — DOCX ZIP → `Document` JSON |
108
117
  | `packages/xlsx/parser/src/lib.rs` | Rust WASM parser — XLSX ZIP → `Workbook` JSON |
109
118
  | `packages/pptx/parser/src/lib.rs` | Rust WASM parser — PPTX ZIP → `Presentation` JSON |
110
- | `packages/docx/src/renderer.ts` | Canvas 2D rendering engine with text layout |
111
- | `packages/xlsx/src/renderer.ts` | Canvas 2D rendering engine with virtual scroll |
112
- | `packages/pptx/src/renderer.ts` | Canvas 2D rendering engine (runs on main thread) |
113
- | `packages/pptx/src/worker.ts` | Web Worker: WASM init and parsing only |
119
+ | `packages/docx/src/renderer.ts` | Canvas 2D rendering engine with text layout (main thread) |
120
+ | `packages/xlsx/src/renderer.ts` | Canvas 2D rendering engine with virtual scroll (main thread) |
121
+ | `packages/pptx/src/renderer.ts` | Canvas 2D rendering engine (main thread) |
122
+ | `packages/*/src/worker.ts` | Web Worker: WASM init and parsing only (one per format) |
114
123
  | `packages/*/src/viewer.ts` | Public Viewer API — canvas lifecycle, navigation |
124
+ | `packages/core/src/index.ts` | Cross-format primitives — chart renderer, shape helpers, `autoResize`, shared types |
115
125
 
116
126
  </details>
117
127
 
@@ -413,8 +423,12 @@ export const PptxViewerComponent = component$<{ src: string }>(({ src }) => {
413
423
  | | Row / column sizing (custom widths and heights) | ✅ |
414
424
  | | Hidden rows / columns | ✅ |
415
425
  | **Elements** | Images (`<xdr:twoCellAnchor>`) | ✅ |
416
- | | Charts (bar, line, area, radar) | ✅ |
417
- | | Sparklines | Not planned |
426
+ | | Charts (bar, line, area, radar, scatter / bubble) | ✅ |
427
+ | | Chart markers (circle / square / diamond / triangle / x / plus / star / dot / dash, per-point `<c:dPt>` overrides) | ✅ |
428
+ | | Chart data labels (`<c:dLbl>` per-point with CELLRANGE / VALUE / SERIESNAME / CATEGORYNAME field references, position `l`/`r`/`t`/`b`/`ctr`/`outEnd`) | ✅ |
429
+ | | Chart error bars (`<c:errBars>` X/Y direction, `cust` / `fixedVal` / `stdErr` / `stdDev` / `percentage`, dashed/styled lines) | ✅ |
430
+ | | Chart manual layout (`<c:title><c:layout>` and `<c:plotArea><c:layout>`) | ✅ |
431
+ | | Sparklines (`x14:sparklineGroup` — line / column / win-loss, with markers and high/low/first/last/negative highlights) | ✅ |
418
432
  | **Advanced** | Conditional formatting (`cellIs`, `colorScale`, `dataBar`, `iconSet`, `top10`, `aboveAverage`) | ✅ |
419
433
  | | Slicers (static, Office 2010 extension) | ✅ |
420
434
  | | Pivot tables | ❌ Not planned |
@@ -447,6 +461,7 @@ export const PptxViewerComponent = component$<{ src: string }>(({ src }) => {
447
461
  | | SmartArt | ❌ |
448
462
  | | OLE objects | ❌ |
449
463
  | | Video / audio (poster + interactive playback) | ✅ |
464
+ | | Ink / handwriting (`p:contentPart`, raster fallback) | ✅ |
450
465
  | **Shape geometry** | 130+ preset shapes (`prstGeom`) | ✅ |
451
466
  | | Custom geometry (`custGeom`) | ✅ |
452
467
  | | Rotation and flip (flipH / flipV) | ✅ |
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./pptx-mS90ORGU.cjs`),t=require(`./xlsx-CWkWdRpm.cjs`),n=require(`./docx-DKPVLT6O.cjs`);Object.defineProperty(exports,`docx`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`pptx`,{enumerable:!0,get:function(){return e.t}}),Object.defineProperty(exports,`xlsx`,{enumerable:!0,get:function(){return t.t}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./xlsx-C5mcZ9eL.cjs`),t=require(`./pptx-CUEsKfI-.cjs`),n=require(`./docx-DKPVLT6O.cjs`);Object.defineProperty(exports,`docx`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`pptx`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`xlsx`,{enumerable:!0,get:function(){return e.t}});
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { t as e } from "./pptx-Dvlu_0iN.js";
2
- import { t } from "./xlsx-B3-MeECM.js";
1
+ import { t as e } from "./xlsx-DGP6jxn-.js";
2
+ import { t } from "./pptx-B9bdrXoy.js";
3
3
  import { t as n } from "./docx-C_zG3e0V.js";
4
- export { n as docx, e as pptx, t as xlsx };
4
+ export { n as docx, t as pptx, e as xlsx };