@office-kit/pptx-dev 0.14.0 → 0.14.2
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/dist/editor-chunks/{agent-tools-EU7Eb-FV-IILR6JNI.js → agent-tools-BrFS9zmU-ACR4IGUB.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{A,Ad as te,B as k,C as v,Cd as ie,D as V,Dd as re,Ea as z,F as I,Gf as ne,Ib as _,Ka as L,Mf as T,N as B,O as S,P as q,S as F,T as W,Wa as U,ac as X,ad as Y,fd as K,nd as J,qd as Z,ra as H,sa as N,u as
|
|
1
|
+
import{A,Ad as te,B as k,C as v,Cd as ie,D as V,Dd as re,Ea as z,F as I,Gf as ne,Ib as _,Ka as L,Mf as T,N as B,O as S,P as q,S as F,T as W,Wa as U,ac as X,ad as Y,fd as K,nd as J,qd as Z,ra as H,sa as N,u as x,ue as se,wd as Q,we as ae,xa as M,xe as $,ya as w,yd as ee,ye as oe}from"./chunk-IWBYSWUN.js";var le=Object.defineProperty,ke=(t,e)=>{let i={};for(var r in t)le(i,r,{get:t[r],enumerable:!0});return e||le(i,Symbol.toStringTag,{value:"Module"}),i},fe={notTools:{createPresentation:"returns a new presentation instead of editing the open one",importSlide:"copies a slide from another presentation, which a model cannot pass",mergePresentations:"merges another presentation, which a model cannot pass",sortSlides:"takes a comparison function"},refs:{SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'},ShapeRef:{type:"object",description:"A shape, by its slide and id, as `listShapes` or the user's selection reports it. `slideIndex` and `name` are informational.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId"],additionalProperties:!1},ChartRef:{$ref:"#/$defs/ShapeRef",description:"A chart, by the ShapeRef of the graphic frame that holds it."},CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},LayoutRef:{type:"string",pattern:"^/ppt/slideLayouts/[^/]+\\.xml$",description:'A slide layout, by its part name as `listLayouts` reports it, e.g. "/ppt/slideLayouts/slideLayout1.xml".'},CommentRef:{type:"object",description:"A comment, by its slide and its 0-based position in `listComments` for that slide.",properties:{slide:{$ref:"#/$defs/SlideRef"},index:{type:"integer",minimum:0}},required:["slide","index"],additionalProperties:!1},Bytes:{type:"string",contentEncoding:"base64",description:"File bytes, base64-encoded."},DateTime:{type:"string",format:"date-time",description:"An RFC 3339 date-time."}},tools:[{name:"addBlankSlide",description:`Convenience over \`addSlide\` that picks a layout automatically:
|
|
2
2
|
|
|
3
3
|
1. The layout with \`<p:sldLayout type="blank">\`, if present.
|
|
4
4
|
2. Otherwise, the first available layout (alphabetical by
|
|
@@ -25,7 +25,7 @@ and use these as horizontal guide lines per category band.`},CategoryAxisMajorTi
|
|
|
25
25
|
Width of the category-axis minor gridlines.`},CategoryAxisMinorGridlines:{type:"boolean",description:"Companion `<c:minorGridlines/>` on the category axis."},CategoryAxisMinorTickMark:{anyOf:[{$ref:"#/$defs/AnimationInOut"},{type:"string",enum:["none","cross"]}],description:"Minor-tick mark mode on the category axis (`<c:catAx><c:minorTickMark>`); default `'none'`."},CategoryAxisNoMultiLevelLabel:{type:"boolean",description:'Toggle multi-level (hierarchical) category labels \u2014\n`<c:catAx><c:noMultiLvlLbl val="0|1"/>`. The reference desktop app defaults to\n`0` (multi-level labels stack). Set to `true` to flatten\nhierarchical categories into a single row.'},CategoryAxisNumberFormat:{type:"string",description:'Number-format code for the category-axis tick labels \u2014\n`<c:catAx><c:numFmt formatCode="\u2026"/>`. Most useful on date-style\ncategories (`"mm/dd/yyyy"`, `"mmm"`, etc.) but accepts any spreadsheet\nformat string. Independent of `valueAxis.numberFormat` (which\ntargets the value axis).'},CategoryAxisOrientation:{type:"string",enum:["minMax","maxMin"],description:"Category-axis order \u2014 `'minMax'` (the data's natural order) or\n`'maxMin'` (reversed). For bar charts the reference desktop app typically emits\n`maxMin` so the first category sits at the top instead of the\nbottom; honour the authored value when present."},CategoryAxisScaling:{$ref:"#/$defs/ChartAxisScaling",description:"Scaling of the horizontal axis where it is numeric: the x value axis\nof `scatter` / `bubble` charts (every field applies) and a date axis\n(`min` / `max` only, as date serials). Rejected on a text category\naxis, which has no scale to set.\nDate-serial range of the axis; only `min` / `max` apply."},CategoryAxisScaling2:{$ref:"#/$defs/ChartAxisScaling",description:"Scaling of the horizontal axis where it is numeric: the x value axis\nof `scatter` / `bubble` charts (every field applies) and a date axis\n(`min` / `max` only, as date serials). Rejected on a text category\naxis, which has no scale to set."},CategoryAxisTickLabelPos:{type:"string",enum:["none","low","high","nextTo"],description:'Category-axis tick label position (`<c:catAx><c:tickLblPos val="\u2026"/>`):\n - `none` hides labels but keeps the axis line\n - `low` / `high` puts them at the start / end (rare)\n - `nextTo` (default) is the standard position next to the axis'},CategoryAxisTickLabelSkip:{type:"number",description:'Category-axis tick label skip step (`<c:catAx><c:tickLblSkip val="N"/>`):\nrender every Nth category label. Commonly 2 / 5 / 10 on dense\ntime-series charts to keep labels from overlapping.'},CategoryAxisTickMarkSkip:{type:"number",description:`Category-axis tick *mark* skip (\`<c:catAx><c:tickMarkSkip val="N"/>\`):
|
|
26
26
|
draw every Nth tick mark independently of the label-skip stride.
|
|
27
27
|
Useful when you want fewer label collisions but the same dense
|
|
28
|
-
tick lattice; defaults to 1 (every tick).`},CategoryAxisTitle:{type:"string",description:"Optional axis title text (`<c:catAx><c:title>` / `<c:valAx><c:title>`)."},CategoryAxisTitleRotationDeg:{type:"number",description:'Rotation of the category-axis title, in degrees clockwise. Maps\nto `<c:catAx><c:title><c:tx><c:rich><a:bodyPr rot="N"/>` (the OOXML\nvalue is in 60000ths of a degree, but the API surface uses plain\ndegrees). Omit to inherit the default (`0`).'},CategoryAxisTitleStyle:{$ref:"#/$defs/ChartTextStyle",description:"Authored font / color on the category-axis title (same `<a:rPr>` shape as `titleStyle`)."},CategoryGroupLevels:{type:"array",items:{type:"array",items:{type:"string"}},description:"Outer levels of a multi-level category axis (`<c:multiLvlStrRef>`),\nordered from the level next to `categories` outward. Each level has\none entry per category; an empty string continues the previous\ngroup, so `['2024', '', '', '', '2025', '', '', '']` groups eight\nquarters into two years."},ChartAreaFill:{type:"string",description:'Chart-area background fill \u2014 `<c:chartSpace><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. Renderers can use this as the outer card\ncolor instead of the hard-coded white.'},ChartAreaStrokeColor:{type:"string",description:"Chart-area outline color from `<c:chartSpace><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. Overrides the renderer's default\n`#E5E7EB` card border."},ChartAxisScaling:{type:"object",properties:{min:{type:"number"},max:{type:"number"},majorUnit:{
|
|
28
|
+
tick lattice; defaults to 1 (every tick).`},CategoryAxisTitle:{type:"string",description:"Optional axis title text (`<c:catAx><c:title>` / `<c:valAx><c:title>`)."},CategoryAxisTitleRotationDeg:{type:"number",description:'Rotation of the category-axis title, in degrees clockwise. Maps\nto `<c:catAx><c:title><c:tx><c:rich><a:bodyPr rot="N"/>` (the OOXML\nvalue is in 60000ths of a degree, but the API surface uses plain\ndegrees). Omit to inherit the default (`0`).'},CategoryAxisTitleStyle:{$ref:"#/$defs/ChartTextStyle",description:"Authored font / color on the category-axis title (same `<a:rPr>` shape as `titleStyle`)."},CategoryGroupLevels:{type:"array",items:{type:"array",items:{type:"string"}},description:"Outer levels of a multi-level category axis (`<c:multiLvlStrRef>`),\nordered from the level next to `categories` outward. Each level has\none entry per category; an empty string continues the previous\ngroup, so `['2024', '', '', '', '2025', '', '', '']` groups eight\nquarters into two years."},ChartAreaFill:{type:"string",description:'Chart-area background fill \u2014 `<c:chartSpace><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. Renderers can use this as the outer card\ncolor instead of the hard-coded white.'},ChartAreaStrokeColor:{type:"string",description:"Chart-area outline color from `<c:chartSpace><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. Overrides the renderer's default\n`#E5E7EB` card border."},ChartAxisScaling:{type:"object",properties:{min:{type:"number"},max:{type:"number"},majorUnit:{$ref:"#/$defs/MajorUnit"},minorUnit:{$ref:"#/$defs/MinorUnit"},numberFormat:{$ref:"#/$defs/NumberFormat"},logBase:{$ref:"#/$defs/LogBase"},displayUnits:{$ref:"#/$defs/DisplayUnits"},displayUnitsLabel:{$ref:"#/$defs/DisplayUnitsLabel"}},additionalProperties:!1},ChartDataLabels:{type:"object",properties:{showValue:{type:"boolean",description:"Numeric value of each data point."},showCategory:{type:"boolean",description:"Category label of each data point."},showSeriesName:{type:"boolean",description:"Series name on each data point."},showPercent:{type:"boolean",description:"Percentage of total (for pie / doughnut)."},numberFormat:{type:"string",description:'Number-format code from `<c:dLbls><c:numFmt formatCode="\u2026"/>`. When\nset, value labels are projected through this spreadsheet-style format\n(same subset the value axis honors: `"0%"`, `"#,##0"`, `"$#,##0"`,\n`"0.00"`). Independent of `ChartAxisScaling.numberFormat`.'},position:{type:"string",enum:["ctr","inEnd","outEnd","inBase","t","b","l","r","bestFit"],description:'Position of the label relative to its data point \u2014 from\n`<c:dLbls><c:dLblPos val="\u2026"/>`.'},separator:{type:"string",description:'Separator between concatenated label parts when more than one of\n`showValue` / `showCategory` / `showSeriesName` / `showPercent` is\nset. Read from `<c:dLbls><c:separator>\u2026</c:separator>` (a\nleaf-text-only element). Common values: `" "` (default), `", "`,\n`"\\n"`, `"; "`.'},textStyle:{$ref:"#/$defs/ChartTextStyle",description:"Default-run text style for the labels \u2014 projected from\n`<c:dLbls><c:txPr>\u2026<a:defRPr/>\u2026</c:txPr>`. Applies to whichever\nlabel parts are turned on by the `show*` toggles. Independent of\nthe chart-title style and the axis-label style."},showLeaderLines:{type:"boolean",description:'Leader lines between a label and its data point\n(`<c:dLbls><c:showLeaderLines val="\u2026"/>`). Omitted = the\napplication default (shown). Series- and chart-level only: a\nper-point `<c:dLbl>` has no such element, so `pointDataLabels`\nignores it on write and never reads it.'},showBubbleSize:{type:"boolean",description:"Bubble size of each data point (`<c:showBubbleSize>`); bubble charts only."},showLegendKey:{type:"boolean",description:"Legend key swatch next to each label (`<c:showLegendKey>`)."},fillColor:{type:"string",description:"Label background fill as `#RRGGBB` (`<c:spPr><a:solidFill>`)."},text:{type:"string",description:"Literal label text replacing the generated one (`<c:dLbl><c:tx>\n<c:rich>`) \u2014 how a scatter point gets a name. Per-point only: the\nseries- and chart-level `<c:dLbls>` have no `<c:tx>`, so it is ignored\nthere on write and never read."}},required:["showValue","showCategory","showSeriesName","showPercent"],additionalProperties:!1},ChartDataTable:{type:"object",properties:{showHorizontalBorder:{type:"boolean"},showVerticalBorder:{type:"boolean"},showOutline:{type:"boolean"},showKeys:{type:"boolean",description:"Legend keys next to the series names."},textStyle:{$ref:"#/$defs/ChartTextStyle"}},additionalProperties:!1},ChartDateAxis:{type:"object",properties:{baseTimeUnit:{$ref:"#/$defs/ChartTimeUnit"},majorUnit:{type:"number"},majorTimeUnit:{$ref:"#/$defs/ChartTimeUnit"},minorUnit:{type:"number"},minorTimeUnit:{$ref:"#/$defs/ChartTimeUnit"}},additionalProperties:!1},ChartErrorBars:{type:"object",properties:{barType:{type:"string",enum:["both","plus","minus"],description:"Which side of the point gets a bar (`<c:errBarType>`)."},amount:{anyOf:[{type:"object",properties:{type:{type:"string",enum:["fixedVal","percentage","stdDev"]},value:{type:"number"}},required:["type","value"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"stdErr"}},required:["type"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"cust"},plus:{type:"array",items:{type:["null","number"]},description:"Per-point positive amounts (`<c:plus><c:numLit>`)."},minus:{type:"array",items:{type:["null","number"]},description:"Per-point negative amounts (`<c:minus><c:numLit>`)."}},required:["type"],additionalProperties:!1}]},noEndCap:{type:"boolean",description:'Drop the T-shaped end caps (`<c:noEndCap val="1"/>`).'},color:{type:"string",description:"Bar stroke color as `#RRGGBB`."},lineWidthEmu:{type:"number",description:"Bar stroke width in EMU."}},required:["barType","amount"],additionalProperties:!1},ChartGrouping:{type:"string",enum:["clustered","stacked","percentStacked","standard"]},ChartManualLayout:{type:"object",properties:{x:{type:"number"},y:{type:"number"},w:{type:"number"},h:{type:"number"},target:{type:"string",enum:["inner","outer"],description:"Plot area only: whether the box bounds the plot alone (`inner`) or the\nplot plus its tick labels and axis titles (`outer`, the default)."}},required:["x","y","w","h"],additionalProperties:!1},ChartSecondaryValueAxis:{type:"object",properties:{scaling:{$ref:"#/$defs/ChartAxisScaling"},title:{type:"string"},titleStyle:{$ref:"#/$defs/ChartTextStyle"},labelStyle:{$ref:"#/$defs/ChartTextStyle"},majorGridlines:{type:"boolean"},majorGridlineColor:{type:"string"},majorGridlineWidthEmu:{type:"number",description:"Major gridline width in EMU, the mirror of `ChartSpec.valueAxisMajorGridlineWidthEmu`."},lineColor:{type:"string"},lineWidthEmu:{type:"number",description:"Axis line width in EMU, the mirror of `ChartSpec.valueAxisLineWidthEmu`."},majorTickMark:{anyOf:[{$ref:"#/$defs/AnimationInOut"},{type:"string",enum:["none","cross"]}],description:"Major tick marks; default `'out'`."},minorTickMark:{anyOf:[{$ref:"#/$defs/AnimationInOut"},{type:"string",enum:["none","cross"]}],description:"Minor tick marks; default `'none'`."},tickLabelPos:{type:"string",enum:["none","low","high","nextTo"],description:"Tick-label position, the mirror of `ChartSpec.valueAxisTickLabelPos`."},crossBetween:{type:"string",enum:["between","midCat"]},min:{type:"number"},max:{type:"number"},majorUnit:{$ref:"#/$defs/MajorUnit"},minorUnit:{$ref:"#/$defs/MinorUnit"},numberFormat:{$ref:"#/$defs/NumberFormat"},logBase:{$ref:"#/$defs/LogBase"},displayUnits:{$ref:"#/$defs/DisplayUnits"},displayUnitsLabel:{$ref:"#/$defs/DisplayUnitsLabel"}},additionalProperties:!1},ChartSeriesAxis:{type:"object",properties:{hidden:{type:"boolean"},title:{type:"string"},titleStyle:{$ref:"#/$defs/ChartTextStyle"},labelStyle:{$ref:"#/$defs/ChartTextStyle"},majorGridlines:{type:"boolean"},orientation:{type:"string",enum:["minMax","maxMin"]},tickLabelPos:{type:"string",enum:["none","low","high","nextTo"]},tickLabelSkip:{type:"number"},lineColor:{type:"string"}},additionalProperties:!1},ChartStyle:{type:"number",description:`The reference desktop app's built-in chart-style preset
|
|
29
29
|
(\`<c:chartSpace><c:style val="N"/>\`), 1\u201348. Encodes a curated combo
|
|
30
30
|
of theme accent colors, gradients, effects, and font sizes that
|
|
31
31
|
the reference desktop app applies when the user picks a chart style from the
|
|
@@ -35,7 +35,7 @@ set alongside latin so a Japanese / CJK family (e.g. \`'Yu Gothic'\`)
|
|
|
35
35
|
renders the labels instead of the renderer's latin-only fallback.
|
|
36
36
|
Mirrors the latin/ea pairing the reference desktop app emits for CJK chart fonts.`},fontComplexScript:{type:"string",description:'Complex-script font face \u2014 `<a:rPr><a:cs typeface="\u2026"/>`. Written only\nwhen set: `font` fills the latin and east-asian slots and never the\ncomplex-script one, so a chart that mixes Arabic / Hebrew / Thai labels\nhas to name the face here as well.'},sizePt:{type:"number",description:'Font size in points. From `<a:rPr sz="N"/>` where N is in 100ths of a pt.'},bold:{type:"boolean",description:'Bold flag from `<a:rPr b="1"/>`.'},italic:{type:"boolean",description:'Italic flag from `<a:rPr i="1"/>`.'},color:{type:"string",description:"Fill color as `#RRGGBB` from `<a:rPr><a:solidFill><a:srgbClr/></a:solidFill>`."}},additionalProperties:!1},ChartTimeUnit:{type:"string",enum:["days","months","years"]},ChartTrendline:{type:"object",properties:{name:{type:"string",description:`Optional custom label for the trendline (\`<c:trendline><c:name>\u2026\`).
|
|
37
37
|
Defaults to the reference desktop app's auto-generated label
|
|
38
|
-
(e.g. "Linear (X)" / "MA(5) (X)") when omitted.`},type:{type:"string",enum:["linear","exp","log","poly","power","movingAvg"],description:"Regression type \u2014 linear / exp / log / poly / power / movingAvg."},forward:{type:"number",description:'Forward extension (`<c:forward val="N"/>`) \u2014 the trendline runs N\ndata-point periods past the last point. Used to project future\nvalues from the regression line.'},backward:{type:"number",description:'Backward extension (`<c:backward val="N"/>`) \u2014 the trendline runs N\ndata-point periods before the first point.'},period:{type:"number",description:"Optional moving-average period (only meaningful for type='movingAvg')."},order:{type:"number",description:"Polynomial order (only meaningful for type='poly')."},color:{type:"string",description:"Override stroke color; defaults to the series color."},displayEquation:{type:"boolean",description:'Show the regression equation next to the trendline\n(`<c:dispEq val="1"/>`). Defaults to `false`.'},displayRSquared:{type:"boolean",description:'Show the R\xB2 coefficient next to the trendline\n(`<c:dispRSqr val="1"/>`). Defaults to `false`.'}},required:["type"],additionalProperties:!1},ChartUpDownBars:{type:"object",properties:{gapWidthPct:{type:"number",description:"Bar width gap, 0..500 percent (`<c:gapWidth>`); the reference desktop app's default is 150."},upColor:{type:"string",description:"Fill of the rising bars as `#RRGGBB` (`<c:upBars>`)."},downColor:{type:"string",description:"Fill of the falling bars as `#RRGGBB` (`<c:downBars>`)."}},additionalProperties:!1},ChartView3D:{type:"object",properties:{rotX:{type:"number",description:"Elevation in degrees, -90..90 (`<c:rotX>`)."},rotY:{type:"number",description:"Rotation about the vertical axis in degrees, 0..360 (`<c:rotY>`)."},rightAngleAxes:{type:"boolean",description:"Right-angle axes (`<c:rAngAx>`): an oblique projection that ignores\n`perspective`. The reference desktop app's default for bar / column / line / area."},perspective:{type:"number",description:"Field of view, 0..240 (`<c:perspective>`); the reference desktop app's default is 30."},depthPercent:{type:"number",description:"Depth as a percent of the chart width, 20..2000 (`<c:depthPercent>`)."},heightPercent:{type:"number",description:"Height as a percent of the chart width, 5..500 (`<c:hPercent>`)."}},additionalProperties:!1},Color:{type:"string",description:"Optional `#RRGGBB` fill override. Defaults to the theme's accent palette."},ComboChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"},chartKind:{type:"string",enum:["bar","column","line","area"]},secondaryAxis:{type:"boolean"}},required:["name","values"],additionalProperties:!1},DataLabels:{$ref:"#/$defs/ChartDataLabels",description:"Optional chart-level data-label toggles."},DataLabels2:{$ref:"#/$defs/ChartDataLabels",description:"Per-series data-label toggle overrides. Same shape as the chart-level\n`ChartSpec.dataLabels`; overrides win when present. Read from\n`<c:ser><c:dLbls>`."},DataTable:{$ref:"#/$defs/ChartDataTable",description:"Data table under the plot area. Rejected for the axis-less kinds."},Date1904:{type:"boolean",description:'`<c:chartSpace><c:date1904 val="\u2026"/>` \u2014 the spreadsheet date-system flag.\n`false` (the default) uses the 1900-epoch; `true` uses 1904.\nSurface for parity; renderers don\'t act on it yet.'},DispBlanksAs:{type:"string",enum:["gap","zero","span"],description:"`<c:dispBlanksAs val=\"\u2026\"/>` \u2014 how line / area renderers should\ntreat `null` values in series:\n\n - `'gap'` \u2014 leave a gap (the default)\n - `'zero'` \u2014 substitute zero\n - `'span'` \u2014 connect the surrounding points across the gap"},DropLines:{type:"boolean",description:"Drop lines (`<c:dropLines>`) \u2014 vertical guide lines from each data\npoint down to the value axis. Common on line / area charts."},Emu:{type:"integer",description:"A length in EMU: 914400 per inch, 360000 per cm, 12700 per point."},ErrorBars:{$ref:"#/$defs/ChartErrorBars",description:'Error bars along the value direction (`<c:errBars>`; `<c:errDir\nval="y"/>` on scatter / bubble). Valid on bar / column / line / area /\nscatter / bubble series; rejected elsewhere, where CT_*Ser has no\n`errBars` child.'},FillOpacity:{type:"number",description:'Opacity of the series fill, `0` (transparent) to `1` (opaque) \u2014\n`<a:srgbClr><a:alpha val="\u2026"/>` on the series\' `<a:solidFill>`. Applies\nto `color` and to every `pointColors` override. Overlapping area,\nradar and bubble series are the usual reason to set it.'},FirstSliceAngleDeg:{type:"number",description:`Pie / doughnut: angle (in degrees, 0\u2013360) at which the first slice
|
|
38
|
+
(e.g. "Linear (X)" / "MA(5) (X)") when omitted.`},type:{type:"string",enum:["linear","exp","log","poly","power","movingAvg"],description:"Regression type \u2014 linear / exp / log / poly / power / movingAvg."},forward:{type:"number",description:'Forward extension (`<c:forward val="N"/>`) \u2014 the trendline runs N\ndata-point periods past the last point. Used to project future\nvalues from the regression line.'},backward:{type:"number",description:'Backward extension (`<c:backward val="N"/>`) \u2014 the trendline runs N\ndata-point periods before the first point.'},period:{type:"number",description:"Optional moving-average period (only meaningful for type='movingAvg')."},order:{type:"number",description:"Polynomial order (only meaningful for type='poly')."},color:{type:"string",description:"Override stroke color; defaults to the series color."},displayEquation:{type:"boolean",description:'Show the regression equation next to the trendline\n(`<c:dispEq val="1"/>`). Defaults to `false`.'},displayRSquared:{type:"boolean",description:'Show the R\xB2 coefficient next to the trendline\n(`<c:dispRSqr val="1"/>`). Defaults to `false`.'}},required:["type"],additionalProperties:!1},ChartUpDownBars:{type:"object",properties:{gapWidthPct:{type:"number",description:"Bar width gap, 0..500 percent (`<c:gapWidth>`); the reference desktop app's default is 150."},upColor:{type:"string",description:"Fill of the rising bars as `#RRGGBB` (`<c:upBars>`)."},downColor:{type:"string",description:"Fill of the falling bars as `#RRGGBB` (`<c:downBars>`)."}},additionalProperties:!1},ChartView3D:{type:"object",properties:{rotX:{type:"number",description:"Elevation in degrees, -90..90 (`<c:rotX>`)."},rotY:{type:"number",description:"Rotation about the vertical axis in degrees, 0..360 (`<c:rotY>`)."},rightAngleAxes:{type:"boolean",description:"Right-angle axes (`<c:rAngAx>`): an oblique projection that ignores\n`perspective`. The reference desktop app's default for bar / column / line / area."},perspective:{type:"number",description:"Field of view, 0..240 (`<c:perspective>`); the reference desktop app's default is 30."},depthPercent:{type:"number",description:"Depth as a percent of the chart width, 20..2000 (`<c:depthPercent>`)."},heightPercent:{type:"number",description:"Height as a percent of the chart width, 5..500 (`<c:hPercent>`)."}},additionalProperties:!1},Color:{type:"string",description:"Optional `#RRGGBB` fill override. Defaults to the theme's accent palette."},ComboChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"},chartKind:{type:"string",enum:["bar","column","line","area"]},secondaryAxis:{type:"boolean"}},required:["name","values"],additionalProperties:!1},DataLabels:{$ref:"#/$defs/ChartDataLabels",description:"Optional chart-level data-label toggles."},DataLabels2:{$ref:"#/$defs/ChartDataLabels",description:"Per-series data-label toggle overrides. Same shape as the chart-level\n`ChartSpec.dataLabels`; overrides win when present. Read from\n`<c:ser><c:dLbls>`."},DataTable:{$ref:"#/$defs/ChartDataTable",description:"Data table under the plot area. Rejected for the axis-less kinds."},Date1904:{type:"boolean",description:'`<c:chartSpace><c:date1904 val="\u2026"/>` \u2014 the spreadsheet date-system flag.\n`false` (the default) uses the 1900-epoch; `true` uses 1904.\nSurface for parity; renderers don\'t act on it yet.'},DispBlanksAs:{type:"string",enum:["gap","zero","span"],description:"`<c:dispBlanksAs val=\"\u2026\"/>` \u2014 how line / area renderers should\ntreat `null` values in series:\n\n - `'gap'` \u2014 leave a gap (the default)\n - `'zero'` \u2014 substitute zero\n - `'span'` \u2014 connect the surrounding points across the gap"},DisplayUnits:{type:"string",enum:["hundreds","thousands","tenThousands","hundredThousands","millions","tenMillions","hundredMillions","billions","trillions"],description:"Authored display-units scale from `<c:dispUnits><c:builtInUnit val=\"\u2026\"/>`.\nToken values map to divisors:\n\n - `'hundreds'` (100), `'thousands'` (1e3), `'tenThousands'` (1e4),\n `'hundredThousands'` (1e5), `'millions'` (1e6),\n `'tenMillions'` (1e7), `'hundredMillions'` (1e8),\n `'billions'` (1e9), `'trillions'` (1e12)\n\nRenderers divide axis labels by the divisor and may append a unit\nsuffix (\"K\", \"M\", \"B\") for readability."},DisplayUnitsLabel:{type:"boolean",description:'Show the display-units caption next to the axis ("Thousands",\n"Millions", \u2026) \u2014 an empty `<c:dispUnitsLbl/>` under `<c:dispUnits>`.\nOnly meaningful together with `displayUnits`.'},DropLines:{type:"boolean",description:"Drop lines (`<c:dropLines>`) \u2014 vertical guide lines from each data\npoint down to the value axis. Common on line / area charts."},Emu:{type:"integer",description:"A length in EMU: 914400 per inch, 360000 per cm, 12700 per point."},ErrorBars:{$ref:"#/$defs/ChartErrorBars",description:'Error bars along the value direction (`<c:errBars>`; `<c:errDir\nval="y"/>` on scatter / bubble). Valid on bar / column / line / area /\nscatter / bubble series; rejected elsewhere, where CT_*Ser has no\n`errBars` child.'},FillOpacity:{type:"number",description:'Opacity of the series fill, `0` (transparent) to `1` (opaque) \u2014\n`<a:srgbClr><a:alpha val="\u2026"/>` on the series\' `<a:solidFill>`. Applies\nto `color` and to every `pointColors` override. Overlapping area,\nradar and bubble series are the usual reason to set it.'},FirstSliceAngleDeg:{type:"number",description:`Pie / doughnut: angle (in degrees, 0\u2013360) at which the first slice
|
|
39
39
|
starts, measured clockwise from 12 o'clock. Mirrors
|
|
40
40
|
\`<c:firstSliceAng val="\u2026"/>\`. Default 0 = start at the top.`},GapDepthPct:{type:"number",description:"Depth gap between the series rows of a 3-D bar / column / line / area\nchart, 0..500 percent (`<c:gapDepth>`). Requires `view3D`."},GapWidthPct:{type:"number",description:'Gap between adjacent bar groups in `<c:gapWidth val="N"/>` units\n(0..500, percent of bar width). Default 150 (= 1.5\xD7) in the reference desktop app.'},Grouping:{$ref:"#/$defs/ChartGrouping",description:"Bar / column / area grouping mode. Absent for line / pie."},HiLowLines:{type:"boolean",description:"High-low lines (`<c:hiLowLines>`) \u2014 vertical lines spanning the\nhighest and lowest series value at each category. Used by stock\ncharts and side-by-side line charts."},InvertIfNegative:{type:"boolean",description:'Invert the series color for negative values (bar / column charts).\nMirrors `<c:ser><c:invertIfNegative val="1"/>`. Renderers typically\npaint the negative bars in the inverted shade of the series color.'},Language:{type:"string",description:"Language code for the chart's number / date formatters\n(`<c:chartSpace><c:lang val=\"\u2026\"/>`). The reference desktop app emits the user's\nAuthoring app UI language (e.g. `'en-US'`, `'ja-JP'`). Carried for\nround-trip parity; renderers in"},Legend:{type:"object",properties:{position:{anyOf:[{type:"string",enum:["t","b","l","r","tr"]},{type:"null"}]},overlay:{type:"boolean",description:"When `true`, legend overlays the plot area instead of taking a strip."},layout:{$ref:"#/$defs/ChartManualLayout",description:"Manual position of the legend box; `target` does not apply."},textStyle:{$ref:"#/$defs/ChartTextStyle",description:"Authored font / color on the legend's text. From `<c:legend><c:txPr>`'s\nfirst `<a:p><a:pPr><a:defRPr>` (or `<a:r><a:rPr>` as fallback). Same\nshape as `titleStyle`."},hiddenIndices:{type:"array",items:{type:"number"},description:`Series indices that the legend hides via \`<c:legend><c:legendEntry>
|
|
41
41
|
<c:idx val="N"/><c:delete val="1"/></c:legendEntry>\`. Renderers
|
|
@@ -43,7 +43,7 @@ filter them from the legend list while still plotting them.
|
|
|
43
43
|
Common use: keep a trendline series in the data but drop its
|
|
44
44
|
legend entry.`}},required:["position"],additionalProperties:!1,description:"Optional legend configuration. `position` mirrors\n`<c:legend><c:legendPos val=\"\u2026\"/>` \u2014 `'r'` (right) is the default,\n`'t'`, `'b'`, `'l'`, `'tr'` (top-right) the other tokens. `null`\nfor `position` means no legend at all (the chart explicitly hides\nit). `undefined` overall means the chart didn't author a legend\nelement \u2014 renderers should fall back to their own default."},LineColor:{type:"string",description:"Optional stroke color of the series outline / line\n(`<c:ser><c:spPr><a:ln><a:solidFill>`), as an sRGB hex. Defaults to\n`color`; on a pie / doughnut series it is the border between slices."},LineDash:{type:"string",description:"Optional line dash style token (`<c:ser><c:spPr><a:ln><a:prstDash\nval=\"\u2026\"/>`), e.g. `'dash'`, `'dot'`, `'sysDash'`. Only\nmeaningful for line / area / scatter series."},LineMarkers:{type:"boolean",description:'Whether a line chart draws point markers (`<c:lineChart><c:marker\nval="1"/>`). `true` is the reference desktop app\'s "Line with Markers" subtype;\nabsent / `false` is the plain "Line" subtype (no markers). Only\nmeaningful for `kind: \'line\'`.'},LineWidthEmu:{type:"number",description:`Optional line stroke width in EMU (\`<c:ser><c:spPr><a:ln w="\u2026"/>\`).
|
|
45
45
|
Only meaningful for line / area / scatter series. Default falls
|
|
46
|
-
back to the renderer's own pick.`},MarkerColor:{type:"string",description:"Optional marker fill + outline color (`<c:marker><c:spPr>`), as an sRGB\nhex. Defaults to `color`. The builder always writes it for line /\nscatter / radar series, because the reference desktop app paints a marker without\n`<c:spPr>` in the theme's automatic color instead of the series color."},MarkerLineColor:{type:"string",description:"Optional marker outline color (`<c:marker><c:spPr><a:ln>`), as an sRGB\nhex. Defaults to `markerColor`, then `color`."},MarkerSizePt:{type:"number",description:'Marker size in points (`<c:marker><c:size val="N"/>`). The reference desktop app\ndefault ~5. Only meaningful when `markerSymbol` isn\'t `none`.'},MarkerSymbol:{anyOf:[{$ref:"#/$defs/TextWrap"},{type:"string",enum:["circle","diamond","plus","x","dot","dash","triangle","picture","auto","star"]}],description:"Optional marker style for line / scatter series (`<c:ser><c:marker>`).\n`none` hides the markers; the others render the matching glyph at\neach data point. Defaults to `auto`, which renderers map to a small\nfilled circle."},Name:{type:"string",description:"Series label rendered in the legend."},OverlapPct:{type:"number",description:'Overlap of adjacent bars within a category in `<c:overlap val="N"/>`\npercent (-100..100). Negative pulls bars apart, positive overlaps.\nDefaults to 0 (clustered) / 100 (stacked).'},PlainChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"}},required:["name","values"],additionalProperties:!1},PlotAreaFill:{type:"string",description:'Plot-area background fill \u2014 `<c:plotArea><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. `null` for no fill / unsupported fill kind.'},PlotAreaLayout:{$ref:"#/$defs/ChartManualLayout",description:"Manual position of the plot area."},PlotAreaStrokeColor:{type:"string",description:"Plot-area outline color from `<c:plotArea><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. `undefined` means no outline."},PlotVisibleCellsOnly:{type:"boolean",description:'When `false`, plot data from hidden cells in the embedded workbook\n\u2014 maps to `<c:plotVisOnly val="0"/>`. The reference desktop app\'s default is\n`true` (only plot visible cells), so omitting this field emits\n`val="1"` to stay round-trip-safe with files the reference desktop app authored.'},PointColors:{type:"array",items:{type:["null","string"]},description:`Optional per-data-point color overrides, indexed by point index
|
|
46
|
+
back to the renderer's own pick.`},LogBase:{type:"number",description:'Logarithmic base for the axis from `<c:scaling><c:logBase val="N"/>`.\nTypical values are `2`, `10`, `Math.E`. When set, the renderer\nprojects values through `Math.log(v) / Math.log(logBase)` before\nmapping to plot coordinates. Linear when omitted.'},MajorUnit:{type:"number",description:'Major tick spacing (`<c:majorUnit val="N"/>`).'},MarkerColor:{type:"string",description:"Optional marker fill + outline color (`<c:marker><c:spPr>`), as an sRGB\nhex. Defaults to `color`. The builder always writes it for line /\nscatter / radar series, because the reference desktop app paints a marker without\n`<c:spPr>` in the theme's automatic color instead of the series color."},MarkerLineColor:{type:"string",description:"Optional marker outline color (`<c:marker><c:spPr><a:ln>`), as an sRGB\nhex. Defaults to `markerColor`, then `color`."},MarkerSizePt:{type:"number",description:'Marker size in points (`<c:marker><c:size val="N"/>`). The reference desktop app\ndefault ~5. Only meaningful when `markerSymbol` isn\'t `none`.'},MarkerSymbol:{anyOf:[{$ref:"#/$defs/TextWrap"},{type:"string",enum:["circle","diamond","plus","x","dot","dash","triangle","picture","auto","star"]}],description:"Optional marker style for line / scatter series (`<c:ser><c:marker>`).\n`none` hides the markers; the others render the matching glyph at\neach data point. Defaults to `auto`, which renderers map to a small\nfilled circle."},MinorUnit:{type:"number",description:'Minor tick spacing (`<c:minorUnit val="N"/>`).'},Name:{type:"string",description:"Series label rendered in the legend."},NumberFormat:{type:"string",description:'Number-format code from `<c:numFmt formatCode="\u2026"/>`. Common\nvalues: `"0%"`, `"0.0%"`, `"#,##0"`, `"$#,##0"`, `"yyyy-mm-dd"`.\nRenderers project a subset of spreadsheet number formats to label text.'},OverlapPct:{type:"number",description:'Overlap of adjacent bars within a category in `<c:overlap val="N"/>`\npercent (-100..100). Negative pulls bars apart, positive overlaps.\nDefaults to 0 (clustered) / 100 (stacked).'},PlainChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"}},required:["name","values"],additionalProperties:!1},PlotAreaFill:{type:"string",description:'Plot-area background fill \u2014 `<c:plotArea><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. `null` for no fill / unsupported fill kind.'},PlotAreaLayout:{$ref:"#/$defs/ChartManualLayout",description:"Manual position of the plot area."},PlotAreaStrokeColor:{type:"string",description:"Plot-area outline color from `<c:plotArea><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. `undefined` means no outline."},PlotVisibleCellsOnly:{type:"boolean",description:'When `false`, plot data from hidden cells in the embedded workbook\n\u2014 maps to `<c:plotVisOnly val="0"/>`. The reference desktop app\'s default is\n`true` (only plot visible cells), so omitting this field emits\n`val="1"` to stay round-trip-safe with files the reference desktop app authored.'},PointColors:{type:"array",items:{type:["null","string"]},description:`Optional per-data-point color overrides, indexed by point index
|
|
47
47
|
(\`<c:dPt><c:idx val="N"/><c:spPr><a:solidFill>\u2026\`). Sparse \u2014 only
|
|
48
48
|
the indices that author an override appear. Pie / doughnut decks
|
|
49
49
|
almost always emit one of these per slice to break out of the
|
|
@@ -212,7 +212,7 @@ and use these as horizontal guide lines per category band.`},CategoryAxisMajorTi
|
|
|
212
212
|
Width of the category-axis minor gridlines.`},CategoryAxisMinorGridlines:{type:"boolean",description:"Companion `<c:minorGridlines/>` on the category axis."},CategoryAxisMinorTickMark:{anyOf:[{$ref:"#/$defs/AnimationInOut"},{type:"string",enum:["none","cross"]}],description:"Minor-tick mark mode on the category axis (`<c:catAx><c:minorTickMark>`); default `'none'`."},CategoryAxisNoMultiLevelLabel:{type:"boolean",description:'Toggle multi-level (hierarchical) category labels \u2014\n`<c:catAx><c:noMultiLvlLbl val="0|1"/>`. The reference desktop app defaults to\n`0` (multi-level labels stack). Set to `true` to flatten\nhierarchical categories into a single row.'},CategoryAxisNumberFormat:{type:"string",description:'Number-format code for the category-axis tick labels \u2014\n`<c:catAx><c:numFmt formatCode="\u2026"/>`. Most useful on date-style\ncategories (`"mm/dd/yyyy"`, `"mmm"`, etc.) but accepts any spreadsheet\nformat string. Independent of `valueAxis.numberFormat` (which\ntargets the value axis).'},CategoryAxisOrientation:{type:"string",enum:["minMax","maxMin"],description:"Category-axis order \u2014 `'minMax'` (the data's natural order) or\n`'maxMin'` (reversed). For bar charts the reference desktop app typically emits\n`maxMin` so the first category sits at the top instead of the\nbottom; honour the authored value when present."},CategoryAxisScaling:{$ref:"#/$defs/ChartAxisScaling",description:"Scaling of the horizontal axis where it is numeric: the x value axis\nof `scatter` / `bubble` charts (every field applies) and a date axis\n(`min` / `max` only, as date serials). Rejected on a text category\naxis, which has no scale to set.\nDate-serial range of the axis; only `min` / `max` apply."},CategoryAxisScaling2:{$ref:"#/$defs/ChartAxisScaling",description:"Scaling of the horizontal axis where it is numeric: the x value axis\nof `scatter` / `bubble` charts (every field applies) and a date axis\n(`min` / `max` only, as date serials). Rejected on a text category\naxis, which has no scale to set."},CategoryAxisTickLabelPos:{type:"string",enum:["none","low","high","nextTo"],description:'Category-axis tick label position (`<c:catAx><c:tickLblPos val="\u2026"/>`):\n - `none` hides labels but keeps the axis line\n - `low` / `high` puts them at the start / end (rare)\n - `nextTo` (default) is the standard position next to the axis'},CategoryAxisTickLabelSkip:{type:"number",description:'Category-axis tick label skip step (`<c:catAx><c:tickLblSkip val="N"/>`):\nrender every Nth category label. Commonly 2 / 5 / 10 on dense\ntime-series charts to keep labels from overlapping.'},CategoryAxisTickMarkSkip:{type:"number",description:`Category-axis tick *mark* skip (\`<c:catAx><c:tickMarkSkip val="N"/>\`):
|
|
213
213
|
draw every Nth tick mark independently of the label-skip stride.
|
|
214
214
|
Useful when you want fewer label collisions but the same dense
|
|
215
|
-
tick lattice; defaults to 1 (every tick).`},CategoryAxisTitle:{type:"string",description:"Optional axis title text (`<c:catAx><c:title>` / `<c:valAx><c:title>`)."},CategoryAxisTitleRotationDeg:{type:"number",description:'Rotation of the category-axis title, in degrees clockwise. Maps\nto `<c:catAx><c:title><c:tx><c:rich><a:bodyPr rot="N"/>` (the OOXML\nvalue is in 60000ths of a degree, but the API surface uses plain\ndegrees). Omit to inherit the default (`0`).'},CategoryAxisTitleStyle:{$ref:"#/$defs/ChartTextStyle",description:"Authored font / color on the category-axis title (same `<a:rPr>` shape as `titleStyle`)."},CategoryGroupLevels:{type:"array",items:{type:"array",items:{type:"string"}},description:"Outer levels of a multi-level category axis (`<c:multiLvlStrRef>`),\nordered from the level next to `categories` outward. Each level has\none entry per category; an empty string continues the previous\ngroup, so `['2024', '', '', '', '2025', '', '', '']` groups eight\nquarters into two years."},ChartAreaFill:{type:"string",description:'Chart-area background fill \u2014 `<c:chartSpace><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. Renderers can use this as the outer card\ncolor instead of the hard-coded white.'},ChartAreaStrokeColor:{type:"string",description:"Chart-area outline color from `<c:chartSpace><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. Overrides the renderer's default\n`#E5E7EB` card border."},ChartAxisScaling:{type:"object",properties:{min:{type:"number"},max:{type:"number"},majorUnit:{
|
|
215
|
+
tick lattice; defaults to 1 (every tick).`},CategoryAxisTitle:{type:"string",description:"Optional axis title text (`<c:catAx><c:title>` / `<c:valAx><c:title>`)."},CategoryAxisTitleRotationDeg:{type:"number",description:'Rotation of the category-axis title, in degrees clockwise. Maps\nto `<c:catAx><c:title><c:tx><c:rich><a:bodyPr rot="N"/>` (the OOXML\nvalue is in 60000ths of a degree, but the API surface uses plain\ndegrees). Omit to inherit the default (`0`).'},CategoryAxisTitleStyle:{$ref:"#/$defs/ChartTextStyle",description:"Authored font / color on the category-axis title (same `<a:rPr>` shape as `titleStyle`)."},CategoryGroupLevels:{type:"array",items:{type:"array",items:{type:"string"}},description:"Outer levels of a multi-level category axis (`<c:multiLvlStrRef>`),\nordered from the level next to `categories` outward. Each level has\none entry per category; an empty string continues the previous\ngroup, so `['2024', '', '', '', '2025', '', '', '']` groups eight\nquarters into two years."},ChartAreaFill:{type:"string",description:'Chart-area background fill \u2014 `<c:chartSpace><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. Renderers can use this as the outer card\ncolor instead of the hard-coded white.'},ChartAreaStrokeColor:{type:"string",description:"Chart-area outline color from `<c:chartSpace><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. Overrides the renderer's default\n`#E5E7EB` card border."},ChartAxisScaling:{type:"object",properties:{min:{type:"number"},max:{type:"number"},majorUnit:{$ref:"#/$defs/MajorUnit"},minorUnit:{$ref:"#/$defs/MinorUnit"},numberFormat:{$ref:"#/$defs/NumberFormat"},logBase:{$ref:"#/$defs/LogBase"},displayUnits:{$ref:"#/$defs/DisplayUnits"},displayUnitsLabel:{$ref:"#/$defs/DisplayUnitsLabel"}},additionalProperties:!1},ChartDataLabels:{type:"object",properties:{showValue:{type:"boolean",description:"Numeric value of each data point."},showCategory:{type:"boolean",description:"Category label of each data point."},showSeriesName:{type:"boolean",description:"Series name on each data point."},showPercent:{type:"boolean",description:"Percentage of total (for pie / doughnut)."},numberFormat:{type:"string",description:'Number-format code from `<c:dLbls><c:numFmt formatCode="\u2026"/>`. When\nset, value labels are projected through this spreadsheet-style format\n(same subset the value axis honors: `"0%"`, `"#,##0"`, `"$#,##0"`,\n`"0.00"`). Independent of `ChartAxisScaling.numberFormat`.'},position:{type:"string",enum:["ctr","inEnd","outEnd","inBase","t","b","l","r","bestFit"],description:'Position of the label relative to its data point \u2014 from\n`<c:dLbls><c:dLblPos val="\u2026"/>`.'},separator:{type:"string",description:'Separator between concatenated label parts when more than one of\n`showValue` / `showCategory` / `showSeriesName` / `showPercent` is\nset. Read from `<c:dLbls><c:separator>\u2026</c:separator>` (a\nleaf-text-only element). Common values: `" "` (default), `", "`,\n`"\\n"`, `"; "`.'},textStyle:{$ref:"#/$defs/ChartTextStyle",description:"Default-run text style for the labels \u2014 projected from\n`<c:dLbls><c:txPr>\u2026<a:defRPr/>\u2026</c:txPr>`. Applies to whichever\nlabel parts are turned on by the `show*` toggles. Independent of\nthe chart-title style and the axis-label style."},showLeaderLines:{type:"boolean",description:'Leader lines between a label and its data point\n(`<c:dLbls><c:showLeaderLines val="\u2026"/>`). Omitted = the\napplication default (shown). Series- and chart-level only: a\nper-point `<c:dLbl>` has no such element, so `pointDataLabels`\nignores it on write and never reads it.'},showBubbleSize:{type:"boolean",description:"Bubble size of each data point (`<c:showBubbleSize>`); bubble charts only."},showLegendKey:{type:"boolean",description:"Legend key swatch next to each label (`<c:showLegendKey>`)."},fillColor:{type:"string",description:"Label background fill as `#RRGGBB` (`<c:spPr><a:solidFill>`)."},text:{type:"string",description:"Literal label text replacing the generated one (`<c:dLbl><c:tx>\n<c:rich>`) \u2014 how a scatter point gets a name. Per-point only: the\nseries- and chart-level `<c:dLbls>` have no `<c:tx>`, so it is ignored\nthere on write and never read."}},required:["showValue","showCategory","showSeriesName","showPercent"],additionalProperties:!1},ChartDataTable:{type:"object",properties:{showHorizontalBorder:{type:"boolean"},showVerticalBorder:{type:"boolean"},showOutline:{type:"boolean"},showKeys:{type:"boolean",description:"Legend keys next to the series names."},textStyle:{$ref:"#/$defs/ChartTextStyle"}},additionalProperties:!1},ChartDateAxis:{type:"object",properties:{baseTimeUnit:{$ref:"#/$defs/ChartTimeUnit"},majorUnit:{type:"number"},majorTimeUnit:{$ref:"#/$defs/ChartTimeUnit"},minorUnit:{type:"number"},minorTimeUnit:{$ref:"#/$defs/ChartTimeUnit"}},additionalProperties:!1},ChartErrorBars:{type:"object",properties:{barType:{type:"string",enum:["both","plus","minus"],description:"Which side of the point gets a bar (`<c:errBarType>`)."},amount:{anyOf:[{type:"object",properties:{type:{type:"string",enum:["fixedVal","percentage","stdDev"]},value:{type:"number"}},required:["type","value"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"stdErr"}},required:["type"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"cust"},plus:{type:"array",items:{type:["null","number"]},description:"Per-point positive amounts (`<c:plus><c:numLit>`)."},minus:{type:"array",items:{type:["null","number"]},description:"Per-point negative amounts (`<c:minus><c:numLit>`)."}},required:["type"],additionalProperties:!1}]},noEndCap:{type:"boolean",description:'Drop the T-shaped end caps (`<c:noEndCap val="1"/>`).'},color:{type:"string",description:"Bar stroke color as `#RRGGBB`."},lineWidthEmu:{type:"number",description:"Bar stroke width in EMU."}},required:["barType","amount"],additionalProperties:!1},ChartGrouping:{type:"string",enum:["clustered","stacked","percentStacked","standard"]},ChartManualLayout:{type:"object",properties:{x:{type:"number"},y:{type:"number"},w:{type:"number"},h:{type:"number"},target:{type:"string",enum:["inner","outer"],description:"Plot area only: whether the box bounds the plot alone (`inner`) or the\nplot plus its tick labels and axis titles (`outer`, the default)."}},required:["x","y","w","h"],additionalProperties:!1},ChartRef:{$ref:"#/$defs/ShapeRef",description:"A chart, by the ShapeRef of the graphic frame that holds it."},ChartSecondaryValueAxis:{type:"object",properties:{scaling:{$ref:"#/$defs/ChartAxisScaling"},title:{type:"string"},titleStyle:{$ref:"#/$defs/ChartTextStyle"},labelStyle:{$ref:"#/$defs/ChartTextStyle"},majorGridlines:{type:"boolean"},majorGridlineColor:{type:"string"},majorGridlineWidthEmu:{type:"number",description:"Major gridline width in EMU, the mirror of `ChartSpec.valueAxisMajorGridlineWidthEmu`."},lineColor:{type:"string"},lineWidthEmu:{type:"number",description:"Axis line width in EMU, the mirror of `ChartSpec.valueAxisLineWidthEmu`."},majorTickMark:{anyOf:[{$ref:"#/$defs/AnimationInOut"},{type:"string",enum:["none","cross"]}],description:"Major tick marks; default `'out'`."},minorTickMark:{anyOf:[{$ref:"#/$defs/AnimationInOut"},{type:"string",enum:["none","cross"]}],description:"Minor tick marks; default `'none'`."},tickLabelPos:{type:"string",enum:["none","low","high","nextTo"],description:"Tick-label position, the mirror of `ChartSpec.valueAxisTickLabelPos`."},crossBetween:{type:"string",enum:["between","midCat"]},min:{type:"number"},max:{type:"number"},majorUnit:{$ref:"#/$defs/MajorUnit"},minorUnit:{$ref:"#/$defs/MinorUnit"},numberFormat:{$ref:"#/$defs/NumberFormat"},logBase:{$ref:"#/$defs/LogBase"},displayUnits:{$ref:"#/$defs/DisplayUnits"},displayUnitsLabel:{$ref:"#/$defs/DisplayUnitsLabel"}},additionalProperties:!1},ChartSeriesAxis:{type:"object",properties:{hidden:{type:"boolean"},title:{type:"string"},titleStyle:{$ref:"#/$defs/ChartTextStyle"},labelStyle:{$ref:"#/$defs/ChartTextStyle"},majorGridlines:{type:"boolean"},orientation:{type:"string",enum:["minMax","maxMin"]},tickLabelPos:{type:"string",enum:["none","low","high","nextTo"]},tickLabelSkip:{type:"number"},lineColor:{type:"string"}},additionalProperties:!1},ChartStyle:{type:"number",description:`The reference desktop app's built-in chart-style preset
|
|
216
216
|
(\`<c:chartSpace><c:style val="N"/>\`), 1\u201348. Encodes a curated combo
|
|
217
217
|
of theme accent colors, gradients, effects, and font sizes that
|
|
218
218
|
the reference desktop app applies when the user picks a chart style from the
|
|
@@ -222,7 +222,7 @@ set alongside latin so a Japanese / CJK family (e.g. \`'Yu Gothic'\`)
|
|
|
222
222
|
renders the labels instead of the renderer's latin-only fallback.
|
|
223
223
|
Mirrors the latin/ea pairing the reference desktop app emits for CJK chart fonts.`},fontComplexScript:{type:"string",description:'Complex-script font face \u2014 `<a:rPr><a:cs typeface="\u2026"/>`. Written only\nwhen set: `font` fills the latin and east-asian slots and never the\ncomplex-script one, so a chart that mixes Arabic / Hebrew / Thai labels\nhas to name the face here as well.'},sizePt:{type:"number",description:'Font size in points. From `<a:rPr sz="N"/>` where N is in 100ths of a pt.'},bold:{type:"boolean",description:'Bold flag from `<a:rPr b="1"/>`.'},italic:{type:"boolean",description:'Italic flag from `<a:rPr i="1"/>`.'},color:{type:"string",description:"Fill color as `#RRGGBB` from `<a:rPr><a:solidFill><a:srgbClr/></a:solidFill>`."}},additionalProperties:!1},ChartTimeUnit:{type:"string",enum:["days","months","years"]},ChartTrendline:{type:"object",properties:{name:{type:"string",description:`Optional custom label for the trendline (\`<c:trendline><c:name>\u2026\`).
|
|
224
224
|
Defaults to the reference desktop app's auto-generated label
|
|
225
|
-
(e.g. "Linear (X)" / "MA(5) (X)") when omitted.`},type:{type:"string",enum:["linear","exp","log","poly","power","movingAvg"],description:"Regression type \u2014 linear / exp / log / poly / power / movingAvg."},forward:{type:"number",description:'Forward extension (`<c:forward val="N"/>`) \u2014 the trendline runs N\ndata-point periods past the last point. Used to project future\nvalues from the regression line.'},backward:{type:"number",description:'Backward extension (`<c:backward val="N"/>`) \u2014 the trendline runs N\ndata-point periods before the first point.'},period:{type:"number",description:"Optional moving-average period (only meaningful for type='movingAvg')."},order:{type:"number",description:"Polynomial order (only meaningful for type='poly')."},color:{type:"string",description:"Override stroke color; defaults to the series color."},displayEquation:{type:"boolean",description:'Show the regression equation next to the trendline\n(`<c:dispEq val="1"/>`). Defaults to `false`.'},displayRSquared:{type:"boolean",description:'Show the R\xB2 coefficient next to the trendline\n(`<c:dispRSqr val="1"/>`). Defaults to `false`.'}},required:["type"],additionalProperties:!1},ChartUpDownBars:{type:"object",properties:{gapWidthPct:{type:"number",description:"Bar width gap, 0..500 percent (`<c:gapWidth>`); the reference desktop app's default is 150."},upColor:{type:"string",description:"Fill of the rising bars as `#RRGGBB` (`<c:upBars>`)."},downColor:{type:"string",description:"Fill of the falling bars as `#RRGGBB` (`<c:downBars>`)."}},additionalProperties:!1},ChartView3D:{type:"object",properties:{rotX:{type:"number",description:"Elevation in degrees, -90..90 (`<c:rotX>`)."},rotY:{type:"number",description:"Rotation about the vertical axis in degrees, 0..360 (`<c:rotY>`)."},rightAngleAxes:{type:"boolean",description:"Right-angle axes (`<c:rAngAx>`): an oblique projection that ignores\n`perspective`. The reference desktop app's default for bar / column / line / area."},perspective:{type:"number",description:"Field of view, 0..240 (`<c:perspective>`); the reference desktop app's default is 30."},depthPercent:{type:"number",description:"Depth as a percent of the chart width, 20..2000 (`<c:depthPercent>`)."},heightPercent:{type:"number",description:"Height as a percent of the chart width, 5..500 (`<c:hPercent>`)."}},additionalProperties:!1},Color:{type:"string",description:"Optional `#RRGGBB` fill override. Defaults to the theme's accent palette."},ComboChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"},chartKind:{type:"string",enum:["bar","column","line","area"]},secondaryAxis:{type:"boolean"}},required:["name","values"],additionalProperties:!1},DataLabels:{$ref:"#/$defs/ChartDataLabels",description:"Optional chart-level data-label toggles."},DataLabels2:{$ref:"#/$defs/ChartDataLabels",description:"Per-series data-label toggle overrides. Same shape as the chart-level\n`ChartSpec.dataLabels`; overrides win when present. Read from\n`<c:ser><c:dLbls>`."},DataTable:{$ref:"#/$defs/ChartDataTable",description:"Data table under the plot area. Rejected for the axis-less kinds."},Date1904:{type:"boolean",description:'`<c:chartSpace><c:date1904 val="\u2026"/>` \u2014 the spreadsheet date-system flag.\n`false` (the default) uses the 1900-epoch; `true` uses 1904.\nSurface for parity; renderers don\'t act on it yet.'},DispBlanksAs:{type:"string",enum:["gap","zero","span"],description:"`<c:dispBlanksAs val=\"\u2026\"/>` \u2014 how line / area renderers should\ntreat `null` values in series:\n\n - `'gap'` \u2014 leave a gap (the default)\n - `'zero'` \u2014 substitute zero\n - `'span'` \u2014 connect the surrounding points across the gap"},DropLines:{type:"boolean",description:"Drop lines (`<c:dropLines>`) \u2014 vertical guide lines from each data\npoint down to the value axis. Common on line / area charts."},ErrorBars:{$ref:"#/$defs/ChartErrorBars",description:'Error bars along the value direction (`<c:errBars>`; `<c:errDir\nval="y"/>` on scatter / bubble). Valid on bar / column / line / area /\nscatter / bubble series; rejected elsewhere, where CT_*Ser has no\n`errBars` child.'},FillOpacity:{type:"number",description:'Opacity of the series fill, `0` (transparent) to `1` (opaque) \u2014\n`<a:srgbClr><a:alpha val="\u2026"/>` on the series\' `<a:solidFill>`. Applies\nto `color` and to every `pointColors` override. Overlapping area,\nradar and bubble series are the usual reason to set it.'},FirstSliceAngleDeg:{type:"number",description:`Pie / doughnut: angle (in degrees, 0\u2013360) at which the first slice
|
|
225
|
+
(e.g. "Linear (X)" / "MA(5) (X)") when omitted.`},type:{type:"string",enum:["linear","exp","log","poly","power","movingAvg"],description:"Regression type \u2014 linear / exp / log / poly / power / movingAvg."},forward:{type:"number",description:'Forward extension (`<c:forward val="N"/>`) \u2014 the trendline runs N\ndata-point periods past the last point. Used to project future\nvalues from the regression line.'},backward:{type:"number",description:'Backward extension (`<c:backward val="N"/>`) \u2014 the trendline runs N\ndata-point periods before the first point.'},period:{type:"number",description:"Optional moving-average period (only meaningful for type='movingAvg')."},order:{type:"number",description:"Polynomial order (only meaningful for type='poly')."},color:{type:"string",description:"Override stroke color; defaults to the series color."},displayEquation:{type:"boolean",description:'Show the regression equation next to the trendline\n(`<c:dispEq val="1"/>`). Defaults to `false`.'},displayRSquared:{type:"boolean",description:'Show the R\xB2 coefficient next to the trendline\n(`<c:dispRSqr val="1"/>`). Defaults to `false`.'}},required:["type"],additionalProperties:!1},ChartUpDownBars:{type:"object",properties:{gapWidthPct:{type:"number",description:"Bar width gap, 0..500 percent (`<c:gapWidth>`); the reference desktop app's default is 150."},upColor:{type:"string",description:"Fill of the rising bars as `#RRGGBB` (`<c:upBars>`)."},downColor:{type:"string",description:"Fill of the falling bars as `#RRGGBB` (`<c:downBars>`)."}},additionalProperties:!1},ChartView3D:{type:"object",properties:{rotX:{type:"number",description:"Elevation in degrees, -90..90 (`<c:rotX>`)."},rotY:{type:"number",description:"Rotation about the vertical axis in degrees, 0..360 (`<c:rotY>`)."},rightAngleAxes:{type:"boolean",description:"Right-angle axes (`<c:rAngAx>`): an oblique projection that ignores\n`perspective`. The reference desktop app's default for bar / column / line / area."},perspective:{type:"number",description:"Field of view, 0..240 (`<c:perspective>`); the reference desktop app's default is 30."},depthPercent:{type:"number",description:"Depth as a percent of the chart width, 20..2000 (`<c:depthPercent>`)."},heightPercent:{type:"number",description:"Height as a percent of the chart width, 5..500 (`<c:hPercent>`)."}},additionalProperties:!1},Color:{type:"string",description:"Optional `#RRGGBB` fill override. Defaults to the theme's accent palette."},ComboChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"},chartKind:{type:"string",enum:["bar","column","line","area"]},secondaryAxis:{type:"boolean"}},required:["name","values"],additionalProperties:!1},DataLabels:{$ref:"#/$defs/ChartDataLabels",description:"Optional chart-level data-label toggles."},DataLabels2:{$ref:"#/$defs/ChartDataLabels",description:"Per-series data-label toggle overrides. Same shape as the chart-level\n`ChartSpec.dataLabels`; overrides win when present. Read from\n`<c:ser><c:dLbls>`."},DataTable:{$ref:"#/$defs/ChartDataTable",description:"Data table under the plot area. Rejected for the axis-less kinds."},Date1904:{type:"boolean",description:'`<c:chartSpace><c:date1904 val="\u2026"/>` \u2014 the spreadsheet date-system flag.\n`false` (the default) uses the 1900-epoch; `true` uses 1904.\nSurface for parity; renderers don\'t act on it yet.'},DispBlanksAs:{type:"string",enum:["gap","zero","span"],description:"`<c:dispBlanksAs val=\"\u2026\"/>` \u2014 how line / area renderers should\ntreat `null` values in series:\n\n - `'gap'` \u2014 leave a gap (the default)\n - `'zero'` \u2014 substitute zero\n - `'span'` \u2014 connect the surrounding points across the gap"},DisplayUnits:{type:"string",enum:["hundreds","thousands","tenThousands","hundredThousands","millions","tenMillions","hundredMillions","billions","trillions"],description:"Authored display-units scale from `<c:dispUnits><c:builtInUnit val=\"\u2026\"/>`.\nToken values map to divisors:\n\n - `'hundreds'` (100), `'thousands'` (1e3), `'tenThousands'` (1e4),\n `'hundredThousands'` (1e5), `'millions'` (1e6),\n `'tenMillions'` (1e7), `'hundredMillions'` (1e8),\n `'billions'` (1e9), `'trillions'` (1e12)\n\nRenderers divide axis labels by the divisor and may append a unit\nsuffix (\"K\", \"M\", \"B\") for readability."},DisplayUnitsLabel:{type:"boolean",description:'Show the display-units caption next to the axis ("Thousands",\n"Millions", \u2026) \u2014 an empty `<c:dispUnitsLbl/>` under `<c:dispUnits>`.\nOnly meaningful together with `displayUnits`.'},DropLines:{type:"boolean",description:"Drop lines (`<c:dropLines>`) \u2014 vertical guide lines from each data\npoint down to the value axis. Common on line / area charts."},ErrorBars:{$ref:"#/$defs/ChartErrorBars",description:'Error bars along the value direction (`<c:errBars>`; `<c:errDir\nval="y"/>` on scatter / bubble). Valid on bar / column / line / area /\nscatter / bubble series; rejected elsewhere, where CT_*Ser has no\n`errBars` child.'},FillOpacity:{type:"number",description:'Opacity of the series fill, `0` (transparent) to `1` (opaque) \u2014\n`<a:srgbClr><a:alpha val="\u2026"/>` on the series\' `<a:solidFill>`. Applies\nto `color` and to every `pointColors` override. Overlapping area,\nradar and bubble series are the usual reason to set it.'},FirstSliceAngleDeg:{type:"number",description:`Pie / doughnut: angle (in degrees, 0\u2013360) at which the first slice
|
|
226
226
|
starts, measured clockwise from 12 o'clock. Mirrors
|
|
227
227
|
\`<c:firstSliceAng val="\u2026"/>\`. Default 0 = start at the top.`},GapDepthPct:{type:"number",description:"Depth gap between the series rows of a 3-D bar / column / line / area\nchart, 0..500 percent (`<c:gapDepth>`). Requires `view3D`."},GapWidthPct:{type:"number",description:'Gap between adjacent bar groups in `<c:gapWidth val="N"/>` units\n(0..500, percent of bar width). Default 150 (= 1.5\xD7) in the reference desktop app.'},Grouping:{$ref:"#/$defs/ChartGrouping",description:"Bar / column / area grouping mode. Absent for line / pie."},HiLowLines:{type:"boolean",description:"High-low lines (`<c:hiLowLines>`) \u2014 vertical lines spanning the\nhighest and lowest series value at each category. Used by stock\ncharts and side-by-side line charts."},InvertIfNegative:{type:"boolean",description:'Invert the series color for negative values (bar / column charts).\nMirrors `<c:ser><c:invertIfNegative val="1"/>`. Renderers typically\npaint the negative bars in the inverted shade of the series color.'},Language:{type:"string",description:"Language code for the chart's number / date formatters\n(`<c:chartSpace><c:lang val=\"\u2026\"/>`). The reference desktop app emits the user's\nAuthoring app UI language (e.g. `'en-US'`, `'ja-JP'`). Carried for\nround-trip parity; renderers in"},Legend:{type:"object",properties:{position:{anyOf:[{type:"string",enum:["t","b","l","r","tr"]},{type:"null"}]},overlay:{type:"boolean",description:"When `true`, legend overlays the plot area instead of taking a strip."},layout:{$ref:"#/$defs/ChartManualLayout",description:"Manual position of the legend box; `target` does not apply."},textStyle:{$ref:"#/$defs/ChartTextStyle",description:"Authored font / color on the legend's text. From `<c:legend><c:txPr>`'s\nfirst `<a:p><a:pPr><a:defRPr>` (or `<a:r><a:rPr>` as fallback). Same\nshape as `titleStyle`."},hiddenIndices:{type:"array",items:{type:"number"},description:`Series indices that the legend hides via \`<c:legend><c:legendEntry>
|
|
228
228
|
<c:idx val="N"/><c:delete val="1"/></c:legendEntry>\`. Renderers
|
|
@@ -230,7 +230,7 @@ filter them from the legend list while still plotting them.
|
|
|
230
230
|
Common use: keep a trendline series in the data but drop its
|
|
231
231
|
legend entry.`}},required:["position"],additionalProperties:!1,description:"Optional legend configuration. `position` mirrors\n`<c:legend><c:legendPos val=\"\u2026\"/>` \u2014 `'r'` (right) is the default,\n`'t'`, `'b'`, `'l'`, `'tr'` (top-right) the other tokens. `null`\nfor `position` means no legend at all (the chart explicitly hides\nit). `undefined` overall means the chart didn't author a legend\nelement \u2014 renderers should fall back to their own default."},LineColor:{type:"string",description:"Optional stroke color of the series outline / line\n(`<c:ser><c:spPr><a:ln><a:solidFill>`), as an sRGB hex. Defaults to\n`color`; on a pie / doughnut series it is the border between slices."},LineDash:{type:"string",description:"Optional line dash style token (`<c:ser><c:spPr><a:ln><a:prstDash\nval=\"\u2026\"/>`), e.g. `'dash'`, `'dot'`, `'sysDash'`. Only\nmeaningful for line / area / scatter series."},LineMarkers:{type:"boolean",description:'Whether a line chart draws point markers (`<c:lineChart><c:marker\nval="1"/>`). `true` is the reference desktop app\'s "Line with Markers" subtype;\nabsent / `false` is the plain "Line" subtype (no markers). Only\nmeaningful for `kind: \'line\'`.'},LineWidthEmu:{type:"number",description:`Optional line stroke width in EMU (\`<c:ser><c:spPr><a:ln w="\u2026"/>\`).
|
|
232
232
|
Only meaningful for line / area / scatter series. Default falls
|
|
233
|
-
back to the renderer's own pick.`},MarkerColor:{type:"string",description:"Optional marker fill + outline color (`<c:marker><c:spPr>`), as an sRGB\nhex. Defaults to `color`. The builder always writes it for line /\nscatter / radar series, because the reference desktop app paints a marker without\n`<c:spPr>` in the theme's automatic color instead of the series color."},MarkerLineColor:{type:"string",description:"Optional marker outline color (`<c:marker><c:spPr><a:ln>`), as an sRGB\nhex. Defaults to `markerColor`, then `color`."},MarkerSizePt:{type:"number",description:'Marker size in points (`<c:marker><c:size val="N"/>`). The reference desktop app\ndefault ~5. Only meaningful when `markerSymbol` isn\'t `none`.'},MarkerSymbol:{anyOf:[{$ref:"#/$defs/TextWrap"},{type:"string",enum:["circle","diamond","plus","x","dot","dash","triangle","picture","auto","star"]}],description:"Optional marker style for line / scatter series (`<c:ser><c:marker>`).\n`none` hides the markers; the others render the matching glyph at\neach data point. Defaults to `auto`, which renderers map to a small\nfilled circle."},Name:{type:"string",description:"Series label rendered in the legend."},OverlapPct:{type:"number",description:'Overlap of adjacent bars within a category in `<c:overlap val="N"/>`\npercent (-100..100). Negative pulls bars apart, positive overlaps.\nDefaults to 0 (clustered) / 100 (stacked).'},PlainChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"}},required:["name","values"],additionalProperties:!1},PlotAreaFill:{type:"string",description:'Plot-area background fill \u2014 `<c:plotArea><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. `null` for no fill / unsupported fill kind.'},PlotAreaLayout:{$ref:"#/$defs/ChartManualLayout",description:"Manual position of the plot area."},PlotAreaStrokeColor:{type:"string",description:"Plot-area outline color from `<c:plotArea><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. `undefined` means no outline."},PlotVisibleCellsOnly:{type:"boolean",description:'When `false`, plot data from hidden cells in the embedded workbook\n\u2014 maps to `<c:plotVisOnly val="0"/>`. The reference desktop app\'s default is\n`true` (only plot visible cells), so omitting this field emits\n`val="1"` to stay round-trip-safe with files the reference desktop app authored.'},PointColors:{type:"array",items:{type:["null","string"]},description:`Optional per-data-point color overrides, indexed by point index
|
|
233
|
+
back to the renderer's own pick.`},LogBase:{type:"number",description:'Logarithmic base for the axis from `<c:scaling><c:logBase val="N"/>`.\nTypical values are `2`, `10`, `Math.E`. When set, the renderer\nprojects values through `Math.log(v) / Math.log(logBase)` before\nmapping to plot coordinates. Linear when omitted.'},MajorUnit:{type:"number",description:'Major tick spacing (`<c:majorUnit val="N"/>`).'},MarkerColor:{type:"string",description:"Optional marker fill + outline color (`<c:marker><c:spPr>`), as an sRGB\nhex. Defaults to `color`. The builder always writes it for line /\nscatter / radar series, because the reference desktop app paints a marker without\n`<c:spPr>` in the theme's automatic color instead of the series color."},MarkerLineColor:{type:"string",description:"Optional marker outline color (`<c:marker><c:spPr><a:ln>`), as an sRGB\nhex. Defaults to `markerColor`, then `color`."},MarkerSizePt:{type:"number",description:'Marker size in points (`<c:marker><c:size val="N"/>`). The reference desktop app\ndefault ~5. Only meaningful when `markerSymbol` isn\'t `none`.'},MarkerSymbol:{anyOf:[{$ref:"#/$defs/TextWrap"},{type:"string",enum:["circle","diamond","plus","x","dot","dash","triangle","picture","auto","star"]}],description:"Optional marker style for line / scatter series (`<c:ser><c:marker>`).\n`none` hides the markers; the others render the matching glyph at\neach data point. Defaults to `auto`, which renderers map to a small\nfilled circle."},MinorUnit:{type:"number",description:'Minor tick spacing (`<c:minorUnit val="N"/>`).'},Name:{type:"string",description:"Series label rendered in the legend."},NumberFormat:{type:"string",description:'Number-format code from `<c:numFmt formatCode="\u2026"/>`. Common\nvalues: `"0%"`, `"0.0%"`, `"#,##0"`, `"$#,##0"`, `"yyyy-mm-dd"`.\nRenderers project a subset of spreadsheet number formats to label text.'},OverlapPct:{type:"number",description:'Overlap of adjacent bars within a category in `<c:overlap val="N"/>`\npercent (-100..100). Negative pulls bars apart, positive overlaps.\nDefaults to 0 (clustered) / 100 (stacked).'},PlainChartSeries:{type:"object",properties:{name:{$ref:"#/$defs/Name"},dataLabels:{$ref:"#/$defs/DataLabels2"},values:{$ref:"#/$defs/Values"},color:{$ref:"#/$defs/Color"},lineWidthEmu:{$ref:"#/$defs/LineWidthEmu"},lineColor:{$ref:"#/$defs/LineColor"},lineDash:{$ref:"#/$defs/LineDash"},markerSymbol:{$ref:"#/$defs/MarkerSymbol"},markerSizePt:{$ref:"#/$defs/MarkerSizePt"},markerColor:{$ref:"#/$defs/MarkerColor"},markerLineColor:{$ref:"#/$defs/MarkerLineColor"},invertIfNegative:{$ref:"#/$defs/InvertIfNegative"},pointColors:{$ref:"#/$defs/PointColors"},pointExplosions:{$ref:"#/$defs/PointExplosions"},pointDataLabels:{$ref:"#/$defs/PointDataLabels"},smooth:{$ref:"#/$defs/Smooth"},trendline:{$ref:"#/$defs/Trendline"},fillOpacity:{$ref:"#/$defs/FillOpacity"},errorBars:{$ref:"#/$defs/ErrorBars"},xErrorBars:{$ref:"#/$defs/XErrorBars"}},required:["name","values"],additionalProperties:!1},PlotAreaFill:{type:"string",description:'Plot-area background fill \u2014 `<c:plotArea><c:spPr><a:solidFill>\n<a:srgbClr val="\u2026"/>`. `null` for no fill / unsupported fill kind.'},PlotAreaLayout:{$ref:"#/$defs/ChartManualLayout",description:"Manual position of the plot area."},PlotAreaStrokeColor:{type:"string",description:"Plot-area outline color from `<c:plotArea><c:spPr><a:ln>\n<a:solidFill><a:srgbClr/>`. `undefined` means no outline."},PlotVisibleCellsOnly:{type:"boolean",description:'When `false`, plot data from hidden cells in the embedded workbook\n\u2014 maps to `<c:plotVisOnly val="0"/>`. The reference desktop app\'s default is\n`true` (only plot visible cells), so omitting this field emits\n`val="1"` to stay round-trip-safe with files the reference desktop app authored.'},PointColors:{type:"array",items:{type:["null","string"]},description:`Optional per-data-point color overrides, indexed by point index
|
|
234
234
|
(\`<c:dPt><c:idx val="N"/><c:spPr><a:solidFill>\u2026\`). Sparse \u2014 only
|
|
235
235
|
the indices that author an override appear. Pie / doughnut decks
|
|
236
236
|
almost always emit one of these per slice to break out of the
|
|
@@ -317,7 +317,7 @@ is a target. Each target must have a corresponding range.
|
|
|
317
317
|
Pass \`{ sources }\` to concatenate complete paragraph sequences in order,
|
|
318
318
|
preserving fields, paragraph properties and relationships across slides.
|
|
319
319
|
A single target with \`{ source, ranges }\` concatenates those ranges in order.
|
|
320
|
-
Target body properties and list styles remain unchanged.`,args:["shape","paragraphs"],input_schema:{type:"object",properties:{shape:{$ref:"#/$defs/ShapeRef"},paragraphs:{anyOf:[{type:"array",items:{type:"object",properties:{align:{anyOf:[{type:"string",enum:["ctr","l","r","just","dist","justLow","thaiDist"]},{type:"string",enum:["right","left","center","justify","distribute"]}]},runs:{type:"array",items:{type:"object",properties:{text:{type:"string",description:"Run text
|
|
320
|
+
Target body properties and list styles remain unchanged.`,args:["shape","paragraphs"],input_schema:{type:"object",properties:{shape:{$ref:"#/$defs/ShapeRef"},paragraphs:{anyOf:[{type:"array",items:{type:"object",properties:{align:{anyOf:[{type:"string",enum:["ctr","l","r","just","dist","justLow","thaiDist"]},{type:"string",enum:["right","left","center","justify","distribute"]}]},runs:{type:"array",items:{type:"object",properties:{text:{type:"string",description:"Run text. Unlike `setShapeText`, a newline (`\\n` or `\\r\\n`) does not\nstart a paragraph: it is written as a line break (`<a:br>`) between runs of\nthe same format, since a raw newline inside `<a:t>` reads as a paragraph\nbreak in some apps and as a line break in others."},format:{$ref:"#/$defs/TextFormat"}},required:["text"],additionalProperties:!1}},endFormat:{$ref:"#/$defs/TextFormat",description:"Format of the paragraph-end mark (`<a:endParaRPr>`), the place to give a\nparagraph with no runs a font size. Omit to write no `<a:endParaRPr>`."}},required:["runs"],additionalProperties:!1}},{type:"object",properties:{source:{$ref:"#/$defs/ShapeRef"},range:{$ref:"#/$defs/Range"}},required:["source"],additionalProperties:!1},{type:"object",properties:{sources:{type:"array",items:{$ref:"#/$defs/ShapeRef"}}},required:["sources"],additionalProperties:!1},{type:"object",properties:{source:{$ref:"#/$defs/ShapeRef"},ranges:{type:"array",items:{$ref:"#/$defs/Range"}}},required:["source","ranges"],additionalProperties:!1}]}},required:["shape","paragraphs"],additionalProperties:!1,$defs:{AngleDeg:{type:"number",description:"Gradient axis angle, in degrees. ECMA-376 measures clockwise from\nthe right (3 o'clock); `0` is a left-to-right gradient, `90` is\ntop-to-bottom, `180` right-to-left, `270` bottom-to-top. Defaults\nto `90` (top \u2192 bottom). Only meaningful for linear gradients."},BlurEmu:{type:"number",description:"Edge blur in EMU. Defaults to 50800 (4pt)."},Bytes:{type:"string",contentEncoding:"base64",description:"File bytes, base64-encoded."},Color:{anyOf:[{type:"string",enum:["bg1","tx1","bg2","tx2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink","phClr","lt1","dk1","lt2","dk2"]},{type:"string",enum:["scheme:bg1","scheme:tx1","scheme:bg2","scheme:tx2","scheme:accent1","scheme:accent2","scheme:accent3","scheme:accent4","scheme:accent5","scheme:accent6","scheme:hlink","scheme:folHlink","scheme:phClr","scheme:lt1","scheme:dk1","scheme:lt2","scheme:dk2"]},{type:"string",pattern:"^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",description:'An sRGB color, "#RRGGBB" or "#RGB".'}]},Color2:{$ref:"#/$defs/Color",description:"`#RRGGBB`, bare `RRGGBB`, or scheme token. Defaults to black."},ColorTransform:{anyOf:[{type:"object",properties:{kind:{type:"string",enum:["comp","inv","gray","gamma","invGamma"]}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",enum:["tint","shade","alpha","alphaOff","alphaMod","hue","hueOff","hueMod","sat","satOff","satMod","lum","lumOff","lumMod","red","redOff","redMod","green","greenOff","greenMod","blue","blueOff","blueMod"]},value:{type:"number"}},required:["kind","value"],additionalProperties:!1}]},ColorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, ...), written\nas its children \u2014 the same field gradient stops take. Requires `color`.\nAn `opacity` that differs from the one these transforms state wins."},Focus:{type:"object",properties:{left:{type:"number"},top:{type:"number"},right:{type:"number"},bottom:{type:"number"}},required:["left","top","right","bottom"],additionalProperties:!1,description:`Focus rectangle for non-linear gradients, expressed as fractional insets
|
|
321
321
|
from each corresponding edge (1 = 100%). Four 0.5 insets describe
|
|
322
322
|
a point at the center; left/top 1 and right/bottom 0 describe the
|
|
323
323
|
bottom-right corner. Mirrors \`<a:fillToRect>\`.`},GradientStop:{type:"object",properties:{offset:{type:"number",description:"Position on the gradient axis, 0-1."},color:{$ref:"#/$defs/Color",description:"`#RRGGBB`, the `#RGB` shorthand, or a theme color token."},colorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered imported color adjustments. Brightness and opacity override their corresponding transforms when changed."},opacity:{type:"number",description:"Opacity from 0 (transparent) to 1 (opaque)."},brightness:{type:"number",description:"The reference desktop app's brightness from -1 (black) to 1 (white); 0 leaves the color unchanged."}},required:["offset","color"],additionalProperties:!1},ImageTileAlignment:{anyOf:[{type:"string",enum:["t","b","l","r","tl","tr","bl","br"]},{type:"string",const:"ctr"}]},OffsetEmu:{type:"number",description:"Offset distance in EMU. Defaults to 38100 (3pt)."},Opacity:{type:"number",description:"Opacity (0\u20131). Defaults to fully opaque."},Path:{type:"string",enum:["circle","shape","rect","linear"],description:"Non-linear gradient path. `circle` paints concentric circles,\n`rect` paints nested rectangles, `shape` follows the shape's\noutline. Absent / `'linear'` \u2192 linear gradient using `angleDeg`.\nMirrors ECMA-376 \xA720.1.8.33 `<a:path path=\"\u2026\"/>`."},Range:{type:"object",properties:{start:{type:"number"},end:{type:"number"}},required:["start","end"],additionalProperties:!1},RotateWithShape:{type:"boolean",description:"Rotate the gradient with the shape. Defaults to true."},Scaled:{type:"boolean",description:"Scale a linear gradient with the shape's aspect ratio. Defaults to false."},ShapeRef:{type:"object",description:"A shape, by its slide and id, as `listShapes` or the user's selection reports it. `slideIndex` and `name` are informational.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'},Stops:{type:"array",items:{$ref:"#/$defs/GradientStop"},description:"Two or more color stops along the axis."},TextFormat:{type:"object",properties:{font:{type:"string",description:"Latin font family (`Calibri`, `Arial`, ...). Sets `<a:latin>`."},fontEastAsian:{type:"string",description:"East Asian font family (`\u6E38\u660E\u671D`, `\u30E1\u30A4\u30EA\u30AA`, ...). Sets `<a:ea>`.\nRenderers pick this typeface for CJK glyphs independently of `font`\n(which only governs Latin glyphs) \u2014 set both when a run mixes Latin\nand CJK text and needs a consistent look across the whole run."},fontComplexScript:{type:"string",description:"Complex-script font family. Sets `<a:cs>`, the typeface renderers pick\nfor complex scripts such as Arabic, Hebrew and Thai \u2014 independently of\n`font` (Latin) and `fontEastAsian` (CJK)."},size:{type:"number",description:"Font size in points; fractional values allowed (`12`, `12.5`)."},color:{anyOf:[{$ref:"#/$defs/Color"},{type:"null"}],description:"Color. Accepts `#RRGGBB`, `RRGGBB`, an ECMA-376 scheme color token\n(`tx1`, `accent1`, ...), or `null` to clear."},colorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, `<a:alpha>`,\n...), written as children of its color element \u2014 the reference desktop app's theme\ntints, such as Accent 2 Lighter 60%. Same field as on gradient stops;\nrequires `color`, and replaces any transforms the run's color had."},textFill:{anyOf:[{type:"object",properties:{kind:{type:"string",const:"gradient"},stops:{$ref:"#/$defs/Stops"},angleDeg:{$ref:"#/$defs/AngleDeg"},rotateWithShape:{$ref:"#/$defs/RotateWithShape"},scaled:{$ref:"#/$defs/Scaled"},path:{$ref:"#/$defs/Path"},focus:{$ref:"#/$defs/Focus"},tileRect:{$ref:"#/$defs/TileRect"}},required:["kind","stops"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"pattern"},preset:{type:"string",enum:["wave","cross","divot","pct5","pct10","pct20","pct25","pct30","pct40","pct50","pct60","pct70","pct75","pct80","pct90","horz","vert","ltHorz","ltVert","dkHorz","dkVert","narHorz","narVert","dashHorz","dashVert","dnDiag","upDiag","ltDnDiag","ltUpDiag","dkDnDiag","dkUpDiag","wdDnDiag","wdUpDiag","dashDnDiag","dashUpDiag","diagCross","smCheck","lgCheck","smGrid","lgGrid","dotGrid","smConfetti","lgConfetti","horzBrick","diagBrick","solidDmnd","openDmnd","dotDmnd","plaid","sphere","weave","shingle","trellis","zigZag"],description:"Preset pattern token, e.g. `'pct50'`, `'dkUpDiag'`, `'wave'`."},foreground:{type:"string",description:"Foreground (pattern stroke) color. `#RRGGBB`, bare `RRGGBB`, or scheme token."},background:{type:"string",description:"Background (fill behind the pattern) color."},foregroundTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"}},backgroundTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"}}},required:["kind","preset","foreground","background"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"none"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"image"},bytes:{$ref:"#/$defs/Bytes"}},required:["kind","bytes"],additionalProperties:!1}],description:"Non-solid glyph fill. The `color` field remains the shorthand for a solid\nfill. Both are the same OOXML fill choice, so supplying both is rejected."},bold:{type:["boolean","null"],description:'`null` removes `b`, so the run inherits its weight again; `false` writes\n`b="0"`, which overrides an inherited bold.'},italic:{type:"boolean"},underline:{type:["boolean","string"],description:"Underline style. `true` is shorthand for `'sng'` (single). Pass the\nexact `ST_TextUnderlineType` token for other styles (`'dbl'`, `'wavy'`,\n`'dash'`, ...)."},underlineColor:{anyOf:[{$ref:"#/$defs/Color"},{type:"null"}],description:"Underline color. `null` explicitly follows the run's text color via\n`<a:uFillTx>`; omit the property to leave an existing underline fill\nuntouched."},strike:{type:["boolean","string"],description:"Strikethrough style. `true` is shorthand for `'sngStrike'` (single\nline). Pass the exact `ST_TextStrikeType` token (`'sngStrike'`,\n`'dblStrike'`, `'noStrike'`) for other styles. `false` clears."},spc:{type:["null","number"],description:'Character spacing in 1/100 points (`0` = default). Negative values\ntighten, positive values loosen. Mirrors `<a:rPr spc="\u2026"/>`. `null`\nremoves it, so the run inherits its spacing again.'},kern:{type:"number",description:'Kerning threshold in 1/100 points (`ST_TextNonNegativePoint`, the same\nunit as `spc`): `0` disables kerning, `1200` = apply kerning for runs\n\u226512pt. Mirrors `<a:rPr kern="\u2026"/>`. The reference desktop app on Mac was observed to\nsave the value as `kern="0"` when its Use kerning checkbox is cleared.'},normalizeHeight:{type:"boolean",description:"Normalize character heights (`<a:rPr normalizeH>`; the reference desktop app's Equalize character height)."},baseline:{type:"number",description:"Baseline offset as a fraction of 1 (`0.3` = superscript ~30% up,\n`-0.25` = subscript). The reference desktop app emits ST_Percentage; this getter\nreturns the unit-fraction form for ergonomic comparisons."},cap:{type:"string",enum:["none","small","all"],description:"Capitalization mode: `'none'`, `'small'` (smallCaps), or `'all'`\n(allCaps). Mirrors `<a:rPr cap=\"\u2026\"/>`."},highlight:{anyOf:[{$ref:"#/$defs/Color"},{type:"null"}],description:"Highlight color (cell-fill style background per run). Same color\nformat as `color`. Mirrors `<a:rPr><a:highlight>\u2026</a:highlight></a:rPr>`."},outline:{anyOf:[{type:"null"},{type:"object",properties:{color:{$ref:"#/$defs/Color",description:"Same accepted forms as `TextFormat.color`."},colorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered adjustments to `color`, as on `TextFormat.colorTransforms`. Requires `color`."},widthEmu:{type:"number",description:"Line width in EMU. The reference desktop app's thinnest visible text outline is 9525 (0.75pt)."},fill:{type:"object",properties:{kind:{type:"string",const:"gradient"},stops:{$ref:"#/$defs/Stops"},angleDeg:{$ref:"#/$defs/AngleDeg"},rotateWithShape:{$ref:"#/$defs/RotateWithShape"},scaled:{$ref:"#/$defs/Scaled"},path:{$ref:"#/$defs/Path"},focus:{$ref:"#/$defs/Focus"},tileRect:{$ref:"#/$defs/TileRect"}},required:["kind","stops"],additionalProperties:!1,description:"Gradient outline (`<a:gradFill>` in the run's `<a:ln>`), as on\n`setShapeStroke`. Exclusive with `color`."}},additionalProperties:!1}],description:"Outline drawn around the glyphs \u2014 `<a:rPr><a:ln>`, the character-level\ntwin of `setShapeStroke`. `null` removes it, which is not the same as\nan outline of width 0: removing restores what the run inherits."},shadow:{anyOf:[{type:"null"},{type:"object",properties:{color:{$ref:"#/$defs/Color2"},colorTransforms:{$ref:"#/$defs/ColorTransforms"},blurEmu:{$ref:"#/$defs/BlurEmu"},offsetEmu:{$ref:"#/$defs/OffsetEmu"},angleDeg:{type:"number",description:`Direction in degrees, measured clockwise from the right (3 o'clock).
|
|
@@ -398,7 +398,7 @@ starts. A slide without a transition gets one with no effect, which is how
|
|
|
398
398
|
the reference desktop app stores a sound on a "None" transition.`,args:["slide","sound"],input_schema:{type:"object",properties:{slide:{$ref:"#/$defs/SlideRef"},sound:{anyOf:[{anyOf:[{type:"object",properties:{kind:{type:"string",const:"stop"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"play"},data:{$ref:"#/$defs/Bytes"},name:{type:"string"},loop:{type:"boolean"}},required:["kind","data","name"],additionalProperties:!1}]},{type:"null"}]}},required:["slide","sound"],additionalProperties:!1,$defs:{Bytes:{type:"string",contentEncoding:"base64",description:"File bytes, base64-encoded."},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setSnapToGrid",description:"Turns snapping objects to the document grid (View \u25B8 Guides \u25B8 Snap to Grid) on or off.",args:[null,"enabled"],input_schema:{type:"object",properties:{enabled:{type:"boolean"}},required:["enabled"],additionalProperties:!1},output:{type:"null"}},{name:"setTableCellAlignment",description:"Sets horizontal alignment on every paragraph in the cell.",args:["cell","align"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},align:{anyOf:[{type:"string",enum:["ctr","l","r","just","dist","justLow","thaiDist"]},{type:"string",enum:["right","left","center","justify","distribute"]}]}},required:["cell","align"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellAnchor",description:"Sets the cell's vertical text anchor (`<a:tcPr anchor=\"t|ctr|b\"/>`).\nPass `null` to clear the attribute so the cell uses the table's\ndefault (`ctr`). Creates `<a:tcPr>` if absent.",args:["cell","anchor"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},anchor:{anyOf:[{type:"string",enum:["top","bottom","center"]},{type:"null"}]}},required:["cell","anchor"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellBorders",description:"Sets one or more side borders on a cell. Sides listed with `null` are\nremoved from the `<a:tcPr>`; sides omitted from the partial are left\nuntouched. Pass the whole `sides` arg as `null` to clear every side\nin one call. Creates `<a:tcPr>` if absent.\n\nThe diagonal sides (`tlToBr` / `blToTr`) are independent of the\ncardinal four \u2014 a strikethrough cell can have only a diagonal.",args:["cell","sides"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},sides:{anyOf:[{type:"null"},{type:"object",properties:{left:{$ref:"#/$defs/NullOrPartialTableCellBorder"},right:{$ref:"#/$defs/NullOrPartialTableCellBorder"},top:{$ref:"#/$defs/NullOrPartialTableCellBorder"},bottom:{$ref:"#/$defs/NullOrPartialTableCellBorder"},tlToBr:{$ref:"#/$defs/NullOrPartialTableCellBorder"},blToTr:{$ref:"#/$defs/NullOrPartialTableCellBorder"}},additionalProperties:!1}]}},required:["cell","sides"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},NullOrPartialTableCellBorder:{anyOf:[{type:"null"},{$ref:"#/$defs/PartialTableCellBorder"}]},PartialTableCellBorder:{type:"object",properties:{color:{type:["null","string"]},widthEmu:{type:["null","number"],description:"In EMU: 914400 per inch, 360000 per cm, 12700 per point."},dash:{type:["null","string"]}},additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellClickAction",description:`Sets or removes a click link on cell text. Omitting range covers the whole
|
|
399
399
|
cell; otherwise offsets are UTF-16 positions in getTableCellText, with an
|
|
400
400
|
exclusive end. Formatting and links outside the range are preserved.
|
|
401
|
-
Omitting tooltip clears the selected link's previous description.`,args:["cell","action","options"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},action:{anyOf:[{anyOf:[{type:"object",properties:{kind:{type:"string",const:"url"},url:{type:"string"}},required:["kind","url"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"slide"},slide:{$ref:"#/$defs/SlideRef"}},required:["kind","slide"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"nextSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"prevSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"firstSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"lastSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"lastSlideViewed"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"endShow"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"customShow"},id:{type:"number"},returnToShow:{type:"boolean"}},required:["kind","id","returnToShow"],additionalProperties:!1}]},{type:"null"}]},options:{type:"object",properties:{range:{type:"object",properties:{start:{type:"number"},end:{type:"number"}},required:["start","end"],additionalProperties:!1},tooltip:{type:"string"}},additionalProperties:!1}},required:["cell","action"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellFill",description:"Sets a solid background color on a cell (`<a:tcPr><a:solidFill>`).",args:["cell","color"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},color:{anyOf:[{type:"string",enum:["bg1","tx1","bg2","tx2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink","phClr","lt1","dk1","lt2","dk2"]},{type:"string",enum:["scheme:bg1","scheme:tx1","scheme:bg2","scheme:tx2","scheme:accent1","scheme:accent2","scheme:accent3","scheme:accent4","scheme:accent5","scheme:accent6","scheme:hlink","scheme:folHlink","scheme:phClr","scheme:lt1","scheme:dk1","scheme:lt2","scheme:dk2"]},{type:"string",pattern:"^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",description:'An sRGB color, "#RRGGBB" or "#RGB".'}]}},required:["cell","color"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellMargins",description:"Sets the cell's inset margins (`<a:tcPr marL marR marT marB>`) in\nEMU. Sides set to `null` are stripped from the XML so they fall back\nto the reference desktop app's defaults. Creates `<a:tcPr>` if absent.\n\nPass `null` for the whole `margins` arg to drop every authored side\nat once.",args:["cell","margins"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},margins:{anyOf:[{type:"null"},{type:"object",properties:{left:{type:["null","number"]},right:{type:["null","number"]},top:{type:["null","number"]},bottom:{type:["null","number"]}},additionalProperties:!1}]}},required:["cell","margins"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellParagraphs",description:"Replaces the cell's text with explicitly structured paragraphs and runs \u2014\nthe table counterpart of `setShapeParagraphs`. Read back with\n`getTableCellParagraphs`.",args:["cell","paragraphs"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},paragraphs:{type:"array",items:{type:"object",properties:{align:{anyOf:[{type:"string",enum:["ctr","l","r","just","dist","justLow","thaiDist"]},{type:"string",enum:["right","left","center","justify","distribute"]}]},runs:{type:"array",items:{type:"object",properties:{text:{type:"string",description:"Run text
|
|
401
|
+
Omitting tooltip clears the selected link's previous description.`,args:["cell","action","options"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},action:{anyOf:[{anyOf:[{type:"object",properties:{kind:{type:"string",const:"url"},url:{type:"string"}},required:["kind","url"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"slide"},slide:{$ref:"#/$defs/SlideRef"}},required:["kind","slide"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"nextSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"prevSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"firstSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"lastSlide"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"lastSlideViewed"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"endShow"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"customShow"},id:{type:"number"},returnToShow:{type:"boolean"}},required:["kind","id","returnToShow"],additionalProperties:!1}]},{type:"null"}]},options:{type:"object",properties:{range:{type:"object",properties:{start:{type:"number"},end:{type:"number"}},required:["start","end"],additionalProperties:!1},tooltip:{type:"string"}},additionalProperties:!1}},required:["cell","action"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellFill",description:"Sets a solid background color on a cell (`<a:tcPr><a:solidFill>`).",args:["cell","color"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},color:{anyOf:[{type:"string",enum:["bg1","tx1","bg2","tx2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink","phClr","lt1","dk1","lt2","dk2"]},{type:"string",enum:["scheme:bg1","scheme:tx1","scheme:bg2","scheme:tx2","scheme:accent1","scheme:accent2","scheme:accent3","scheme:accent4","scheme:accent5","scheme:accent6","scheme:hlink","scheme:folHlink","scheme:phClr","scheme:lt1","scheme:dk1","scheme:lt2","scheme:dk2"]},{type:"string",pattern:"^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",description:'An sRGB color, "#RRGGBB" or "#RGB".'}]}},required:["cell","color"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellMargins",description:"Sets the cell's inset margins (`<a:tcPr marL marR marT marB>`) in\nEMU. Sides set to `null` are stripped from the XML so they fall back\nto the reference desktop app's defaults. Creates `<a:tcPr>` if absent.\n\nPass `null` for the whole `margins` arg to drop every authored side\nat once.",args:["cell","margins"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},margins:{anyOf:[{type:"null"},{type:"object",properties:{left:{type:["null","number"]},right:{type:["null","number"]},top:{type:["null","number"]},bottom:{type:["null","number"]}},additionalProperties:!1}]}},required:["cell","margins"],additionalProperties:!1,$defs:{CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}},{name:"setTableCellParagraphs",description:"Replaces the cell's text with explicitly structured paragraphs and runs \u2014\nthe table counterpart of `setShapeParagraphs`. Read back with\n`getTableCellParagraphs`.",args:["cell","paragraphs"],input_schema:{type:"object",properties:{cell:{$ref:"#/$defs/CellRef"},paragraphs:{type:"array",items:{type:"object",properties:{align:{anyOf:[{type:"string",enum:["ctr","l","r","just","dist","justLow","thaiDist"]},{type:"string",enum:["right","left","center","justify","distribute"]}]},runs:{type:"array",items:{type:"object",properties:{text:{type:"string",description:"Run text. Unlike `setShapeText`, a newline (`\\n` or `\\r\\n`) does not\nstart a paragraph: it is written as a line break (`<a:br>`) between runs of\nthe same format, since a raw newline inside `<a:t>` reads as a paragraph\nbreak in some apps and as a line break in others."},format:{$ref:"#/$defs/TextFormat"}},required:["text"],additionalProperties:!1}},endFormat:{$ref:"#/$defs/TextFormat",description:"Format of the paragraph-end mark (`<a:endParaRPr>`), the place to give a\nparagraph with no runs a font size. Omit to write no `<a:endParaRPr>`."}},required:["runs"],additionalProperties:!1}}},required:["cell","paragraphs"],additionalProperties:!1,$defs:{AngleDeg:{type:"number",description:"Gradient axis angle, in degrees. ECMA-376 measures clockwise from\nthe right (3 o'clock); `0` is a left-to-right gradient, `90` is\ntop-to-bottom, `180` right-to-left, `270` bottom-to-top. Defaults\nto `90` (top \u2192 bottom). Only meaningful for linear gradients."},BlurEmu:{type:"number",description:"Edge blur in EMU. Defaults to 50800 (4pt)."},Bytes:{type:"string",contentEncoding:"base64",description:"File bytes, base64-encoded."},CellRef:{type:"object",description:"A table cell: the table's ShapeRef with the cell's 0-based `row` and `col` added.",properties:{slide:{$ref:"#/$defs/SlideRef"},shapeId:{type:"integer",minimum:0},row:{type:"integer",minimum:0},col:{type:"integer",minimum:0},slideIndex:{type:"integer",minimum:0},name:{type:"string"}},required:["slide","shapeId","row","col"],additionalProperties:!1},Color:{anyOf:[{type:"string",enum:["bg1","tx1","bg2","tx2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink","phClr","lt1","dk1","lt2","dk2"]},{type:"string",enum:["scheme:bg1","scheme:tx1","scheme:bg2","scheme:tx2","scheme:accent1","scheme:accent2","scheme:accent3","scheme:accent4","scheme:accent5","scheme:accent6","scheme:hlink","scheme:folHlink","scheme:phClr","scheme:lt1","scheme:dk1","scheme:lt2","scheme:dk2"]},{type:"string",pattern:"^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",description:'An sRGB color, "#RRGGBB" or "#RGB".'}]},Color2:{$ref:"#/$defs/Color",description:"`#RRGGBB`, bare `RRGGBB`, or scheme token. Defaults to black."},ColorTransform:{anyOf:[{type:"object",properties:{kind:{type:"string",enum:["comp","inv","gray","gamma","invGamma"]}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",enum:["tint","shade","alpha","alphaOff","alphaMod","hue","hueOff","hueMod","sat","satOff","satMod","lum","lumOff","lumMod","red","redOff","redMod","green","greenOff","greenMod","blue","blueOff","blueMod"]},value:{type:"number"}},required:["kind","value"],additionalProperties:!1}]},ColorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, ...), written\nas its children \u2014 the same field gradient stops take. Requires `color`.\nAn `opacity` that differs from the one these transforms state wins."},Focus:{type:"object",properties:{left:{type:"number"},top:{type:"number"},right:{type:"number"},bottom:{type:"number"}},required:["left","top","right","bottom"],additionalProperties:!1,description:`Focus rectangle for non-linear gradients, expressed as fractional insets
|
|
402
402
|
from each corresponding edge (1 = 100%). Four 0.5 insets describe
|
|
403
403
|
a point at the center; left/top 1 and right/bottom 0 describe the
|
|
404
404
|
bottom-right corner. Mirrors \`<a:fillToRect>\`.`},GradientStop:{type:"object",properties:{offset:{type:"number",description:"Position on the gradient axis, 0-1."},color:{$ref:"#/$defs/Color",description:"`#RRGGBB`, the `#RGB` shorthand, or a theme color token."},colorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered imported color adjustments. Brightness and opacity override their corresponding transforms when changed."},opacity:{type:"number",description:"Opacity from 0 (transparent) to 1 (opaque)."},brightness:{type:"number",description:"The reference desktop app's brightness from -1 (black) to 1 (white); 0 leaves the color unchanged."}},required:["offset","color"],additionalProperties:!1},ImageTileAlignment:{anyOf:[{type:"string",enum:["t","b","l","r","tl","tr","bl","br"]},{type:"string",const:"ctr"}]},OffsetEmu:{type:"number",description:"Offset distance in EMU. Defaults to 38100 (3pt)."},Opacity:{type:"number",description:"Opacity (0\u20131). Defaults to fully opaque."},Path:{type:"string",enum:["circle","shape","rect","linear"],description:"Non-linear gradient path. `circle` paints concentric circles,\n`rect` paints nested rectangles, `shape` follows the shape's\noutline. Absent / `'linear'` \u2192 linear gradient using `angleDeg`.\nMirrors ECMA-376 \xA720.1.8.33 `<a:path path=\"\u2026\"/>`."},RotateWithShape:{type:"boolean",description:"Rotate the gradient with the shape. Defaults to true."},Scaled:{type:"boolean",description:"Scale a linear gradient with the shape's aspect ratio. Defaults to false."},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'},Stops:{type:"array",items:{$ref:"#/$defs/GradientStop"},description:"Two or more color stops along the axis."},TextFormat:{type:"object",properties:{font:{type:"string",description:"Latin font family (`Calibri`, `Arial`, ...). Sets `<a:latin>`."},fontEastAsian:{type:"string",description:"East Asian font family (`\u6E38\u660E\u671D`, `\u30E1\u30A4\u30EA\u30AA`, ...). Sets `<a:ea>`.\nRenderers pick this typeface for CJK glyphs independently of `font`\n(which only governs Latin glyphs) \u2014 set both when a run mixes Latin\nand CJK text and needs a consistent look across the whole run."},fontComplexScript:{type:"string",description:"Complex-script font family. Sets `<a:cs>`, the typeface renderers pick\nfor complex scripts such as Arabic, Hebrew and Thai \u2014 independently of\n`font` (Latin) and `fontEastAsian` (CJK)."},size:{type:"number",description:"Font size in points; fractional values allowed (`12`, `12.5`)."},color:{anyOf:[{$ref:"#/$defs/Color"},{type:"null"}],description:"Color. Accepts `#RRGGBB`, `RRGGBB`, an ECMA-376 scheme color token\n(`tx1`, `accent1`, ...), or `null` to clear."},colorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, `<a:alpha>`,\n...), written as children of its color element \u2014 the reference desktop app's theme\ntints, such as Accent 2 Lighter 60%. Same field as on gradient stops;\nrequires `color`, and replaces any transforms the run's color had."},textFill:{anyOf:[{type:"object",properties:{kind:{type:"string",const:"gradient"},stops:{$ref:"#/$defs/Stops"},angleDeg:{$ref:"#/$defs/AngleDeg"},rotateWithShape:{$ref:"#/$defs/RotateWithShape"},scaled:{$ref:"#/$defs/Scaled"},path:{$ref:"#/$defs/Path"},focus:{$ref:"#/$defs/Focus"},tileRect:{$ref:"#/$defs/TileRect"}},required:["kind","stops"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"pattern"},preset:{type:"string",enum:["wave","cross","divot","pct5","pct10","pct20","pct25","pct30","pct40","pct50","pct60","pct70","pct75","pct80","pct90","horz","vert","ltHorz","ltVert","dkHorz","dkVert","narHorz","narVert","dashHorz","dashVert","dnDiag","upDiag","ltDnDiag","ltUpDiag","dkDnDiag","dkUpDiag","wdDnDiag","wdUpDiag","dashDnDiag","dashUpDiag","diagCross","smCheck","lgCheck","smGrid","lgGrid","dotGrid","smConfetti","lgConfetti","horzBrick","diagBrick","solidDmnd","openDmnd","dotDmnd","plaid","sphere","weave","shingle","trellis","zigZag"],description:"Preset pattern token, e.g. `'pct50'`, `'dkUpDiag'`, `'wave'`."},foreground:{type:"string",description:"Foreground (pattern stroke) color. `#RRGGBB`, bare `RRGGBB`, or scheme token."},background:{type:"string",description:"Background (fill behind the pattern) color."},foregroundTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"}},backgroundTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"}}},required:["kind","preset","foreground","background"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"none"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",const:"image"},bytes:{$ref:"#/$defs/Bytes"}},required:["kind","bytes"],additionalProperties:!1}],description:"Non-solid glyph fill. The `color` field remains the shorthand for a solid\nfill. Both are the same OOXML fill choice, so supplying both is rejected."},bold:{type:["boolean","null"],description:'`null` removes `b`, so the run inherits its weight again; `false` writes\n`b="0"`, which overrides an inherited bold.'},italic:{type:"boolean"},underline:{type:["boolean","string"],description:"Underline style. `true` is shorthand for `'sng'` (single). Pass the\nexact `ST_TextUnderlineType` token for other styles (`'dbl'`, `'wavy'`,\n`'dash'`, ...)."},underlineColor:{anyOf:[{$ref:"#/$defs/Color"},{type:"null"}],description:"Underline color. `null` explicitly follows the run's text color via\n`<a:uFillTx>`; omit the property to leave an existing underline fill\nuntouched."},strike:{type:["boolean","string"],description:"Strikethrough style. `true` is shorthand for `'sngStrike'` (single\nline). Pass the exact `ST_TextStrikeType` token (`'sngStrike'`,\n`'dblStrike'`, `'noStrike'`) for other styles. `false` clears."},spc:{type:["null","number"],description:'Character spacing in 1/100 points (`0` = default). Negative values\ntighten, positive values loosen. Mirrors `<a:rPr spc="\u2026"/>`. `null`\nremoves it, so the run inherits its spacing again.'},kern:{type:"number",description:'Kerning threshold in 1/100 points (`ST_TextNonNegativePoint`, the same\nunit as `spc`): `0` disables kerning, `1200` = apply kerning for runs\n\u226512pt. Mirrors `<a:rPr kern="\u2026"/>`. The reference desktop app on Mac was observed to\nsave the value as `kern="0"` when its Use kerning checkbox is cleared.'},normalizeHeight:{type:"boolean",description:"Normalize character heights (`<a:rPr normalizeH>`; the reference desktop app's Equalize character height)."},baseline:{type:"number",description:"Baseline offset as a fraction of 1 (`0.3` = superscript ~30% up,\n`-0.25` = subscript). The reference desktop app emits ST_Percentage; this getter\nreturns the unit-fraction form for ergonomic comparisons."},cap:{type:"string",enum:["none","small","all"],description:"Capitalization mode: `'none'`, `'small'` (smallCaps), or `'all'`\n(allCaps). Mirrors `<a:rPr cap=\"\u2026\"/>`."},highlight:{anyOf:[{$ref:"#/$defs/Color"},{type:"null"}],description:"Highlight color (cell-fill style background per run). Same color\nformat as `color`. Mirrors `<a:rPr><a:highlight>\u2026</a:highlight></a:rPr>`."},outline:{anyOf:[{type:"null"},{type:"object",properties:{color:{$ref:"#/$defs/Color",description:"Same accepted forms as `TextFormat.color`."},colorTransforms:{type:"array",items:{$ref:"#/$defs/ColorTransform"},description:"Ordered adjustments to `color`, as on `TextFormat.colorTransforms`. Requires `color`."},widthEmu:{type:"number",description:"Line width in EMU. The reference desktop app's thinnest visible text outline is 9525 (0.75pt)."},fill:{type:"object",properties:{kind:{type:"string",const:"gradient"},stops:{$ref:"#/$defs/Stops"},angleDeg:{$ref:"#/$defs/AngleDeg"},rotateWithShape:{$ref:"#/$defs/RotateWithShape"},scaled:{$ref:"#/$defs/Scaled"},path:{$ref:"#/$defs/Path"},focus:{$ref:"#/$defs/Focus"},tileRect:{$ref:"#/$defs/TileRect"}},required:["kind","stops"],additionalProperties:!1,description:"Gradient outline (`<a:gradFill>` in the run's `<a:ln>`), as on\n`setShapeStroke`. Exclusive with `color`."}},additionalProperties:!1}],description:"Outline drawn around the glyphs \u2014 `<a:rPr><a:ln>`, the character-level\ntwin of `setShapeStroke`. `null` removes it, which is not the same as\nan outline of width 0: removing restores what the run inherits."},shadow:{anyOf:[{type:"null"},{type:"object",properties:{color:{$ref:"#/$defs/Color2"},colorTransforms:{$ref:"#/$defs/ColorTransforms"},blurEmu:{$ref:"#/$defs/BlurEmu"},offsetEmu:{$ref:"#/$defs/OffsetEmu"},angleDeg:{type:"number",description:`Direction in degrees, measured clockwise from the right (3 o'clock).
|
|
@@ -431,8 +431,8 @@ four options below; \`setShapeAnimation\` documents which effects take
|
|
|
431
431
|
which.`},orientation:{$ref:"#/$defs/AnimationOrientation"},inOut:{type:"string",enum:["in","out"]},shape:{type:"string",enum:["circle","box","diamond","plus"]},spokes:{type:"number"},spinDirection:{type:"string",enum:["clockwise","counterclockwise"],description:"The emphasis effects' own options, as `setShapeAnimation` takes them:\nSpin's direction and angle, Grow/Shrink's axes and size, Transparency's\namount, and the colour of the colour effects."},spinDegrees:{type:"number"},scaleDirection:{anyOf:[{$ref:"#/$defs/AnimationOrientation"},{type:"string",const:"both"}]},scalePercent:{type:"number"},transparencyPercent:{type:"number"},color:{anyOf:[{$ref:"#/$defs/Color"},{type:"object",properties:{color:{$ref:"#/$defs/Color"},colorTransforms:{type:"array",items:{anyOf:[{type:"object",properties:{kind:{type:"string",enum:["comp","inv","gray","gamma","invGamma"]}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",enum:["tint","shade","alpha","alphaOff","alphaMod","hue","hueOff","hueMod","sat","satOff","satMod","lum","lumOff","lumMod","red","redOff","redMod","green","greenOff","greenMod","blue","blueOff","blueMod"]},value:{type:"number"}},required:["kind","value"],additionalProperties:!1}]}}},required:["color"],additionalProperties:!1}]},durationMs:{type:"number",description:`How long the effect runs. Left out, a changed effect keeps the duration
|
|
432
432
|
the slide gave it, unless the patch changes the preset itself: a new
|
|
433
433
|
preset takes its own default length, as picking one from the reference desktop app's
|
|
434
|
-
gallery does.`},start:{type:"string",enum:["click","withPrevious","afterPrevious"]},delayMs:{type:"number"},build:{type:"string",enum:["asOneObject","allAtOnce","byParagraph"]}},additionalProperties:!1}},required:["slide","id","patch"],additionalProperties:!1,$defs:{AnimationOrientation:{type:"string",enum:["horizontal","vertical"]},Color:{anyOf:[{type:"string",enum:["bg1","tx1","bg2","tx2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink","phClr","lt1","dk1","lt2","dk2"]},{type:"string",enum:["scheme:bg1","scheme:tx1","scheme:bg2","scheme:tx2","scheme:accent1","scheme:accent2","scheme:accent3","scheme:accent4","scheme:accent5","scheme:accent6","scheme:hlink","scheme:folHlink","scheme:phClr","scheme:lt1","scheme:dk1","scheme:lt2","scheme:dk2"]},{type:"string",pattern:"^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",description:'An sRGB color, "#RRGGBB" or "#RGB".'}]},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}}]},Ve=ke({editorTools:()=>De,runTool:()=>Oe,schemaErrors:()=>
|
|
435
|
-
${f.map((p,u)=>` ${u+1}. ${e[p].map(
|
|
436
|
-
`)}`)}function G(t,e){return typeof t.$ref=="string"?G(e[t.$ref.slice(8)],e):t.type!==void 0?Array.isArray(t.type)?t.type:[t.type]:[]}function y(t,e,i,r){let a=i||"(input)",s=o=>{r.errors.push(`${a}: ${o}`)};if(typeof t.$ref=="string"){let o=t.$ref.slice(8),d=r.errors.length,n=y(r.defs[o],e,i,r),l=ce[o];return r.errors.length>d||!l?n:o==="Bytes"&&!we.test(e)?s("is not valid base64"):o==="DateTime"&&!(Le.test(e)&&!Number.isNaN(Date.parse(e)))?s('is not an RFC 3339 date-time such as "2026-10-08T09:30:00Z"'):r.presentation?l(r.presentation,e):e}if(Array.isArray(t.anyOf)){let o=ye(t,r.defs),d=o.map(l=>{let f={defs:r.defs,errors:[]};return y(l,e,i,f),f.errors}),n=d.findIndex(l=>l.length===0);return n>=0?y(o[n],e,i,r):Re(o,d,e,i,r)}if(t.type!==void 0){let o=Array.isArray(t.type)?t.type:[t.type];if(!o.some(d=>O(e,d)))return s(`expected ${o.join(" or ")}, got ${C(e)} ${m(e)}`)}return"const"in t&&e!==t.const?s(`must be ${JSON.stringify(t.const)}, got ${m(e)}`):Array.isArray(t.enum)&&!t.enum.includes(e)?s(`must be one of ${he(t.enum)}; got ${m(e)}`):typeof e=="string"&&typeof t.pattern=="string"&&!new RegExp(t.pattern,"u").test(e)?s(`${m(e)} does not match the pattern ${t.pattern}`):typeof e=="number"&&typeof t.minimum=="number"&&e<t.minimum?s(`must be at least ${t.minimum}, got ${e}`):Array.isArray(e)?Pe(t,e,i,r):e!==null&&typeof e=="object"?je(t,e,i,r):e}function Pe(t,e,i,r){let a=i||"(input)";typeof t.minItems=="number"&&e.length<t.minItems&&r.errors.push(`${a}: needs at least ${t.minItems} items, got ${e.length}`),typeof t.maxItems=="number"&&e.length>t.maxItems&&r.errors.push(`${a}: takes at most ${t.maxItems} items, got ${e.length}`);let s=t.prefixItems??[];return e.map((o,d)=>{let n=s[d]??t.items;return n?y(n,o,`${i}/${d}`,r):o})}function je(t,e,i,r){let a=i||"(input)",s=t.properties??{},o=(t.required??[]).filter(n=>!(n in e));o.length>0&&r.errors.push(`${a}: missing required ${o.map(n=>JSON.stringify(n)).join(", ")}`);let d={};for(let[n,l]of Object.entries(e)){let f=`${i}/${n.replace(/~/g,"~0").replace(/\//g,"~1")}`,h=s[n];if(h)d[n]=y(h,l,f,r);else if(t.additionalProperties===!1){let c=Object.keys(s);r.errors.push(`${a}: unknown property ${JSON.stringify(n)}${c.length>0?` (allowed: ${c.join(", ")})`:""}`)}else t.additionalProperties&&typeof t.additionalProperties=="object"?d[n]=y(t.additionalProperties,l,f,r):d[n]=l}return d}function
|
|
434
|
+
gallery does.`},start:{type:"string",enum:["click","withPrevious","afterPrevious"]},delayMs:{type:"number"},build:{type:"string",enum:["asOneObject","allAtOnce","byParagraph"]}},additionalProperties:!1}},required:["slide","id","patch"],additionalProperties:!1,$defs:{AnimationOrientation:{type:"string",enum:["horizontal","vertical"]},Color:{anyOf:[{type:"string",enum:["bg1","tx1","bg2","tx2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink","phClr","lt1","dk1","lt2","dk2"]},{type:"string",enum:["scheme:bg1","scheme:tx1","scheme:bg2","scheme:tx2","scheme:accent1","scheme:accent2","scheme:accent3","scheme:accent4","scheme:accent5","scheme:accent6","scheme:hlink","scheme:folHlink","scheme:phClr","scheme:lt1","scheme:dk1","scheme:lt2","scheme:dk2"]},{type:"string",pattern:"^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",description:'An sRGB color, "#RRGGBB" or "#RGB".'}]},SlideRef:{type:"string",pattern:"^/ppt/slides/[^/]+\\.xml$",description:'A slide, by its part name as `listSlides` reports it, e.g. "/ppt/slides/slide1.xml".'}}},output:{type:"null"}}]},Ve=ke({editorTools:()=>De,runTool:()=>Oe,schemaErrors:()=>be,shapeSummary:()=>ge}),Se=ne,Ce="#/$defs/";function P(t,e){let i=ae(t,e);if(!i)throw new Error(`There is no slide ${e}; listSlides gives the current ones.`);return i}function R(t,{slide:e,shapeId:i}){let r=ie(P(t,e),i);if(!r)throw new Error(`There is no shape ${i} on ${e}; listShapes gives the current ones.`);return r}var ce={SlideRef:P,ShapeRef:R,ChartRef(t,e){let i=R(t,e),r=N(re(i)).find(a=>a.shape===i);if(!r)throw new Error(`Shape ${e.shapeId} on ${e.slide} is not a chart.`);return r},CellRef:(t,e)=>L(R(t,e),e.row,e.col),LayoutRef(t,e){let i=q(t,e);if(!i)throw new Error(`There is no layout ${e}; listLayouts gives the current ones.`);return i},CommentRef(t,{slide:e,index:i}){let r=x(P(t,e))[i];if(!r)throw new Error(`There is no comment ${i} on ${e}; listComments gives them.`);return r},Bytes:(t,e)=>Uint8Array.from(atob(e),i=>i.charCodeAt(0)),DateTime:(t,e)=>new Date(e)},ue={SlideRef:(t,e)=>$(e),ShapeRef:(t,e)=>({...T(t,e)}),LayoutRef:(t,e)=>S(e),CommentRef(t,e){let i=V(e);return{slide:$(i),index:x(i).findIndex(r=>ve(r,e))}}};function ve(t,e){return k(t)===k(e)&&A(t).name===A(e).name&&v(t)===v(e)}var Me=30,we=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,Le=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/i,C=t=>t===null?"null":Array.isArray(t)?"array":typeof t=="number"&&Number.isInteger(t)?"integer":typeof t,m=t=>{let e=JSON.stringify(t);return e.length>60?`${e.slice(0,57)}...`:e};function he(t){let e=t.slice(0,Me).map(r=>JSON.stringify(r)),i=t.length-e.length;return`${e.join(", ")}${i>0?`, \u2026 (${i} more in the schema)`:""}`}function O(t,e){let i=C(t);return i===e||e==="number"&&i==="integer"}function E(t,e){let i=t;for(;typeof i.$ref=="string"&&!(i.$ref.slice(8)in ce);)i=e[i.$ref.slice(8)];return i}function ye(t,e){return t.anyOf.flatMap(i=>{let r=E(i,e);return Array.isArray(r.anyOf)?ye(r,e):[i]})}function j(t,e,i){let r=t.properties?.[e];if(!r)return;let a=E(r,i);return"const"in a?[a.const]:Array.isArray(a.enum)?a.enum:void 0}function Te(t,e,i){return Object.keys(e).find(r=>{let a=t.map(s=>j(s,r,i));return a.every(s=>s!==void 0)&&new Set(a.map(s=>JSON.stringify(s))).size>1})}function Re(t,e,i,r,a){let{defs:s,errors:o}=a,d=r||"(input)",n=t.map(p=>E(p,s)),l=p=>{let u=G(p,s);return u.length===0||u.some(g=>O(i,g))},f=n.map((p,u)=>u).filter(p=>l(n[p]));if(f.length===0){let p=[...new Set(n.flatMap(u=>G(u,s)))];o.push(`${d}: expected ${p.join(" or ")}, got ${C(i)} ${m(i)}`);return}let h=C(i)==="object"?i:void 0,c=h&&Te(f.map(p=>n[p]),h,s);if(h&&c!==void 0){let p=h[c],u=f.filter(g=>j(n[g],c,s).includes(p));if(u.length===0){let g=new Set(f.flatMap(Ae=>j(n[Ae],c,s)));o.push(`${r}/${c}: must be one of ${he([...g])}; got ${m(p)}`);return}f=u}if(f.length===1){o.push(...e[f[0]]);return}let xe=p=>p.startsWith(`${d}: `)?p.slice(d.length+2):p;o.push(`${d}: matches none of the ${f.length} forms it could take:
|
|
435
|
+
${f.map((p,u)=>` ${u+1}. ${e[p].map(xe).join("; ")}`).join(`
|
|
436
|
+
`)}`)}function G(t,e){return typeof t.$ref=="string"?G(e[t.$ref.slice(8)],e):t.type!==void 0?Array.isArray(t.type)?t.type:[t.type]:[]}function y(t,e,i,r){let a=i||"(input)",s=o=>{r.errors.push(`${a}: ${o}`)};if(typeof t.$ref=="string"){let o=t.$ref.slice(8),d=r.errors.length,n=y(r.defs[o],e,i,r),l=ce[o];return r.errors.length>d||!l?n:o==="Bytes"&&!we.test(e)?s("is not valid base64"):o==="DateTime"&&!(Le.test(e)&&!Number.isNaN(Date.parse(e)))?s('is not an RFC 3339 date-time such as "2026-10-08T09:30:00Z"'):r.presentation?l(r.presentation,e):e}if(Array.isArray(t.anyOf)){let o=ye(t,r.defs),d=o.map(l=>{let f={defs:r.defs,errors:[]};return y(l,e,i,f),f.errors}),n=d.findIndex(l=>l.length===0);return n>=0?y(o[n],e,i,r):Re(o,d,e,i,r)}if(t.type!==void 0){let o=Array.isArray(t.type)?t.type:[t.type];if(!o.some(d=>O(e,d)))return s(`expected ${o.join(" or ")}, got ${C(e)} ${m(e)}`)}return"const"in t&&e!==t.const?s(`must be ${JSON.stringify(t.const)}, got ${m(e)}`):Array.isArray(t.enum)&&!t.enum.includes(e)?s(`must be one of ${he(t.enum)}; got ${m(e)}`):typeof e=="string"&&typeof t.pattern=="string"&&!new RegExp(t.pattern,"u").test(e)?s(`${m(e)} does not match the pattern ${t.pattern}`):typeof e=="number"&&typeof t.minimum=="number"&&e<t.minimum?s(`must be at least ${t.minimum}, got ${e}`):Array.isArray(e)?Pe(t,e,i,r):e!==null&&typeof e=="object"?je(t,e,i,r):e}function Pe(t,e,i,r){let a=i||"(input)";typeof t.minItems=="number"&&e.length<t.minItems&&r.errors.push(`${a}: needs at least ${t.minItems} items, got ${e.length}`),typeof t.maxItems=="number"&&e.length>t.maxItems&&r.errors.push(`${a}: takes at most ${t.maxItems} items, got ${e.length}`);let s=t.prefixItems??[];return e.map((o,d)=>{let n=s[d]??t.items;return n?y(n,o,`${i}/${d}`,r):o})}function je(t,e,i,r){let a=i||"(input)",s=t.properties??{},o=(t.required??[]).filter(n=>!(n in e));o.length>0&&r.errors.push(`${a}: missing required ${o.map(n=>JSON.stringify(n)).join(", ")}`);let d={};for(let[n,l]of Object.entries(e)){let f=`${i}/${n.replace(/~/g,"~0").replace(/\//g,"~1")}`,h=s[n];if(h)d[n]=y(h,l,f,r);else if(t.additionalProperties===!1){let c=Object.keys(s);r.errors.push(`${a}: unknown property ${JSON.stringify(n)}${c.length>0?` (allowed: ${c.join(", ")})`:""}`)}else t.additionalProperties&&typeof t.additionalProperties=="object"?d[n]=y(t.additionalProperties,l,f,r):d[n]=l}return d}function b(t,e,i,r){if(e==null)return null;if(typeof t.$ref=="string"){let a=t.$ref.slice(8),s=ue[a];return s?s(r,e):b(i[a],e,i,r)}if(Array.isArray(t.anyOf)){let a=t.anyOf.find(s=>me(s,e,i));return a?b(a,e,i,r):e}if(Array.isArray(e))return e.map(a=>b(t.items??{},a,i,r));if(typeof e=="object"){let a=t.properties??{};return Object.fromEntries(Object.entries(e).map(([s,o])=>[s,b(a[s]??{},o,i,r)]))}return e}function me(t,e,i){if(typeof t.$ref=="string"){let r=t.$ref.slice(8);return r in ue?typeof e=="object":me(i[r],e,i)}return(Array.isArray(t.type)?t.type:[t.type]).some(r=>O(e,r))}var de={type:"object",properties:{slide:{$ref:`${Ce}SlideRef`}},required:["slide"],additionalProperties:!1,$defs:{SlideRef:fe.refs.SlideRef}},pe={type:"object",properties:{},additionalProperties:!1};function ge(t,e){let i=Q(t,e),r={shape:{...T(t,e)},kind:M(e)?"table":w(e)?"chart":Y(e),placeholder:J(e),bounds:i&&{x:i.x,y:i.y,w:i.w,h:i.h}};if(M(e)){let{rows:a,cols:s}=z(e);r.cells=Array.from({length:a},(o,d)=>Array.from({length:s},(n,l)=>U(L(e,d,l))))}else if(w(e)){let a=H(e);r.chart=a&&{kind:a.kind,title:a.title??null,categories:a.categories,series:a.series.map(({name:s,values:o})=>({name:s,values:o}))}}else _(e)&&(r.text=Z(e));return r}var Ge=[{name:"listSlides",description:`Lists the slides in order: each slide's ref (its part name, which other tools take as "slide"), 0-based index, title, layout ref and whether it is hidden.`,input_schema:pe,read:t=>se(t).map((e,i)=>{let r=te(e);return{slide:$(e),index:i,title:X(e),layout:r&&S(r),hidden:oe(e)}})},{name:"listShapes",description:`Lists the shapes on a slide, back to front: each shape's ref (which other tools take as "shape", or with "row" and "col" added as a table "cell"), its kind, placeholder type, bounds and text (for a table, the text of every cell; for a chart, its kind, title, categories and series values, or null when its kind cannot be read; date-axis categories are date serial numbers). Bounds are in EMU: 914400 per inch, 360000 per cm, 12700 per point.`,input_schema:de,read:(t,e)=>ee(e.slide).map(i=>ge(t,i))},{name:"listLayouts",description:"Lists the slide layouts: each layout's ref (its part name, which other tools take as a layout), name, type and the part name of its slide master.",input_schema:pe,read:t=>W(t).map(e=>({layout:S(e),name:B(e),type:F(e),master:K(e)}))},{name:"listComments",description:`Lists the comments on a slide: each comment's ref (which other tools take as "comment"), author, text and status. Positions change when a comment is removed; list again after removing one.`,input_schema:de,read:(t,e)=>x(e.slide).map((i,r)=>({comment:{slide:$(e.slide),index:r},author:A(i).name,text:k(i),status:I(i)}))}],$e=new Map([...fe.tools,...Ge].map(t=>[t.name,t])),De=[...$e.values()].map(({name:t,description:e,input_schema:i})=>({name:t,description:e,input_schema:i})).sort((t,e)=>t.name.localeCompare(e.name));function D(t){return t.$defs??{}}function be(t,e){let i={defs:D(t),errors:[]};return y(t,e,"",i),i.errors}async function Oe(t,e,i){let r=$e.get(e);if(!r)throw new Error(`There is no tool ${JSON.stringify(e)}. Call one of the tools listed.`);let a=D(r.input_schema),s=be(r.input_schema,i);if(s.length>0)throw new Error(`Invalid input for ${e}:
|
|
437
437
|
${s.map(l=>`- ${l}`).join(`
|
|
438
|
-
`)}`);let o=l=>y(r.input_schema,i,"",{defs:a,errors:[],presentation:l});if("read"in r){let l=t.presentation();return r.read(l,o(l))}let d=Se[e];if(typeof d!="function")throw new Error(`@office-kit/pptx has no function ${e}.`);let n=null;return await t.apply(e,l=>{let f=o(l),h=d(...r.args.map(c=>c?f[c]:l));n=
|
|
438
|
+
`)}`);let o=l=>y(r.input_schema,i,"",{defs:a,errors:[],presentation:l});if("read"in r){let l=t.presentation();return r.read(l,o(l))}let d=Se[e];if(typeof d!="function")throw new Error(`@office-kit/pptx has no function ${e}.`);let n=null;return await t.apply(e,l=>{let f=o(l),h=d(...r.args.map(c=>c?f[c]:l));n=b(r.output,h,D(r.output),l)}),n}export{fe as a,ge as i,Oe as n,be as r,Ve as t};
|