@@ -47,44 +47,74 @@ export default class GeneratePptxGenJs implements IGenerator {
4747 slide : ISlide ,
4848 ) {
4949 generate . forEach ( ( generateElement ) => {
50- generateElement . objectName = generateElement . objectName || randomUUID ( ) ;
5150 generateElement . tmpSlideNumber = this . countSlides ;
51+
52+ const addedObjects = < string [ ] > [ ] ;
53+
5254 generateElement . callback (
53- this . supportedSlideItems ( pgenSlide , generateElement . objectName ) ,
55+ this . supportedSlideItems ( pgenSlide , generateElement , addedObjects ) ,
5456 this . generator ,
5557 ) ;
56- slide . addElement (
57- this . tmpFile ,
58- this . countSlides ,
59- generateElement . objectName ,
60- ) ;
58+
59+ addedObjects . forEach ( ( addedObjectName ) => {
60+ slide . addElement ( this . tmpFile , this . countSlides , addedObjectName ) ;
61+ } ) ;
6162 } ) ;
6263 }
6364
6465 supportedSlideItems = (
6566 pgenSlide : PptxGenJS . Slide ,
66- objectName : string ,
67+ generateElement : GenerateElements ,
68+ addedObjects : string [ ] ,
6769 ) : SupportedPptxGenJSSlide => {
6870 return {
6971 addChart : ( type , data , options ) => {
72+ const objectName = this . generateObjectName (
73+ generateElement ,
74+ addedObjects ,
75+ ) ;
7076 pgenSlide . addChart ( type , data , this . getOptions ( options , objectName ) ) ;
7177 } ,
7278 addImage : ( options ) => {
79+ const objectName = this . generateObjectName (
80+ generateElement ,
81+ addedObjects ,
82+ ) ;
7383 pgenSlide . addImage ( this . getOptions ( options , objectName ) ) ;
7484 } ,
7585 addShape : ( shapeName , options ?) => {
86+ const objectName = this . generateObjectName (
87+ generateElement ,
88+ addedObjects ,
89+ ) ;
7690 pgenSlide . addShape ( shapeName , this . getOptions ( options , objectName ) ) ;
7791 } ,
7892 addTable : ( tableRows , options ?) => {
93+ const objectName = this . generateObjectName (
94+ generateElement ,
95+ addedObjects ,
96+ ) ;
7997 pgenSlide . addTable ( tableRows , this . getOptions ( options , objectName ) ) ;
8098 } ,
8199 addText : ( text , options ?) => {
100+ const objectName = this . generateObjectName (
101+ generateElement ,
102+ addedObjects ,
103+ ) ;
82104 pgenSlide . addText ( text , this . getOptions ( options , objectName ) ) ;
83105 } ,
84106 } ;
85107 } ;
86108
87- getOptions = ( options , objectName ) => {
109+ generateObjectName ( generateElement , addedObjects : string [ ] ) : string {
110+ const objectName =
111+ ( generateElement . objectName ? generateElement . objectName + '-' : '' ) +
112+ randomUUID ( ) ;
113+ addedObjects . push ( objectName ) ;
114+ return objectName ;
115+ }
116+
117+ getOptions = ( options , objectName : string ) => {
88118 options = options || { } ;
89119 return {
90120 ...options ,
0 commit comments