pptx-viewer-mcp 2.3.0 → 2.4.0

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/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ A release listed with no entries carried no Conventional Commit in this package'
7
7
  scope: scripts/release-plan.mjs re-releases a package whenever any of its files
8
8
  change, not only on conventional ones.
9
9
 
10
+ ## [2.3.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-viewer-mcp@2.3.0) - 2026-09-05
11
+
12
+ ### Features
13
+
14
+ - **tools:** Chart formatting and table style MCP tools (by @ChristopherVR) ([c2094ee](https://github.com/ChristopherVR/pptx-viewer/commit/c2094ee67a06a9358f52c3e38ba6a3612a9cb3ce))
15
+
10
16
  ## [2.2.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-viewer-mcp@2.2.0) - 2026-09-05
11
17
 
12
18
  ### Features
package/dist/index.d.ts CHANGED
@@ -276,6 +276,10 @@ interface UpdateElementParams {
276
276
  hidden?: boolean;
277
277
  flipH?: boolean;
278
278
  flipV?: boolean;
279
+ /** Accessibility description; see {@link applyElementAltText} for the accepted kinds. */
280
+ altText?: string;
281
+ /** Accessibility title; see {@link applyElementTitle} for the accepted kinds. */
282
+ title?: string;
279
283
  }
280
284
  declare function updateElement(ctx: ToolContext, params: UpdateElementParams): ToolResult<{
281
285
  elementId: string;
@@ -500,7 +504,19 @@ interface UpdateElementStyleParams {
500
504
  brightness?: number;
501
505
  contrast?: number;
502
506
  grayscale?: boolean;
507
+ /**
508
+ * Accessibility description (`p:cNvPr/@descr`). Accepted for pictures,
509
+ * every graphic frame kind (table, chart, smartArt, ole, media), and a
510
+ * plain shape / text box / connector: the core writer serialises all
511
+ * eight kinds, so the tool must not stop at images.
512
+ */
503
513
  altText?: string;
514
+ /**
515
+ * Accessibility title (`p:cNvPr/@title`). Accepted for every kind that
516
+ * models it: table, chart, smartArt, ole, media, text, shape and
517
+ * connector (a picture has no separate title field, only `altText`).
518
+ */
519
+ title?: string;
504
520
  }
505
521
  declare function updateElementStyle(ctx: ToolContext, params: UpdateElementStyleParams): ToolResult<{
506
522
  elementId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/execution.ts","../src/tools/slide-tools.ts","../src/tools/helpers.ts","../src/tools/element-tools.ts","../src/tools/table-tools.ts","../src/tools/table-style-tools.ts","../src/tools/style-tools.ts","../src/tools/content-tools.ts","../src/tools/conversion-tools.ts","../src/tools/theme-tools.ts","../src/tools/chart-tools.ts","../src/tools/chart-formatting-tools.ts","../src/tools/chart-user-shape-tools.ts","../src/tools/smartart-tools.ts","../src/tools/merge-tools.ts","../src/tools/template-tools.ts","../src/tools/metadata-tools.ts","../src/tools/section-tools.ts","../src/tools/export-tools.ts","../src/tools/json-tools.ts","../src/tools/hyperlink-tools.ts","../src/tools/geometry-tools.ts","../src/tools/lock-tools.ts","../src/tools/validation-tools.ts","../src/tools/presentation-tools.ts","../src/tools/layout-tools.ts"],"mappings":";;;;;;;UAOiB;;EAEhB,UAAU;;EAEV,gBAAgB,iBAAiB,QAAQ;;EAEzC,gBAAgB,iBAAiB,QAAQ;;;;;;;;;;;UAYzB;;EAEhB;;EAEA;;;;;;UAOgB,WAAW;;EAE3B,UAAU;;EAEV,QAAQ;;EAER;;;;;;EAMA,cAAc;;;;;;UAWE;;EAEhB,QAAQ;IAAqB,MAAM;;;EAEnC,SAAS;IACR,QAAQ,MAAM,KAAM,OAAO,YAAY,kBAAkB;IACzD,UAAU,MAAM,MAAO,QAAQ;;;EAGhC,YAAY;;;;;;;UAQI;EAChB,SAAS,eAAe,QAAQ;EAChC,UAAU,cAAc,MAAM,aAAa;;;;;;UAO3B;EAChB,eACC,kBACA,OAAO,YACP;IAAW;IAAoB;;EAEhC,SAAS,mBAAmB;;;;;UAMZ;;EAEhB,YAAY;;EAEZ,gBAAgB;;EAEhB,SAAS;;EAET;;;;;;;;;iBC7FqB,iBACrB,kBACA,SAAS,mBACP;EAAU,UAAU;EAAU,UAAU;;;;;iBA0BrB,iBACrB,kBACA,UAAU,YACV,UAAU,YACV,SAAS,kBACT,wBAAwB,wBACtB;EAAU;EAAsB;;;;;;iBAsDb,uBAAuB,GAC5C,kBACA,SAAS,kBACT,SAAS,KAAK,gBAAgB,WAAW,KAAK,QAAQ,WAAW,MAC/D,QAAQ;EAAM;EAAuB;;;;UC/FvB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;;iBAGK,SACf,KAAK,aACL;EAAU;IACR,WAAW;UAuBG;EAChB;EACA;;UAGgB;EAChB;EACA;;iBAGe,SAAS,KAAK,aAAa,QAAQ,iBAAiB,WAAW;UA2B9D;EAChB;;UAGgB;EAChB;EACA;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UA4BG;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UA2BC;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;EAAuB;;UA4BtB;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,sBACf,KAAK,aACL,QAAQ,8BACN;EAAa;;UA8BC;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,2BACN;EAAa;EAAoB;;UAmCnB;EAChB;EACA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;EAAqB;;;;iBChSrB;iBAIA;;iBAKA,gBAAgB,IAAI,gBAAc;;iBAwGlC,iBAAiB,OAAO;;iBA0BxB,mBAAmB,oBAAoB;;;UCrHtC;EAChB;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;;iBAGe,WACf,KAAK,aACL,QAAQ,mBACN,WAAW;UAmKG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;;EAOA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UAuHC;EAChB;EACA;;EAEA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;EAAmB;;UA4BlB;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;;UA0BC;EAChB;EACA;EAEA;EACA;EAEA;EACA;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN;EAAa;;UA6GC;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UA6CG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;UAsDC;EAChB;EACA;;UAGgB;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN,WAAW;UAmCG;EAChB;EACA;;UAGgB;EAChB;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN,WAAW;UA6CG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;;;UCpzBC;EAChB;EACA;EACA,OAAO;IAAQ;IAAa;IAAa;;;iBAG1B,iBAC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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/execution.ts","../src/tools/slide-tools.ts","../src/tools/helpers.ts","../src/tools/element-tools.ts","../src/tools/table-tools.ts","../src/tools/table-style-tools.ts","../src/tools/style-tools.ts","../src/tools/content-tools.ts","../src/tools/conversion-tools.ts","../src/tools/theme-tools.ts","../src/tools/chart-tools.ts","../src/tools/chart-formatting-tools.ts","../src/tools/chart-user-shape-tools.ts","../src/tools/smartart-tools.ts","../src/tools/merge-tools.ts","../src/tools/template-tools.ts","../src/tools/metadata-tools.ts","../src/tools/section-tools.ts","../src/tools/export-tools.ts","../src/tools/json-tools.ts","../src/tools/hyperlink-tools.ts","../src/tools/geometry-tools.ts","../src/tools/lock-tools.ts","../src/tools/validation-tools.ts","../src/tools/presentation-tools.ts","../src/tools/layout-tools.ts"],"mappings":";;;;;;;UAOiB;;EAEhB,UAAU;;EAEV,gBAAgB,iBAAiB,QAAQ;;EAEzC,gBAAgB,iBAAiB,QAAQ;;;;;;;;;;;UAYzB;;EAEhB;;EAEA;;;;;;UAOgB,WAAW;;EAE3B,UAAU;;EAEV,QAAQ;;EAER;;;;;;EAMA,cAAc;;;;;;UAWE;;EAEhB,QAAQ;IAAqB,MAAM;;;EAEnC,SAAS;IACR,QAAQ,MAAM,KAAM,OAAO,YAAY,kBAAkB;IACzD,UAAU,MAAM,MAAO,QAAQ;;;EAGhC,YAAY;;;;;;;UAQI;EAChB,SAAS,eAAe,QAAQ;EAChC,UAAU,cAAc,MAAM,aAAa;;;;;;UAO3B;EAChB,eACC,kBACA,OAAO,YACP;IAAW;IAAoB;;EAEhC,SAAS,mBAAmB;;;;;UAMZ;;EAEhB,YAAY;;EAEZ,gBAAgB;;EAEhB,SAAS;;EAET;;;;;;;;;iBC7FqB,iBACrB,kBACA,SAAS,mBACP;EAAU,UAAU;EAAU,UAAU;;;;;iBA0BrB,iBACrB,kBACA,UAAU,YACV,UAAU,YACV,SAAS,kBACT,wBAAwB,wBACtB;EAAU;EAAsB;;;;;;iBAsDb,uBAAuB,GAC5C,kBACA,SAAS,kBACT,SAAS,KAAK,gBAAgB,WAAW,KAAK,QAAQ,WAAW,MAC/D,QAAQ;EAAM;EAAuB;;;;UC/FvB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;;iBAGK,SACf,KAAK,aACL;EAAU;IACR,WAAW;UAuBG;EAChB;EACA;;UAGgB;EAChB;EACA;;iBAGe,SAAS,KAAK,aAAa,QAAQ,iBAAiB,WAAW;UA2B9D;EAChB;;UAGgB;EAChB;EACA;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UA4BG;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UA2BC;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;EAAuB;;UA4BtB;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,sBACf,KAAK,aACL,QAAQ,8BACN;EAAa;;UA8BC;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,2BACN;EAAa;EAAoB;;UAmCnB;EAChB;EACA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;EAAqB;;;;iBChSrB;iBAIA;;iBAKA,gBAAgB,IAAI,gBAAc;;iBAwGlC,iBAAiB,OAAO;;iBA0BxB,mBAAmB,oBAAoB;;;UCpHtC;EAChB;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;;iBAGe,WACf,KAAK,aACL,QAAQ,mBACN,WAAW;UAmKG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;;EAOA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;;EAEA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;;UA6HC;EAChB;EACA;;EAEA;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN;EAAa;EAAmB;;UA4BlB;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;;UA0BC;EAChB;EACA;EAEA;EACA;EAEA;EACA;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN;EAAa;;UA6GC;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;;iBAGe,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UA6CG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;UAsDC;EAChB;EACA;;UAGgB;EAChB;;iBAGe,cACf,KAAK,aACL,QAAQ,sBACN,WAAW;UAmCG;EAChB;EACA;;UAGgB;EAChB;;iBAGe,gBACf,KAAK,aACL,QAAQ,wBACN,WAAW;UA6CG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,oBACf,KAAK,aACL,QAAQ,4BACN;EAAa;;;;UC/zBC;EAChB;EACA;EACA,OAAO;IAAQ;IAAa;IAAa;;;iBAG1B,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa;;UA6CC;EAChB;EACA;EACA;EACA;EACA;EACA;;iBAGe,qBACf,KAAK,aACL,QAAQ,6BACN;EAAa;EAAkB;;;;UCnBjB;EAChB;EACA,SAAS;EACT;EACA,OAAO;EACP,OAAO;EACP,UAAU;EACV,SAAS;;;;;;;;iBASM,qBACf,KAAK,aACL,QAAQ,6BACN;EAAa;EAAiB,SAAS;;UAiDzB;EAChB;;EAEA;;EAEA;;iBAGe,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa;;UAwBC;EAChB;;EAEA;;iBAGe,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa;;UA2BC;EAChB;EACA;;;;;;EAMA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;;;;iBAUe,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa;EAAmB;;;;UC9MlB;EAChB;EACA;EAEA;;;;;;;;;;EAUA,iBAAiB;EACjB,WAAW;EACX,oBAAoB;IAAQ;IAAe;IAAkB;;EAC7D;EACA;EACA;EAEA;;EAEA,mBAAmB;EACnB;EACA,aAAa;EACb;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;;EAOA;;;;;;EAMA;;iBAgDe,mBACf,KAAK,aACL,QAAQ,2BACN;EAAa;;UA2JC;EAChB;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;EACA,QAAQ;;iBAGO,sBAAsB,KAAK,cAAc,WAAW;;;UC5PnD;EAChB;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA,SAAS;;iBAGM,SAAS,KAAK,aAAa,QAAQ,iBAAiB,WAAW;UA2G9D;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;;iBAGe,YACf,KAAK,aACL,QAAQ,oBACN,WAAW;UAiGG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA,WAAW;EACX;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN,WAAW;;;UCpTG;EAChB;EACA;EACA;EACA;IAAe;IAAgB;;EAC/B;EACA;EACA;;;;;;EAMA;;;;;;;;;;;;;;EAcA,kBAAkB,mBAAmB;;UAGrB;EAChB;EACA;EACA;EACA;;iBAGqB,kBACrB,KAAK,aACL,QAAQ,0BACN,QAAQ,WAAW;;;UCjCL;EAChB;EACA,cAAc;EACd,aAAa;EACb;;iBAGe,aAAa,KAAK,cAAc,WAAW;UAgB1C;EAChB;;UAGgB;EAChB;EACA,aAAa;;iBAGE,iBACf,KAAK,aACL,QAAQ,yBACN,WAAW;UA8BG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,kBACf,KAAK,aACL,QAAQ,0BACN;EAAa,aAAa;;UAsCZ;EAChB;EACA;;iBAGe,iBACf,KAAK,aACL,QAAQ,yBACN;EAAa,YAAY;;;;UCnHX;EAChB;EACA;EACA;EACA;EACA;EACA;IAAW;IAAgB;;EAC3B;IACC;IACA;IACA;IACA;IACA;;EAED;IAAS;IAAc,MAAM;;EAC7B;;iBAGe,YACf,KAAK,aACL,QAAQ,oBACN;EAAa;;UA+CC;EAChB;EACA;EACA;EACA;EACA;;iBAGe,gBACf,KAAK,aACL,QAAQ,uBACN;EAAa;EAAmB;;UA4BlB;EAChB;EACA;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,0BACN;EAAa;EAAmB;;UA4BlB;EAChB;EACA;EACA;EACA;;iBAGe,sBACf,KAAK,aACL,QAAQ,8BACN;EAAa;;UAuBC;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS;IAAQ;IAAc;IAAkB;;EACjD;IAAW;IAAe;;;UAGV;EAChB;EACA;;iBAGe,YACf,KAAK,aACL,QAAQ,oBACN,WAAW;;;UC5KG;EAChB;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;;EAEA;EACA;IAAW,SAAS;IAAuB;IAAe;;;iBAG3C,qBACf,KAAK,aACL,QAAQ,6BACN;EAAa;;UA4BC;EAChB;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;;EAEA;IACC;IACA;IACA;IACA;;;EAGD;IACC;IACA;IACA;IACA;IACA;;;iBAIc,qBACf,KAAK,aACL,QAAQ,6BACN;EAAa;;UAsBC;EAChB;EACA;EACA;EACA;IACC,SAAS;IACT;IACA;IACA;IACA;IACA;;EAED;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED,aAAa;IAAqB;IAAgB;;;iBAGnC,kBACf,KAAK,aACL,QAAQ,0BACN;EAAa;;UA0CC;EAChB;EACA;EACA;;EAEA;IAAS;IAAgB;IAAgB;;;iBAG1B,oBACf,KAAK,aACL,QAAQ,2BACN;EAAa;;UAQC;EAChB;EACA;;EAEA,WAAW;;iBAGI,0BACf,KAAK,aACL,QAAQ,iCACN;EAAa;;;;;UCnNC;EAChB;EACA;EACA;IAAQ;IAAW;;EACnB;IAAO;IAAW;;EAClB;IAAQ;IAAY;;EACpB;EACA;EACA;EACA;;EAEA;;UAoBgB;EAChB;EACA;;iBAGe,qBACf,KAAK,aACL,QAAQ,4BACN;EAAa,QAAQ;;UAOP;EAChB;EACA;EACA,OAAO;;iBAGQ,mBACf,KAAK,aACL,QAAQ,0BACN;EAAa;EAAmB;;UASlB;EAChB;EACA;EACA;EACA,OAAO,QAAQ;;iBAGA,sBACf,KAAK,aACL,QAAQ,6BACN;EAAa;;UAsBC;EAChB;EACA;EACA;;iBAGe,sBACf,KAAK,aACL,QAAQ,6BACN;EAAa;;;;UCtIC;EAChB;EACA;EACA;EASA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA,WAAW;;UAGK;EAChB;EACA;EACA,QAAQ;EACR;;iBAce,eACf,KAAK,aACL,QAAQ,uBACN,WAAW;;;UCtDG;;EAEhB,YAAY;;EAEZ;;EAEA;;EAEA;;UAGgB;EAChB;EACA;;iBAGe,mBACf,KAAK,aACL,QAAQ,0BACN,WAAW;UAuBG;;EAEhB,WAAW;;iBAGI,mBACf,KAAK,aACL,QAAQ,0BACN,WAAW;;;UClDG;EAChB;EACA;;iBAGe,kBAAkB,KAAK,cAAc,WAAW;UAW/C;EAChB,MAAM;;UAGU;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,sBACN,WAAW;;;UC7BG;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,mBAAmB;EACnB;;iBAGe,YAAY,KAAK,cAAc,WAAW;UAezC;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBAAmB;IAAQ;IAAc;;;iBAG1B,eACf,KAAK,aACL,QAAQ,uBACN;EAAa;;;;UChCC;EAChB;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA,WAAW;EACX,UAAU;EACV;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN,WAAW;;;UC/BG;EAChB;EACA;EACA;EACA;;UAGgB;EAChB;EACA;;iBAGe,YACf,KAAK,aACL,QAAQ,oBACN,WAAW;UAmCG;EAChB;EACA;EACA;;UAGgB;EAChB;EACA;;iBAGe,eACf,KAAK,aACL,QAAQ,uBACN,WAAW;;;UC7DG;;EAEhB;;UAGgB;;EAEhB;EACA;;EAEA;;EAEA,QAAQ;;;;;;iBAOO,aACf,KAAK,aACL,QAAQ,qBACN,WAAW;UAkBG;;EAEhB;;UAGgB;EAChB;EACA;EACA;;;;;;;;;iBAUe,eACf,KAAK,aACL,QAAQ,uBACN,WAAW;;;UCjEG;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA;EACA;EACA;EACA;EACA;;UAGgB;EAChB;EACA,aAAa;EACb;;iBAGe,iBACf,KAAK,aACL,QAAQ,yBACN,WAAW;;;UC5BG;EAChB;EACA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,cAAc;;iBAGC,gBACf,KAAK,aACL,QAAQ,wBACN;EAAa;EAAmB;;;;UCnBlB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,gBACf,KAAK,aACL,QAAQ,uBACN;EAAa;EAAmB;;;;UChBlB;EAChB;EACA;EACA;EACA;EACA,QAAQ;IACP;IACA;IACA;IACA;;;;;;;;iBASoB,qBACrB,UAAU,cACR,QAAQ;UAaM;EAChB;EACA;;iBAGqB,mBACrB,UAAU,cACR;EAAU,QAAQ;EAA0B,eAAe;;;;iBCvC9C,0BAA0B,KAAK,cAAc;EAC5D,YAAY;EACZ;EACA;EACA;;UAgBgB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe,6BACf,KAAK,aACL,QAAQ,qCACN;EAAa,YAAY;;;;UClCX;EAChB;EACA;EACA;;UAGgB;EAChB,SAAS;EACT;;iBAGe,WAAW,KAAK,cAAc,WAAW;UAmCxC;EAChB;EACA;EACA;;UAGgB;EAChB;EACA;;iBAGe,YACf,KAAK,aACL,QAAQ,oBACN,WAAW"}
package/dist/index.js CHANGED
@@ -395,6 +395,240 @@ function setCanvasSize(ctx, params) {
395
395
  result: { canvasWidth: params.width, canvasHeight: params.height }
396
396
  };
397
397
  }
398
+ var ALT_TEXT_ELEMENT_TYPES = /* @__PURE__ */ new Set(["image", "picture", "table", "chart", "smartArt", "ole", "media", "text", "shape", "connector"]);
399
+ var TITLE_ELEMENT_TYPES = /* @__PURE__ */ new Set([
400
+ "table",
401
+ "chart",
402
+ "smartArt",
403
+ "ole",
404
+ "media",
405
+ "text",
406
+ "shape",
407
+ "connector"
408
+ ]);
409
+ function applyElementAltText(el, altText) {
410
+ if (!ALT_TEXT_ELEMENT_TYPES.has(el.type)) {
411
+ throw new Error(
412
+ `Element '${el.id}' (${el.type}) does not support altText; only ${[...ALT_TEXT_ELEMENT_TYPES].join(", ")} elements do.`
413
+ );
414
+ }
415
+ el.altText = altText;
416
+ }
417
+ function applyElementTitle(el, title) {
418
+ if (!TITLE_ELEMENT_TYPES.has(el.type)) {
419
+ throw new Error(
420
+ `Element '${el.id}' (${el.type}) does not support title; only ${[...TITLE_ELEMENT_TYPES].join(", ")} elements do.`
421
+ );
422
+ }
423
+ el.title = title;
424
+ }
425
+ function updateElementStyle(ctx, params) {
426
+ const err = validateSlideIndex(params.slideIndex, ctx.pptxData.slides.length);
427
+ if (err) {
428
+ throw new Error(err);
429
+ }
430
+ const slide = ctx.pptxData.slides[params.slideIndex];
431
+ const el = slide.elements.find((e) => e.id === params.elementId);
432
+ if (!el) {
433
+ throw new Error(`Element '${params.elementId}' not found on slide ${params.slideIndex}.`);
434
+ }
435
+ if ("shapeStyle" in el) {
436
+ if (!el.shapeStyle) {
437
+ el.shapeStyle = {};
438
+ }
439
+ const ss = el.shapeStyle;
440
+ if (params.fillThemeColor !== void 0) {
441
+ ss.fillColorRef = params.fillThemeColor;
442
+ const resolved = pptxViewerCore.resolveThemeColorRef(params.fillThemeColor, ctx.pptxData.themeColorMap);
443
+ if (params.fillColor !== void 0) {
444
+ ss.fillColor = params.fillColor;
445
+ } else if (resolved) {
446
+ ss.fillColor = resolved;
447
+ }
448
+ } else if (params.fillColor !== void 0) {
449
+ ss.fillColor = params.fillColor;
450
+ ss.fillColorRef = void 0;
451
+ }
452
+ if (params.fillMode !== void 0) {
453
+ ss.fillMode = params.fillMode;
454
+ }
455
+ if (params.fillGradientStops !== void 0) {
456
+ ss.fillGradientStops = params.fillGradientStops;
457
+ }
458
+ if (params.fillGradientAngle !== void 0) {
459
+ ss.fillGradientAngle = params.fillGradientAngle;
460
+ }
461
+ if (params.fillGradientType !== void 0) {
462
+ ss.fillGradientType = params.fillGradientType;
463
+ }
464
+ if (params.fillOpacity !== void 0) {
465
+ ss.fillOpacity = params.fillOpacity;
466
+ }
467
+ if (params.strokeThemeColor !== void 0) {
468
+ ss.strokeColorRef = params.strokeThemeColor;
469
+ const resolved = pptxViewerCore.resolveThemeColorRef(params.strokeThemeColor, ctx.pptxData.themeColorMap);
470
+ if (params.strokeColor !== void 0) {
471
+ ss.strokeColor = params.strokeColor;
472
+ } else if (resolved) {
473
+ ss.strokeColor = resolved;
474
+ }
475
+ } else if (params.strokeColor !== void 0) {
476
+ ss.strokeColor = params.strokeColor;
477
+ ss.strokeColorRef = void 0;
478
+ }
479
+ if (params.strokeWidth !== void 0) {
480
+ ss.strokeWidth = params.strokeWidth;
481
+ }
482
+ if (params.strokeDash !== void 0) {
483
+ ss.strokeDash = params.strokeDash;
484
+ }
485
+ if (params.strokeOpacity !== void 0) {
486
+ ss.strokeOpacity = params.strokeOpacity;
487
+ }
488
+ if (params.shadowColor !== void 0) {
489
+ ss.shadowColor = params.shadowColor;
490
+ }
491
+ if (params.shadowBlur !== void 0) {
492
+ ss.shadowBlur = params.shadowBlur;
493
+ }
494
+ if (params.shadowOffsetX !== void 0) {
495
+ ss.shadowOffsetX = params.shadowOffsetX;
496
+ }
497
+ if (params.shadowOffsetY !== void 0) {
498
+ ss.shadowOffsetY = params.shadowOffsetY;
499
+ }
500
+ if (params.shadowOpacity !== void 0) {
501
+ ss.shadowOpacity = params.shadowOpacity;
502
+ }
503
+ if (params.glowColor !== void 0) {
504
+ ss.glowColor = params.glowColor;
505
+ }
506
+ if (params.glowRadius !== void 0) {
507
+ ss.glowRadius = params.glowRadius;
508
+ }
509
+ if (params.glowOpacity !== void 0) {
510
+ ss.glowOpacity = params.glowOpacity;
511
+ }
512
+ if (params.softEdgeRadius !== void 0) {
513
+ ss.softEdgeRadius = params.softEdgeRadius;
514
+ }
515
+ }
516
+ if (params.altText !== void 0) {
517
+ applyElementAltText(el, params.altText);
518
+ }
519
+ if (params.title !== void 0) {
520
+ applyElementTitle(el, params.title);
521
+ }
522
+ if (el.type === "image" || el.type === "picture") {
523
+ const img = el;
524
+ if (params.cropLeft !== void 0) {
525
+ img.cropLeft = params.cropLeft;
526
+ }
527
+ if (params.cropTop !== void 0) {
528
+ img.cropTop = params.cropTop;
529
+ }
530
+ if (params.cropRight !== void 0) {
531
+ img.cropRight = params.cropRight;
532
+ }
533
+ if (params.cropBottom !== void 0) {
534
+ img.cropBottom = params.cropBottom;
535
+ }
536
+ if (params.brightness !== void 0 || params.contrast !== void 0 || params.grayscale !== void 0) {
537
+ if (!img.imageEffects) {
538
+ img.imageEffects = {};
539
+ }
540
+ if (params.brightness !== void 0) {
541
+ img.imageEffects.brightness = params.brightness;
542
+ }
543
+ if (params.contrast !== void 0) {
544
+ img.imageEffects.contrast = params.contrast;
545
+ }
546
+ if (params.grayscale !== void 0) {
547
+ img.imageEffects.grayscale = params.grayscale;
548
+ }
549
+ }
550
+ }
551
+ return {
552
+ pptxData: ctx.pptxData,
553
+ dirty: true,
554
+ result: { elementId: params.elementId }
555
+ };
556
+ }
557
+ function runAccessibilityCheck(ctx) {
558
+ const issues = [];
559
+ for (let si = 0; si < ctx.pptxData.slides.length; si++) {
560
+ const slide = ctx.pptxData.slides[si];
561
+ let slideHasText = false;
562
+ for (const el of slide.elements) {
563
+ if (el.type === "image" || el.type === "picture") {
564
+ const img = el;
565
+ if (!img.altText) {
566
+ issues.push({
567
+ slideIndex: si,
568
+ elementId: el.id,
569
+ severity: "error",
570
+ message: `Image element '${el.id}' has no alt text.`
571
+ });
572
+ }
573
+ }
574
+ if (pptxViewerCore.hasTextProperties(el)) {
575
+ const textEl = el;
576
+ slideHasText = true;
577
+ if (!textEl.text || textEl.text.trim() === "") {
578
+ issues.push({
579
+ slideIndex: si,
580
+ elementId: el.id,
581
+ severity: "info",
582
+ message: `Text element '${el.id}' is empty.`
583
+ });
584
+ }
585
+ const fs = textEl.textStyle?.fontSize;
586
+ if (fs !== void 0 && fs < 10) {
587
+ issues.push({
588
+ slideIndex: si,
589
+ elementId: el.id,
590
+ severity: "warning",
591
+ message: `Text element '${el.id}' has very small font size (${fs}pt < 10pt).`
592
+ });
593
+ }
594
+ const textColor = textEl.textStyle?.color?.toLowerCase();
595
+ const bgColor = slide.backgroundColor?.toLowerCase();
596
+ if (textColor && bgColor && textColor === bgColor) {
597
+ issues.push({
598
+ slideIndex: si,
599
+ elementId: el.id,
600
+ severity: "error",
601
+ message: `Text element '${el.id}' has same color as slide background (${textColor}).`
602
+ });
603
+ }
604
+ }
605
+ }
606
+ if (!slideHasText) {
607
+ issues.push({
608
+ slideIndex: si,
609
+ severity: "warning",
610
+ message: `Slide ${si + 1} contains no text elements.`
611
+ });
612
+ }
613
+ }
614
+ const errorCount = issues.filter((i) => i.severity === "error").length;
615
+ const warningCount = issues.filter((i) => i.severity === "warning").length;
616
+ const infoCount = issues.filter((i) => i.severity === "info").length;
617
+ return {
618
+ pptxData: ctx.pptxData,
619
+ dirty: false,
620
+ result: {
621
+ slideCount: ctx.pptxData.slides.length,
622
+ totalIssues: issues.length,
623
+ errorCount,
624
+ warningCount,
625
+ infoCount,
626
+ issues
627
+ }
628
+ };
629
+ }
630
+
631
+ // src/tools/element-tools.ts
398
632
  function addElement(ctx, params) {
399
633
  const err = validateSlideIndex(params.slideIndex, ctx.pptxData.slides.length);
400
634
  if (err) {
@@ -574,6 +808,12 @@ function updateElement(ctx, params) {
574
808
  if (params.flipV !== void 0) {
575
809
  el.flipVertical = params.flipV;
576
810
  }
811
+ if (params.altText !== void 0) {
812
+ applyElementAltText(el, params.altText);
813
+ }
814
+ if (params.title !== void 0) {
815
+ applyElementTitle(el, params.title);
816
+ }
577
817
  if (pptxViewerCore.hasTextProperties(el)) {
578
818
  const textEl = el;
579
819
  if (params.text !== void 0) {
@@ -1230,208 +1470,6 @@ function assignTableStyle(ctx, params) {
1230
1470
  result: { elementId: params.elementId, styleId: normalizedId }
1231
1471
  };
1232
1472
  }
1233
- function updateElementStyle(ctx, params) {
1234
- const err = validateSlideIndex(params.slideIndex, ctx.pptxData.slides.length);
1235
- if (err) {
1236
- throw new Error(err);
1237
- }
1238
- const slide = ctx.pptxData.slides[params.slideIndex];
1239
- const el = slide.elements.find((e) => e.id === params.elementId);
1240
- if (!el) {
1241
- throw new Error(`Element '${params.elementId}' not found on slide ${params.slideIndex}.`);
1242
- }
1243
- if ("shapeStyle" in el) {
1244
- if (!el.shapeStyle) {
1245
- el.shapeStyle = {};
1246
- }
1247
- const ss = el.shapeStyle;
1248
- if (params.fillThemeColor !== void 0) {
1249
- ss.fillColorRef = params.fillThemeColor;
1250
- const resolved = pptxViewerCore.resolveThemeColorRef(params.fillThemeColor, ctx.pptxData.themeColorMap);
1251
- if (params.fillColor !== void 0) {
1252
- ss.fillColor = params.fillColor;
1253
- } else if (resolved) {
1254
- ss.fillColor = resolved;
1255
- }
1256
- } else if (params.fillColor !== void 0) {
1257
- ss.fillColor = params.fillColor;
1258
- ss.fillColorRef = void 0;
1259
- }
1260
- if (params.fillMode !== void 0) {
1261
- ss.fillMode = params.fillMode;
1262
- }
1263
- if (params.fillGradientStops !== void 0) {
1264
- ss.fillGradientStops = params.fillGradientStops;
1265
- }
1266
- if (params.fillGradientAngle !== void 0) {
1267
- ss.fillGradientAngle = params.fillGradientAngle;
1268
- }
1269
- if (params.fillGradientType !== void 0) {
1270
- ss.fillGradientType = params.fillGradientType;
1271
- }
1272
- if (params.fillOpacity !== void 0) {
1273
- ss.fillOpacity = params.fillOpacity;
1274
- }
1275
- if (params.strokeThemeColor !== void 0) {
1276
- ss.strokeColorRef = params.strokeThemeColor;
1277
- const resolved = pptxViewerCore.resolveThemeColorRef(params.strokeThemeColor, ctx.pptxData.themeColorMap);
1278
- if (params.strokeColor !== void 0) {
1279
- ss.strokeColor = params.strokeColor;
1280
- } else if (resolved) {
1281
- ss.strokeColor = resolved;
1282
- }
1283
- } else if (params.strokeColor !== void 0) {
1284
- ss.strokeColor = params.strokeColor;
1285
- ss.strokeColorRef = void 0;
1286
- }
1287
- if (params.strokeWidth !== void 0) {
1288
- ss.strokeWidth = params.strokeWidth;
1289
- }
1290
- if (params.strokeDash !== void 0) {
1291
- ss.strokeDash = params.strokeDash;
1292
- }
1293
- if (params.strokeOpacity !== void 0) {
1294
- ss.strokeOpacity = params.strokeOpacity;
1295
- }
1296
- if (params.shadowColor !== void 0) {
1297
- ss.shadowColor = params.shadowColor;
1298
- }
1299
- if (params.shadowBlur !== void 0) {
1300
- ss.shadowBlur = params.shadowBlur;
1301
- }
1302
- if (params.shadowOffsetX !== void 0) {
1303
- ss.shadowOffsetX = params.shadowOffsetX;
1304
- }
1305
- if (params.shadowOffsetY !== void 0) {
1306
- ss.shadowOffsetY = params.shadowOffsetY;
1307
- }
1308
- if (params.shadowOpacity !== void 0) {
1309
- ss.shadowOpacity = params.shadowOpacity;
1310
- }
1311
- if (params.glowColor !== void 0) {
1312
- ss.glowColor = params.glowColor;
1313
- }
1314
- if (params.glowRadius !== void 0) {
1315
- ss.glowRadius = params.glowRadius;
1316
- }
1317
- if (params.glowOpacity !== void 0) {
1318
- ss.glowOpacity = params.glowOpacity;
1319
- }
1320
- if (params.softEdgeRadius !== void 0) {
1321
- ss.softEdgeRadius = params.softEdgeRadius;
1322
- }
1323
- }
1324
- if (el.type === "image" || el.type === "picture") {
1325
- const img = el;
1326
- if (params.altText !== void 0) {
1327
- img.altText = params.altText;
1328
- }
1329
- if (params.cropLeft !== void 0) {
1330
- img.cropLeft = params.cropLeft;
1331
- }
1332
- if (params.cropTop !== void 0) {
1333
- img.cropTop = params.cropTop;
1334
- }
1335
- if (params.cropRight !== void 0) {
1336
- img.cropRight = params.cropRight;
1337
- }
1338
- if (params.cropBottom !== void 0) {
1339
- img.cropBottom = params.cropBottom;
1340
- }
1341
- if (params.brightness !== void 0 || params.contrast !== void 0 || params.grayscale !== void 0) {
1342
- if (!img.imageEffects) {
1343
- img.imageEffects = {};
1344
- }
1345
- if (params.brightness !== void 0) {
1346
- img.imageEffects.brightness = params.brightness;
1347
- }
1348
- if (params.contrast !== void 0) {
1349
- img.imageEffects.contrast = params.contrast;
1350
- }
1351
- if (params.grayscale !== void 0) {
1352
- img.imageEffects.grayscale = params.grayscale;
1353
- }
1354
- }
1355
- }
1356
- return {
1357
- pptxData: ctx.pptxData,
1358
- dirty: true,
1359
- result: { elementId: params.elementId }
1360
- };
1361
- }
1362
- function runAccessibilityCheck(ctx) {
1363
- const issues = [];
1364
- for (let si = 0; si < ctx.pptxData.slides.length; si++) {
1365
- const slide = ctx.pptxData.slides[si];
1366
- let slideHasText = false;
1367
- for (const el of slide.elements) {
1368
- if (el.type === "image" || el.type === "picture") {
1369
- const img = el;
1370
- if (!img.altText) {
1371
- issues.push({
1372
- slideIndex: si,
1373
- elementId: el.id,
1374
- severity: "error",
1375
- message: `Image element '${el.id}' has no alt text.`
1376
- });
1377
- }
1378
- }
1379
- if (pptxViewerCore.hasTextProperties(el)) {
1380
- const textEl = el;
1381
- slideHasText = true;
1382
- if (!textEl.text || textEl.text.trim() === "") {
1383
- issues.push({
1384
- slideIndex: si,
1385
- elementId: el.id,
1386
- severity: "info",
1387
- message: `Text element '${el.id}' is empty.`
1388
- });
1389
- }
1390
- const fs = textEl.textStyle?.fontSize;
1391
- if (fs !== void 0 && fs < 10) {
1392
- issues.push({
1393
- slideIndex: si,
1394
- elementId: el.id,
1395
- severity: "warning",
1396
- message: `Text element '${el.id}' has very small font size (${fs}pt < 10pt).`
1397
- });
1398
- }
1399
- const textColor = textEl.textStyle?.color?.toLowerCase();
1400
- const bgColor = slide.backgroundColor?.toLowerCase();
1401
- if (textColor && bgColor && textColor === bgColor) {
1402
- issues.push({
1403
- slideIndex: si,
1404
- elementId: el.id,
1405
- severity: "error",
1406
- message: `Text element '${el.id}' has same color as slide background (${textColor}).`
1407
- });
1408
- }
1409
- }
1410
- }
1411
- if (!slideHasText) {
1412
- issues.push({
1413
- slideIndex: si,
1414
- severity: "warning",
1415
- message: `Slide ${si + 1} contains no text elements.`
1416
- });
1417
- }
1418
- }
1419
- const errorCount = issues.filter((i) => i.severity === "error").length;
1420
- const warningCount = issues.filter((i) => i.severity === "warning").length;
1421
- const infoCount = issues.filter((i) => i.severity === "info").length;
1422
- return {
1423
- pptxData: ctx.pptxData,
1424
- dirty: false,
1425
- result: {
1426
- slideCount: ctx.pptxData.slides.length,
1427
- totalIssues: issues.length,
1428
- errorCount,
1429
- warningCount,
1430
- infoCount,
1431
- issues
1432
- }
1433
- };
1434
- }
1435
1473
  var MAX_REGEX_LEN = 200;
1436
1474
  function hasNestedUnboundedQuantifier(pattern) {
1437
1475
  return /\([^)]*[+*]\)[+*]/u.test(pattern);