easy-template-x 6.2.2 → 7.0.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.
Files changed (178) hide show
  1. package/README.md +36 -7
  2. package/dist/cjs/easy-template-x.cjs +920 -430
  3. package/dist/es/easy-template-x.mjs +920 -431
  4. package/dist/types/src/compilation/delimiters/attributesDelimiterSearcher.d.ts +15 -0
  5. package/dist/types/src/compilation/delimiters/delimiterMark.d.ts +19 -0
  6. package/dist/types/src/compilation/delimiters/delimiterSearcher.d.ts +9 -0
  7. package/dist/types/src/compilation/delimiters/delimiterSearcher.tests.d.ts +1 -0
  8. package/dist/types/src/compilation/delimiters/index.d.ts +2 -0
  9. package/dist/types/src/compilation/delimiters/textNodesDelimiterSearcher.d.ts +18 -0
  10. package/dist/types/{compilation → src/compilation}/index.d.ts +1 -2
  11. package/dist/types/src/compilation/scopeData.tests.d.ts +1 -0
  12. package/dist/types/src/compilation/tag.d.ts +29 -0
  13. package/dist/types/src/compilation/tagParser.d.ts +16 -0
  14. package/dist/types/src/compilation/tagParser.tests.d.ts +1 -0
  15. package/dist/types/src/compilation/tagUtils.d.ts +2 -0
  16. package/dist/types/{compilation → src/compilation}/templateCompiler.d.ts +1 -1
  17. package/dist/types/src/compilation/templateCompiler.tests.d.ts +1 -0
  18. package/dist/types/src/errors/malformedFileError.d.ts +3 -0
  19. package/dist/types/src/office/contentTypesFile.tests.d.ts +1 -0
  20. package/dist/types/src/office/mediaFiles.tests.d.ts +1 -0
  21. package/dist/types/{office → src/office}/officeMarkup.d.ts +8 -6
  22. package/dist/types/src/office/officeMarkup.tests.d.ts +1 -0
  23. package/dist/types/{office → src/office}/omlNode.d.ts +22 -0
  24. package/dist/types/src/office/rel.tests.d.ts +1 -0
  25. package/dist/types/{office → src/office}/relationship.d.ts +2 -2
  26. package/dist/types/src/plugins/chart/chartDataValidation.tests.d.ts +1 -0
  27. package/dist/types/{plugins → src/plugins}/chart/chartPlugin.d.ts +3 -1
  28. package/dist/types/src/plugins/image/createImage.d.ts +3 -0
  29. package/dist/types/{plugins → src/plugins}/image/imageContent.d.ts +2 -2
  30. package/dist/types/{plugins → src/plugins}/image/imagePlugin.d.ts +3 -6
  31. package/dist/types/src/plugins/image/imageUtils.d.ts +3 -0
  32. package/dist/types/src/plugins/image/updateImage.d.ts +3 -0
  33. package/dist/types/{plugins → src/plugins}/link/linkPlugin.d.ts +3 -1
  34. package/dist/types/{plugins → src/plugins}/loop/loopPlugin.d.ts +3 -1
  35. package/dist/types/{plugins → src/plugins}/loop/strategy/iLoopStrategy.d.ts +3 -3
  36. package/dist/types/{plugins → src/plugins}/loop/strategy/loopListStrategy.d.ts +3 -3
  37. package/dist/types/{plugins → src/plugins}/loop/strategy/loopParagraphStrategy.d.ts +3 -3
  38. package/dist/types/src/plugins/loop/strategy/loopParagraphStrategy.tests.d.ts +1 -0
  39. package/dist/types/{plugins → src/plugins}/loop/strategy/loopTableColumnsStrategy.d.ts +3 -3
  40. package/dist/types/{plugins → src/plugins}/loop/strategy/loopTableRowsStrategy.d.ts +3 -3
  41. package/dist/types/{plugins → src/plugins}/rawXml/rawXmlPlugin.d.ts +2 -1
  42. package/dist/types/{plugins → src/plugins}/text/textPlugin.d.ts +4 -1
  43. package/dist/types/src/templateHandler.tests.d.ts +1 -0
  44. package/dist/types/{xml → src/xml}/xml.d.ts +5 -4
  45. package/dist/types/src/xml/xml.tests.d.ts +1 -0
  46. package/dist/types/{xml → src/xml}/xmlNode.d.ts +1 -1
  47. package/dist/types/test/fixtures/fixtureUtils.d.ts +1 -0
  48. package/dist/types/test/testUtils.d.ts +8 -0
  49. package/package.json +17 -19
  50. package/src/compilation/delimiters/attributesDelimiterSearcher.ts +109 -0
  51. package/src/compilation/delimiters/delimiterMark.ts +32 -0
  52. package/src/compilation/delimiters/delimiterSearcher.tests.ts +571 -0
  53. package/src/compilation/delimiters/delimiterSearcher.ts +41 -0
  54. package/src/compilation/delimiters/index.ts +2 -0
  55. package/src/compilation/delimiters/textNodesDelimiterSearcher.ts +185 -0
  56. package/src/compilation/index.ts +1 -2
  57. package/src/compilation/scopeData.tests.ts +40 -0
  58. package/src/compilation/tag.ts +22 -3
  59. package/src/compilation/tagParser.tests.ts +845 -0
  60. package/src/compilation/tagParser.ts +170 -66
  61. package/src/compilation/tagUtils.ts +9 -0
  62. package/src/compilation/templateCompiler.tests.ts +91 -0
  63. package/src/compilation/templateCompiler.ts +1 -1
  64. package/src/delimiters.ts +1 -1
  65. package/src/errors/malformedFileError.ts +3 -7
  66. package/src/office/contentTypesFile.tests.ts +88 -0
  67. package/src/office/docx.ts +2 -2
  68. package/src/office/mediaFiles.tests.ts +56 -0
  69. package/src/office/officeMarkup.tests.ts +114 -0
  70. package/src/office/officeMarkup.ts +48 -19
  71. package/src/office/omlNode.ts +75 -2
  72. package/src/office/openXmlPart.ts +1 -1
  73. package/src/office/rel.tests.ts +23 -0
  74. package/src/office/relationship.ts +22 -6
  75. package/src/office/relsFile.ts +21 -22
  76. package/src/office/xlsx.ts +2 -2
  77. package/src/plugins/chart/chartDataValidation.tests.ts +109 -0
  78. package/src/plugins/chart/chartPlugin.ts +11 -5
  79. package/src/plugins/chart/updateChart.ts +4 -4
  80. package/src/plugins/image/createImage.ts +115 -0
  81. package/src/plugins/image/imageContent.ts +16 -4
  82. package/src/plugins/image/imagePlugin.ts +28 -138
  83. package/src/plugins/image/imageUtils.ts +22 -0
  84. package/src/plugins/image/updateImage.ts +113 -0
  85. package/src/plugins/link/linkPlugin.ts +10 -3
  86. package/src/plugins/loop/loopPlugin.ts +11 -1
  87. package/src/plugins/loop/strategy/iLoopStrategy.ts +3 -3
  88. package/src/plugins/loop/strategy/loopListStrategy.ts +3 -3
  89. package/src/plugins/loop/strategy/loopParagraphStrategy.tests.ts +64 -0
  90. package/src/plugins/loop/strategy/loopParagraphStrategy.ts +5 -5
  91. package/src/plugins/loop/strategy/loopTableColumnsStrategy.ts +3 -3
  92. package/src/plugins/loop/strategy/loopTableRowsStrategy.ts +3 -3
  93. package/src/plugins/rawXml/rawXmlPlugin.ts +8 -2
  94. package/src/plugins/text/textPlugin.ts +37 -5
  95. package/src/templateHandler.tests.ts +84 -0
  96. package/src/templateHandler.ts +12 -15
  97. package/src/utils/path.ts +8 -1
  98. package/src/xml/xml.tests.ts +260 -0
  99. package/src/xml/xml.ts +55 -24
  100. package/src/xml/xmlNode.ts +1 -1
  101. package/src/zip/jsZipHelper.ts +1 -1
  102. package/src/zip/zip.ts +3 -0
  103. package/dist/types/compilation/delimiterMark.d.ts +0 -8
  104. package/dist/types/compilation/delimiterSearcher.d.ts +0 -12
  105. package/dist/types/compilation/tag.d.ts +0 -15
  106. package/dist/types/compilation/tagParser.d.ts +0 -11
  107. package/dist/types/errors/malformedFileError.d.ts +0 -4
  108. package/src/compilation/delimiterMark.ts +0 -16
  109. package/src/compilation/delimiterSearcher.ts +0 -183
  110. /package/dist/types/{compilation → src/compilation}/scopeData.d.ts +0 -0
  111. /package/dist/types/{compilation → src/compilation}/templateContext.d.ts +0 -0
  112. /package/dist/types/{delimiters.d.ts → src/delimiters.d.ts} +0 -0
  113. /package/dist/types/{errors → src/errors}/index.d.ts +0 -0
  114. /package/dist/types/{errors → src/errors}/internalArgumentMissingError.d.ts +0 -0
  115. /package/dist/types/{errors → src/errors}/internalError.d.ts +0 -0
  116. /package/dist/types/{errors → src/errors}/maxXmlDepthError.d.ts +0 -0
  117. /package/dist/types/{errors → src/errors}/missingCloseDelimiterError.d.ts +0 -0
  118. /package/dist/types/{errors → src/errors}/missingStartDelimiterError.d.ts +0 -0
  119. /package/dist/types/{errors → src/errors}/tagOptionsParseError.d.ts +0 -0
  120. /package/dist/types/{errors → src/errors}/templateDataError.d.ts +0 -0
  121. /package/dist/types/{errors → src/errors}/templateSyntaxError.d.ts +0 -0
  122. /package/dist/types/{errors → src/errors}/unclosedTagError.d.ts +0 -0
  123. /package/dist/types/{errors → src/errors}/unidentifiedFileTypeError.d.ts +0 -0
  124. /package/dist/types/{errors → src/errors}/unknownContentTypeError.d.ts +0 -0
  125. /package/dist/types/{errors → src/errors}/unopenedTagError.d.ts +0 -0
  126. /package/dist/types/{errors → src/errors}/unsupportedFileTypeError.d.ts +0 -0
  127. /package/dist/types/{extensions → src/extensions}/extensionOptions.d.ts +0 -0
  128. /package/dist/types/{extensions → src/extensions}/index.d.ts +0 -0
  129. /package/dist/types/{extensions → src/extensions}/templateExtension.d.ts +0 -0
  130. /package/dist/types/{index.d.ts → src/index.d.ts} +0 -0
  131. /package/dist/types/{mimeType.d.ts → src/mimeType.d.ts} +0 -0
  132. /package/dist/types/{office → src/office}/contentTypesFile.d.ts +0 -0
  133. /package/dist/types/{office → src/office}/docx.d.ts +0 -0
  134. /package/dist/types/{office → src/office}/index.d.ts +0 -0
  135. /package/dist/types/{office → src/office}/mediaFiles.d.ts +0 -0
  136. /package/dist/types/{office → src/office}/openXmlPart.d.ts +0 -0
  137. /package/dist/types/{office → src/office}/relsFile.d.ts +0 -0
  138. /package/dist/types/{office → src/office}/xlsx.d.ts +0 -0
  139. /package/dist/types/{plugins → src/plugins}/chart/chartColors.d.ts +0 -0
  140. /package/dist/types/{plugins → src/plugins}/chart/chartContent.d.ts +0 -0
  141. /package/dist/types/{plugins → src/plugins}/chart/chartData.d.ts +0 -0
  142. /package/dist/types/{plugins → src/plugins}/chart/chartDataValidation.d.ts +0 -0
  143. /package/dist/types/{plugins → src/plugins}/chart/index.d.ts +0 -0
  144. /package/dist/types/{plugins → src/plugins}/chart/updateChart.d.ts +0 -0
  145. /package/dist/types/{plugins → src/plugins}/defaultPlugins.d.ts +0 -0
  146. /package/dist/types/{plugins → src/plugins}/image/index.d.ts +0 -0
  147. /package/dist/types/{plugins → src/plugins}/index.d.ts +0 -0
  148. /package/dist/types/{plugins → src/plugins}/link/index.d.ts +0 -0
  149. /package/dist/types/{plugins → src/plugins}/link/linkContent.d.ts +0 -0
  150. /package/dist/types/{plugins → src/plugins}/loop/index.d.ts +0 -0
  151. /package/dist/types/{plugins → src/plugins}/loop/loopTagOptions.d.ts +0 -0
  152. /package/dist/types/{plugins → src/plugins}/loop/strategy/index.d.ts +0 -0
  153. /package/dist/types/{plugins → src/plugins}/pluginContent.d.ts +0 -0
  154. /package/dist/types/{plugins → src/plugins}/rawXml/index.d.ts +0 -0
  155. /package/dist/types/{plugins → src/plugins}/rawXml/rawXmlContent.d.ts +0 -0
  156. /package/dist/types/{plugins → src/plugins}/templatePlugin.d.ts +0 -0
  157. /package/dist/types/{plugins → src/plugins}/text/index.d.ts +0 -0
  158. /package/dist/types/{templateData.d.ts → src/templateData.d.ts} +0 -0
  159. /package/dist/types/{templateHandler.d.ts → src/templateHandler.d.ts} +0 -0
  160. /package/dist/types/{templateHandlerOptions.d.ts → src/templateHandlerOptions.d.ts} +0 -0
  161. /package/dist/types/{types.d.ts → src/types.d.ts} +0 -0
  162. /package/dist/types/{utils → src/utils}/array.d.ts +0 -0
  163. /package/dist/types/{utils → src/utils}/base64.d.ts +0 -0
  164. /package/dist/types/{utils → src/utils}/binary.d.ts +0 -0
  165. /package/dist/types/{utils → src/utils}/index.d.ts +0 -0
  166. /package/dist/types/{utils → src/utils}/number.d.ts +0 -0
  167. /package/dist/types/{utils → src/utils}/path.d.ts +0 -0
  168. /package/dist/types/{utils → src/utils}/regex.d.ts +0 -0
  169. /package/dist/types/{utils → src/utils}/sha1.d.ts +0 -0
  170. /package/dist/types/{utils → src/utils}/txt.d.ts +0 -0
  171. /package/dist/types/{utils → src/utils}/types.d.ts +0 -0
  172. /package/dist/types/{xml → src/xml}/index.d.ts +0 -0
  173. /package/dist/types/{xml → src/xml}/xmlDepthTracker.d.ts +0 -0
  174. /package/dist/types/{xml → src/xml}/xmlTreeIterator.d.ts +0 -0
  175. /package/dist/types/{zip → src/zip}/index.d.ts +0 -0
  176. /package/dist/types/{zip → src/zip}/jsZipHelper.d.ts +0 -0
  177. /package/dist/types/{zip → src/zip}/zip.d.ts +0 -0
  178. /package/dist/types/{zip → src/zip}/zipObject.d.ts +0 -0
package/README.md CHANGED
@@ -32,6 +32,8 @@ Generate docx documents from templates, in Node or in the browser.
32
32
  - [Nested Conditions](#nested-conditions)
33
33
  - [Controlling loop behavior](#controlling-loop-behavior)
34
34
  - [Image plugin](#image-plugin)
35
+ - [Text tag replacement](#text-tag-replacement)
36
+ - [Image placeholder replacement](#image-placeholder-replacement)
35
37
  - [Link plugin](#link-plugin)
36
38
  - [Chart plugin](#chart-plugin)
37
39
  - [Raw xml plugin](#raw-xml-plugin)
@@ -331,11 +333,38 @@ And the third will produce this document:
331
333
 
332
334
  ### Image plugin
333
335
 
334
- Embed images into the document.
336
+ Embed images into the document.
337
+ The image plugin supports two modes:
335
338
 
336
- Input template:
339
+ 1. Text tag replacement
340
+ 2. Image placeholder replacement
341
+
342
+ #### Text tag replacement
343
+
344
+ Insert inline images by placing tags in the document body.
345
+
346
+ Input template example:
347
+
348
+ ![input template](./docs/assets/image-plugin-text-in.png?raw=true)
349
+
350
+ #### Image placeholder replacement
351
+
352
+ Replace existing placeholder images while preserving their size, position, and styling.
353
+
354
+ **Note:** You can use any image you want as the placeholder.
355
+
356
+ Input template example:
357
+
358
+ ![input template](./docs/assets/image-plugin-placeholder-in.png?raw=true)
359
+
360
+ To let `easy-template-x` know you want to replace the placeholder image, insert a tag in it's alt text:
361
+
362
+ ![alt text context menu](./docs/assets/alt-text-context-menu.png?raw=true)
363
+ ![alt text panel](./docs/assets/alt-text-panel.png?raw=true)
364
+
365
+ #### Data and output
337
366
 
338
- ![input template](./docs/assets/image-plugin-in.png?raw=true)
367
+ The data and resulting output are the same for both modes.
339
368
 
340
369
  Input data:
341
370
 
@@ -345,8 +374,8 @@ Input data:
345
374
  _type: "image",
346
375
  source: fs.readFileSync("hero.png"),
347
376
  format: MimeType.Png,
348
- width: 200,
349
- height: 200,
377
+ width: 200, // Required for text tags, optional for placeholders
378
+ height: 200, // Required for text tags, optional for placeholders
350
379
  altText: "Kung Fu Hero", // Optional
351
380
  transparencyPercent: 80 // Optional
352
381
  }
@@ -635,7 +664,7 @@ export class RawXmlPlugin extends TemplatePlugin {
635
664
  }
636
665
 
637
666
  // Remove the placeholder tag.
638
- officeMarkup.modify.removeTag(tag.xmlTextNode);
667
+ officeMarkup.modify.removeTag(tag);
639
668
  }
640
669
  }
641
670
  ```
@@ -651,7 +680,7 @@ export interface RawXmlContent extends PluginContent {
651
680
 
652
681
  ## Listing tags
653
682
 
654
- You can get the list of [tags](https://github.com/alonrbar/easy-template-x/blob/8a88535ef090fc357cf3523411bef0d0729d10c8/src/compilation/tag.ts) in a template by calling the `parseTags` method as follows:
683
+ You can get the list of [tags](https://github.com/alonrbar/easy-template-x/blob/master/src/compilation/tag.ts) in a template by calling the `parseTags` method as follows:
655
684
 
656
685
  ```typescript
657
686
  import { TemplateHandler } from 'easy-template-x';