[{"data":1,"prerenderedAt":1613},["ShallowReactive",2],{"navigation_docs_en":3,"-en-core-descriptors":335,"-en-core-descriptors-surround":1608},[4,31,61,91,175,256],{"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,121,124,128,132,136,140,144,148,152,156,160,164,168,171],{"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":118,"path":119,"stem":120},"Text Boxes","\u002Fen\u002Fdocx\u002Ftextbox","en\u002F04.docx\u002F06.textbox",{"title":54,"path":122,"stem":123},"\u002Fen\u002Fdocx\u002Fcharts","en\u002F04.docx\u002F07.charts",{"title":125,"path":126,"stem":127},"SmartArt","\u002Fen\u002Fdocx\u002Fsmartart","en\u002F04.docx\u002F08.smartart",{"title":129,"path":130,"stem":131},"Media","\u002Fen\u002Fdocx\u002Fmedia","en\u002F04.docx\u002F09.media",{"title":133,"path":134,"stem":135},"Links","\u002Fen\u002Fdocx\u002Flinks","en\u002F04.docx\u002F10.links",{"title":137,"path":138,"stem":139},"Headers and Footers","\u002Fen\u002Fdocx\u002Fheaders-and-footers","en\u002F04.docx\u002F11.headers-and-footers",{"title":141,"path":142,"stem":143},"Equations and Symbols","\u002Fen\u002Fdocx\u002Fequations-and-symbols","en\u002F04.docx\u002F12.equations-and-symbols",{"title":145,"path":146,"stem":147},"Styles and Themes","\u002Fen\u002Fdocx\u002Fstyles-and-themes","en\u002F04.docx\u002F13.styles-and-themes",{"title":149,"path":150,"stem":151},"Page Layout","\u002Fen\u002Fdocx\u002Fpage-layout","en\u002F04.docx\u002F14.page-layout",{"title":153,"path":154,"stem":155},"References","\u002Fen\u002Fdocx\u002Freferences","en\u002F04.docx\u002F15.references",{"title":157,"path":158,"stem":159},"Comments and Revisions","\u002Fen\u002Fdocx\u002Fcomments-and-revisions","en\u002F04.docx\u002F16.comments-and-revisions",{"title":161,"path":162,"stem":163},"Document Properties","\u002Fen\u002Fdocx\u002Fproperties","en\u002F04.docx\u002F17.properties",{"title":165,"path":166,"stem":167},"Export","\u002Fen\u002Fdocx\u002Fexport","en\u002F04.docx\u002F18.export",{"title":72,"path":169,"stem":170},"\u002Fen\u002Fdocx\u002Fparsing","en\u002F04.docx\u002F19.parsing",{"title":172,"path":173,"stem":174},"Patching","\u002Fen\u002Fdocx\u002Fpatch","en\u002F04.docx\u002F20.patch",{"title":176,"icon":177,"path":178,"stem":179,"children":180,"page":30},"PPTX","i-lucide-presentation","\u002Fen\u002Fpptx","en\u002F05.pptx",[181,185,188,192,195,198,201,204,207,210,214,217,220,224,227,231,235,239,243,247,250,253],{"title":182,"path":183,"stem":184},"@office-open\u002Fpptx","\u002Fen\u002Fpptx\u002Foverview","en\u002F05.pptx\u002F01.overview",{"title":102,"path":186,"stem":187},"\u002Fen\u002Fpptx\u002Fquickstart","en\u002F05.pptx\u002F02.quickstart",{"title":189,"path":190,"stem":191},"Shapes and Text","\u002Fen\u002Fpptx\u002Fshapes-and-text","en\u002F05.pptx\u002F03.shapes-and-text",{"title":110,"path":193,"stem":194},"\u002Fen\u002Fpptx\u002Ftables","en\u002F05.pptx\u002F04.tables",{"title":114,"path":196,"stem":197},"\u002Fen\u002Fpptx\u002Fimages","en\u002F05.pptx\u002F05.images",{"title":54,"path":199,"stem":200},"\u002Fen\u002Fpptx\u002Fcharts","en\u002F05.pptx\u002F06.charts",{"title":125,"path":202,"stem":203},"\u002Fen\u002Fpptx\u002Fsmartart","en\u002F05.pptx\u002F07.smartart",{"title":129,"path":205,"stem":206},"\u002Fen\u002Fpptx\u002Fmedia","en\u002F05.pptx\u002F08.media",{"title":133,"path":208,"stem":209},"\u002Fen\u002Fpptx\u002Flinks","en\u002F05.pptx\u002F09.links",{"title":211,"path":212,"stem":213},"Lines and Connectors","\u002Fen\u002Fpptx\u002Flines-and-connectors","en\u002F05.pptx\u002F10.lines-and-connectors",{"title":137,"path":215,"stem":216},"\u002Fen\u002Fpptx\u002Fheaders-and-footers","en\u002F05.pptx\u002F11.headers-and-footers",{"title":141,"path":218,"stem":219},"\u002Fen\u002Fpptx\u002Fequations-and-symbols","en\u002F05.pptx\u002F12.equations-and-symbols",{"title":221,"path":222,"stem":223},"Slide Layout","\u002Fen\u002Fpptx\u002Fslide-layout","en\u002F05.pptx\u002F13.slide-layout",{"title":145,"path":225,"stem":226},"\u002Fen\u002Fpptx\u002Fstyles-and-themes","en\u002F05.pptx\u002F14.styles-and-themes",{"title":228,"path":229,"stem":230},"Effects and Fills","\u002Fen\u002Fpptx\u002Feffects-and-fills","en\u002F05.pptx\u002F15.effects-and-fills",{"title":232,"path":233,"stem":234},"Transitions","\u002Fen\u002Fpptx\u002Ftransitions","en\u002F05.pptx\u002F16.transitions",{"title":236,"path":237,"stem":238},"Animations","\u002Fen\u002Fpptx\u002Fanimations","en\u002F05.pptx\u002F17.animations",{"title":240,"path":241,"stem":242},"Comments","\u002Fen\u002Fpptx\u002Fcomments","en\u002F05.pptx\u002F18.comments",{"title":244,"path":245,"stem":246},"Presentation Properties","\u002Fen\u002Fpptx\u002Fproperties","en\u002F05.pptx\u002F19.properties",{"title":165,"path":248,"stem":249},"\u002Fen\u002Fpptx\u002Fexport","en\u002F05.pptx\u002F20.export",{"title":72,"path":251,"stem":252},"\u002Fen\u002Fpptx\u002Fparsing","en\u002F05.pptx\u002F21.parsing",{"title":172,"path":254,"stem":255},"\u002Fen\u002Fpptx\u002Fpatch","en\u002F05.pptx\u002F22.patch",{"title":257,"icon":258,"path":259,"stem":260,"children":261,"page":30},"XLSX","i-lucide-table-2","\u002Fen\u002Fxlsx","en\u002F06.xlsx",[262,266,269,273,277,281,285,289,292,295,299,303,307,311,314,318,322,326,329,332],{"title":263,"path":264,"stem":265},"@office-open\u002Fxlsx","\u002Fen\u002Fxlsx\u002Foverview","en\u002F06.xlsx\u002F01.overview",{"title":102,"path":267,"stem":268},"\u002Fen\u002Fxlsx\u002Fquickstart","en\u002F06.xlsx\u002F02.quickstart",{"title":270,"path":271,"stem":272},"Cells & Data","\u002Fen\u002Fxlsx\u002Fcells","en\u002F06.xlsx\u002F03.cells",{"title":274,"path":275,"stem":276},"Styles","\u002Fen\u002Fxlsx\u002Fstyles","en\u002F06.xlsx\u002F04.styles",{"title":278,"path":279,"stem":280},"Merge, Columns & Rows","\u002Fen\u002Fxlsx\u002Fmerge-col-row","en\u002F06.xlsx\u002F05.merge-col-row",{"title":282,"path":283,"stem":284},"Hyperlinks","\u002Fen\u002Fxlsx\u002Flinks","en\u002F06.xlsx\u002F06.links",{"title":286,"path":287,"stem":288},"Pivot Tables","\u002Fen\u002Fxlsx\u002Fpivot-tables","en\u002F06.xlsx\u002F07.pivot-tables",{"title":114,"path":290,"stem":291},"\u002Fen\u002Fxlsx\u002Fimages","en\u002F06.xlsx\u002F08.images",{"title":54,"path":293,"stem":294},"\u002Fen\u002Fxlsx\u002Fcharts","en\u002F06.xlsx\u002F09.charts",{"title":296,"path":297,"stem":298},"Page Setup & Headers\u002FFooters","\u002Fen\u002Fxlsx\u002Fpage-setup","en\u002F06.xlsx\u002F10.page-setup",{"title":300,"path":301,"stem":302},"Formulas","\u002Fen\u002Fxlsx\u002Fformulas","en\u002F06.xlsx\u002F11.formulas",{"title":304,"path":305,"stem":306},"Freeze Panes & Auto Filter","\u002Fen\u002Fxlsx\u002Ffreeze-filter","en\u002F06.xlsx\u002F12.freeze-filter",{"title":308,"path":309,"stem":310},"Data Validation","\u002Fen\u002Fxlsx\u002Fvalidation","en\u002F06.xlsx\u002F13.validation",{"title":240,"path":312,"stem":313},"\u002Fen\u002Fxlsx\u002Fcomments","en\u002F06.xlsx\u002F14.comments",{"title":315,"path":316,"stem":317},"Protection","\u002Fen\u002Fxlsx\u002Fprotection","en\u002F06.xlsx\u002F15.protection",{"title":319,"path":320,"stem":321},"Shared Workbook Revisions","\u002Fen\u002Fxlsx\u002Frevisions","en\u002F06.xlsx\u002F16.revisions",{"title":323,"path":324,"stem":325},"Workbook Properties","\u002Fen\u002Fxlsx\u002Fproperties","en\u002F06.xlsx\u002F17.properties",{"title":165,"path":327,"stem":328},"\u002Fen\u002Fxlsx\u002Fexport","en\u002F06.xlsx\u002F18.export",{"title":72,"path":330,"stem":331},"\u002Fen\u002Fxlsx\u002Fparsing","en\u002F06.xlsx\u002F19.parsing",{"title":172,"path":333,"stem":334},"\u002Fen\u002Fxlsx\u002Fpatch","en\u002F06.xlsx\u002F20.patch",{"id":336,"title":42,"body":337,"description":1602,"extension":1603,"links":1604,"meta":1605,"navigation":464,"path":43,"seo":1606,"stem":44,"__hash__":1607},"docs_en\u002Fen\u002F02.core\u002F02.descriptors.md",{"type":338,"value":339,"toc":1587},"minimark",[340,359,364,383,393,397,412,878,905,909,912,943,947,954,1002,1005,1008,1038,1042,1075,1216,1226,1230,1234,1237,1352,1356,1359,1451,1455,1463,1492,1495,1506,1510,1583],[341,342,343,344,347,348,350,351,353,354,358],"p",{},"All OOXML XML parts in ",[345,346,98],"code",{},", ",[345,349,182],{},", and ",[345,352,263],{}," are defined as ",[355,356,357],"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).",[360,361,363],"h2",{"id":362},"core-concepts","Core Concepts",[341,365,366,367,370,371,374,375,378,379,382],{},"A ",[355,368,369],{},"descriptor"," describes the bidirectional mapping between a TypeScript options interface and its XML representation. Every descriptor is a ",[345,372,373],{},"CustomDescriptor\u003CT>"," whose ",[345,376,377],{},"stringify()"," and ",[345,380,381],{},"parse()"," methods are hand-written for the part — there is no declarative attr\u002Fchild builder. The same descriptor drives both directions: stringify (JSON → XML) and parse (XML → JSON).",[341,384,385,386,378,389,392],{},"Descriptors are consumed by two runtime functions: ",[345,387,388],{},"stringify(desc, value, ctx)",[345,390,391],{},"parse(desc, element, ctx)",".",[360,394,396],{"id":395},"customdescriptor","CustomDescriptor",[341,398,399,400,403,404,407,408,411],{},"Each part exports its descriptor object with ",[345,401,402],{},"kind: \"custom\""," and hand-written ",[345,405,406],{},"stringify","\u002F",[345,409,410],{},"parse",":",[413,414,419],"pre",{"className":415,"code":416,"language":417,"meta":418,"style":418},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { CustomDescriptor } from \"@office-open\u002Fcore\";\n\ninterface MyOptions {\n  items: string[];\n  separator?: string;\n}\n\nconst myDesc: CustomDescriptor\u003CMyOptions> = {\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.elements ?? [])\n      .filter((c) => c.type === \"element\" && c.name === \"w:item\")\n      .map((c) => c.attributes?.[\"w:val\"] ?? \"\");\n    return { items } as MyOptions;\n  },\n};\n","ts","",[345,420,421,459,466,480,497,510,516,521,548,566,590,663,688,694,713,739,799,849,867,872],{"__ignoreMap":418},[422,423,426,430,433,437,441,444,447,450,453,456],"span",{"class":424,"line":425},"line",1,[422,427,429],{"class":428},"s7zQu","import",[422,431,432],{"class":428}," type",[422,434,436],{"class":435},"sMK4o"," {",[422,438,440],{"class":439},"sTEyZ"," CustomDescriptor",[422,442,443],{"class":435}," }",[422,445,446],{"class":428}," from",[422,448,449],{"class":435}," \"",[422,451,38],{"class":452},"sfazB",[422,454,455],{"class":435},"\"",[422,457,458],{"class":435},";\n",[422,460,462],{"class":424,"line":461},2,[422,463,465],{"emptyLinePlaceholder":464},true,"\n",[422,467,469,473,477],{"class":424,"line":468},3,[422,470,472],{"class":471},"spNyl","interface",[422,474,476],{"class":475},"sBMFI"," MyOptions",[422,478,479],{"class":435}," {\n",[422,481,483,487,489,492,495],{"class":424,"line":482},4,[422,484,486],{"class":485},"swJcz","  items",[422,488,411],{"class":435},[422,490,491],{"class":475}," string",[422,493,494],{"class":439},"[]",[422,496,458],{"class":435},[422,498,500,503,506,508],{"class":424,"line":499},5,[422,501,502],{"class":485},"  separator",[422,504,505],{"class":435},"?:",[422,507,491],{"class":475},[422,509,458],{"class":435},[422,511,513],{"class":424,"line":512},6,[422,514,515],{"class":435},"}\n",[422,517,519],{"class":424,"line":518},7,[422,520,465],{"emptyLinePlaceholder":464},[422,522,524,527,530,532,534,537,540,543,546],{"class":424,"line":523},8,[422,525,526],{"class":471},"const",[422,528,529],{"class":439}," myDesc",[422,531,411],{"class":435},[422,533,440],{"class":475},[422,535,536],{"class":435},"\u003C",[422,538,539],{"class":475},"MyOptions",[422,541,542],{"class":435},">",[422,544,545],{"class":435}," =",[422,547,479],{"class":435},[422,549,551,554,556,558,561,563],{"class":424,"line":550},9,[422,552,553],{"class":485},"  kind",[422,555,411],{"class":435},[422,557,449],{"class":435},[422,559,560],{"class":452},"custom",[422,562,455],{"class":435},[422,564,565],{"class":435},",\n",[422,567,569,572,575,579,582,585,588],{"class":424,"line":568},10,[422,570,571],{"class":485},"  stringify",[422,573,574],{"class":435},"(",[422,576,578],{"class":577},"sHdIc","value",[422,580,581],{"class":435},",",[422,583,584],{"class":577}," ctx",[422,586,587],{"class":435},")",[422,589,479],{"class":435},[422,591,593,596,599,601,604,606,609,611,615,617,619,622,624,627,630,633,636,638,641,644,647,649,651,654,656,659,661],{"class":424,"line":592},11,[422,594,595],{"class":471},"    const",[422,597,598],{"class":439}," parts",[422,600,545],{"class":435},[422,602,603],{"class":439}," value",[422,605,392],{"class":435},[422,607,608],{"class":439},"items",[422,610,392],{"class":435},[422,612,614],{"class":613},"s2Zo4","map",[422,616,574],{"class":485},[422,618,574],{"class":435},[422,620,621],{"class":577},"item",[422,623,587],{"class":435},[422,625,626],{"class":471}," =>",[422,628,629],{"class":435}," `",[422,631,632],{"class":452},"\u003Cw:item val=\"",[422,634,635],{"class":435},"${",[422,637,621],{"class":439},[422,639,640],{"class":435},"}",[422,642,643],{"class":452},"\"\u002F>",[422,645,646],{"class":435},"`",[422,648,587],{"class":485},[422,650,392],{"class":435},[422,652,653],{"class":613},"join",[422,655,574],{"class":485},[422,657,658],{"class":435},"\"\"",[422,660,587],{"class":485},[422,662,458],{"class":435},[422,664,666,669,671,674,676,679,681,684,686],{"class":424,"line":665},12,[422,667,668],{"class":428},"    return",[422,670,629],{"class":435},[422,672,673],{"class":452},"\u003Cw:container>",[422,675,635],{"class":435},[422,677,678],{"class":439},"parts",[422,680,640],{"class":435},[422,682,683],{"class":452},"\u003C\u002Fw:container>",[422,685,646],{"class":435},[422,687,458],{"class":435},[422,689,691],{"class":424,"line":690},13,[422,692,693],{"class":435},"  },\n",[422,695,697,700,702,705,707,709,711],{"class":424,"line":696},14,[422,698,699],{"class":485},"  parse",[422,701,574],{"class":435},[422,703,704],{"class":577},"el",[422,706,581],{"class":435},[422,708,584],{"class":577},[422,710,587],{"class":435},[422,712,479],{"class":435},[422,714,716,718,721,723,726,728,730,733,736],{"class":424,"line":715},15,[422,717,595],{"class":471},[422,719,720],{"class":439}," items",[422,722,545],{"class":435},[422,724,725],{"class":485}," (",[422,727,704],{"class":439},[422,729,392],{"class":435},[422,731,732],{"class":439},"elements",[422,734,735],{"class":435}," ??",[422,737,738],{"class":485}," [])\n",[422,740,742,745,748,750,752,755,757,759,762,764,767,770,772,775,777,780,782,784,787,789,791,794,796],{"class":424,"line":741},16,[422,743,744],{"class":435},"      .",[422,746,747],{"class":613},"filter",[422,749,574],{"class":485},[422,751,574],{"class":435},[422,753,754],{"class":577},"c",[422,756,587],{"class":435},[422,758,626],{"class":471},[422,760,761],{"class":439}," c",[422,763,392],{"class":435},[422,765,766],{"class":439},"type",[422,768,769],{"class":435}," ===",[422,771,449],{"class":435},[422,773,774],{"class":452},"element",[422,776,455],{"class":435},[422,778,779],{"class":435}," &&",[422,781,761],{"class":439},[422,783,392],{"class":435},[422,785,786],{"class":439},"name",[422,788,769],{"class":435},[422,790,449],{"class":435},[422,792,793],{"class":452},"w:item",[422,795,455],{"class":435},[422,797,798],{"class":485},")\n",[422,800,802,804,806,808,810,812,814,816,818,820,823,826,829,831,834,836,839,842,845,847],{"class":424,"line":801},17,[422,803,744],{"class":435},[422,805,614],{"class":613},[422,807,574],{"class":485},[422,809,574],{"class":435},[422,811,754],{"class":577},[422,813,587],{"class":435},[422,815,626],{"class":471},[422,817,761],{"class":439},[422,819,392],{"class":435},[422,821,822],{"class":439},"attributes",[422,824,825],{"class":435},"?.",[422,827,828],{"class":485},"[",[422,830,455],{"class":435},[422,832,833],{"class":452},"w:val",[422,835,455],{"class":435},[422,837,838],{"class":485},"] ",[422,840,841],{"class":435},"??",[422,843,844],{"class":435}," \"\"",[422,846,587],{"class":485},[422,848,458],{"class":435},[422,850,852,854,856,858,860,863,865],{"class":424,"line":851},18,[422,853,668],{"class":428},[422,855,436],{"class":435},[422,857,720],{"class":439},[422,859,443],{"class":435},[422,861,862],{"class":428}," as",[422,864,476],{"class":475},[422,866,458],{"class":435},[422,868,870],{"class":424,"line":869},19,[422,871,693],{"class":435},[422,873,875],{"class":424,"line":874},20,[422,876,877],{"class":435},"};\n",[879,880,881],"blockquote",{},[341,882,883,886,887,890,891,894,895,898,899,901,902,392],{},[355,884,885],{},"Advanced:"," When a descriptor's stringify input differs from its parse output (for example, an accumulator-style input versus a structured parse result), declare both explicitly: ",[345,888,889],{},"CustomDescriptor\u003CTInput, Ctx, TOutput>",". ",[345,892,893],{},"TOutput"," defaults to ",[345,896,897],{},"TInput",", so the common single-parameter form ",[345,900,373],{}," is shorthand for ",[345,903,904],{},"CustomDescriptor\u003CT, WriteContext, T>",[360,906,908],{"id":907},"runtime-functions","Runtime Functions",[341,910,911],{},"The runtime is a single step in each direction — no intermediate representation:",[413,913,915],{"className":415,"code":914,"language":417,"meta":418,"style":418},"import { stringify, parse } from \"@office-open\u002Fcore\";\n",[345,916,917],{"__ignoreMap":418},[422,918,919,921,923,926,928,931,933,935,937,939,941],{"class":424,"line":425},[422,920,429],{"class":428},[422,922,436],{"class":435},[422,924,925],{"class":439}," stringify",[422,927,581],{"class":435},[422,929,930],{"class":439}," parse",[422,932,443],{"class":435},[422,934,446],{"class":428},[422,936,449],{"class":435},[422,938,38],{"class":452},[422,940,455],{"class":435},[422,942,458],{"class":435},[944,945,388],"h3",{"id":946},"stringifydesc-value-ctx",[341,948,949,950,953],{},"Serialize an options object to an XML string. Returns ",[345,951,952],{},"undefined"," when an optional element should be omitted.",[413,955,957],{"className":415,"code":956,"language":417,"meta":418,"style":418},"const xml = stringify(myDesc, { items: [\"a\"] }, writeCtx);\n",[345,958,959],{"__ignoreMap":418},[422,960,961,963,966,969,971,974,976,978,980,982,985,987,990,992,994,997,1000],{"class":424,"line":425},[422,962,526],{"class":471},[422,964,965],{"class":439}," xml ",[422,967,968],{"class":435},"=",[422,970,925],{"class":613},[422,972,973],{"class":439},"(myDesc",[422,975,581],{"class":435},[422,977,436],{"class":435},[422,979,720],{"class":485},[422,981,411],{"class":435},[422,983,984],{"class":439}," [",[422,986,455],{"class":435},[422,988,989],{"class":452},"a",[422,991,455],{"class":435},[422,993,838],{"class":439},[422,995,996],{"class":435},"},",[422,998,999],{"class":439}," writeCtx)",[422,1001,458],{"class":435},[944,1003,391],{"id":1004},"parsedesc-element-ctx",[341,1006,1007],{},"Parse an XML element into an options object.",[413,1009,1011],{"className":415,"code":1010,"language":417,"meta":418,"style":418},"const result = parse(myDesc, element, readCtx);\n",[345,1012,1013],{"__ignoreMap":418},[422,1014,1015,1017,1020,1022,1024,1026,1028,1031,1033,1036],{"class":424,"line":425},[422,1016,526],{"class":471},[422,1018,1019],{"class":439}," result ",[422,1021,968],{"class":435},[422,1023,930],{"class":613},[422,1025,973],{"class":439},[422,1027,581],{"class":435},[422,1029,1030],{"class":439}," element",[422,1032,581],{"class":435},[422,1034,1035],{"class":439}," readCtx)",[422,1037,458],{"class":435},[360,1039,1041],{"id":1040},"xsd-value-mappings","XSD Value Mappings",[341,1043,1044,1045,1048,1049,1052,1053,1056,1057,725,1059,1062,1063,1066,1067,1070,1071,1074],{},"When an XSD type uses abbreviations (e.g. ",[345,1046,1047],{},"ST_TextAlignType"," ",[345,1050,1051],{},"\"ctr\""," for ",[345,1054,1055],{},"center","), the bidirectional mapping lives in ",[345,1058,38],{},[345,1060,1061],{},"util\u002Fmappings.ts","). Each mapping is built once with ",[345,1064,1065],{},"bidi()"," and exposes ",[345,1068,1069],{},".to()"," (user value → XSD value) and ",[345,1072,1073],{},".from()"," (XSD value → user value), so the same map serves both stringify and parse:",[413,1076,1078],{"className":415,"code":1077,"language":417,"meta":418,"style":418},"import { xsdTextAlign } from \"@office-open\u002Fcore\";\n\n\u002F\u002F stringify (Options → XML)\nattrs.push(`algn=\"${xsdTextAlign.to(options.alignment)}\"`); \u002F\u002F \"center\" → \"ctr\"\n\n\u002F\u002F parse (XML → Options)\nresult.alignment = xsdTextAlign.from(String(el.attributes[\"algn\"])); \u002F\u002F \"ctr\" → \"center\"\n",[345,1079,1080,1101,1105,1111,1160,1164,1169],{"__ignoreMap":418},[422,1081,1082,1084,1086,1089,1091,1093,1095,1097,1099],{"class":424,"line":425},[422,1083,429],{"class":428},[422,1085,436],{"class":435},[422,1087,1088],{"class":439}," xsdTextAlign",[422,1090,443],{"class":435},[422,1092,446],{"class":428},[422,1094,449],{"class":435},[422,1096,38],{"class":452},[422,1098,455],{"class":435},[422,1100,458],{"class":435},[422,1102,1103],{"class":424,"line":461},[422,1104,465],{"emptyLinePlaceholder":464},[422,1106,1107],{"class":424,"line":468},[422,1108,1110],{"class":1109},"sHwdD","\u002F\u002F stringify (Options → XML)\n",[422,1112,1113,1116,1118,1121,1123,1125,1128,1130,1133,1135,1138,1141,1143,1146,1148,1150,1152,1154,1157],{"class":424,"line":482},[422,1114,1115],{"class":439},"attrs",[422,1117,392],{"class":435},[422,1119,1120],{"class":613},"push",[422,1122,574],{"class":439},[422,1124,646],{"class":435},[422,1126,1127],{"class":452},"algn=\"",[422,1129,635],{"class":435},[422,1131,1132],{"class":439},"xsdTextAlign",[422,1134,392],{"class":435},[422,1136,1137],{"class":613},"to",[422,1139,1140],{"class":439},"(options",[422,1142,392],{"class":435},[422,1144,1145],{"class":439},"alignment)",[422,1147,640],{"class":435},[422,1149,455],{"class":452},[422,1151,646],{"class":435},[422,1153,587],{"class":439},[422,1155,1156],{"class":435},";",[422,1158,1159],{"class":1109}," \u002F\u002F \"center\" → \"ctr\"\n",[422,1161,1162],{"class":424,"line":499},[422,1163,465],{"emptyLinePlaceholder":464},[422,1165,1166],{"class":424,"line":512},[422,1167,1168],{"class":1109},"\u002F\u002F parse (XML → Options)\n",[422,1170,1171,1174,1176,1179,1181,1183,1185,1188,1190,1193,1196,1198,1201,1203,1206,1208,1211,1213],{"class":424,"line":518},[422,1172,1173],{"class":439},"result",[422,1175,392],{"class":435},[422,1177,1178],{"class":439},"alignment ",[422,1180,968],{"class":435},[422,1182,1088],{"class":439},[422,1184,392],{"class":435},[422,1186,1187],{"class":613},"from",[422,1189,574],{"class":439},[422,1191,1192],{"class":613},"String",[422,1194,1195],{"class":439},"(el",[422,1197,392],{"class":435},[422,1199,1200],{"class":439},"attributes[",[422,1202,455],{"class":435},[422,1204,1205],{"class":452},"algn",[422,1207,455],{"class":435},[422,1209,1210],{"class":439},"]))",[422,1212,1156],{"class":435},[422,1214,1215],{"class":1109}," \u002F\u002F \"ctr\" → \"center\"\n",[341,1217,1218,1219,347,1222,1225],{},"When the XSD already uses full English words (e.g. ",[345,1220,1221],{},"\"start\"",[345,1223,1224],{},"\"center\"","), no mapping is needed — the value is written and read verbatim.",[360,1227,1229],{"id":1228},"context-objects","Context Objects",[944,1231,1233],{"id":1232},"writecontext","WriteContext",[341,1235,1236],{},"Passed during stringify (write path):",[413,1238,1240],{"className":415,"code":1239,"language":417,"meta":418,"style":418},"interface WriteContext {\n  addRelationship(type: string, target: string, mode?: string): string;\n  addMedia(data: Uint8Array, type: string): string;\n  addHyperlink(key: string, target: HyperlinkTarget): void;\n}\n",[345,1241,1242,1251,1289,1318,1348],{"__ignoreMap":418},[422,1243,1244,1246,1249],{"class":424,"line":425},[422,1245,472],{"class":471},[422,1247,1248],{"class":475}," WriteContext",[422,1250,479],{"class":435},[422,1252,1253,1256,1258,1260,1262,1264,1266,1269,1271,1273,1275,1278,1280,1282,1285,1287],{"class":424,"line":461},[422,1254,1255],{"class":485},"  addRelationship",[422,1257,574],{"class":435},[422,1259,766],{"class":577},[422,1261,411],{"class":435},[422,1263,491],{"class":475},[422,1265,581],{"class":435},[422,1267,1268],{"class":577}," target",[422,1270,411],{"class":435},[422,1272,491],{"class":475},[422,1274,581],{"class":435},[422,1276,1277],{"class":577}," mode",[422,1279,505],{"class":435},[422,1281,491],{"class":475},[422,1283,1284],{"class":435},"):",[422,1286,491],{"class":475},[422,1288,458],{"class":435},[422,1290,1291,1294,1296,1299,1301,1304,1306,1308,1310,1312,1314,1316],{"class":424,"line":468},[422,1292,1293],{"class":485},"  addMedia",[422,1295,574],{"class":435},[422,1297,1298],{"class":577},"data",[422,1300,411],{"class":435},[422,1302,1303],{"class":475}," Uint8Array",[422,1305,581],{"class":435},[422,1307,432],{"class":577},[422,1309,411],{"class":435},[422,1311,491],{"class":475},[422,1313,1284],{"class":435},[422,1315,491],{"class":475},[422,1317,458],{"class":435},[422,1319,1320,1323,1325,1328,1330,1332,1334,1336,1338,1341,1343,1346],{"class":424,"line":482},[422,1321,1322],{"class":485},"  addHyperlink",[422,1324,574],{"class":435},[422,1326,1327],{"class":577},"key",[422,1329,411],{"class":435},[422,1331,491],{"class":475},[422,1333,581],{"class":435},[422,1335,1268],{"class":577},[422,1337,411],{"class":435},[422,1339,1340],{"class":475}," HyperlinkTarget",[422,1342,1284],{"class":435},[422,1344,1345],{"class":475}," void",[422,1347,458],{"class":435},[422,1349,1350],{"class":424,"line":499},[422,1351,515],{"class":435},[944,1353,1355],{"id":1354},"readcontext","ReadContext",[341,1357,1358],{},"Passed during parse (read path):",[413,1360,1362],{"className":415,"code":1361,"language":417,"meta":418,"style":418},"interface ReadContext {\n  resolveRelationship(rId: string): string | undefined;\n  getPart(path: string): XmlElement | undefined;\n  getRaw(path: string): Uint8Array | undefined;\n}\n",[345,1363,1364,1373,1399,1424,1447],{"__ignoreMap":418},[422,1365,1366,1368,1371],{"class":424,"line":425},[422,1367,472],{"class":471},[422,1369,1370],{"class":475}," ReadContext",[422,1372,479],{"class":435},[422,1374,1375,1378,1380,1383,1385,1387,1389,1391,1394,1397],{"class":424,"line":461},[422,1376,1377],{"class":485},"  resolveRelationship",[422,1379,574],{"class":435},[422,1381,1382],{"class":577},"rId",[422,1384,411],{"class":435},[422,1386,491],{"class":475},[422,1388,1284],{"class":435},[422,1390,491],{"class":475},[422,1392,1393],{"class":435}," |",[422,1395,1396],{"class":475}," undefined",[422,1398,458],{"class":435},[422,1400,1401,1404,1406,1409,1411,1413,1415,1418,1420,1422],{"class":424,"line":468},[422,1402,1403],{"class":485},"  getPart",[422,1405,574],{"class":435},[422,1407,1408],{"class":577},"path",[422,1410,411],{"class":435},[422,1412,491],{"class":475},[422,1414,1284],{"class":435},[422,1416,1417],{"class":475}," XmlElement",[422,1419,1393],{"class":435},[422,1421,1396],{"class":475},[422,1423,458],{"class":435},[422,1425,1426,1429,1431,1433,1435,1437,1439,1441,1443,1445],{"class":424,"line":482},[422,1427,1428],{"class":485},"  getRaw",[422,1430,574],{"class":435},[422,1432,1408],{"class":577},[422,1434,411],{"class":435},[422,1436,491],{"class":475},[422,1438,1284],{"class":435},[422,1440,1303],{"class":475},[422,1442,1393],{"class":435},[422,1444,1396],{"class":475},[422,1446,458],{"class":435},[422,1448,1449],{"class":424,"line":499},[422,1450,515],{"class":435},[360,1452,1454],{"id":1453},"when-to-use","When to Use",[341,1456,1457,1458,378,1460,1462],{},"You typically don't need to call ",[345,1459,377],{},[345,1461,381],{}," directly — the format packages' top-level functions handle everything internally:",[1464,1465,1466,1480],"ul",{},[1467,1468,1469,1472,1473,1472,1476,1479],"li",{},[345,1470,1471],{},"generateDocument()"," \u002F ",[345,1474,1475],{},"generatePresentation()",[345,1477,1478],{},"generateWorkbook()"," — call stringify internally",[1467,1481,1482,1472,1485,1472,1488,1491],{},[345,1483,1484],{},"parseDocument()",[345,1486,1487],{},"parsePresentation()",[345,1489,1490],{},"parseWorkbook()"," — call parse internally",[341,1493,1494],{},"Use the descriptor system directly when you need to:",[1464,1496,1497,1500,1503],{},[1467,1498,1499],{},"Define custom OOXML elements not covered by the format packages",[1467,1501,1502],{},"Build format-specific extensions or plugins",[1467,1504,1505],{},"Implement bidirectional (stringify + parse) support for new XML parts",[360,1507,1509],{"id":1508},"naming-conventions","Naming Conventions",[1511,1512,1513,1526],"table",{},[1514,1515,1516],"thead",{},[1517,1518,1519,1523],"tr",{},[1520,1521,1522],"th",{},"Convention",[1520,1524,1525],{},"Example",[1527,1528,1529,1549,1565],"tbody",{},[1517,1530,1531,1538],{},[1532,1533,1534,1535],"td",{},"Descriptor names: ",[345,1536,1537],{},"\u003Cpart>Desc",[1532,1539,1540,347,1543,347,1546],{},[345,1541,1542],{},"spacingDesc",[345,1544,1545],{},"settingsDesc",[345,1547,1548],{},"slideDesc",[1517,1550,1551,1557],{},[1532,1552,1553,1554],{},"Options interfaces: ",[345,1555,1556],{},"\u003CPart>Options",[1532,1558,1559,347,1562],{},[345,1560,1561],{},"WorkbookOptions",[345,1563,1564],{},"DocumentOptions",[1517,1566,1567,1576],{},[1532,1568,1569,1570,1472,1573],{},"Helper functions: ",[345,1571,1572],{},"stringify*()",[345,1574,1575],{},"parse*()",[1532,1577,1578,347,1581],{},[345,1579,1580],{},"stringifyWorksheet()",[345,1582,1490],{},[1584,1585,1586],"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 .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 .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}",{"title":418,"searchDepth":461,"depth":461,"links":1588},[1589,1590,1591,1595,1596,1600,1601],{"id":362,"depth":461,"text":363},{"id":395,"depth":461,"text":396},{"id":907,"depth":461,"text":908,"children":1592},[1593,1594],{"id":946,"depth":468,"text":388},{"id":1004,"depth":468,"text":391},{"id":1040,"depth":461,"text":1041},{"id":1228,"depth":461,"text":1229,"children":1597},[1598,1599],{"id":1232,"depth":468,"text":1233},{"id":1354,"depth":468,"text":1355},{"id":1453,"depth":461,"text":1454},{"id":1508,"depth":461,"text":1509},"Declarative XML mapping for OOXML elements — stringify and parse","md",null,{},{"title":42,"description":1602},"JgDbkd7J4VH7XJeO_MOIU__xcBtoJCyoSvg2BWF7C2c",[1609,1611],{"title":38,"path":39,"stem":40,"description":1610,"children":-1},"Shared OOXML infrastructure — descriptors, validators, converters, charts, and SmartArt",{"title":46,"path":47,"stem":48,"description":1612,"children":-1},"Runtime validation and type conversion for OOXML specification value types",1787527403012]