@office-open/core 0.6.8 → 0.6.10
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 +9 -9
- package/dist/chart/index.d.mts +1 -1
- package/dist/chart/index.mjs +1 -1
- package/dist/{chart-jj57bDdC.mjs → chart-dfAcyzCL.mjs} +1 -1
- package/dist/drawingml/index.d.mts +2 -2
- package/dist/drawingml/index.mjs +1 -1
- package/dist/{drawingml-C0t3mzSK.mjs → drawingml-DQlhouyh.mjs} +11 -9
- package/dist/{index-BaL8Sbrf.d.mts → index-BWboZ6Uq.d.mts} +1 -1
- package/dist/{index-DP97S6un.d.mts → index-Borh69Zs.d.mts} +10 -7
- package/dist/{index-18VktT2t.d.mts → index-CtcOpyfu.d.mts} +2 -2
- package/dist/{index-CEFUwJ2F.d.mts → index-f_Izh2dj.d.mts} +1 -1
- package/dist/index.d.mts +62 -48
- package/dist/index.mjs +232 -58
- package/dist/patch/index.d.mts +2 -2
- package/dist/patch/index.mjs +1 -1
- package/dist/{patch-O6SD_BaJ.mjs → patch-ilNZTQmG.mjs} +64 -39
- package/dist/smartart/index.d.mts +1 -1
- package/dist/smartart/index.mjs +1 -1
- package/dist/{smartart-BKz8xM1k.mjs → smartart-Cx1qa6k_.mjs} +5 -9
- package/dist/values-zMCu5EoQ.mjs +371 -0
- package/dist/values.d.mts +1 -1
- package/dist/values.mjs +1 -370
- package/dist/{xml-components-Cfvn_mId.mjs → xml-components-xJkfJ6ff.mjs} +39 -12
- package/package.json +2 -2
- /package/dist/{index-DNLRdIqy.d.mts → index-BCUfgp9A.d.mts} +0 -0
- /package/dist/{values-QyWq4U4A.d.mts → values-COjPGYkS.d.mts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as chartAttr, y as XmlComponent } from "./xml-components-
|
|
1
|
+
import { l as chartAttr, y as XmlComponent } from "./xml-components-xJkfJ6ff.mjs";
|
|
2
2
|
//#region src/smartart/categories.ts
|
|
3
3
|
/** Layout ID → OOXML category type */
|
|
4
4
|
const LAYOUT_CATEGORIES = {
|
|
@@ -95,33 +95,29 @@ const COLOR_CATEGORIES = {
|
|
|
95
95
|
};
|
|
96
96
|
//#endregion
|
|
97
97
|
//#region src/smartart/built-in-definitions.ts
|
|
98
|
-
const DGM_NS = "http://schemas.openxmlformats.org/drawingml/2006/diagram";
|
|
99
|
-
const XML_DECL = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
|
|
100
|
-
/** Full default list layout (urn:microsoft.com/office/officeart/2005/8/layout/default) */
|
|
101
|
-
const FULL_DEFAULT_LAYOUT_XML = "<dgm:layoutDef xmlns:dgm=\"" + DGM_NS + "\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" uniqueId=\"urn:microsoft.com/office/officeart/2005/8/layout/default\"><dgm:title val=\"\"/><dgm:desc val=\"\"/><dgm:catLst><dgm:cat type=\"list\" pri=\"400\"/></dgm:catLst><dgm:sampData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\"0\" type=\"doc\"/><dgm:pt modelId=\"1\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"2\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"3\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"4\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"5\"><dgm:prSet phldr=\"1\"/></dgm:pt></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\"6\" srcId=\"0\" destId=\"1\" srcOrd=\"0\" destOrd=\"0\"/><dgm:cxn modelId=\"7\" srcId=\"0\" destId=\"2\" srcOrd=\"1\" destOrd=\"0\"/><dgm:cxn modelId=\"8\" srcId=\"0\" destId=\"3\" srcOrd=\"2\" destOrd=\"0\"/><dgm:cxn modelId=\"9\" srcId=\"0\" destId=\"4\" srcOrd=\"3\" destOrd=\"0\"/><dgm:cxn modelId=\"10\" srcId=\"0\" destId=\"5\" srcOrd=\"4\" destOrd=\"0\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:sampData><dgm:styleData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\"0\" type=\"doc\"/><dgm:pt modelId=\"1\"/><dgm:pt modelId=\"2\"/></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\"3\" srcId=\"0\" destId=\"1\" srcOrd=\"0\" destOrd=\"0\"/><dgm:cxn modelId=\"4\" srcId=\"0\" destId=\"2\" srcOrd=\"1\" destOrd=\"0\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:styleData><dgm:clrData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\"0\" type=\"doc\"/><dgm:pt modelId=\"1\"/><dgm:pt modelId=\"2\"/><dgm:pt modelId=\"3\"/><dgm:pt modelId=\"4\"/><dgm:pt modelId=\"5\"/><dgm:pt modelId=\"6\"/></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\"7\" srcId=\"0\" destId=\"1\" srcOrd=\"0\" destOrd=\"0\"/><dgm:cxn modelId=\"8\" srcId=\"0\" destId=\"2\" srcOrd=\"1\" destOrd=\"0\"/><dgm:cxn modelId=\"9\" srcId=\"0\" destId=\"3\" srcOrd=\"2\" destOrd=\"0\"/><dgm:cxn modelId=\"10\" srcId=\"0\" destId=\"4\" srcOrd=\"3\" destOrd=\"0\"/><dgm:cxn modelId=\"11\" srcId=\"0\" destId=\"5\" srcOrd=\"4\" destOrd=\"0\"/><dgm:cxn modelId=\"12\" srcId=\"0\" destId=\"6\" srcOrd=\"5\" destOrd=\"0\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:clrData><dgm:layoutNode name=\"diagram\"><dgm:varLst><dgm:dir/><dgm:resizeHandles val=\"exact\"/></dgm:varLst><dgm:choose name=\"Name0\"><dgm:if name=\"Name1\" func=\"var\" arg=\"dir\" op=\"equ\" val=\"norm\"><dgm:alg type=\"snake\"><dgm:param type=\"grDir\" val=\"tL\"/><dgm:param type=\"flowDir\" val=\"row\"/><dgm:param type=\"contDir\" val=\"sameDir\"/><dgm:param type=\"off\" val=\"ctr\"/></dgm:alg></dgm:if><dgm:else name=\"Name2\"><dgm:alg type=\"snake\"><dgm:param type=\"grDir\" val=\"tR\"/><dgm:param type=\"flowDir\" val=\"row\"/><dgm:param type=\"contDir\" val=\"sameDir\"/><dgm:param type=\"off\" val=\"ctr\"/></dgm:alg></dgm:else></dgm:choose><dgm:shape xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:blip=\"\"><dgm:adjLst/></dgm:shape><dgm:presOf/><dgm:constrLst><dgm:constr type=\"w\" for=\"ch\" forName=\"node\" refType=\"w\"/><dgm:constr type=\"h\" for=\"ch\" forName=\"node\" refType=\"w\" refFor=\"ch\" refForName=\"node\" fact=\"0.6\"/><dgm:constr type=\"w\" for=\"ch\" forName=\"sibTrans\" refType=\"w\" refFor=\"ch\" refForName=\"node\" fact=\"0.1\"/><dgm:constr type=\"sp\" refType=\"w\" refFor=\"ch\" refForName=\"sibTrans\"/><dgm:constr type=\"primFontSz\" for=\"ch\" forName=\"node\" op=\"equ\" val=\"65\"/></dgm:constrLst><dgm:ruleLst/><dgm:forEach name=\"Name3\" axis=\"ch\" ptType=\"node\"><dgm:layoutNode name=\"node\"><dgm:varLst><dgm:bulletEnabled val=\"1\"/></dgm:varLst><dgm:alg type=\"tx\"/><dgm:shape type=\"rect\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:blip=\"\"><dgm:adjLst/></dgm:shape><dgm:presOf axis=\"desOrSelf\" ptType=\"node\"/><dgm:constrLst><dgm:constr type=\"lMarg\" refType=\"primFontSz\" fact=\"0.3\"/><dgm:constr type=\"rMarg\" refType=\"primFontSz\" fact=\"0.3\"/><dgm:constr type=\"tMarg\" refType=\"primFontSz\" fact=\"0.3\"/><dgm:constr type=\"bMarg\" refType=\"primFontSz\" fact=\"0.3\"/></dgm:constrLst><dgm:ruleLst><dgm:rule type=\"primFontSz\" val=\"5\" fact=\"NaN\" max=\"NaN\"/></dgm:ruleLst></dgm:layoutNode><dgm:forEach name=\"Name4\" axis=\"followSib\" ptType=\"sibTrans\" cnt=\"1\"><dgm:layoutNode name=\"sibTrans\"><dgm:alg type=\"sp\"/><dgm:shape xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:blip=\"\"><dgm:adjLst/></dgm:shape><dgm:presOf/><dgm:constrLst/><dgm:ruleLst/></dgm:layoutNode></dgm:forEach></dgm:layoutNode></dgm:layoutDef>";
|
|
102
98
|
/**
|
|
103
99
|
* Returns layout XML. Full XML for "default", minimal stub for others.
|
|
104
100
|
* Stub has no layoutNode so PowerPoint falls back to built-in definitions
|
|
105
101
|
* based on the uniqueId / loTypeId in the data model.
|
|
106
102
|
*/
|
|
107
103
|
function getLayoutXml(layoutId) {
|
|
108
|
-
if (layoutId === "default") return
|
|
104
|
+
if (layoutId === "default") return "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><dgm:layoutDef xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" uniqueId=\"urn:microsoft.com/office/officeart/2005/8/layout/default\"><dgm:title val=\"\"/><dgm:desc val=\"\"/><dgm:catLst><dgm:cat type=\"list\" pri=\"400\"/></dgm:catLst><dgm:sampData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\"0\" type=\"doc\"/><dgm:pt modelId=\"1\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"2\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"3\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"4\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"5\"><dgm:prSet phldr=\"1\"/></dgm:pt></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\"6\" srcId=\"0\" destId=\"1\" srcOrd=\"0\" destOrd=\"0\"/><dgm:cxn modelId=\"7\" srcId=\"0\" destId=\"2\" srcOrd=\"1\" destOrd=\"0\"/><dgm:cxn modelId=\"8\" srcId=\"0\" destId=\"3\" srcOrd=\"2\" destOrd=\"0\"/><dgm:cxn modelId=\"9\" srcId=\"0\" destId=\"4\" srcOrd=\"3\" destOrd=\"0\"/><dgm:cxn modelId=\"10\" srcId=\"0\" destId=\"5\" srcOrd=\"4\" destOrd=\"0\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:sampData><dgm:styleData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\"0\" type=\"doc\"/><dgm:pt modelId=\"1\"/><dgm:pt modelId=\"2\"/></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\"3\" srcId=\"0\" destId=\"1\" srcOrd=\"0\" destOrd=\"0\"/><dgm:cxn modelId=\"4\" srcId=\"0\" destId=\"2\" srcOrd=\"1\" destOrd=\"0\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:styleData><dgm:clrData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\"0\" type=\"doc\"/><dgm:pt modelId=\"1\"/><dgm:pt modelId=\"2\"/><dgm:pt modelId=\"3\"/><dgm:pt modelId=\"4\"/><dgm:pt modelId=\"5\"/><dgm:pt modelId=\"6\"/></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\"7\" srcId=\"0\" destId=\"1\" srcOrd=\"0\" destOrd=\"0\"/><dgm:cxn modelId=\"8\" srcId=\"0\" destId=\"2\" srcOrd=\"1\" destOrd=\"0\"/><dgm:cxn modelId=\"9\" srcId=\"0\" destId=\"3\" srcOrd=\"2\" destOrd=\"0\"/><dgm:cxn modelId=\"10\" srcId=\"0\" destId=\"4\" srcOrd=\"3\" destOrd=\"0\"/><dgm:cxn modelId=\"11\" srcId=\"0\" destId=\"5\" srcOrd=\"4\" destOrd=\"0\"/><dgm:cxn modelId=\"12\" srcId=\"0\" destId=\"6\" srcOrd=\"5\" destOrd=\"0\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:clrData><dgm:layoutNode name=\"diagram\"><dgm:varLst><dgm:dir/><dgm:resizeHandles val=\"exact\"/></dgm:varLst><dgm:choose name=\"Name0\"><dgm:if name=\"Name1\" func=\"var\" arg=\"dir\" op=\"equ\" val=\"norm\"><dgm:alg type=\"snake\"><dgm:param type=\"grDir\" val=\"tL\"/><dgm:param type=\"flowDir\" val=\"row\"/><dgm:param type=\"contDir\" val=\"sameDir\"/><dgm:param type=\"off\" val=\"ctr\"/></dgm:alg></dgm:if><dgm:else name=\"Name2\"><dgm:alg type=\"snake\"><dgm:param type=\"grDir\" val=\"tR\"/><dgm:param type=\"flowDir\" val=\"row\"/><dgm:param type=\"contDir\" val=\"sameDir\"/><dgm:param type=\"off\" val=\"ctr\"/></dgm:alg></dgm:else></dgm:choose><dgm:shape xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:blip=\"\"><dgm:adjLst/></dgm:shape><dgm:presOf/><dgm:constrLst><dgm:constr type=\"w\" for=\"ch\" forName=\"node\" refType=\"w\"/><dgm:constr type=\"h\" for=\"ch\" forName=\"node\" refType=\"w\" refFor=\"ch\" refForName=\"node\" fact=\"0.6\"/><dgm:constr type=\"w\" for=\"ch\" forName=\"sibTrans\" refType=\"w\" refFor=\"ch\" refForName=\"node\" fact=\"0.1\"/><dgm:constr type=\"sp\" refType=\"w\" refFor=\"ch\" refForName=\"sibTrans\"/><dgm:constr type=\"primFontSz\" for=\"ch\" forName=\"node\" op=\"equ\" val=\"65\"/></dgm:constrLst><dgm:ruleLst/><dgm:forEach name=\"Name3\" axis=\"ch\" ptType=\"node\"><dgm:layoutNode name=\"node\"><dgm:varLst><dgm:bulletEnabled val=\"1\"/></dgm:varLst><dgm:alg type=\"tx\"/><dgm:shape type=\"rect\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:blip=\"\"><dgm:adjLst/></dgm:shape><dgm:presOf axis=\"desOrSelf\" ptType=\"node\"/><dgm:constrLst><dgm:constr type=\"lMarg\" refType=\"primFontSz\" fact=\"0.3\"/><dgm:constr type=\"rMarg\" refType=\"primFontSz\" fact=\"0.3\"/><dgm:constr type=\"tMarg\" refType=\"primFontSz\" fact=\"0.3\"/><dgm:constr type=\"bMarg\" refType=\"primFontSz\" fact=\"0.3\"/></dgm:constrLst><dgm:ruleLst><dgm:rule type=\"primFontSz\" val=\"5\" fact=\"NaN\" max=\"NaN\"/></dgm:ruleLst></dgm:layoutNode><dgm:forEach name=\"Name4\" axis=\"followSib\" ptType=\"sibTrans\" cnt=\"1\"><dgm:layoutNode name=\"sibTrans\"><dgm:alg type=\"sp\"/><dgm:shape xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:blip=\"\"><dgm:adjLst/></dgm:shape><dgm:presOf/><dgm:constrLst/><dgm:ruleLst/></dgm:layoutNode></dgm:forEach></dgm:layoutNode></dgm:layoutDef>";
|
|
109
105
|
const cat = LAYOUT_CATEGORIES[layoutId] ?? "list";
|
|
110
|
-
return
|
|
106
|
+
return "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><dgm:layoutDef xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" uniqueId=\"urn:microsoft.com/office/officeart/2005/8/layout/" + layoutId + "\"><dgm:title val=\"\"/><dgm:desc val=\"\"/><dgm:catLst><dgm:cat type=\"" + cat + "\" pri=\"400\"/></dgm:catLst><dgm:sampData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\"0\" type=\"doc\"/><dgm:pt modelId=\"1\"><dgm:prSet phldr=\"1\"/></dgm:pt><dgm:pt modelId=\"2\"><dgm:prSet phldr=\"1\"/></dgm:pt></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\"3\" srcId=\"0\" destId=\"1\" srcOrd=\"0\" destOrd=\"0\"/><dgm:cxn modelId=\"4\" srcId=\"0\" destId=\"2\" srcOrd=\"1\" destOrd=\"0\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:sampData></dgm:layoutDef>";
|
|
111
107
|
}
|
|
112
108
|
/**
|
|
113
109
|
* Returns style stub XML with the given uniqueId.
|
|
114
110
|
*/
|
|
115
111
|
function getStyleXml(styleId) {
|
|
116
112
|
const cat = STYLE_CATEGORIES[styleId] ?? "simple";
|
|
117
|
-
return
|
|
113
|
+
return "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><dgm:styleDef xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" uniqueId=\"urn:microsoft.com/office/officeart/2005/8/quickstyle/" + styleId + "\"><dgm:title val=\"\"/><dgm:desc val=\"\"/><dgm:catLst><dgm:cat type=\"" + cat + "\" pri=\"10100\"/></dgm:catLst><dgm:scene3d><a:camera prst=\"orthographicFront\"/><a:lightRig rig=\"threePt\" dir=\"t\"/></dgm:scene3d></dgm:styleDef>";
|
|
118
114
|
}
|
|
119
115
|
/**
|
|
120
116
|
* Returns color stub XML with the given uniqueId.
|
|
121
117
|
*/
|
|
122
118
|
function getColorXml(colorId) {
|
|
123
119
|
const cat = COLOR_CATEGORIES[colorId] ?? "accent1";
|
|
124
|
-
return
|
|
120
|
+
return "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><dgm:colorsDef xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" uniqueId=\"urn:microsoft.com/office/officeart/2005/8/colors/" + colorId + "\"><dgm:title val=\"\"/><dgm:desc val=\"\"/><dgm:catLst><dgm:cat type=\"" + cat + "\" pri=\"11200\"/></dgm:catLst></dgm:colorsDef>";
|
|
125
121
|
}
|
|
126
122
|
/** Minimal drawing cache for SmartArt (Office apps auto-regenerate this on open) */
|
|
127
123
|
const DEFAULT_DRAWING_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><dsp:drawing xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\" xmlns:dsp=\"http://schemas.microsoft.com/office/drawing/2008/diagram\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"><dsp:spTree><dsp:nvGrpSpPr><dsp:cNvPr id=\"0\" name=\"\"/><dsp:cNvGrpSpPr/></dsp:nvGrpSpPr><dsp:grpSpPr/></dsp:spTree></dsp:drawing>";
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
//#region src/values.ts
|
|
2
|
+
/**
|
|
3
|
+
* Validates and converts a number to an integer (decimal number).
|
|
4
|
+
*
|
|
5
|
+
* Reference: ST_DecimalNumber in OOXML specification
|
|
6
|
+
*
|
|
7
|
+
* @param val - The number to validate and convert
|
|
8
|
+
* @returns The floored integer value
|
|
9
|
+
* @throws Error if the value is NaN
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const num = decimalNumber(10.7); // Returns 10
|
|
14
|
+
* const negative = decimalNumber(-5.3); // Returns -5
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
const decimalNumber = (val) => {
|
|
18
|
+
if (isNaN(val)) throw new Error(`Invalid value '${val}' specified. Must be an integer.`);
|
|
19
|
+
return Math.floor(val);
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Validates and converts a number to a positive integer (unsigned decimal number).
|
|
23
|
+
*
|
|
24
|
+
* Reference: ST_UnsignedDecimalNumber in OOXML specification
|
|
25
|
+
*
|
|
26
|
+
* @param val - The number to validate and convert
|
|
27
|
+
* @returns The floored positive integer value
|
|
28
|
+
* @throws Error if the value is NaN or negative
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const num = unsignedDecimalNumber(10.7); // Returns 10
|
|
33
|
+
* const invalid = unsignedDecimalNumber(-5); // Throws Error
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
const unsignedDecimalNumber = (val) => {
|
|
37
|
+
const value = decimalNumber(val);
|
|
38
|
+
if (value < 0) throw new Error(`Invalid value '${val}' specified. Must be a positive integer.`);
|
|
39
|
+
return value;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Validates and normalizes a hexadecimal binary value.
|
|
43
|
+
*
|
|
44
|
+
* The xsd:hexBinary type represents binary data as a sequence of binary octets
|
|
45
|
+
* using hexadecimal encoding, where each binary octet is a two-character
|
|
46
|
+
* hexadecimal number. Both lowercase and uppercase letters A-F are permitted.
|
|
47
|
+
*
|
|
48
|
+
* @param val - The hexadecimal string to validate
|
|
49
|
+
* @param length - The expected length in bytes (not characters)
|
|
50
|
+
* @returns The validated hexadecimal string
|
|
51
|
+
* @throws Error if the value is not a valid hex string of the expected length
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* hexBinary("0FB8", 2); // Valid: 2 bytes = 4 characters
|
|
56
|
+
* hexBinary("ABC", 2); // Invalid: wrong length
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
const hexBinary = (val, length) => {
|
|
60
|
+
const expectedLength = length * 2;
|
|
61
|
+
if (val.length !== expectedLength || isNaN(Number(`0x${val}`))) throw new Error(`Invalid hex value '${val}'. Expected ${expectedLength} digit hex value`);
|
|
62
|
+
return val;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Validates a long hexadecimal number (4 bytes / 8 characters).
|
|
66
|
+
*
|
|
67
|
+
* Reference: ST_LongHexNumber in OOXML specification
|
|
68
|
+
*
|
|
69
|
+
* @param val - The hexadecimal string to validate
|
|
70
|
+
* @returns The validated hexadecimal string
|
|
71
|
+
* @throws Error if the value is not a valid 8-character hex string
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const hex = longHexNumber("ABCD1234"); // Valid
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
const longHexNumber = (val) => hexBinary(val, 4);
|
|
79
|
+
/**
|
|
80
|
+
* Validates a short hexadecimal number (2 bytes / 4 characters).
|
|
81
|
+
*
|
|
82
|
+
* Reference: ST_ShortHexNumber in OOXML specification
|
|
83
|
+
*
|
|
84
|
+
* @param val - The hexadecimal string to validate
|
|
85
|
+
* @returns The validated hexadecimal string
|
|
86
|
+
* @throws Error if the value is not a valid 4-character hex string
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const hex = shortHexNumber("AB12"); // Valid
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
const shortHexNumber = (val) => hexBinary(val, 2);
|
|
94
|
+
/**
|
|
95
|
+
* Validates a single-byte hexadecimal number (1 byte / 2 characters).
|
|
96
|
+
*
|
|
97
|
+
* Reference: ST_UcharHexNumber in OOXML specification
|
|
98
|
+
*
|
|
99
|
+
* @param val - The hexadecimal string to validate
|
|
100
|
+
* @returns The validated hexadecimal string
|
|
101
|
+
* @throws Error if the value is not a valid 2-character hex string
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const hex = uCharHexNumber("FF"); // Valid
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
const uCharHexNumber = (val) => hexBinary(val, 1);
|
|
109
|
+
/**
|
|
110
|
+
* Normalizes a universal measure value by parsing and reformatting.
|
|
111
|
+
*
|
|
112
|
+
* Ensures the numeric portion is properly formatted while preserving the unit.
|
|
113
|
+
*
|
|
114
|
+
* Reference: ST_UniversalMeasure in OOXML specification
|
|
115
|
+
*
|
|
116
|
+
* @param val - The universal measure string to normalize
|
|
117
|
+
* @returns The normalized universal measure
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const measure = universalMeasureValue("10.500mm"); // Returns "10.5mm"
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
const universalMeasureValue = (val) => {
|
|
125
|
+
const unit = val.slice(-2);
|
|
126
|
+
const amount = val.substring(0, val.length - 2);
|
|
127
|
+
return `${Number(amount)}${unit}`;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Validates and normalizes a positive universal measure value.
|
|
131
|
+
*
|
|
132
|
+
* Reference: ST_PositiveUniversalMeasure in OOXML specification
|
|
133
|
+
*
|
|
134
|
+
* @param val - The positive universal measure string to validate
|
|
135
|
+
* @returns The normalized positive universal measure
|
|
136
|
+
* @throws Error if the value is negative
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* const measure = positiveUniversalMeasureValue("10.5mm"); // Valid
|
|
141
|
+
* const invalid = positiveUniversalMeasureValue("-5mm"); // Throws Error
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
const positiveUniversalMeasureValue = (val) => {
|
|
145
|
+
const value = universalMeasureValue(val);
|
|
146
|
+
if (parseFloat(value) < 0) throw new Error(`Invalid value '${value}' specified. Expected a positive number.`);
|
|
147
|
+
return value;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Validates and normalizes a hexadecimal color value.
|
|
151
|
+
*
|
|
152
|
+
* Accepts either "auto" or a 6-character RGB hex value (with or without # prefix).
|
|
153
|
+
* The # prefix is commonly used but technically invalid in OOXML, so it is stripped
|
|
154
|
+
* for strict compliance.
|
|
155
|
+
*
|
|
156
|
+
* Reference: ST_HexColor in OOXML specification
|
|
157
|
+
*
|
|
158
|
+
* @param val - The color value to validate ("auto" or hex color)
|
|
159
|
+
* @returns The normalized color value
|
|
160
|
+
* @throws Error if the hex color is invalid
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* const color1 = hexColorValue("auto"); // Returns "auto"
|
|
165
|
+
* const color2 = hexColorValue("FF0000"); // Returns "FF0000"
|
|
166
|
+
* const color3 = hexColorValue("#00FF00"); // Returns "00FF00" (# stripped)
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
const hexColorValue = (val) => {
|
|
170
|
+
if (val === "auto") return val;
|
|
171
|
+
return hexBinary(val.charAt(0) === "#" ? val.substring(1) : val, 3);
|
|
172
|
+
};
|
|
173
|
+
/**
|
|
174
|
+
* Validates a signed TWIP measurement value.
|
|
175
|
+
*
|
|
176
|
+
* Accepts either a universal measure string or a numeric TWIP value.
|
|
177
|
+
*
|
|
178
|
+
* Reference: ST_SignedTwipsMeasure in OOXML specification
|
|
179
|
+
*
|
|
180
|
+
* @param val - The measurement value (universal measure or number)
|
|
181
|
+
* @returns The normalized measurement value
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* const measure1 = signedTwipsMeasureValue("10mm");
|
|
186
|
+
* const measure2 = signedTwipsMeasureValue(1440); // 1 inch in TWIP
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
const signedTwipsMeasureValue = (val) => typeof val === "string" ? universalMeasureValue(val) : decimalNumber(val);
|
|
190
|
+
/**
|
|
191
|
+
* Validates a half-point (HPS) measurement value.
|
|
192
|
+
*
|
|
193
|
+
* Accepts either a positive universal measure string or a positive number.
|
|
194
|
+
* HPS (half-points) are commonly used for font sizes.
|
|
195
|
+
*
|
|
196
|
+
* Reference: ST_HpsMeasure in OOXML specification
|
|
197
|
+
*
|
|
198
|
+
* @param val - The measurement value (positive universal measure or number)
|
|
199
|
+
* @returns The normalized measurement value
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```typescript
|
|
203
|
+
* const fontSize1 = hpsMeasureValue("12pt");
|
|
204
|
+
* const fontSize2 = hpsMeasureValue(24); // 12pt in half-points
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
const hpsMeasureValue = (val) => typeof val === "string" ? positiveUniversalMeasureValue(val) : unsignedDecimalNumber(val);
|
|
208
|
+
/**
|
|
209
|
+
* Validates a signed half-point (HPS) measurement value.
|
|
210
|
+
*
|
|
211
|
+
* Accepts either a universal measure string or a numeric value.
|
|
212
|
+
*
|
|
213
|
+
* Reference: ST_SignedHpsMeasure in OOXML specification
|
|
214
|
+
*
|
|
215
|
+
* @param val - The measurement value (universal measure or number)
|
|
216
|
+
* @returns The normalized measurement value
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* const spacing1 = signedHpsMeasureValue("6pt");
|
|
221
|
+
* const spacing2 = signedHpsMeasureValue(-12); // Negative spacing
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
const signedHpsMeasureValue = (val) => typeof val === "string" ? universalMeasureValue(val) : decimalNumber(val);
|
|
225
|
+
/**
|
|
226
|
+
* Validates a positive TWIP measurement value.
|
|
227
|
+
*
|
|
228
|
+
* Accepts either a positive universal measure string or a positive number.
|
|
229
|
+
*
|
|
230
|
+
* Reference: ST_TwipsMeasure in OOXML specification
|
|
231
|
+
*
|
|
232
|
+
* @param val - The measurement value (positive universal measure or number)
|
|
233
|
+
* @returns The normalized measurement value
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* const width1 = twipsMeasureValue("25.4mm");
|
|
238
|
+
* const width2 = twipsMeasureValue(1440); // 1 inch in TWIP
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
const twipsMeasureValue = (val) => typeof val === "string" ? positiveUniversalMeasureValue(val) : unsignedDecimalNumber(val);
|
|
242
|
+
/**
|
|
243
|
+
* Normalizes a percentage value by parsing and reformatting.
|
|
244
|
+
*
|
|
245
|
+
* Reference: ST_Percentage in OOXML specification
|
|
246
|
+
*
|
|
247
|
+
* @param val - The percentage string to normalize
|
|
248
|
+
* @returns The normalized percentage
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* const percent = percentageValue("50.000%"); // Returns "50%"
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
const percentageValue = (val) => {
|
|
256
|
+
const percent = val.substring(0, val.length - 1);
|
|
257
|
+
return `${Number(percent)}%`;
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* Validates a measurement value that can be expressed as a number, percentage, or universal measure.
|
|
261
|
+
*
|
|
262
|
+
* Reference: ST_MeasurementOrPercent in OOXML specification
|
|
263
|
+
*
|
|
264
|
+
* @param val - The measurement value (number, percentage, or universal measure)
|
|
265
|
+
* @returns The normalized measurement value
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```typescript
|
|
269
|
+
* const measure1 = measurementOrPercentValue(100); // Unqualified number
|
|
270
|
+
* const measure2 = measurementOrPercentValue("50%"); // Percentage
|
|
271
|
+
* const measure3 = measurementOrPercentValue("10mm"); // Universal measure
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
const measurementOrPercentValue = (val) => {
|
|
275
|
+
if (typeof val === "number") return decimalNumber(val);
|
|
276
|
+
if (val.slice(-1) === "%") return percentageValue(val);
|
|
277
|
+
return universalMeasureValue(val);
|
|
278
|
+
};
|
|
279
|
+
/**
|
|
280
|
+
* Validates an eighth-point measurement value.
|
|
281
|
+
*
|
|
282
|
+
* Eighth-points are used for fine-grained measurements in text formatting.
|
|
283
|
+
*
|
|
284
|
+
* Reference: ST_EighthPointMeasure in OOXML specification
|
|
285
|
+
*
|
|
286
|
+
* @param val - The measurement value in eighth-points
|
|
287
|
+
* @returns The validated positive integer value
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* ```typescript
|
|
291
|
+
* const measure = eighthPointMeasureValue(16); // 2 points
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
294
|
+
const eighthPointMeasureValue = unsignedDecimalNumber;
|
|
295
|
+
/**
|
|
296
|
+
* Validates a point measurement value.
|
|
297
|
+
*
|
|
298
|
+
* Reference: ST_PointMeasure in OOXML specification
|
|
299
|
+
*
|
|
300
|
+
* @param val - The measurement value in points
|
|
301
|
+
* @returns The validated positive integer value
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const fontSize = pointMeasureValue(12); // 12pt
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
const pointMeasureValue = unsignedDecimalNumber;
|
|
309
|
+
/**
|
|
310
|
+
* Converts a JavaScript Date object to an ISO 8601 date-time string.
|
|
311
|
+
*
|
|
312
|
+
* The format is CCYY-MM-DDThh:mm:ss.sssZ where T is a literal and Z indicates UTC.
|
|
313
|
+
* This matches the xsd:dateTime format required by OOXML.
|
|
314
|
+
*
|
|
315
|
+
* Reference: ST_DateTime in OOXML specification
|
|
316
|
+
*
|
|
317
|
+
* @param val - The Date object to convert
|
|
318
|
+
* @returns An ISO 8601 formatted date-time string
|
|
319
|
+
*
|
|
320
|
+
* @example
|
|
321
|
+
* ```typescript
|
|
322
|
+
* const now = new Date();
|
|
323
|
+
* const timestamp = dateTimeValue(now); // Returns "2024-01-15T10:30:00.000Z"
|
|
324
|
+
* ```
|
|
325
|
+
*/
|
|
326
|
+
const dateTimeValue = (val) => val.toISOString();
|
|
327
|
+
/**
|
|
328
|
+
* Theme color values used throughout OOXML for referencing document theme colors.
|
|
329
|
+
*
|
|
330
|
+
* Reference: ST_ThemeColor in OOXML specification
|
|
331
|
+
*
|
|
332
|
+
* @publicApi
|
|
333
|
+
*/
|
|
334
|
+
const ThemeColor = {
|
|
335
|
+
DARK1: "dark1",
|
|
336
|
+
LIGHT1: "light1",
|
|
337
|
+
DARK2: "dark2",
|
|
338
|
+
LIGHT2: "light2",
|
|
339
|
+
ACCENT1: "accent1",
|
|
340
|
+
ACCENT2: "accent2",
|
|
341
|
+
ACCENT3: "accent3",
|
|
342
|
+
ACCENT4: "accent4",
|
|
343
|
+
ACCENT5: "accent5",
|
|
344
|
+
ACCENT6: "accent6",
|
|
345
|
+
HYPERLINK: "hyperlink",
|
|
346
|
+
FOLLOWED_HYPERLINK: "followedHyperlink",
|
|
347
|
+
NONE: "none",
|
|
348
|
+
BACKGROUND1: "background1",
|
|
349
|
+
TEXT1: "text1",
|
|
350
|
+
BACKGROUND2: "background2",
|
|
351
|
+
TEXT2: "text2"
|
|
352
|
+
};
|
|
353
|
+
/**
|
|
354
|
+
* Theme font values used for referencing document theme fonts.
|
|
355
|
+
*
|
|
356
|
+
* Reference: ST_Theme in OOXML specification
|
|
357
|
+
*
|
|
358
|
+
* @publicApi
|
|
359
|
+
*/
|
|
360
|
+
const ThemeFont = {
|
|
361
|
+
MAJOR_EAST_ASIA: "majorEastAsia",
|
|
362
|
+
MAJOR_BIDI: "majorBidi",
|
|
363
|
+
MAJOR_ASCII: "majorAscii",
|
|
364
|
+
MAJOR_H_ANSI: "majorHAnsi",
|
|
365
|
+
MINOR_EAST_ASIA: "minorEastAsia",
|
|
366
|
+
MINOR_BIDI: "minorBidi",
|
|
367
|
+
MINOR_ASCII: "minorAscii",
|
|
368
|
+
MINOR_H_ANSI: "minorHAnsi"
|
|
369
|
+
};
|
|
370
|
+
//#endregion
|
|
371
|
+
export { twipsMeasureValue as _, eighthPointMeasureValue as a, unsignedDecimalNumber as b, hpsMeasureValue as c, percentageValue as d, pointMeasureValue as f, signedTwipsMeasureValue as g, signedHpsMeasureValue as h, decimalNumber as i, longHexNumber as l, shortHexNumber as m, ThemeFont as n, hexBinary as o, positiveUniversalMeasureValue as p, dateTimeValue as r, hexColorValue as s, ThemeColor as t, measurementOrPercentValue as u, uCharHexNumber as v, universalMeasureValue as y };
|
package/dist/values.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as uCharHexNumber, S as twipsMeasureValue, T as unsignedDecimalNumber, _ as pointMeasureValue, a as ThemeColor, b as signedHpsMeasureValue, c as dateTimeValue, d as hexBinary, f as hexColorValue, g as percentageValue, h as measurementOrPercentValue, i as RelativeMeasure, l as decimalNumber, m as longHexNumber, n as PositivePercentage, o as ThemeFont, p as hpsMeasureValue, r as PositiveUniversalMeasure, s as UniversalMeasure, t as Percentage, u as eighthPointMeasureValue, v as positiveUniversalMeasureValue, w as universalMeasureValue, x as signedTwipsMeasureValue, y as shortHexNumber } from "./values-
|
|
1
|
+
import { C as uCharHexNumber, S as twipsMeasureValue, T as unsignedDecimalNumber, _ as pointMeasureValue, a as ThemeColor, b as signedHpsMeasureValue, c as dateTimeValue, d as hexBinary, f as hexColorValue, g as percentageValue, h as measurementOrPercentValue, i as RelativeMeasure, l as decimalNumber, m as longHexNumber, n as PositivePercentage, o as ThemeFont, p as hpsMeasureValue, r as PositiveUniversalMeasure, s as UniversalMeasure, t as Percentage, u as eighthPointMeasureValue, v as positiveUniversalMeasureValue, w as universalMeasureValue, x as signedTwipsMeasureValue, y as shortHexNumber } from "./values-COjPGYkS.mjs";
|
|
2
2
|
export { Percentage, PositivePercentage, PositiveUniversalMeasure, RelativeMeasure, ThemeColor, ThemeFont, UniversalMeasure, dateTimeValue, decimalNumber, eighthPointMeasureValue, hexBinary, hexColorValue, hpsMeasureValue, longHexNumber, measurementOrPercentValue, percentageValue, pointMeasureValue, positiveUniversalMeasureValue, shortHexNumber, signedHpsMeasureValue, signedTwipsMeasureValue, twipsMeasureValue, uCharHexNumber, universalMeasureValue, unsignedDecimalNumber };
|