DOCXXLSXPPTX
DOCXXLSXPPTX


ტექნოლოგიურ სამყაროში საინტერესო სიახლეა: გამოქვეყნდა Silurus/ooxml, ბრაუზერზე დაფუძნებული მაყურებელი Office Open XML დოკუმენტებისთვის. ის საშუალებას იძლევა, Word, Excel და PowerPoint ფაილები პირდაპირ HTML Canvas-ზე ვიზუალურად ზუსტად აისახოს.


FileRole
packages/docx/parser/src/lib.rsRust WASM parser — DOCX ZIP → Document JSON
packages/xlsx/parser/src/lib.rsRust WASM parser — XLSX ZIP → Workbook JSON
packages/pptx/parser/src/lib.rsRust WASM parser — PPTX ZIP → Presentation JSON
packages/docx/src/renderer.tsCanvas 2D rendering engine with text layout (main thread)
packages/xlsx/src/renderer.tsCanvas 2D rendering engine with virtual scroll (main thread)
packages/pptx/src/renderer.tsCanvas 2D rendering engine (main thread)
packages/*/src/worker.tsWeb Worker: WASM init and parsing only (one per format)
packages/*/src/viewer.tsPublic Viewer API — canvas lifecycle, navigation
packages/core/src/index.tsCross-format primitives — chart renderer, shape helpers, autoResize, shared types

პროექტის ერთ-ერთი ყველაზე გამორჩეული მახასიათებელი მისი წარმოშობაა. მთელი კოდის ბაზა — მათ შორის Rust-ის პარსერები, TypeScript-ის რენდერები და ტესტები — შეიქმნა Anthropic-ის ხელოვნური ინტელექტის, Claude-ის მიერ. დეველოპერი აღნიშნავს, რომ რეპოზიტორში ადამიანის მიერ დაწერილი არცერთი ხაზი არ არის.

CategoryFeatureStatus
DocumentPage rendering
Page size and margins
Headers / footers (default / first / even)
Section breaks (continuous / nextPage / oddPage / evenPage)
TextParagraphs
Bold, italic, underline, strikethrough
Font family, size, color
Hyperlinks
Superscript / subscript (w:vertAlign)
Ruby annotations / furigana (w:ruby)
FormattingParagraph alignment (left/center/right/justify)
Line spacing (auto / atLeast / exact)
Line grid (w:docGrid, §17.6.5)
Margin collapsing between paragraphs
Indents and tab stops
Lists (bullet and numbered)
Paragraph styles (Heading 1–9, Normal, custom)
Table style w:pPr cascade (§17.7.6)
Table style borders / shading / banding (tblStylePr, cnfStyle, §17.4.7)
Table of contents (TOC field) — dot leaders, right-aligned page numbers
keepNext / keepLines / widowControl
ElementsTables (with borders, fills, merges, banding, alignment)
Math equations (OMML m:oMath / m:oMathPara, rendered via MathJax — opt-in @silurus/ooxml/math)
Images (inline and anchored, with text wrap)
Text boxes / drawing shapes
WMF / EMF metafile images (legacy vector)❌ Not planned
AdvancedFootnote / endnote reference markers
Track changes (w:ins / w:del — author-coloured underline / strikethrough)
Comments / footnote bodies (parsed, not yet rendered inline)⚠️
Mail merge fields❌ Not planned
InteractionText selection (transparent overlay, native copy)

CategoryFeatureStatus
WorkbookMultiple sheets, sheet names
Sheet tab colors ( — theme / tint / indexed / rgb)
CellsText, number, boolean, error values
Formula results (from cached )
Dates (ECMA-376 date format codes)
Rich text (per-run formatting)
FormattingBold, italic, underline (single / double / singleAccounting / doubleAccounting), strikethrough
Superscript / subscript (vertAlign)
Font family, size, color
Cell background color (solid + gradient)
Pattern fills (gray125 / gray0625 / lightGray / mediumGray / darkGray and the 12 light* / dark* directional hatches)
Borders (thin, medium, thick, hair, double, dashed, dotted, dashDotDot, …)
Diagonal borders (diagonalUp / diagonalDown, single + double)
Horizontal / vertical alignment
Text wrapping
Number formats (0.00, %, #,##0, custom date/time)
StructureMerged cells
Frozen panes
Row / column sizing (custom widths and heights)
Hidden rows / columns
ElementsImages ()
Drawing shapes / text boxes (xdr:sp, xdr:txBody)
Charts (bar, line, area, radar, scatter / bubble)
Chart markers (circle / square / diamond / triangle / x / plus / star / dot / dash, per-point overrides)
Chart data labels ( per-point with CELLRANGE / VALUE / SERIESNAME / CATEGORYNAME field references, position l/r/t/b/ctr/outEnd)
Chart error bars ( X/Y direction, cust / fixedVal / stdErr / stdDev / percentage, dashed/styled lines)
Chart manual layout ( and )
Sparklines (x14:sparklineGroup — line / column / win-loss, with markers and high/low/first/last/negative highlights)
AdvancedConditional formatting (cellIs, colorScale, dataBar, iconSet, top10, aboveAverage)
Slicers (static, Office 2010 extension)
Pivot tables❌ Not planned
Data validation / comments❌ Not planned
InteractionCell selection (single / range / row / column / all)
Excel-style row / column header highlight on selection
Shift+click to extend, Ctrl+C to copy as TSV
Text selection inside cells (transparent overlay)
onSelectionChange callback, getCellAt(x, y) API
Zoom slider (Excel-style, right of the tab bar, 10–400% with 100% centered; showZoomSlider option)

ინსტრუმენტი იყენებს WebAssembly-ს, რაც უზრუნველყოფს სწრაფ მუშაობას. სისტემა თითოეულ ფორმატს აძლევს ე.წ. „headless“ ძრავას, რაც დეველოპერებს საშუალებას აძლევს, საკუთარი ინტერფეისი ააწყონ, ნაცვლად ჩაშენებული გადაწყვეტის გამოყენებისა. მაგალითად, შესაძლებელია სკროლინგის, თამბნელების ან სხვადასხვა პანელის მარტივად ინტეგრირება.


CategoryFeatureStatus
SlidesSlide rendering
Slide layout / master inheritance
Slide size (custom dimensions)
Slide background (solid, gradient, image)
Slide numbers
Notes pages
Animations / transitions❌ Not planned
Element typesShapes (sp)
Pictures (pic)
Groups (grpSp) with nested transforms
Connectors (cxnSp)
Tables (tbl in graphicFrame)
Charts (bar, line, area, radar, waterfall)
Charts (pie, doughnut)
Charts (scatter — scatterStyle marker / line / smooth variants)
Charts (bubble — bubbleSize per-point area scaling)
SmartArt
OLE objects
Video / audio (poster + interactive playback)
Ink / handwriting (p:contentPart, raster fallback)
Shape geometry130+ preset shapes (prstGeom)
Custom geometry (custGeom) on shapes and pictures (clipping)
Rotation and flip (flipH / flipV)
3D preset shapes
FillsSolid fill (solidFill)
Linear / radial gradient (gradFill)
No fill (noFill)
Pattern fill (pattFill) — 30 preset bitmaps incl. pct5–pct90 / horz / vert / cross / diag / grid / brick / check / trellis
Image fill on shapes (blipFill in sp)
StrokesSolid line color and width
Dash / dot styles
Arrow heads (headEnd / tailEnd)
Compound / double lines (`<a:ln cmpd="dblthinThick
Shape effectsDrop shadow (outerShdw)
Glow (glow — radius + colour)
Inner shadow (innerShdw — parsed; rendering follow-up)⚠️
Soft edge (softEdge — parsed; rendering follow-up)⚠️
Reflection (reflection — parsed; rendering follow-up)⚠️
Bevel / 3D extrusion
Text — charactersBold, italic, strikethrough (incl. dblStrike)
Underline styles (sng / dbl / dotted / dash / dashLong / dotDash / dotDotDash / wavy / wavyDbl and *Heavy variants)
Per-run underline colour (uFill / uFillTx)
Font family, size, color
East Asian font (rPr > a:ea — separate typeface for CJK glyphs)
Caps transform (all / small)
Letter spacing (spc)
Superscript / subscript
Hyperlinks (hlinkClick — theme hlink colour + auto underline)
Text shadow (rPr > effectLst > outerShdw)
Text outline (rPr > a:ln)
Math equations (OMML m:oMath / m:oMathPara, incl. a14:m / mc:AlternateContent; STIX Two Math via MathJax — opt-in @silurus/ooxml/math)
Text — paragraphsHorizontal alignment (left / center / right / justify)
Vertical anchor (top / center / bottom)
Line spacing (spcPct, spcPts)
Space before / after paragraph
Bullet points (character and auto-numbered)
Tab stops
Indent / margin
Vertical text (bodyPr@vert — vert / vert270 / eaVert)
Right-to-left paragraph (pPr@rtl — Arabic / Hebrew default alignment + browser bidi)
Text — bodyText padding (insets)
normAutoFit (shrink to fit)
spAutoFit (expand box; suppresses wrap when text fits in one line)
Word wrap / no wrap
Multi-column text body (numCol / spcCol — balanced flow)
Theme object-default inheritance ( bodyPr fallback)
TablesCells, rows, columns
Cell merges (horizontal / vertical)
Cell borders
Cell fills (solid / gradient)
Cell diagonal lines (lnTlToBr / lnBlToTr)
Table theme styles (74 built-in PowerPoint presets)
ThemeScheme colors (dk1/lt1/accent1–6)
Font scheme (+mj-lt, +mn-lt)
lumMod / lumOff / alpha transforms
InteractionText selection (transparent overlay, native copy)

პროექტის არქიტექტურა მოქნილია: რენდერინგი მიმდინარეობს მთავარ ნაკადში, რათა ტიპოგრაფიული სიზუსტე დაცული იყოს. ეს განსაკუთრებით მნიშვნელოვანია შრიფტების სწორად გამოსაჩენად, რაც ონლაინ დოკუმენტების შემთხვევაში ხშირად პრობლემატურია.


რაც შეეხება მათემატიკურ ფორმულებს, სისტემა იყენებს MathJax-ს. ის სრულად იზოლირებულია, არ საჭიროებს ქსელურ კავშირს და არ აგზავნის მოთხოვნებს მესამე მხარის სერვერებზე, რაც უზრუნველყოფს კონფიდენციალურობას.


უსაფრთხოების კუთხით, პროექტი იყენებს „Canvas-only“ მიდგომას. ეს ნიშნავს, რომ დოკუმენტი მხოლოდ იხატება ეკრანზე და არ ხდება მასში არსებული სკრიპტების ან აქტიური შიგთავსის შესრულება. ასევე, დანერგილია დაცვა ე.წ. „zip-bomb“-ის წინააღმდეგ, რაც ავტომატურად ზღუდავს ფაილების ზომას.


პროექტს თან ახლავს დამატებითი პაკეტებიც, მათ შორის VS Code-ის გაფართოება, რომელიც AI-აგენტებს საშუალებას აძლევს, პირდაპირ წაიკითხონ დოკუმენტების სტრუქტურა და მონაცემები. ეს ფუნქციონალი განსაკუთრებით სასარგებლოა ავტომატიზებული სამუშაო პროცესებისთვის.