[{"data":1,"prerenderedAt":2372},["ShallowReactive",2],{"navigation_docs_en":3,"-en-core-descriptors":319,"-en-core-descriptors-surround":2367},[4,31,61,91,167,248],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":30},"Getting Started","i-lucide-rocket","\u002Fen\u002Fgetting-started","en\u002F01.getting-started",[10,14,18,22,26],{"title":11,"path":12,"stem":13},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F01.getting-started\u002F01.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F01.getting-started\u002F02.installation",{"title":19,"path":20,"stem":21},"Command Line Interface (CLI)","\u002Fen\u002Fgetting-started\u002Fcommand-line-interface","en\u002F01.getting-started\u002F03.command-line-interface",{"title":23,"path":24,"stem":25},"AI Tools","\u002Fen\u002Fgetting-started\u002Fai-tools","en\u002F01.getting-started\u002F04.ai-tools",{"title":27,"path":28,"stem":29},"AI Integration","\u002Fen\u002Fgetting-started\u002Fai-integration","en\u002F01.getting-started\u002F05.ai-integration",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":30},"CORE","i-lucide-box","\u002Fen\u002Fcore","en\u002F02.core",[37,41,45,49,53,57],{"title":38,"path":39,"stem":40},"@office-open\u002Fcore","\u002Fen\u002Fcore\u002Foverview","en\u002F02.core\u002F01.overview",{"title":42,"path":43,"stem":44},"Descriptor System","\u002Fen\u002Fcore\u002Fdescriptors","en\u002F02.core\u002F02.descriptors",{"title":46,"path":47,"stem":48},"Values and Validation","\u002Fen\u002Fcore\u002Fvalues","en\u002F02.core\u002F03.values",{"title":50,"path":51,"stem":52},"Unit Converters","\u002Fen\u002Fcore\u002Fconverters","en\u002F02.core\u002F04.converters",{"title":54,"path":55,"stem":56},"Charts","\u002Fen\u002Fcore\u002Fcharts","en\u002F02.core\u002F05.charts",{"title":58,"path":59,"stem":60},"Parser","\u002Fen\u002Fcore\u002Fparser","en\u002F02.core\u002F06.parser",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":30},"XML","i-lucide-code-xml","\u002Fen\u002Fxml","en\u002F03.xml",[67,71,75,79,83,87],{"title":68,"path":69,"stem":70},"@office-open\u002Fxml","\u002Fen\u002Fxml\u002Foverview","en\u002F03.xml\u002F01.overview",{"title":72,"path":73,"stem":74},"Parsing","\u002Fen\u002Fxml\u002Fparsing","en\u002F03.xml\u002F02.parsing",{"title":76,"path":77,"stem":78},"Serialization","\u002Fen\u002Fxml\u002Fserialization","en\u002F03.xml\u002F03.serialization",{"title":80,"path":81,"stem":82},"Query Utilities","\u002Fen\u002Fxml\u002Fquery-utilities","en\u002F03.xml\u002F04.query-utilities",{"title":84,"path":85,"stem":86},"XML Escape","\u002Fen\u002Fxml\u002Fescape","en\u002F03.xml\u002F05.escape",{"title":88,"path":89,"stem":90},"Type Reference","\u002Fen\u002Fxml\u002Ftypes","en\u002F03.xml\u002F06.types",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":30},"DOCX","i-lucide-file-text","\u002Fen\u002Fdocx","en\u002F04.docx",[97,101,105,109,113,117,120,124,128,132,136,140,144,148,152,156,160,163],{"title":98,"path":99,"stem":100},"@office-open\u002Fdocx","\u002Fen\u002Fdocx\u002Foverview","en\u002F04.docx\u002F01.overview",{"title":102,"path":103,"stem":104},"Quick Start","\u002Fen\u002Fdocx\u002Fquickstart","en\u002F04.docx\u002F02.quickstart",{"title":106,"path":107,"stem":108},"Text and Paragraphs","\u002Fen\u002Fdocx\u002Ftext-and-paragraphs","en\u002F04.docx\u002F03.text-and-paragraphs",{"title":110,"path":111,"stem":112},"Tables","\u002Fen\u002Fdocx\u002Ftables","en\u002F04.docx\u002F04.tables",{"title":114,"path":115,"stem":116},"Images","\u002Fen\u002Fdocx\u002Fimages","en\u002F04.docx\u002F05.images",{"title":54,"path":118,"stem":119},"\u002Fen\u002Fdocx\u002Fcharts","en\u002F04.docx\u002F06.charts",{"title":121,"path":122,"stem":123},"SmartArt","\u002Fen\u002Fdocx\u002Fsmartart","en\u002F04.docx\u002F07.smartart",{"title":125,"path":126,"stem":127},"Media","\u002Fen\u002Fdocx\u002Fmedia","en\u002F04.docx\u002F08.media",{"title":129,"path":130,"stem":131},"Links","\u002Fen\u002Fdocx\u002Flinks","en\u002F04.docx\u002F09.links",{"title":133,"path":134,"stem":135},"Headers and Footers","\u002Fen\u002Fdocx\u002Fheaders-and-footers","en\u002F04.docx\u002F10.headers-and-footers",{"title":137,"path":138,"stem":139},"Equations and Symbols","\u002Fen\u002Fdocx\u002Fequations-and-symbols","en\u002F04.docx\u002F11.equations-and-symbols",{"title":141,"path":142,"stem":143},"Styles and Themes","\u002Fen\u002Fdocx\u002Fstyles-and-themes","en\u002F04.docx\u002F12.styles-and-themes",{"title":145,"path":146,"stem":147},"Page Layout","\u002Fen\u002Fdocx\u002Fpage-layout","en\u002F04.docx\u002F13.page-layout",{"title":149,"path":150,"stem":151},"References","\u002Fen\u002Fdocx\u002Freferences","en\u002F04.docx\u002F14.references",{"title":153,"path":154,"stem":155},"Comments and Revisions","\u002Fen\u002Fdocx\u002Fcomments-and-revisions","en\u002F04.docx\u002F15.comments-and-revisions",{"title":157,"path":158,"stem":159},"Export","\u002Fen\u002Fdocx\u002Fexport","en\u002F04.docx\u002F16.export",{"title":72,"path":161,"stem":162},"\u002Fen\u002Fdocx\u002Fparsing","en\u002F04.docx\u002F17.parsing",{"title":164,"path":165,"stem":166},"Patching","\u002Fen\u002Fdocx\u002Fpatch","en\u002F04.docx\u002F18.patch",{"title":168,"icon":169,"path":170,"stem":171,"children":172,"page":30},"PPTX","i-lucide-presentation","\u002Fen\u002Fpptx","en\u002F05.pptx",[173,177,180,184,187,190,193,196,199,202,206,209,212,216,219,223,227,231,235,239,242,245],{"title":174,"path":175,"stem":176},"@office-open\u002Fpptx","\u002Fen\u002Fpptx\u002Foverview","en\u002F05.pptx\u002F01.overview",{"title":102,"path":178,"stem":179},"\u002Fen\u002Fpptx\u002Fquickstart","en\u002F05.pptx\u002F02.quickstart",{"title":181,"path":182,"stem":183},"Shapes and Text","\u002Fen\u002Fpptx\u002Fshapes-and-text","en\u002F05.pptx\u002F03.shapes-and-text",{"title":110,"path":185,"stem":186},"\u002Fen\u002Fpptx\u002Ftables","en\u002F05.pptx\u002F04.tables",{"title":114,"path":188,"stem":189},"\u002Fen\u002Fpptx\u002Fimages","en\u002F05.pptx\u002F05.images",{"title":54,"path":191,"stem":192},"\u002Fen\u002Fpptx\u002Fcharts","en\u002F05.pptx\u002F06.charts",{"title":121,"path":194,"stem":195},"\u002Fen\u002Fpptx\u002Fsmartart","en\u002F05.pptx\u002F07.smartart",{"title":125,"path":197,"stem":198},"\u002Fen\u002Fpptx\u002Fmedia","en\u002F05.pptx\u002F08.media",{"title":129,"path":200,"stem":201},"\u002Fen\u002Fpptx\u002Flinks","en\u002F05.pptx\u002F09.links",{"title":203,"path":204,"stem":205},"Lines and Connectors","\u002Fen\u002Fpptx\u002Flines-and-connectors","en\u002F05.pptx\u002F10.lines-and-connectors",{"title":133,"path":207,"stem":208},"\u002Fen\u002Fpptx\u002Fheaders-and-footers","en\u002F05.pptx\u002F11.headers-and-footers",{"title":137,"path":210,"stem":211},"\u002Fen\u002Fpptx\u002Fequations-and-symbols","en\u002F05.pptx\u002F12.equations-and-symbols",{"title":213,"path":214,"stem":215},"Slide Layout","\u002Fen\u002Fpptx\u002Fslide-layout","en\u002F05.pptx\u002F13.slide-layout",{"title":141,"path":217,"stem":218},"\u002Fen\u002Fpptx\u002Fstyles-and-themes","en\u002F05.pptx\u002F14.styles-and-themes",{"title":220,"path":221,"stem":222},"Effects and Fills","\u002Fen\u002Fpptx\u002Feffects-and-fills","en\u002F05.pptx\u002F15.effects-and-fills",{"title":224,"path":225,"stem":226},"Transitions","\u002Fen\u002Fpptx\u002Ftransitions","en\u002F05.pptx\u002F16.transitions",{"title":228,"path":229,"stem":230},"Animations","\u002Fen\u002Fpptx\u002Fanimations","en\u002F05.pptx\u002F17.animations",{"title":232,"path":233,"stem":234},"Comments","\u002Fen\u002Fpptx\u002Fcomments","en\u002F05.pptx\u002F18.comments",{"title":236,"path":237,"stem":238},"Presentation Properties","\u002Fen\u002Fpptx\u002Fpresentation-properties","en\u002F05.pptx\u002F19.presentation-properties",{"title":157,"path":240,"stem":241},"\u002Fen\u002Fpptx\u002Fexport","en\u002F05.pptx\u002F20.export",{"title":72,"path":243,"stem":244},"\u002Fen\u002Fpptx\u002Fparsing","en\u002F05.pptx\u002F21.parsing",{"title":164,"path":246,"stem":247},"\u002Fen\u002Fpptx\u002Fpatch","en\u002F05.pptx\u002F22.patch",{"title":249,"icon":250,"path":251,"stem":252,"children":253,"page":30},"XLSX","i-lucide-table-2","\u002Fen\u002Fxlsx","en\u002F06.xlsx",[254,258,261,265,269,273,277,281,284,287,291,295,299,303,306,310,313,316],{"title":255,"path":256,"stem":257},"@office-open\u002Fxlsx","\u002Fen\u002Fxlsx\u002Foverview","en\u002F06.xlsx\u002F01.overview",{"title":102,"path":259,"stem":260},"\u002Fen\u002Fxlsx\u002Fquickstart","en\u002F06.xlsx\u002F02.quickstart",{"title":262,"path":263,"stem":264},"Cells & Data","\u002Fen\u002Fxlsx\u002Fcells","en\u002F06.xlsx\u002F03.cells",{"title":266,"path":267,"stem":268},"Styles","\u002Fen\u002Fxlsx\u002Fstyles","en\u002F06.xlsx\u002F04.styles",{"title":270,"path":271,"stem":272},"Merge, Columns & Rows","\u002Fen\u002Fxlsx\u002Fmerge-col-row","en\u002F06.xlsx\u002F05.merge-col-row",{"title":274,"path":275,"stem":276},"Hyperlinks","\u002Fen\u002Fxlsx\u002Flinks","en\u002F06.xlsx\u002F06.links",{"title":278,"path":279,"stem":280},"Pivot Tables","\u002Fen\u002Fxlsx\u002Fpivot-tables","en\u002F06.xlsx\u002F07.pivot-tables",{"title":114,"path":282,"stem":283},"\u002Fen\u002Fxlsx\u002Fimages","en\u002F06.xlsx\u002F08.images",{"title":54,"path":285,"stem":286},"\u002Fen\u002Fxlsx\u002Fcharts","en\u002F06.xlsx\u002F09.charts",{"title":288,"path":289,"stem":290},"Page Setup & Headers\u002FFooters","\u002Fen\u002Fxlsx\u002Fpage-setup","en\u002F06.xlsx\u002F10.page-setup",{"title":292,"path":293,"stem":294},"Formulas","\u002Fen\u002Fxlsx\u002Fformulas","en\u002F06.xlsx\u002F11.formulas",{"title":296,"path":297,"stem":298},"Freeze Panes & Auto Filter","\u002Fen\u002Fxlsx\u002Ffreeze-filter","en\u002F06.xlsx\u002F12.freeze-filter",{"title":300,"path":301,"stem":302},"Data Validation","\u002Fen\u002Fxlsx\u002Fvalidation","en\u002F06.xlsx\u002F13.validation",{"title":232,"path":304,"stem":305},"\u002Fen\u002Fxlsx\u002Fcomments","en\u002F06.xlsx\u002F14.comments",{"title":307,"path":308,"stem":309},"Protection","\u002Fen\u002Fxlsx\u002Fprotection","en\u002F06.xlsx\u002F15.protection",{"title":157,"path":311,"stem":312},"\u002Fen\u002Fxlsx\u002Fexport","en\u002F06.xlsx\u002F16.export",{"title":72,"path":314,"stem":315},"\u002Fen\u002Fxlsx\u002Fparsing","en\u002F06.xlsx\u002F17.parsing",{"title":164,"path":317,"stem":318},"\u002Fen\u002Fxlsx\u002Fpatch","en\u002F06.xlsx\u002F18.patch",{"id":320,"title":42,"body":321,"description":2361,"extension":2362,"links":2363,"meta":2364,"navigation":475,"path":43,"seo":2365,"stem":44,"__hash__":2366},"docs_en\u002Fen\u002F02.core\u002F02.descriptors.md",{"type":322,"value":323,"toc":2343},"minimark",[324,343,348,355,404,415,419,426,590,593,699,702,1063,1067,1070,1462,1466,1469,1498,1502,1509,1543,1546,1549,1577,1581,1588,1751,1755,1758,1799,1876,1880,1884,1887,1973,1977,1980,2071,2075,2078,2212,2216,2226,2255,2258,2269,2273,2339],[325,326,327,328,331,332,334,335,337,338,342],"p",{},"All OOXML XML parts in ",[329,330,98],"code",{},", ",[329,333,174],{},", and ",[329,336,255],{}," are defined as ",[339,340,341],"strong",{},"descriptors"," — plain objects that declare how to map between TypeScript options objects and XML. The same descriptor drives both directions: stringify (JSON → XML) and parse (XML → JSON).",[344,345,347],"h2",{"id":346},"core-concepts","Core Concepts",[325,349,350,351,354],{},"A ",[339,352,353],{},"descriptor"," describes the bidirectional mapping between a TypeScript options interface and its XML representation. There are two kinds:",[356,357,358,374],"table",{},[359,360,361],"thead",{},[362,363,364,368,371],"tr",{},[365,366,367],"th",{},"Kind",[365,369,370],{},"When to use",[365,372,373],{},"Example",[375,376,377,391],"tbody",{},[362,378,379,385,388],{},[380,381,382],"td",{},[329,383,384],{},"ElementDescriptor\u003CT>",[380,386,387],{},"Declarative attr\u002Fchild mapping",[380,389,390],{},"Simple elements with predictable structure",[362,392,393,398,401],{},[380,394,395],{},[329,396,397],{},"CustomDescriptor\u003CT>",[380,399,400],{},"Complex logic that doesn't fit the declarative model",[380,402,403],{},"Elements with conditional content, cross-references",[325,405,406,407,410,411,414],{},"Both are consumed by the same runtime functions: ",[329,408,409],{},"stringify(desc, value, ctx)"," and ",[329,412,413],{},"parse(desc, element, ctx)",".",[344,416,418],{"id":417},"elementdescriptor","ElementDescriptor",[325,420,421,422,425],{},"A declarative mapping built with the ",[329,423,424],{},"element()"," fluent builder:",[427,428,433],"pre",{"className":429,"code":430,"language":431,"meta":432,"style":432},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { element } from \"@office-open\u002Fcore\";\n\ninterface AlignmentOptions {\n  val?: string;\n}\n\nconst alignmentDesc = element\u003CAlignmentOptions>(\"w:jc\").attr(\"val\", \"w:val\").build();\n","ts","",[329,434,435,470,477,491,506,512,517],{"__ignoreMap":432},[436,437,440,444,448,452,455,458,461,464,467],"span",{"class":438,"line":439},"line",1,[436,441,443],{"class":442},"s7zQu","import",[436,445,447],{"class":446},"sMK4o"," {",[436,449,451],{"class":450},"sTEyZ"," element",[436,453,454],{"class":446}," }",[436,456,457],{"class":442}," from",[436,459,460],{"class":446}," \"",[436,462,38],{"class":463},"sfazB",[436,465,466],{"class":446},"\"",[436,468,469],{"class":446},";\n",[436,471,473],{"class":438,"line":472},2,[436,474,476],{"emptyLinePlaceholder":475},true,"\n",[436,478,480,484,488],{"class":438,"line":479},3,[436,481,483],{"class":482},"spNyl","interface",[436,485,487],{"class":486},"sBMFI"," AlignmentOptions",[436,489,490],{"class":446}," {\n",[436,492,494,498,501,504],{"class":438,"line":493},4,[436,495,497],{"class":496},"swJcz","  val",[436,499,500],{"class":446},"?:",[436,502,503],{"class":486}," string",[436,505,469],{"class":446},[436,507,509],{"class":438,"line":508},5,[436,510,511],{"class":446},"}\n",[436,513,515],{"class":438,"line":514},6,[436,516,476],{"emptyLinePlaceholder":475},[436,518,520,523,526,529,532,535,538,541,544,546,549,551,554,556,559,561,563,566,568,571,573,576,578,580,582,585,588],{"class":438,"line":519},7,[436,521,522],{"class":482},"const",[436,524,525],{"class":450}," alignmentDesc ",[436,527,528],{"class":446},"=",[436,530,451],{"class":531},"s2Zo4",[436,533,534],{"class":446},"\u003C",[436,536,537],{"class":486},"AlignmentOptions",[436,539,540],{"class":446},">",[436,542,543],{"class":450},"(",[436,545,466],{"class":446},[436,547,548],{"class":463},"w:jc",[436,550,466],{"class":446},[436,552,553],{"class":450},")",[436,555,414],{"class":446},[436,557,558],{"class":531},"attr",[436,560,543],{"class":450},[436,562,466],{"class":446},[436,564,565],{"class":463},"val",[436,567,466],{"class":446},[436,569,570],{"class":446},",",[436,572,460],{"class":446},[436,574,575],{"class":463},"w:val",[436,577,466],{"class":446},[436,579,553],{"class":450},[436,581,414],{"class":446},[436,583,584],{"class":531},"build",[436,586,587],{"class":450},"()",[436,589,469],{"class":446},[325,591,592],{},"The builder supports these chainable methods:",[356,594,595,607],{},[359,596,597],{},[362,598,599,602,605],{},[365,600,601],{},"Method",[365,603,604],{},"Purpose",[365,606,373],{},[375,608,609,624,639,654,669,684],{},[362,610,611,616,619],{},[380,612,613],{},[329,614,615],{},".attr(key, xmlName, opts?)",[380,617,618],{},"Map a property to an XML attribute",[380,620,621],{},[329,622,623],{},".attr(\"val\", \"w:val\")",[362,625,626,631,634],{},[380,627,628],{},[329,629,630],{},".child(key, tag, desc)",[380,632,633],{},"Map a property to a single child element",[380,635,636],{},[329,637,638],{},".child(\"spacing\", \"w:spacing\", spacingDesc)",[362,640,641,646,649],{},[380,642,643],{},[329,644,645],{},".children(key, tag, desc)",[380,647,648],{},"Map a property to repeating child elements",[380,650,651],{},[329,652,653],{},".children(\"runs\", \"w:r\", runDesc)",[362,655,656,661,664],{},[380,657,658],{},[329,659,660],{},".union(key, variants)",[380,662,663],{},"Map a property to one-of-several child elements",[380,665,666],{},[329,667,668],{},".union(\"fill\", [{ tag: \"a:solidFill\", ... }])",[362,670,671,676,679],{},[380,672,673],{},[329,674,675],{},".text(key)",[380,677,678],{},"Map a property to text content",[380,680,681],{},[329,682,683],{},".text(\"content\")",[362,685,686,691,694],{},[380,687,688],{},[329,689,690],{},".custom(spec)",[380,692,693],{},"Add a custom content handler",[380,695,696],{},[329,697,698],{},".custom(myCustomDesc)",[325,700,701],{},"A more complete example:",[427,703,705],{"className":429,"code":704,"language":431,"meta":432,"style":432},"import { element, stringify, parse } from \"@office-open\u002Fcore\";\n\ninterface SpacingOptions {\n  before?: number;\n  after?: number;\n  line?: number;\n  lineRule?: string;\n}\n\nconst spacingDesc = element\u003CSpacingOptions>(\"w:spacing\")\n  .attr(\"before\", \"w:before\")\n  .attr(\"after\", \"w:after\")\n  .attr(\"line\", \"w:line\")\n  .attr(\"lineRule\", \"w:lineRule\")\n  .build();\n\n\u002F\u002F Write path: Options → XML string\nconst xml = stringify(spacingDesc, { before: 240, after: 120 }, ctx);\n\u002F\u002F \u003Cw:spacing w:before=\"240\" w:after=\"120\"\u002F>\n\n\u002F\u002F Read path: XML Element → Options\nconst opts = parse(spacingDesc, spacingElement, readCtx);\n\u002F\u002F { before: \"240\", after: \"120\" }\n",[329,706,707,737,741,750,762,773,784,795,800,805,836,864,891,917,944,955,960,967,1014,1020,1025,1031,1057],{"__ignoreMap":432},[436,708,709,711,713,715,717,720,722,725,727,729,731,733,735],{"class":438,"line":439},[436,710,443],{"class":442},[436,712,447],{"class":446},[436,714,451],{"class":450},[436,716,570],{"class":446},[436,718,719],{"class":450}," stringify",[436,721,570],{"class":446},[436,723,724],{"class":450}," parse",[436,726,454],{"class":446},[436,728,457],{"class":442},[436,730,460],{"class":446},[436,732,38],{"class":463},[436,734,466],{"class":446},[436,736,469],{"class":446},[436,738,739],{"class":438,"line":472},[436,740,476],{"emptyLinePlaceholder":475},[436,742,743,745,748],{"class":438,"line":479},[436,744,483],{"class":482},[436,746,747],{"class":486}," SpacingOptions",[436,749,490],{"class":446},[436,751,752,755,757,760],{"class":438,"line":493},[436,753,754],{"class":496},"  before",[436,756,500],{"class":446},[436,758,759],{"class":486}," number",[436,761,469],{"class":446},[436,763,764,767,769,771],{"class":438,"line":508},[436,765,766],{"class":496},"  after",[436,768,500],{"class":446},[436,770,759],{"class":486},[436,772,469],{"class":446},[436,774,775,778,780,782],{"class":438,"line":514},[436,776,777],{"class":496},"  line",[436,779,500],{"class":446},[436,781,759],{"class":486},[436,783,469],{"class":446},[436,785,786,789,791,793],{"class":438,"line":519},[436,787,788],{"class":496},"  lineRule",[436,790,500],{"class":446},[436,792,503],{"class":486},[436,794,469],{"class":446},[436,796,798],{"class":438,"line":797},8,[436,799,511],{"class":446},[436,801,803],{"class":438,"line":802},9,[436,804,476],{"emptyLinePlaceholder":475},[436,806,808,810,813,815,817,819,822,824,826,828,831,833],{"class":438,"line":807},10,[436,809,522],{"class":482},[436,811,812],{"class":450}," spacingDesc ",[436,814,528],{"class":446},[436,816,451],{"class":531},[436,818,534],{"class":446},[436,820,821],{"class":486},"SpacingOptions",[436,823,540],{"class":446},[436,825,543],{"class":450},[436,827,466],{"class":446},[436,829,830],{"class":463},"w:spacing",[436,832,466],{"class":446},[436,834,835],{"class":450},")\n",[436,837,839,842,844,846,848,851,853,855,857,860,862],{"class":438,"line":838},11,[436,840,841],{"class":446},"  .",[436,843,558],{"class":531},[436,845,543],{"class":450},[436,847,466],{"class":446},[436,849,850],{"class":463},"before",[436,852,466],{"class":446},[436,854,570],{"class":446},[436,856,460],{"class":446},[436,858,859],{"class":463},"w:before",[436,861,466],{"class":446},[436,863,835],{"class":450},[436,865,867,869,871,873,875,878,880,882,884,887,889],{"class":438,"line":866},12,[436,868,841],{"class":446},[436,870,558],{"class":531},[436,872,543],{"class":450},[436,874,466],{"class":446},[436,876,877],{"class":463},"after",[436,879,466],{"class":446},[436,881,570],{"class":446},[436,883,460],{"class":446},[436,885,886],{"class":463},"w:after",[436,888,466],{"class":446},[436,890,835],{"class":450},[436,892,894,896,898,900,902,904,906,908,910,913,915],{"class":438,"line":893},13,[436,895,841],{"class":446},[436,897,558],{"class":531},[436,899,543],{"class":450},[436,901,466],{"class":446},[436,903,438],{"class":463},[436,905,466],{"class":446},[436,907,570],{"class":446},[436,909,460],{"class":446},[436,911,912],{"class":463},"w:line",[436,914,466],{"class":446},[436,916,835],{"class":450},[436,918,920,922,924,926,928,931,933,935,937,940,942],{"class":438,"line":919},14,[436,921,841],{"class":446},[436,923,558],{"class":531},[436,925,543],{"class":450},[436,927,466],{"class":446},[436,929,930],{"class":463},"lineRule",[436,932,466],{"class":446},[436,934,570],{"class":446},[436,936,460],{"class":446},[436,938,939],{"class":463},"w:lineRule",[436,941,466],{"class":446},[436,943,835],{"class":450},[436,945,947,949,951,953],{"class":438,"line":946},15,[436,948,841],{"class":446},[436,950,584],{"class":531},[436,952,587],{"class":450},[436,954,469],{"class":446},[436,956,958],{"class":438,"line":957},16,[436,959,476],{"emptyLinePlaceholder":475},[436,961,963],{"class":438,"line":962},17,[436,964,966],{"class":965},"sHwdD","\u002F\u002F Write path: Options → XML string\n",[436,968,970,972,975,977,979,982,984,986,989,992,996,998,1001,1003,1006,1009,1012],{"class":438,"line":969},18,[436,971,522],{"class":482},[436,973,974],{"class":450}," xml ",[436,976,528],{"class":446},[436,978,719],{"class":531},[436,980,981],{"class":450},"(spacingDesc",[436,983,570],{"class":446},[436,985,447],{"class":446},[436,987,988],{"class":496}," before",[436,990,991],{"class":446},":",[436,993,995],{"class":994},"sbssI"," 240",[436,997,570],{"class":446},[436,999,1000],{"class":496}," after",[436,1002,991],{"class":446},[436,1004,1005],{"class":994}," 120",[436,1007,1008],{"class":446}," },",[436,1010,1011],{"class":450}," ctx)",[436,1013,469],{"class":446},[436,1015,1017],{"class":438,"line":1016},19,[436,1018,1019],{"class":965},"\u002F\u002F \u003Cw:spacing w:before=\"240\" w:after=\"120\"\u002F>\n",[436,1021,1023],{"class":438,"line":1022},20,[436,1024,476],{"emptyLinePlaceholder":475},[436,1026,1028],{"class":438,"line":1027},21,[436,1029,1030],{"class":965},"\u002F\u002F Read path: XML Element → Options\n",[436,1032,1034,1036,1039,1041,1043,1045,1047,1050,1052,1055],{"class":438,"line":1033},22,[436,1035,522],{"class":482},[436,1037,1038],{"class":450}," opts ",[436,1040,528],{"class":446},[436,1042,724],{"class":531},[436,1044,981],{"class":450},[436,1046,570],{"class":446},[436,1048,1049],{"class":450}," spacingElement",[436,1051,570],{"class":446},[436,1053,1054],{"class":450}," readCtx)",[436,1056,469],{"class":446},[436,1058,1060],{"class":438,"line":1059},23,[436,1061,1062],{"class":965},"\u002F\u002F { before: \"240\", after: \"120\" }\n",[344,1064,1066],{"id":1065},"customdescriptor","CustomDescriptor",[325,1068,1069],{},"For elements with complex logic that doesn't fit the declarative model:",[427,1071,1073],{"className":429,"code":1072,"language":431,"meta":432,"style":432},"import type { CustomDescriptor } from \"@office-open\u002Fcore\";\n\ninterface MyComplexOptions {\n  items: string[];\n  separator?: string;\n}\n\nconst myComplexDesc: CustomDescriptor\u003CMyComplexOptions> = {\n  kind: \"custom\",\n  stringify(value, ctx) {\n    const parts = value.items.map((item) => `\u003Cw:item val=\"${item}\"\u002F>`).join(\"\");\n    return `\u003Cw:container>${parts}\u003C\u002Fw:container>`;\n  },\n  parse(el, ctx) {\n    const items = [...el.children]\n      .filter((c) => c.name === \"w:item\")\n      .map((c) => c.attributes?.[\"w:val\"] ?? \"\");\n    return { items } as any;\n  },\n};\n",[329,1074,1075,1099,1103,1112,1126,1137,1141,1145,1168,1185,1205,1276,1300,1305,1323,1348,1387,1435,1453,1457],{"__ignoreMap":432},[436,1076,1077,1079,1082,1084,1087,1089,1091,1093,1095,1097],{"class":438,"line":439},[436,1078,443],{"class":442},[436,1080,1081],{"class":442}," type",[436,1083,447],{"class":446},[436,1085,1086],{"class":450}," CustomDescriptor",[436,1088,454],{"class":446},[436,1090,457],{"class":442},[436,1092,460],{"class":446},[436,1094,38],{"class":463},[436,1096,466],{"class":446},[436,1098,469],{"class":446},[436,1100,1101],{"class":438,"line":472},[436,1102,476],{"emptyLinePlaceholder":475},[436,1104,1105,1107,1110],{"class":438,"line":479},[436,1106,483],{"class":482},[436,1108,1109],{"class":486}," MyComplexOptions",[436,1111,490],{"class":446},[436,1113,1114,1117,1119,1121,1124],{"class":438,"line":493},[436,1115,1116],{"class":496},"  items",[436,1118,991],{"class":446},[436,1120,503],{"class":486},[436,1122,1123],{"class":450},"[]",[436,1125,469],{"class":446},[436,1127,1128,1131,1133,1135],{"class":438,"line":508},[436,1129,1130],{"class":496},"  separator",[436,1132,500],{"class":446},[436,1134,503],{"class":486},[436,1136,469],{"class":446},[436,1138,1139],{"class":438,"line":514},[436,1140,511],{"class":446},[436,1142,1143],{"class":438,"line":519},[436,1144,476],{"emptyLinePlaceholder":475},[436,1146,1147,1149,1152,1154,1156,1158,1161,1163,1166],{"class":438,"line":797},[436,1148,522],{"class":482},[436,1150,1151],{"class":450}," myComplexDesc",[436,1153,991],{"class":446},[436,1155,1086],{"class":486},[436,1157,534],{"class":446},[436,1159,1160],{"class":486},"MyComplexOptions",[436,1162,540],{"class":446},[436,1164,1165],{"class":446}," =",[436,1167,490],{"class":446},[436,1169,1170,1173,1175,1177,1180,1182],{"class":438,"line":802},[436,1171,1172],{"class":496},"  kind",[436,1174,991],{"class":446},[436,1176,460],{"class":446},[436,1178,1179],{"class":463},"custom",[436,1181,466],{"class":446},[436,1183,1184],{"class":446},",\n",[436,1186,1187,1190,1192,1196,1198,1201,1203],{"class":438,"line":807},[436,1188,1189],{"class":496},"  stringify",[436,1191,543],{"class":446},[436,1193,1195],{"class":1194},"sHdIc","value",[436,1197,570],{"class":446},[436,1199,1200],{"class":1194}," ctx",[436,1202,553],{"class":446},[436,1204,490],{"class":446},[436,1206,1207,1210,1213,1215,1218,1220,1223,1225,1228,1230,1232,1235,1237,1240,1243,1246,1249,1251,1254,1257,1260,1262,1264,1267,1269,1272,1274],{"class":438,"line":838},[436,1208,1209],{"class":482},"    const",[436,1211,1212],{"class":450}," parts",[436,1214,1165],{"class":446},[436,1216,1217],{"class":450}," value",[436,1219,414],{"class":446},[436,1221,1222],{"class":450},"items",[436,1224,414],{"class":446},[436,1226,1227],{"class":531},"map",[436,1229,543],{"class":496},[436,1231,543],{"class":446},[436,1233,1234],{"class":1194},"item",[436,1236,553],{"class":446},[436,1238,1239],{"class":482}," =>",[436,1241,1242],{"class":446}," `",[436,1244,1245],{"class":463},"\u003Cw:item val=\"",[436,1247,1248],{"class":446},"${",[436,1250,1234],{"class":450},[436,1252,1253],{"class":446},"}",[436,1255,1256],{"class":463},"\"\u002F>",[436,1258,1259],{"class":446},"`",[436,1261,553],{"class":496},[436,1263,414],{"class":446},[436,1265,1266],{"class":531},"join",[436,1268,543],{"class":496},[436,1270,1271],{"class":446},"\"\"",[436,1273,553],{"class":496},[436,1275,469],{"class":446},[436,1277,1278,1281,1283,1286,1288,1291,1293,1296,1298],{"class":438,"line":866},[436,1279,1280],{"class":442},"    return",[436,1282,1242],{"class":446},[436,1284,1285],{"class":463},"\u003Cw:container>",[436,1287,1248],{"class":446},[436,1289,1290],{"class":450},"parts",[436,1292,1253],{"class":446},[436,1294,1295],{"class":463},"\u003C\u002Fw:container>",[436,1297,1259],{"class":446},[436,1299,469],{"class":446},[436,1301,1302],{"class":438,"line":893},[436,1303,1304],{"class":446},"  },\n",[436,1306,1307,1310,1312,1315,1317,1319,1321],{"class":438,"line":919},[436,1308,1309],{"class":496},"  parse",[436,1311,543],{"class":446},[436,1313,1314],{"class":1194},"el",[436,1316,570],{"class":446},[436,1318,1200],{"class":1194},[436,1320,553],{"class":446},[436,1322,490],{"class":446},[436,1324,1325,1327,1330,1332,1335,1338,1340,1342,1345],{"class":438,"line":946},[436,1326,1209],{"class":482},[436,1328,1329],{"class":450}," items",[436,1331,1165],{"class":446},[436,1333,1334],{"class":496}," [",[436,1336,1337],{"class":446},"...",[436,1339,1314],{"class":450},[436,1341,414],{"class":446},[436,1343,1344],{"class":450},"children",[436,1346,1347],{"class":496},"]\n",[436,1349,1350,1353,1356,1358,1360,1363,1365,1367,1370,1372,1375,1378,1380,1383,1385],{"class":438,"line":957},[436,1351,1352],{"class":446},"      .",[436,1354,1355],{"class":531},"filter",[436,1357,543],{"class":496},[436,1359,543],{"class":446},[436,1361,1362],{"class":1194},"c",[436,1364,553],{"class":446},[436,1366,1239],{"class":482},[436,1368,1369],{"class":450}," c",[436,1371,414],{"class":446},[436,1373,1374],{"class":450},"name",[436,1376,1377],{"class":446}," ===",[436,1379,460],{"class":446},[436,1381,1382],{"class":463},"w:item",[436,1384,466],{"class":446},[436,1386,835],{"class":496},[436,1388,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1410,1413,1416,1418,1420,1422,1425,1428,1431,1433],{"class":438,"line":962},[436,1390,1352],{"class":446},[436,1392,1227],{"class":531},[436,1394,543],{"class":496},[436,1396,543],{"class":446},[436,1398,1362],{"class":1194},[436,1400,553],{"class":446},[436,1402,1239],{"class":482},[436,1404,1369],{"class":450},[436,1406,414],{"class":446},[436,1408,1409],{"class":450},"attributes",[436,1411,1412],{"class":446},"?.",[436,1414,1415],{"class":496},"[",[436,1417,466],{"class":446},[436,1419,575],{"class":463},[436,1421,466],{"class":446},[436,1423,1424],{"class":496},"] ",[436,1426,1427],{"class":446},"??",[436,1429,1430],{"class":446}," \"\"",[436,1432,553],{"class":496},[436,1434,469],{"class":446},[436,1436,1437,1439,1441,1443,1445,1448,1451],{"class":438,"line":969},[436,1438,1280],{"class":442},[436,1440,447],{"class":446},[436,1442,1329],{"class":450},[436,1444,454],{"class":446},[436,1446,1447],{"class":442}," as",[436,1449,1450],{"class":486}," any",[436,1452,469],{"class":446},[436,1454,1455],{"class":438,"line":1016},[436,1456,1304],{"class":446},[436,1458,1459],{"class":438,"line":1022},[436,1460,1461],{"class":446},"};\n",[344,1463,1465],{"id":1464},"runtime-functions","Runtime Functions",[325,1467,1468],{},"The runtime is a single step in each direction — no intermediate representation:",[427,1470,1472],{"className":429,"code":1471,"language":431,"meta":432,"style":432},"import { stringify, parse } from \"@office-open\u002Fcore\";\n",[329,1473,1474],{"__ignoreMap":432},[436,1475,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496],{"class":438,"line":439},[436,1477,443],{"class":442},[436,1479,447],{"class":446},[436,1481,719],{"class":450},[436,1483,570],{"class":446},[436,1485,724],{"class":450},[436,1487,454],{"class":446},[436,1489,457],{"class":442},[436,1491,460],{"class":446},[436,1493,38],{"class":463},[436,1495,466],{"class":446},[436,1497,469],{"class":446},[1499,1500,409],"h3",{"id":1501},"stringifydesc-value-ctx",[325,1503,1504,1505,1508],{},"Serialize an options object to an XML string. Returns ",[329,1506,1507],{},"undefined"," when an optional element should be omitted.",[427,1510,1512],{"className":429,"code":1511,"language":431,"meta":432,"style":432},"const xml = stringify(spacingDesc, { before: 240 }, writeCtx);\n",[329,1513,1514],{"__ignoreMap":432},[436,1515,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1541],{"class":438,"line":439},[436,1517,522],{"class":482},[436,1519,974],{"class":450},[436,1521,528],{"class":446},[436,1523,719],{"class":531},[436,1525,981],{"class":450},[436,1527,570],{"class":446},[436,1529,447],{"class":446},[436,1531,988],{"class":496},[436,1533,991],{"class":446},[436,1535,995],{"class":994},[436,1537,1008],{"class":446},[436,1539,1540],{"class":450}," writeCtx)",[436,1542,469],{"class":446},[1499,1544,413],{"id":1545},"parsedesc-element-ctx",[325,1547,1548],{},"Parse an XML element into a partial options object.",[427,1550,1552],{"className":429,"code":1551,"language":431,"meta":432,"style":432},"const result = parse(spacingDesc, element, readCtx);\n",[329,1553,1554],{"__ignoreMap":432},[436,1555,1556,1558,1561,1563,1565,1567,1569,1571,1573,1575],{"class":438,"line":439},[436,1557,522],{"class":482},[436,1559,1560],{"class":450}," result ",[436,1562,528],{"class":446},[436,1564,724],{"class":531},[436,1566,981],{"class":450},[436,1568,570],{"class":446},[436,1570,451],{"class":450},[436,1572,570],{"class":446},[436,1574,1054],{"class":450},[436,1576,469],{"class":446},[344,1578,1580],{"id":1579},"attribute-options","Attribute Options",[325,1582,1583,1584,1587],{},"The ",[329,1585,1586],{},".attr()"," method accepts optional encode\u002Fdecode functions and a default value:",[427,1589,1591],{"className":429,"code":1590,"language":431,"meta":432,"style":432},"element\u003CMyOpts>(\"w:b\")\n  .attr(\"val\", \"w:val\", {\n    default: true, \u002F\u002F skip when value equals default\n    encode: (v) => (v ? undefined : \"0\"), \u002F\u002F custom XML value\n    decode: (raw) => raw !== \"0\", \u002F\u002F custom JS value\n  })\n  .build();\n",[329,1592,1593,1616,1642,1658,1701,1734,1741],{"__ignoreMap":432},[436,1594,1595,1598,1600,1603,1605,1607,1609,1612,1614],{"class":438,"line":439},[436,1596,1597],{"class":531},"element",[436,1599,534],{"class":446},[436,1601,1602],{"class":486},"MyOpts",[436,1604,540],{"class":446},[436,1606,543],{"class":450},[436,1608,466],{"class":446},[436,1610,1611],{"class":463},"w:b",[436,1613,466],{"class":446},[436,1615,835],{"class":450},[436,1617,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640],{"class":438,"line":472},[436,1619,841],{"class":446},[436,1621,558],{"class":531},[436,1623,543],{"class":450},[436,1625,466],{"class":446},[436,1627,565],{"class":463},[436,1629,466],{"class":446},[436,1631,570],{"class":446},[436,1633,460],{"class":446},[436,1635,575],{"class":463},[436,1637,466],{"class":446},[436,1639,570],{"class":446},[436,1641,490],{"class":446},[436,1643,1644,1647,1649,1653,1655],{"class":438,"line":479},[436,1645,1646],{"class":496},"    default",[436,1648,991],{"class":446},[436,1650,1652],{"class":1651},"sfNiH"," true",[436,1654,570],{"class":446},[436,1656,1657],{"class":965}," \u002F\u002F skip when value equals default\n",[436,1659,1660,1663,1665,1668,1671,1673,1675,1678,1681,1684,1687,1689,1692,1694,1696,1698],{"class":438,"line":493},[436,1661,1662],{"class":531},"    encode",[436,1664,991],{"class":446},[436,1666,1667],{"class":446}," (",[436,1669,1670],{"class":1194},"v",[436,1672,553],{"class":446},[436,1674,1239],{"class":482},[436,1676,1677],{"class":450}," (v ",[436,1679,1680],{"class":446},"?",[436,1682,1683],{"class":446}," undefined",[436,1685,1686],{"class":446}," :",[436,1688,460],{"class":446},[436,1690,1691],{"class":463},"0",[436,1693,466],{"class":446},[436,1695,553],{"class":450},[436,1697,570],{"class":446},[436,1699,1700],{"class":965}," \u002F\u002F custom XML value\n",[436,1702,1703,1706,1708,1710,1713,1715,1717,1720,1723,1725,1727,1729,1731],{"class":438,"line":508},[436,1704,1705],{"class":531},"    decode",[436,1707,991],{"class":446},[436,1709,1667],{"class":446},[436,1711,1712],{"class":1194},"raw",[436,1714,553],{"class":446},[436,1716,1239],{"class":482},[436,1718,1719],{"class":450}," raw ",[436,1721,1722],{"class":446},"!==",[436,1724,460],{"class":446},[436,1726,1691],{"class":463},[436,1728,466],{"class":446},[436,1730,570],{"class":446},[436,1732,1733],{"class":965}," \u002F\u002F custom JS value\n",[436,1735,1736,1739],{"class":438,"line":514},[436,1737,1738],{"class":446},"  }",[436,1740,835],{"class":450},[436,1742,1743,1745,1747,1749],{"class":438,"line":519},[436,1744,841],{"class":446},[436,1746,584],{"class":531},[436,1748,587],{"class":450},[436,1750,469],{"class":446},[344,1752,1754],{"id":1753},"ooxml-helpers","OOXML Helpers",[325,1756,1757],{},"Common encode\u002Fdecode patterns for OOXML value types:",[427,1759,1761],{"className":429,"code":1760,"language":431,"meta":432,"style":432},"import { boolEncode, boolDecode, enumEncode, enumDecode } from \"@office-open\u002Fcore\";\n",[329,1762,1763],{"__ignoreMap":432},[436,1764,1765,1767,1769,1772,1774,1777,1779,1782,1784,1787,1789,1791,1793,1795,1797],{"class":438,"line":439},[436,1766,443],{"class":442},[436,1768,447],{"class":446},[436,1770,1771],{"class":450}," boolEncode",[436,1773,570],{"class":446},[436,1775,1776],{"class":450}," boolDecode",[436,1778,570],{"class":446},[436,1780,1781],{"class":450}," enumEncode",[436,1783,570],{"class":446},[436,1785,1786],{"class":450}," enumDecode",[436,1788,454],{"class":446},[436,1790,457],{"class":442},[436,1792,460],{"class":446},[436,1794,38],{"class":463},[436,1796,466],{"class":446},[436,1798,469],{"class":446},[356,1800,1801,1814],{},[359,1802,1803],{},[362,1804,1805,1808,1811],{},[365,1806,1807],{},"Helper",[365,1809,1810],{},"Pattern",[365,1812,1813],{},"Usage",[375,1815,1816,1831,1846,1861],{},[362,1817,1818,1823,1826],{},[380,1819,1820],{},[329,1821,1822],{},"boolEncode",[380,1824,1825],{},"CT_OnOff: true → omit val, false → \"0\"",[380,1827,1828],{},[329,1829,1830],{},".attr(\"bold\", \"w:val\", { encode: boolEncode })",[362,1832,1833,1838,1841],{},[380,1834,1835],{},[329,1836,1837],{},"boolDecode",[380,1839,1840],{},"Absent\u002F\"true\"\u002F\"1\" → true, \"0\"\u002F\"false\" → false",[380,1842,1843],{},[329,1844,1845],{},".attr(\"bold\", \"w:val\", { decode: boolDecode })",[362,1847,1848,1853,1856],{},[380,1849,1850],{},[329,1851,1852],{},"enumEncode(map)",[380,1854,1855],{},"JS value → XML value via mapping",[380,1857,1858],{},[329,1859,1860],{},".attr(\"align\", \"w:val\", { encode: enumEncode(ALIGN_MAP) })",[362,1862,1863,1868,1871],{},[380,1864,1865],{},[329,1866,1867],{},"enumDecode(map)",[380,1869,1870],{},"XML value → JS value via inverse mapping",[380,1872,1873],{},[329,1874,1875],{},".attr(\"align\", \"w:val\", { decode: enumDecode(ALIGN_MAP) })",[344,1877,1879],{"id":1878},"context-objects","Context Objects",[1499,1881,1883],{"id":1882},"writecontext","WriteContext",[325,1885,1886],{},"Passed during stringify (write path):",[427,1888,1890],{"className":429,"code":1889,"language":431,"meta":432,"style":432},"interface WriteContext {\n  addRelationship(type: string, target: string, mode?: string): string;\n  addMedia(data: Uint8Array, type: string): string;\n}\n",[329,1891,1892,1901,1940,1969],{"__ignoreMap":432},[436,1893,1894,1896,1899],{"class":438,"line":439},[436,1895,483],{"class":482},[436,1897,1898],{"class":486}," WriteContext",[436,1900,490],{"class":446},[436,1902,1903,1906,1908,1911,1913,1915,1917,1920,1922,1924,1926,1929,1931,1933,1936,1938],{"class":438,"line":472},[436,1904,1905],{"class":496},"  addRelationship",[436,1907,543],{"class":446},[436,1909,1910],{"class":1194},"type",[436,1912,991],{"class":446},[436,1914,503],{"class":486},[436,1916,570],{"class":446},[436,1918,1919],{"class":1194}," target",[436,1921,991],{"class":446},[436,1923,503],{"class":486},[436,1925,570],{"class":446},[436,1927,1928],{"class":1194}," mode",[436,1930,500],{"class":446},[436,1932,503],{"class":486},[436,1934,1935],{"class":446},"):",[436,1937,503],{"class":486},[436,1939,469],{"class":446},[436,1941,1942,1945,1947,1950,1952,1955,1957,1959,1961,1963,1965,1967],{"class":438,"line":479},[436,1943,1944],{"class":496},"  addMedia",[436,1946,543],{"class":446},[436,1948,1949],{"class":1194},"data",[436,1951,991],{"class":446},[436,1953,1954],{"class":486}," Uint8Array",[436,1956,570],{"class":446},[436,1958,1081],{"class":1194},[436,1960,991],{"class":446},[436,1962,503],{"class":486},[436,1964,1935],{"class":446},[436,1966,503],{"class":486},[436,1968,469],{"class":446},[436,1970,1971],{"class":438,"line":493},[436,1972,511],{"class":446},[1499,1974,1976],{"id":1975},"readcontext","ReadContext",[325,1978,1979],{},"Passed during parse (read path):",[427,1981,1983],{"className":429,"code":1982,"language":431,"meta":432,"style":432},"interface ReadContext {\n  resolveRelationship(rId: string): string | undefined;\n  getPart(path: string): XmlElement | undefined;\n  getRaw(path: string): Uint8Array | undefined;\n}\n",[329,1984,1985,1994,2019,2044,2067],{"__ignoreMap":432},[436,1986,1987,1989,1992],{"class":438,"line":439},[436,1988,483],{"class":482},[436,1990,1991],{"class":486}," ReadContext",[436,1993,490],{"class":446},[436,1995,1996,1999,2001,2004,2006,2008,2010,2012,2015,2017],{"class":438,"line":472},[436,1997,1998],{"class":496},"  resolveRelationship",[436,2000,543],{"class":446},[436,2002,2003],{"class":1194},"rId",[436,2005,991],{"class":446},[436,2007,503],{"class":486},[436,2009,1935],{"class":446},[436,2011,503],{"class":486},[436,2013,2014],{"class":446}," |",[436,2016,1683],{"class":486},[436,2018,469],{"class":446},[436,2020,2021,2024,2026,2029,2031,2033,2035,2038,2040,2042],{"class":438,"line":479},[436,2022,2023],{"class":496},"  getPart",[436,2025,543],{"class":446},[436,2027,2028],{"class":1194},"path",[436,2030,991],{"class":446},[436,2032,503],{"class":486},[436,2034,1935],{"class":446},[436,2036,2037],{"class":486}," XmlElement",[436,2039,2014],{"class":446},[436,2041,1683],{"class":486},[436,2043,469],{"class":446},[436,2045,2046,2049,2051,2053,2055,2057,2059,2061,2063,2065],{"class":438,"line":493},[436,2047,2048],{"class":496},"  getRaw",[436,2050,543],{"class":446},[436,2052,2028],{"class":1194},[436,2054,991],{"class":446},[436,2056,503],{"class":486},[436,2058,1935],{"class":446},[436,2060,1954],{"class":486},[436,2062,2014],{"class":446},[436,2064,1683],{"class":486},[436,2066,469],{"class":446},[436,2068,2069],{"class":438,"line":508},[436,2070,511],{"class":446},[344,2072,2074],{"id":2073},"descriptorregistry","DescriptorRegistry",[325,2076,2077],{},"Registers all descriptors for coverage tracking. Each format package registers its descriptors at module load time:",[427,2079,2081],{"className":429,"code":2080,"language":431,"meta":432,"style":432},"import { DescriptorRegistry } from \"@office-open\u002Fcore\";\n\nDescriptorRegistry.register(\"w:p\", paragraphDesc);\nDescriptorRegistry.has(\"w:p\"); \u002F\u002F true\nDescriptorRegistry.get(\"w:p\"); \u002F\u002F paragraphDesc\nDescriptorRegistry.tags(); \u002F\u002F Set of all registered XML tags\nDescriptorRegistry.size; \u002F\u002F number of registered descriptors\n",[329,2082,2083,2104,2108,2133,2158,2182,2198],{"__ignoreMap":432},[436,2084,2085,2087,2089,2092,2094,2096,2098,2100,2102],{"class":438,"line":439},[436,2086,443],{"class":442},[436,2088,447],{"class":446},[436,2090,2091],{"class":450}," DescriptorRegistry",[436,2093,454],{"class":446},[436,2095,457],{"class":442},[436,2097,460],{"class":446},[436,2099,38],{"class":463},[436,2101,466],{"class":446},[436,2103,469],{"class":446},[436,2105,2106],{"class":438,"line":472},[436,2107,476],{"emptyLinePlaceholder":475},[436,2109,2110,2112,2114,2117,2119,2121,2124,2126,2128,2131],{"class":438,"line":479},[436,2111,2074],{"class":450},[436,2113,414],{"class":446},[436,2115,2116],{"class":531},"register",[436,2118,543],{"class":450},[436,2120,466],{"class":446},[436,2122,2123],{"class":463},"w:p",[436,2125,466],{"class":446},[436,2127,570],{"class":446},[436,2129,2130],{"class":450}," paragraphDesc)",[436,2132,469],{"class":446},[436,2134,2135,2137,2139,2142,2144,2146,2148,2150,2152,2155],{"class":438,"line":493},[436,2136,2074],{"class":450},[436,2138,414],{"class":446},[436,2140,2141],{"class":531},"has",[436,2143,543],{"class":450},[436,2145,466],{"class":446},[436,2147,2123],{"class":463},[436,2149,466],{"class":446},[436,2151,553],{"class":450},[436,2153,2154],{"class":446},";",[436,2156,2157],{"class":965}," \u002F\u002F true\n",[436,2159,2160,2162,2164,2167,2169,2171,2173,2175,2177,2179],{"class":438,"line":508},[436,2161,2074],{"class":450},[436,2163,414],{"class":446},[436,2165,2166],{"class":531},"get",[436,2168,543],{"class":450},[436,2170,466],{"class":446},[436,2172,2123],{"class":463},[436,2174,466],{"class":446},[436,2176,553],{"class":450},[436,2178,2154],{"class":446},[436,2180,2181],{"class":965}," \u002F\u002F paragraphDesc\n",[436,2183,2184,2186,2188,2191,2193,2195],{"class":438,"line":514},[436,2185,2074],{"class":450},[436,2187,414],{"class":446},[436,2189,2190],{"class":531},"tags",[436,2192,587],{"class":450},[436,2194,2154],{"class":446},[436,2196,2197],{"class":965}," \u002F\u002F Set of all registered XML tags\n",[436,2199,2200,2202,2204,2207,2209],{"class":438,"line":519},[436,2201,2074],{"class":450},[436,2203,414],{"class":446},[436,2205,2206],{"class":450},"size",[436,2208,2154],{"class":446},[436,2210,2211],{"class":965}," \u002F\u002F number of registered descriptors\n",[344,2213,2215],{"id":2214},"when-to-use","When to Use",[325,2217,2218,2219,410,2222,2225],{},"You typically don't need to call ",[329,2220,2221],{},"stringify()",[329,2223,2224],{},"parse()"," directly — the format packages' top-level functions handle everything internally:",[2227,2228,2229,2243],"ul",{},[2230,2231,2232,2235,2236,2235,2239,2242],"li",{},[329,2233,2234],{},"generateDocument()"," \u002F ",[329,2237,2238],{},"generatePresentation()",[329,2240,2241],{},"generateWorkbook()"," — call stringify internally",[2230,2244,2245,2235,2248,2235,2251,2254],{},[329,2246,2247],{},"parseDocument()",[329,2249,2250],{},"parsePresentation()",[329,2252,2253],{},"parseWorkbook()"," — call parse internally",[325,2256,2257],{},"Use the descriptor system directly when you need to:",[2227,2259,2260,2263,2266],{},[2230,2261,2262],{},"Define custom OOXML elements not covered by the format packages",[2230,2264,2265],{},"Build format-specific extensions or plugins",[2230,2267,2268],{},"Implement bidirectional (stringify + parse) support for new XML parts",[344,2270,2272],{"id":2271},"naming-conventions","Naming Conventions",[356,2274,2275,2284],{},[359,2276,2277],{},[362,2278,2279,2282],{},[365,2280,2281],{},"Convention",[365,2283,373],{},[375,2285,2286,2305,2321],{},[362,2287,2288,2294],{},[380,2289,2290,2291],{},"Descriptor names: ",[329,2292,2293],{},"\u003Cpart>Desc",[380,2295,2296,331,2299,331,2302],{},[329,2297,2298],{},"spacingDesc",[329,2300,2301],{},"settingsDesc",[329,2303,2304],{},"slideDesc",[362,2306,2307,2313],{},[380,2308,2309,2310],{},"Options interfaces: ",[329,2311,2312],{},"\u003CPart>Options",[380,2314,2315,331,2318],{},[329,2316,2317],{},"WorkbookOptions",[329,2319,2320],{},"DocumentOptions",[362,2322,2323,2332],{},[380,2324,2325,2326,2235,2329],{},"Helper functions: ",[329,2327,2328],{},"stringify*()",[329,2330,2331],{},"parse*()",[380,2333,2334,331,2337],{},[329,2335,2336],{},"stringifyWorksheet()",[329,2338,2253],{},[2340,2341,2342],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":432,"searchDepth":472,"depth":472,"links":2344},[2345,2346,2347,2348,2352,2353,2354,2358,2359,2360],{"id":346,"depth":472,"text":347},{"id":417,"depth":472,"text":418},{"id":1065,"depth":472,"text":1066},{"id":1464,"depth":472,"text":1465,"children":2349},[2350,2351],{"id":1501,"depth":479,"text":409},{"id":1545,"depth":479,"text":413},{"id":1579,"depth":472,"text":1580},{"id":1753,"depth":472,"text":1754},{"id":1878,"depth":472,"text":1879,"children":2355},[2356,2357],{"id":1882,"depth":479,"text":1883},{"id":1975,"depth":479,"text":1976},{"id":2073,"depth":472,"text":2074},{"id":2214,"depth":472,"text":2215},{"id":2271,"depth":472,"text":2272},"Declarative XML mapping for OOXML elements — stringify and parse","md",null,{},{"title":42,"description":2361},"3DYoGwEGR0gINiTylCmdbSLn8LVyaIxcmenXKFAHhzk",[2368,2370],{"title":38,"path":39,"stem":40,"description":2369,"children":-1},"Shared OOXML infrastructure — descriptors, validators, converters, charts, and SmartArt",{"title":46,"path":47,"stem":48,"description":2371,"children":-1},"Runtime validation and type conversion for OOXML specification value types",1781226717361]