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.
- package/README.md +36 -7
- package/dist/cjs/easy-template-x.cjs +920 -430
- package/dist/es/easy-template-x.mjs +920 -431
- package/dist/types/src/compilation/delimiters/attributesDelimiterSearcher.d.ts +15 -0
- package/dist/types/src/compilation/delimiters/delimiterMark.d.ts +19 -0
- package/dist/types/src/compilation/delimiters/delimiterSearcher.d.ts +9 -0
- package/dist/types/src/compilation/delimiters/delimiterSearcher.tests.d.ts +1 -0
- package/dist/types/src/compilation/delimiters/index.d.ts +2 -0
- package/dist/types/src/compilation/delimiters/textNodesDelimiterSearcher.d.ts +18 -0
- package/dist/types/{compilation → src/compilation}/index.d.ts +1 -2
- package/dist/types/src/compilation/scopeData.tests.d.ts +1 -0
- package/dist/types/src/compilation/tag.d.ts +29 -0
- package/dist/types/src/compilation/tagParser.d.ts +16 -0
- package/dist/types/src/compilation/tagParser.tests.d.ts +1 -0
- package/dist/types/src/compilation/tagUtils.d.ts +2 -0
- package/dist/types/{compilation → src/compilation}/templateCompiler.d.ts +1 -1
- package/dist/types/src/compilation/templateCompiler.tests.d.ts +1 -0
- package/dist/types/src/errors/malformedFileError.d.ts +3 -0
- package/dist/types/src/office/contentTypesFile.tests.d.ts +1 -0
- package/dist/types/src/office/mediaFiles.tests.d.ts +1 -0
- package/dist/types/{office → src/office}/officeMarkup.d.ts +8 -6
- package/dist/types/src/office/officeMarkup.tests.d.ts +1 -0
- package/dist/types/{office → src/office}/omlNode.d.ts +22 -0
- package/dist/types/src/office/rel.tests.d.ts +1 -0
- package/dist/types/{office → src/office}/relationship.d.ts +2 -2
- package/dist/types/src/plugins/chart/chartDataValidation.tests.d.ts +1 -0
- package/dist/types/{plugins → src/plugins}/chart/chartPlugin.d.ts +3 -1
- package/dist/types/src/plugins/image/createImage.d.ts +3 -0
- package/dist/types/{plugins → src/plugins}/image/imageContent.d.ts +2 -2
- package/dist/types/{plugins → src/plugins}/image/imagePlugin.d.ts +3 -6
- package/dist/types/src/plugins/image/imageUtils.d.ts +3 -0
- package/dist/types/src/plugins/image/updateImage.d.ts +3 -0
- package/dist/types/{plugins → src/plugins}/link/linkPlugin.d.ts +3 -1
- package/dist/types/{plugins → src/plugins}/loop/loopPlugin.d.ts +3 -1
- package/dist/types/{plugins → src/plugins}/loop/strategy/iLoopStrategy.d.ts +3 -3
- package/dist/types/{plugins → src/plugins}/loop/strategy/loopListStrategy.d.ts +3 -3
- package/dist/types/{plugins → src/plugins}/loop/strategy/loopParagraphStrategy.d.ts +3 -3
- package/dist/types/src/plugins/loop/strategy/loopParagraphStrategy.tests.d.ts +1 -0
- package/dist/types/{plugins → src/plugins}/loop/strategy/loopTableColumnsStrategy.d.ts +3 -3
- package/dist/types/{plugins → src/plugins}/loop/strategy/loopTableRowsStrategy.d.ts +3 -3
- package/dist/types/{plugins → src/plugins}/rawXml/rawXmlPlugin.d.ts +2 -1
- package/dist/types/{plugins → src/plugins}/text/textPlugin.d.ts +4 -1
- package/dist/types/src/templateHandler.tests.d.ts +1 -0
- package/dist/types/{xml → src/xml}/xml.d.ts +5 -4
- package/dist/types/src/xml/xml.tests.d.ts +1 -0
- package/dist/types/{xml → src/xml}/xmlNode.d.ts +1 -1
- package/dist/types/test/fixtures/fixtureUtils.d.ts +1 -0
- package/dist/types/test/testUtils.d.ts +8 -0
- package/package.json +17 -19
- package/src/compilation/delimiters/attributesDelimiterSearcher.ts +109 -0
- package/src/compilation/delimiters/delimiterMark.ts +32 -0
- package/src/compilation/delimiters/delimiterSearcher.tests.ts +571 -0
- package/src/compilation/delimiters/delimiterSearcher.ts +41 -0
- package/src/compilation/delimiters/index.ts +2 -0
- package/src/compilation/delimiters/textNodesDelimiterSearcher.ts +185 -0
- package/src/compilation/index.ts +1 -2
- package/src/compilation/scopeData.tests.ts +40 -0
- package/src/compilation/tag.ts +22 -3
- package/src/compilation/tagParser.tests.ts +845 -0
- package/src/compilation/tagParser.ts +170 -66
- package/src/compilation/tagUtils.ts +9 -0
- package/src/compilation/templateCompiler.tests.ts +91 -0
- package/src/compilation/templateCompiler.ts +1 -1
- package/src/delimiters.ts +1 -1
- package/src/errors/malformedFileError.ts +3 -7
- package/src/office/contentTypesFile.tests.ts +88 -0
- package/src/office/docx.ts +2 -2
- package/src/office/mediaFiles.tests.ts +56 -0
- package/src/office/officeMarkup.tests.ts +114 -0
- package/src/office/officeMarkup.ts +48 -19
- package/src/office/omlNode.ts +75 -2
- package/src/office/openXmlPart.ts +1 -1
- package/src/office/rel.tests.ts +23 -0
- package/src/office/relationship.ts +22 -6
- package/src/office/relsFile.ts +21 -22
- package/src/office/xlsx.ts +2 -2
- package/src/plugins/chart/chartDataValidation.tests.ts +109 -0
- package/src/plugins/chart/chartPlugin.ts +11 -5
- package/src/plugins/chart/updateChart.ts +4 -4
- package/src/plugins/image/createImage.ts +115 -0
- package/src/plugins/image/imageContent.ts +16 -4
- package/src/plugins/image/imagePlugin.ts +28 -138
- package/src/plugins/image/imageUtils.ts +22 -0
- package/src/plugins/image/updateImage.ts +113 -0
- package/src/plugins/link/linkPlugin.ts +10 -3
- package/src/plugins/loop/loopPlugin.ts +11 -1
- package/src/plugins/loop/strategy/iLoopStrategy.ts +3 -3
- package/src/plugins/loop/strategy/loopListStrategy.ts +3 -3
- package/src/plugins/loop/strategy/loopParagraphStrategy.tests.ts +64 -0
- package/src/plugins/loop/strategy/loopParagraphStrategy.ts +5 -5
- package/src/plugins/loop/strategy/loopTableColumnsStrategy.ts +3 -3
- package/src/plugins/loop/strategy/loopTableRowsStrategy.ts +3 -3
- package/src/plugins/rawXml/rawXmlPlugin.ts +8 -2
- package/src/plugins/text/textPlugin.ts +37 -5
- package/src/templateHandler.tests.ts +84 -0
- package/src/templateHandler.ts +12 -15
- package/src/utils/path.ts +8 -1
- package/src/xml/xml.tests.ts +260 -0
- package/src/xml/xml.ts +55 -24
- package/src/xml/xmlNode.ts +1 -1
- package/src/zip/jsZipHelper.ts +1 -1
- package/src/zip/zip.ts +3 -0
- package/dist/types/compilation/delimiterMark.d.ts +0 -8
- package/dist/types/compilation/delimiterSearcher.d.ts +0 -12
- package/dist/types/compilation/tag.d.ts +0 -15
- package/dist/types/compilation/tagParser.d.ts +0 -11
- package/dist/types/errors/malformedFileError.d.ts +0 -4
- package/src/compilation/delimiterMark.ts +0 -16
- package/src/compilation/delimiterSearcher.ts +0 -183
- /package/dist/types/{compilation → src/compilation}/scopeData.d.ts +0 -0
- /package/dist/types/{compilation → src/compilation}/templateContext.d.ts +0 -0
- /package/dist/types/{delimiters.d.ts → src/delimiters.d.ts} +0 -0
- /package/dist/types/{errors → src/errors}/index.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/internalArgumentMissingError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/internalError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/maxXmlDepthError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/missingCloseDelimiterError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/missingStartDelimiterError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/tagOptionsParseError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/templateDataError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/templateSyntaxError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/unclosedTagError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/unidentifiedFileTypeError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/unknownContentTypeError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/unopenedTagError.d.ts +0 -0
- /package/dist/types/{errors → src/errors}/unsupportedFileTypeError.d.ts +0 -0
- /package/dist/types/{extensions → src/extensions}/extensionOptions.d.ts +0 -0
- /package/dist/types/{extensions → src/extensions}/index.d.ts +0 -0
- /package/dist/types/{extensions → src/extensions}/templateExtension.d.ts +0 -0
- /package/dist/types/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/types/{mimeType.d.ts → src/mimeType.d.ts} +0 -0
- /package/dist/types/{office → src/office}/contentTypesFile.d.ts +0 -0
- /package/dist/types/{office → src/office}/docx.d.ts +0 -0
- /package/dist/types/{office → src/office}/index.d.ts +0 -0
- /package/dist/types/{office → src/office}/mediaFiles.d.ts +0 -0
- /package/dist/types/{office → src/office}/openXmlPart.d.ts +0 -0
- /package/dist/types/{office → src/office}/relsFile.d.ts +0 -0
- /package/dist/types/{office → src/office}/xlsx.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/chart/chartColors.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/chart/chartContent.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/chart/chartData.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/chart/chartDataValidation.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/chart/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/chart/updateChart.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/defaultPlugins.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/image/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/link/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/link/linkContent.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/loop/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/loop/loopTagOptions.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/loop/strategy/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/pluginContent.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/rawXml/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/rawXml/rawXmlContent.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/templatePlugin.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/text/index.d.ts +0 -0
- /package/dist/types/{templateData.d.ts → src/templateData.d.ts} +0 -0
- /package/dist/types/{templateHandler.d.ts → src/templateHandler.d.ts} +0 -0
- /package/dist/types/{templateHandlerOptions.d.ts → src/templateHandlerOptions.d.ts} +0 -0
- /package/dist/types/{types.d.ts → src/types.d.ts} +0 -0
- /package/dist/types/{utils → src/utils}/array.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/base64.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/binary.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/index.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/number.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/path.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/regex.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/sha1.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/txt.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/types.d.ts +0 -0
- /package/dist/types/{xml → src/xml}/index.d.ts +0 -0
- /package/dist/types/{xml → src/xml}/xmlDepthTracker.d.ts +0 -0
- /package/dist/types/{xml → src/xml}/xmlTreeIterator.d.ts +0 -0
- /package/dist/types/{zip → src/zip}/index.d.ts +0 -0
- /package/dist/types/{zip → src/zip}/jsZipHelper.d.ts +0 -0
- /package/dist/types/{zip → src/zip}/zip.d.ts +0 -0
- /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
|
-
|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
363
|
+

|
|
364
|
+
|
|
365
|
+
#### Data and output
|
|
337
366
|
|
|
338
|
-
|
|
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
|
|
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/
|
|
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';
|