JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 121
  • Score
    100M100P100Q85076F
  • License MIT

Shared OOXML infrastructure: XmlComponent, value validators, unit converters

Package Exports

  • @office-open/core
  • @office-open/core/archive
  • @office-open/core/chart
  • @office-open/core/drawingml
  • @office-open/core/smartart
  • @office-open/core/values

Readme

@office-open/core

npm version npm downloads npm license

Shared OOXML infrastructure: XmlComponent, value validators, unit converters, chart types, and SmartArt definitions.

Features

  • XmlComponent Framework - Base classes for building OOXML element trees with dynamic namespace support
  • Value Validators - Runtime validation for OOXML spec types (ST_HexColor, ST_OnOff, ST_DecimalNumber, etc.)
  • Unit Converters - TWIP and EMU conversions (mm/in/pt/px)
  • Chart Components - Shared chart types (bar, line, pie, area, scatter) and chart collection for DOCX/PPTX
  • SmartArt Components - Data model, tree-to-model converter, collection, and built-in layout/style/color definitions
  • ID Generators - Sequential numeric IDs, nanoid, SHA-1 hash, UUID v4
  • OOXML Compliance - All types verified against ISO/IEC 29500-4 XSD schemas

Installation

# Install with npm
$ npm install @office-open/core

# Install with pnpm
$ pnpm add @office-open/core

Quick Start

import {
    OnOffElement,
    StringValueElement,
    BuilderElement,
    StringContainer,
    hexColorValue,
    decimalNumber,
    convertMillimetersToTwip,
    uniqueNumericIdCreator,
} from "@office-open/core";

// CT_OnOff — dynamic namespace prefix per XSD spec
new OnOffElement("w:b", false);
// → { "w:b": { _attr: { "w:val": false } } }

new OnOffElement("m:hideBot", false);
// → { "m:hideBot": { _attr: { "m:val": false } } }

// Builder with attributes + children
new BuilderElement({
    name: "w:r",
    attributes: { lang: { key: "xml:lang", value: "en-US" } },
    children: [new StringContainer("w:t", "Hello")],
});

// Value validators
hexColorValue("#FF0000"); // → "FF0000"
hexColorValue("auto"); // → "auto"
decimalNumber(10.7); // → 10

// Unit converters
convertMillimetersToTwip(25.4); // → 1440 (1 inch)
convertPixelsToEmu(100); // → 952500
convertInchesToEmu(1); // → 914400
convertPointsToEmu(12); // → 152400

// ID generators
const gen = uniqueNumericIdCreator();
gen(); // → 1, 2, 3, ...

OOXML Schema Compliance

Type XSD Reference
ThemeColor ST_ThemeColor (17 values)
ThemeFont ST_Theme (8 values)
UniversalMeasure ST_UniversalMeasure (mm, cm, in, pt, pc, pi)
Percentage ST_Percentage
hexColorValue ST_HexColor (auto + 3-byte hexBinary)
OnOffElement CT_OnOff (dynamic namespace prefix)
HpsMeasureElement CT_HpsMeasure
StringValueElement CT_String

Exports

Path Contents
@office-open/core XmlComponent, validators, converters, ID generators
@office-open/core/values Validators + ThemeColor/ThemeFont only
@office-open/core/chart Chart types, series data, chart collection, title
@office-open/core/smartart SmartArt data model, tree-to-model, definitions

Benchmark

Operation hz
decimalNumber ~21M
hexColorValue (6-char hex) ~13M
uniqueNumericIdCreator ~21M
uniqueId (nanoid) ~3.3M
uniqueUuid ~2M
OnOffElement (true) ~13M
OnOffElement (false) ~1.7M
BuilderElement (attributes) ~2M
BuilderElement (children) ~2.3M

License