@keycloakify/angular-email 0.0.1-rc.7 → 0.0.1-rc.8
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/bin/build.js +153 -0
- package/esbuild/esbuild.d.ts +2 -1
- package/fesm2022/keycloakify-angular-email-esbuild.mjs +2 -2
- package/fesm2022/keycloakify-angular-email-esbuild.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-email.mjs +72 -81
- package/fesm2022/keycloakify-angular-email.mjs.map +1 -1
- package/lib/render.d.ts +2 -3
- package/package.json +6 -2
package/bin/build.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { angularEsbuildPlugin } from '@keycloakify/angular-email/esbuild';
|
|
3
|
+
import esbuild from 'esbuild';
|
|
4
|
+
import { readdir, rm, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { basename, join, resolve } from 'node:path';
|
|
6
|
+
import { cwd, exit } from 'node:process';
|
|
7
|
+
import { pathToFileURL } from 'node:url';
|
|
8
|
+
import { termost } from 'termost';
|
|
9
|
+
import pkg from '../package.json' with { type: 'json' };
|
|
10
|
+
async function bundle(entryPoints, cwd, outdir) {
|
|
11
|
+
// we have to use a bundler to preprocess templates code
|
|
12
|
+
// It's better to not use the same bundling configuration used for the
|
|
13
|
+
// frontend theme, because for email templates there might be a different
|
|
14
|
+
// transpiling settings, such as other jsx-pragma or additional transpilation plugins,
|
|
15
|
+
const result = await esbuild.build({
|
|
16
|
+
entryPoints: entryPoints,
|
|
17
|
+
bundle: true,
|
|
18
|
+
outdir,
|
|
19
|
+
absWorkingDir: cwd,
|
|
20
|
+
platform: 'node',
|
|
21
|
+
sourcemap: true,
|
|
22
|
+
packages: 'bundle',
|
|
23
|
+
external: ['@maizzle/framework'],
|
|
24
|
+
format: 'esm',
|
|
25
|
+
target: 'node20',
|
|
26
|
+
plugins: [angularEsbuildPlugin(cwd)],
|
|
27
|
+
metafile: true,
|
|
28
|
+
});
|
|
29
|
+
// collect map of entrypoints -> output files
|
|
30
|
+
// esbuild return paths relative to the CWD
|
|
31
|
+
// https://github.com/evanw/esbuild/issues/338
|
|
32
|
+
return Object.entries(result.metafile.outputs).reduce((acc, [filePath, meta]) => {
|
|
33
|
+
if (meta.entryPoint) {
|
|
34
|
+
// Absolute pathes doesn't work on windows.
|
|
35
|
+
// Have to use `pathToFileURL` to convert it to url
|
|
36
|
+
acc[resolve(cwd, meta.entryPoint)] = pathToFileURL(resolve(cwd, filePath)).toString();
|
|
37
|
+
}
|
|
38
|
+
return acc;
|
|
39
|
+
}, {});
|
|
40
|
+
}
|
|
41
|
+
async function getTemplates(dirPath, filterTemplate) {
|
|
42
|
+
try {
|
|
43
|
+
const recursiveGetFiles = async (path) => {
|
|
44
|
+
const items = await readdir(path, { withFileTypes: true });
|
|
45
|
+
const dirents = [];
|
|
46
|
+
for (const item of items) {
|
|
47
|
+
if (item.isFile())
|
|
48
|
+
dirents.push(item);
|
|
49
|
+
else if (item.isDirectory()) {
|
|
50
|
+
dirents.push(...(await recursiveGetFiles(join(item.parentPath, item.name))));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return dirents;
|
|
54
|
+
};
|
|
55
|
+
// Read all items in the directory
|
|
56
|
+
const items = (await recursiveGetFiles(dirPath))
|
|
57
|
+
.map((file) => join(file.parentPath, file.name))
|
|
58
|
+
.filter((filePath) => {
|
|
59
|
+
if (!filterTemplate)
|
|
60
|
+
return true;
|
|
61
|
+
return filterTemplate(filePath);
|
|
62
|
+
});
|
|
63
|
+
return items;
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.error(`Error scanning directory: ${err.message}`);
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const build = async (emailFilesPath, outdir = 'dist/emails') => {
|
|
71
|
+
if (!emailFilesPath) {
|
|
72
|
+
console.error('emailFilesPath is required!');
|
|
73
|
+
exit(1);
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
console.log(`building emails to ${outdir}...`);
|
|
77
|
+
const tmp = join(cwd(), outdir, '.tmp');
|
|
78
|
+
await rm(outdir, { recursive: true, force: true });
|
|
79
|
+
const tpls = await getTemplates(resolve(cwd(), emailFilesPath), (path) => path.endsWith('.ts'));
|
|
80
|
+
if (!tpls.length) {
|
|
81
|
+
console.error('no templates found!');
|
|
82
|
+
exit(1);
|
|
83
|
+
}
|
|
84
|
+
const entryPoints = [...tpls];
|
|
85
|
+
const bundled = await bundle(entryPoints, cwd(), tmp);
|
|
86
|
+
const promises = tpls.map(async (file) => {
|
|
87
|
+
const module = await import(bundled[file]);
|
|
88
|
+
console.log(`- ${file}`);
|
|
89
|
+
return Object.assign(Object.assign({}, module), { file });
|
|
90
|
+
});
|
|
91
|
+
const modules = await Promise.all(promises);
|
|
92
|
+
modules.forEach(async (module) => {
|
|
93
|
+
const html = await module.renderToHtml();
|
|
94
|
+
await writeFile(`${outdir}/${basename(module.file).split('.')[0]}.html`, html);
|
|
95
|
+
});
|
|
96
|
+
await rm(tmp, { recursive: true, force: true });
|
|
97
|
+
console.log('\x1b[36m%s\x1b[0m', `build complete!`);
|
|
98
|
+
exit(0);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error(error);
|
|
102
|
+
exit(1);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
const program = termost({
|
|
106
|
+
name: 'keycloakify-angular-email',
|
|
107
|
+
description: 'Keycloakify CLI',
|
|
108
|
+
version: pkg.version,
|
|
109
|
+
onException: (error) => {
|
|
110
|
+
console.error(error);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
program.option({
|
|
115
|
+
key: 'emailFilesPath',
|
|
116
|
+
name: { long: 'emailFilesPath', short: 'p' },
|
|
117
|
+
description: '',
|
|
118
|
+
defaultValue: '',
|
|
119
|
+
});
|
|
120
|
+
program.option({
|
|
121
|
+
key: 'outDir',
|
|
122
|
+
name: { long: 'outDir', short: 'o' },
|
|
123
|
+
description: '',
|
|
124
|
+
defaultValue: 'dist/emails',
|
|
125
|
+
});
|
|
126
|
+
program
|
|
127
|
+
.command({
|
|
128
|
+
name: 'build',
|
|
129
|
+
description: 'build angular components to html',
|
|
130
|
+
})
|
|
131
|
+
.input({
|
|
132
|
+
key: 'emailFilesPath',
|
|
133
|
+
type: 'text',
|
|
134
|
+
defaultValue: undefined,
|
|
135
|
+
label: "what's the path of your email components files?",
|
|
136
|
+
skip(context) {
|
|
137
|
+
return Boolean(context.emailFilesPath);
|
|
138
|
+
},
|
|
139
|
+
})
|
|
140
|
+
.input({
|
|
141
|
+
key: 'outDir',
|
|
142
|
+
type: 'text',
|
|
143
|
+
defaultValue: 'dist/emails',
|
|
144
|
+
label: 'where do you want to output html files?',
|
|
145
|
+
skip(context) {
|
|
146
|
+
return Boolean(context.outDir);
|
|
147
|
+
},
|
|
148
|
+
})
|
|
149
|
+
.task({
|
|
150
|
+
handler: async (context) => {
|
|
151
|
+
await build(context.emailFilesPath, context.outDir);
|
|
152
|
+
},
|
|
153
|
+
});
|
package/esbuild/esbuild.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Plugin } from 'esbuild';
|
|
2
|
+
export declare const angularEsbuildPlugin: (cwd: string) => Plugin;
|
|
@@ -13,10 +13,10 @@ const angularEsbuildPlugin = (cwd) => createCompilerPlugin({
|
|
|
13
13
|
},
|
|
14
14
|
inlineFonts: false,
|
|
15
15
|
inlineStyleLanguage: 'css',
|
|
16
|
-
optimization:
|
|
16
|
+
optimization: true,
|
|
17
17
|
sourcemap: false,
|
|
18
18
|
target: [],
|
|
19
|
-
workspaceRoot:
|
|
19
|
+
workspaceRoot: cwd,
|
|
20
20
|
outputNames: { bundles: '', media: '' },
|
|
21
21
|
});
|
|
22
22
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloakify-angular-email-esbuild.mjs","sources":["../../../projects/angular-email/esbuild/esbuild.ts","../../../projects/angular-email/esbuild/keycloakify-angular-email-esbuild.ts"],"sourcesContent":["import { createCompilerPlugin } from '@angular/build/private';\n\nexport const angularEsbuildPlugin = (cwd: string) =>\n createCompilerPlugin(\n {\n browserOnlyBuild: false,\n incremental: false,\n sourcemap: true,\n tsconfig: cwd + '/tsconfig.json',\n },\n {\n cacheOptions: {\n basePath: cwd + '/.angular/cache',\n enabled: false,\n path: cwd + '/.angular/cache/angular-email',\n },\n inlineFonts: false,\n inlineStyleLanguage: 'css',\n optimization:
|
|
1
|
+
{"version":3,"file":"keycloakify-angular-email-esbuild.mjs","sources":["../../../projects/angular-email/esbuild/esbuild.ts","../../../projects/angular-email/esbuild/keycloakify-angular-email-esbuild.ts"],"sourcesContent":["import { createCompilerPlugin } from '@angular/build/private';\nimport { Plugin } from 'esbuild';\n\nexport const angularEsbuildPlugin = (cwd: string): Plugin =>\n createCompilerPlugin(\n {\n browserOnlyBuild: false,\n incremental: false,\n sourcemap: true,\n tsconfig: cwd + '/tsconfig.json',\n },\n {\n cacheOptions: {\n basePath: cwd + '/.angular/cache',\n enabled: false,\n path: cwd + '/.angular/cache/angular-email',\n },\n inlineFonts: false,\n inlineStyleLanguage: 'css',\n optimization: true,\n sourcemap: false,\n target: [],\n workspaceRoot: cwd,\n outputNames: { bundles: '', media: '' },\n },\n );\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAGa,MAAA,oBAAoB,GAAG,CAAC,GAAW,KAC9C,oBAAoB,CAClB;AACE,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,GAAG,GAAG,gBAAgB;CACjC,EACD;AACE,IAAA,YAAY,EAAE;QACZ,QAAQ,EAAE,GAAG,GAAG,iBAAiB;AACjC,QAAA,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,GAAG,GAAG,+BAA+B;AAC5C,KAAA;AACD,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,aAAa,EAAE,GAAG;IAClB,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AACxC,CAAA;;ACxBL;;AAEG;;;;"}
|
|
@@ -6,7 +6,6 @@ import { provideServerRendering, renderApplication } from '@angular/platform-ser
|
|
|
6
6
|
import { render as render$1 } from '@maizzle/framework';
|
|
7
7
|
import * as cheerio from 'cheerio/slim';
|
|
8
8
|
import { convert } from 'html-to-text';
|
|
9
|
-
import { readFileSync } from 'node:fs';
|
|
10
9
|
import prettyPrint from 'pretty';
|
|
11
10
|
|
|
12
11
|
class BackgroundComponent {
|
|
@@ -19,10 +18,10 @@ class BackgroundComponent {
|
|
|
19
18
|
$bgRepeat = input('no-repeat', { alias: 'bgRepeat' });
|
|
20
19
|
$bgColor = input(undefined, { alias: 'bgColor' });
|
|
21
20
|
$bgStyle = computed(() => ({ backgroundRepeat: this.$bgRepeat(), ...(this.$style() ?? {}) }));
|
|
22
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
23
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: BackgroundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: BackgroundComponent, isStandalone: true, selector: "ng-email-background", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $width: { classPropertyName: "$width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, $src: { classPropertyName: "$src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, $bgRepeat: { classPropertyName: "$bgRepeat", publicName: "bgRepeat", isSignal: true, isRequired: false, transformFunction: null }, $bgColor: { classPropertyName: "$bgColor", publicName: "bgColor", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let width = $width();\n@let height = $height();\n\n<table\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n [border]=\"0\"\n width=\"100%\"\n [attr.height]=\"height\"\n role=\"presentation\"\n>\n <tr>\n <td\n [align]=\"'top'\"\n [width]=\"width\"\n [height]=\"height && width ? height : undefined\"\n [attr.bgcolor]=\"$bgColor()\"\n [attr.background]=\"$src()\"\n [style]=\"$bgStyle()\"\n [class]=\"$styleClass()\"\n >\n <ng-content />\n </td>\n </tr>\n</table>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24
23
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: BackgroundComponent, decorators: [{
|
|
26
25
|
type: Component,
|
|
27
26
|
args: [{ selector: 'ng-email-background', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "@let width = $width();\n@let height = $height();\n\n<table\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n [border]=\"0\"\n width=\"100%\"\n [attr.height]=\"height\"\n role=\"presentation\"\n>\n <tr>\n <td\n [align]=\"'top'\"\n [width]=\"width\"\n [height]=\"height && width ? height : undefined\"\n [attr.bgcolor]=\"$bgColor()\"\n [attr.background]=\"$src()\"\n [style]=\"$bgStyle()\"\n [class]=\"$styleClass()\"\n >\n <ng-content />\n </td>\n </tr>\n</table>\n" }]
|
|
28
27
|
}] });
|
|
@@ -31,10 +30,10 @@ class BodyComponent {
|
|
|
31
30
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
31
|
$style = input(null, { alias: 'style' });
|
|
33
32
|
$styleClass = input(undefined, { alias: 'styleClass' });
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
35
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: BodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: BodyComponent, isStandalone: true, selector: "ng-email-body", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<body\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</body>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
36
35
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: BodyComponent, decorators: [{
|
|
38
37
|
type: Component,
|
|
39
38
|
args: [{ selector: 'ng-email-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<body\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</body>\n" }]
|
|
40
39
|
}] });
|
|
@@ -115,10 +114,10 @@ class ButtonComponent {
|
|
|
115
114
|
</center></v:roundrect>
|
|
116
115
|
<![endif]-->`;
|
|
117
116
|
});
|
|
118
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
119
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.
|
|
117
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
118
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: ButtonComponent, isStandalone: true, selector: "ng-email-button", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $href: { classPropertyName: "$href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, $textContent: { classPropertyName: "$textContent", publicName: "textContent", isSignal: true, isRequired: true, transformFunction: null }, $width: { classPropertyName: "$width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, $borderRadius: { classPropertyName: "$borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, $textColor: { classPropertyName: "$textColor", publicName: "textColor", isSignal: true, isRequired: false, transformFunction: null }, $backgroundColor: { classPropertyName: "$backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, $borderColor: { classPropertyName: "$borderColor", publicName: "borderColor", isSignal: true, isRequired: false, transformFunction: null }, $borderSize: { classPropertyName: "$borderSize", publicName: "borderSize", isSignal: true, isRequired: false, transformFunction: null }, $fontSize: { classPropertyName: "$fontSize", publicName: "fontSize", isSignal: true, isRequired: false, transformFunction: null }, $align: { classPropertyName: "$align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, $withBackground: { classPropertyName: "$withBackground", publicName: "withBackground", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let withBackground = $withBackground();\n@let align = $align();\n@let href = $href();\n@let height = $height();\n@let width = $width();\n@let borderRadius = $borderRadius();\n\n<ng-template #child><ng-content></ng-content></ng-template>\n\n<table\n [width]=\"'100%'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n style=\"border-collapse: collapse\"\n role=\"presentation\"\n>\n <tr>\n <td [align]=\"align\">\n @if (withBackground) {\n <table\n [align]=\"align\"\n [width]=\"width\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n role=\"presentation\"\n [style]=\"{\n border: $borderSize() + 'px solid ' + ($borderColor() ?? 'inherit'),\n borderRadius,\n }\"\n >\n <tr>\n <td\n [attr.bgcolor]=\"$backgroundColor()\"\n [width]=\"width\"\n [height]=\"height\"\n [style]=\"{\n borderRadius,\n height,\n width,\n maxWidth: width,\n textAlign: 'center',\n }\"\n >\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n </td>\n </tr>\n </table>\n } @else {\n <noscript [attr.data-html]=\"$noBgInnerHtml()\"></noscript>\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withoutBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n }\n </td>\n </tr>\n</table>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
120
119
|
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
122
121
|
type: Component,
|
|
123
122
|
args: [{ selector: 'ng-email-button', imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let withBackground = $withBackground();\n@let align = $align();\n@let href = $href();\n@let height = $height();\n@let width = $width();\n@let borderRadius = $borderRadius();\n\n<ng-template #child><ng-content></ng-content></ng-template>\n\n<table\n [width]=\"'100%'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n style=\"border-collapse: collapse\"\n role=\"presentation\"\n>\n <tr>\n <td [align]=\"align\">\n @if (withBackground) {\n <table\n [align]=\"align\"\n [width]=\"width\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n role=\"presentation\"\n [style]=\"{\n border: $borderSize() + 'px solid ' + ($borderColor() ?? 'inherit'),\n borderRadius,\n }\"\n >\n <tr>\n <td\n [attr.bgcolor]=\"$backgroundColor()\"\n [width]=\"width\"\n [height]=\"height\"\n [style]=\"{\n borderRadius,\n height,\n width,\n maxWidth: width,\n textAlign: 'center',\n }\"\n >\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n </td>\n </tr>\n </table>\n } @else {\n <noscript [attr.data-html]=\"$noBgInnerHtml()\"></noscript>\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withoutBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n }\n </td>\n </tr>\n</table>\n" }]
|
|
124
123
|
}] });
|
|
@@ -126,10 +125,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
|
|
|
126
125
|
class ColorSchemeComponent {
|
|
127
126
|
$mode = input('normal', { alias: 'mode' });
|
|
128
127
|
$style = computed(() => `<style>:root { color-scheme: ${this.$mode()}; supported-color-schemes: ${this.$mode()}; }</style>`);
|
|
129
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
130
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ColorSchemeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: ColorSchemeComponent, isStandalone: true, selector: "ng-email-color-scheme", inputs: { $mode: { classPropertyName: "$mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let mode = $mode();\n\n<meta\n name=\"color-scheme\"\n [content]=\"mode\"\n/>\n<meta\n name=\"supported-color-schemes\"\n [content]=\"mode\"\n/>\n\n<noscript [attr.data-html]=\"$style()\"></noscript>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
131
130
|
}
|
|
132
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ColorSchemeComponent, decorators: [{
|
|
133
132
|
type: Component,
|
|
134
133
|
args: [{ selector: 'ng-email-color-scheme', changeDetection: ChangeDetectionStrategy.OnPush, template: "@let mode = $mode();\n\n<meta\n name=\"color-scheme\"\n [content]=\"mode\"\n/>\n<meta\n name=\"supported-color-schemes\"\n [content]=\"mode\"\n/>\n\n<noscript [attr.data-html]=\"$style()\"></noscript>\n" }]
|
|
135
134
|
}] });
|
|
@@ -140,10 +139,10 @@ class ColumnComponent {
|
|
|
140
139
|
$styleClass = input(undefined, { alias: 'styleClass' });
|
|
141
140
|
$bgImage = input(undefined, { alias: 'bgImage' });
|
|
142
141
|
$bgColor = input(undefined, { alias: 'bgColor' });
|
|
143
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
144
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
142
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: ColumnComponent, isStandalone: true, selector: "ng-email-column", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $bgImage: { classPropertyName: "$bgImage", publicName: "bgImage", isSignal: true, isRequired: false, transformFunction: null }, $bgColor: { classPropertyName: "$bgColor", publicName: "bgColor", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<td\n [attr.background]=\"$bgImage()\"\n [attr.bgcolor]=\"$bgColor()\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n role=\"presentation\"\n>\n <ng-content />\n</td>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
145
144
|
}
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ColumnComponent, decorators: [{
|
|
147
146
|
type: Component,
|
|
148
147
|
args: [{ selector: 'ng-email-column', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<td\n [attr.background]=\"$bgImage()\"\n [attr.bgcolor]=\"$bgColor()\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n role=\"presentation\"\n>\n <ng-content />\n</td>\n" }]
|
|
149
148
|
}] });
|
|
@@ -163,10 +162,10 @@ class ConditionalComponent {
|
|
|
163
162
|
throw new RangeError('angular-email: Conditional expects the `expression` or `mso` prop to be defined, not both');
|
|
164
163
|
});
|
|
165
164
|
}
|
|
166
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
167
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.
|
|
165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ConditionalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: ConditionalComponent, isStandalone: true, selector: "ng-email-conditional", inputs: { $expression: { classPropertyName: "$expression", publicName: "expression", isSignal: true, isRequired: false, transformFunction: null }, $mso: { classPropertyName: "$mso", publicName: "mso", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let mso = $mso();\n\n@if (!mso) {\n <noscript [attr.data-html]=\"noMsoInnerHtmlPre\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"noMsoInnerHtmlPost\"></noscript>\n} @else {\n <noscript [attr.data-html]=\"$msoInnerHtmlPre()\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"msoInnerHtmlPost\"></noscript>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
168
167
|
}
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ConditionalComponent, decorators: [{
|
|
170
169
|
type: Component,
|
|
171
170
|
args: [{ selector: 'ng-email-conditional', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@let mso = $mso();\n\n@if (!mso) {\n <noscript [attr.data-html]=\"noMsoInnerHtmlPre\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"noMsoInnerHtmlPost\"></noscript>\n} @else {\n <noscript [attr.data-html]=\"$msoInnerHtmlPre()\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"msoInnerHtmlPost\"></noscript>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n" }]
|
|
172
171
|
}], ctorParameters: () => [] });
|
|
@@ -189,10 +188,10 @@ class ContainerComponent {
|
|
|
189
188
|
}));
|
|
190
189
|
$innerHtmlPre = computed(() => `<!--[if mso]><table align="${this.$alignment()}" width="${this.$containerWidth()}" style="border-spacing: 0; width:${this.$containerWidth()}px;" role="presentation"><tr><td><![endif]-->`);
|
|
191
190
|
$innerHtmlPost = computed(() => `<!--[if mso]></td></tr></table><![endif]-->`);
|
|
192
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
193
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
191
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
192
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: ContainerComponent, isStandalone: true, selector: "ng-email-container", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $alignment: { classPropertyName: "$alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, $disableDefaultStyle: { classPropertyName: "$disableDefaultStyle", publicName: "disableDefaultStyle", isSignal: true, isRequired: false, transformFunction: null }, $containerWidth: { classPropertyName: "$containerWidth", publicName: "containerWidth", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let containerWidth = $containerWidth();\n@let alignment = $alignment();\n\n<div [style]=\"{ tableLayout: 'fixed', width: '100%' }\">\n <div [style]=\"{ margin: '0 auto', maxWidth: containerWidth }\">\n <noscript [attr.data-html]=\"$innerHtmlPre()\"></noscript>\n <table\n [align]=\"alignment\"\n [width]=\"'100%'\"\n role=\"presentation\"\n [cellSpacing]=\"0\"\n [cellPadding]=\"0\"\n [border]=\"0\"\n [style]=\"$containerStyle()\"\n [class]=\"$styleClass()\"\n >\n <tbody>\n <tr [style]=\"$trStyle()\">\n <td [align]=\"alignment\">\n <ng-content></ng-content>\n </td>\n </tr>\n </tbody>\n </table>\n <noscript [attr.data-html]=\"$innerHtmlPost()\"></noscript>\n </div>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
194
193
|
}
|
|
195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ContainerComponent, decorators: [{
|
|
196
195
|
type: Component,
|
|
197
196
|
args: [{ selector: 'ng-email-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "@let containerWidth = $containerWidth();\n@let alignment = $alignment();\n\n<div [style]=\"{ tableLayout: 'fixed', width: '100%' }\">\n <div [style]=\"{ margin: '0 auto', maxWidth: containerWidth }\">\n <noscript [attr.data-html]=\"$innerHtmlPre()\"></noscript>\n <table\n [align]=\"alignment\"\n [width]=\"'100%'\"\n role=\"presentation\"\n [cellSpacing]=\"0\"\n [cellPadding]=\"0\"\n [border]=\"0\"\n [style]=\"$containerStyle()\"\n [class]=\"$styleClass()\"\n >\n <tbody>\n <tr [style]=\"$trStyle()\">\n <td [align]=\"alignment\">\n <ng-content></ng-content>\n </td>\n </tr>\n </tbody>\n </table>\n <noscript [attr.data-html]=\"$innerHtmlPost()\"></noscript>\n </div>\n</div>\n" }]
|
|
198
197
|
}] });
|
|
@@ -200,10 +199,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
|
|
|
200
199
|
class HeadComponent {
|
|
201
200
|
$enableFormatDetection = input(false, { alias: 'enableFormatDetection' });
|
|
202
201
|
xml = `\n<xml><o:OfficeDocumentSettings><o:AllowPNG /><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml>\n`;
|
|
203
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
204
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.
|
|
202
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HeadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
203
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: HeadComponent, isStandalone: true, selector: "ng-email-head", inputs: { $enableFormatDetection: { classPropertyName: "$enableFormatDetection", publicName: "enableFormatDetection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let enableFormatDetection = $enableFormatDetection();\n\n<head>\n <meta\n http-equiv=\"content-type\"\n content=\"text/html; charset=UTF-8\"\n />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, user-scalable=yes\"\n />\n <meta name=\"x-apple-disable-message-reformatting\" />\n @if (!enableFormatDetection) {\n <meta\n name=\"format-detection\"\n content=\"telephone=no, date=no, address=no, email=no, url=no\"\n />\n }\n <ng-content></ng-content>\n <ng-email-conditional [mso]=\"true\">\n <noscript [attr.data-html]=\"xml\"></noscript>\n </ng-email-conditional>\n</head>\n", dependencies: [{ kind: "component", type: ConditionalComponent, selector: "ng-email-conditional", inputs: ["expression", "mso"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
205
204
|
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HeadComponent, decorators: [{
|
|
207
206
|
type: Component,
|
|
208
207
|
args: [{ selector: 'ng-email-head', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ConditionalComponent], schemas: [NO_ERRORS_SCHEMA], template: "@let enableFormatDetection = $enableFormatDetection();\n\n<head>\n <meta\n http-equiv=\"content-type\"\n content=\"text/html; charset=UTF-8\"\n />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, user-scalable=yes\"\n />\n <meta name=\"x-apple-disable-message-reformatting\" />\n @if (!enableFormatDetection) {\n <meta\n name=\"format-detection\"\n content=\"telephone=no, date=no, address=no, email=no, url=no\"\n />\n }\n <ng-content></ng-content>\n <ng-email-conditional [mso]=\"true\">\n <noscript [attr.data-html]=\"xml\"></noscript>\n </ng-email-conditional>\n</head>\n" }]
|
|
209
208
|
}] });
|
|
@@ -435,10 +434,10 @@ class HeadingComponent {
|
|
|
435
434
|
...(this.$style() ?? {}),
|
|
436
435
|
});
|
|
437
436
|
});
|
|
438
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
439
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.
|
|
437
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
438
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: HeadingComponent, isStandalone: true, selector: "ng-email-heading", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $as: { classPropertyName: "$as", publicName: "as", isSignal: true, isRequired: false, transformFunction: null }, $m: { classPropertyName: "$m", publicName: "m", isSignal: true, isRequired: false, transformFunction: null }, $mx: { classPropertyName: "$mx", publicName: "mx", isSignal: true, isRequired: false, transformFunction: null }, $my: { classPropertyName: "$my", publicName: "my", isSignal: true, isRequired: false, transformFunction: null }, $mt: { classPropertyName: "$mt", publicName: "mt", isSignal: true, isRequired: false, transformFunction: null }, $mr: { classPropertyName: "$mr", publicName: "mr", isSignal: true, isRequired: false, transformFunction: null }, $mb: { classPropertyName: "$mb", publicName: "mb", isSignal: true, isRequired: false, transformFunction: null }, $ml: { classPropertyName: "$ml", publicName: "ml", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let heading = $as();\n@let style = $headingStyle();\n@let styleClass = $styleClass();\n@if (heading === 'h1') {\n <h1\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h1>\n} @else if (heading === 'h2') {\n <h2\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h2>\n} @else if (heading === 'h3') {\n <h3\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h3>\n} @else if (heading === 'h4') {\n <h4\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h4>\n} @else if (heading === 'h5') {\n <h5\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h5>\n} @else if (heading === 'h6') {\n <h6\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h6>\n} @else {\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
440
439
|
}
|
|
441
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HeadingComponent, decorators: [{
|
|
442
441
|
type: Component,
|
|
443
442
|
args: [{ selector: 'ng-email-heading', imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let heading = $as();\n@let style = $headingStyle();\n@let styleClass = $styleClass();\n@if (heading === 'h1') {\n <h1\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h1>\n} @else if (heading === 'h2') {\n <h2\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h2>\n} @else if (heading === 'h3') {\n <h3\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h3>\n} @else if (heading === 'h4') {\n <h4\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h4>\n} @else if (heading === 'h5') {\n <h5\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h5>\n} @else if (heading === 'h6') {\n <h6\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h6>\n} @else {\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n" }]
|
|
444
443
|
}] });
|
|
@@ -460,10 +459,10 @@ class HrComponent {
|
|
|
460
459
|
...(this.$style() ?? {}),
|
|
461
460
|
};
|
|
462
461
|
});
|
|
463
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
464
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
462
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HrComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
463
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: HrComponent, isStandalone: true, selector: "ng-email-hr", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $disableDefaultStyle: { classPropertyName: "$disableDefaultStyle", publicName: "disableDefaultStyle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<hr\n [style]=\"$hrStyle()\"\n [class]=\"$styleClass()\"\n/>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
465
464
|
}
|
|
466
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HrComponent, decorators: [{
|
|
467
466
|
type: Component,
|
|
468
467
|
args: [{ selector: 'ng-email-hr', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<hr\n [style]=\"$hrStyle()\"\n [class]=\"$styleClass()\"\n/>\n" }]
|
|
469
468
|
}] });
|
|
@@ -475,10 +474,10 @@ class HtmlComponent {
|
|
|
475
474
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
476
475
|
$style = input(null, { alias: 'style' });
|
|
477
476
|
$styleClass = input(undefined, { alias: 'styleClass' });
|
|
478
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
479
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
477
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HtmlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
478
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: HtmlComponent, isStandalone: true, selector: "ng-email-html", inputs: { $lang: { classPropertyName: "$lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, $dir: { classPropertyName: "$dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, $enableVML: { classPropertyName: "$enableVML", publicName: "enableVML", isSignal: true, isRequired: false, transformFunction: null }, $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let enableVML = $enableVML();\n@let lang = $lang();\n@let dir = $dir();\n\n<html\n id=\"__angular-email\"\n [lang]=\"lang\"\n [dir]=\"dir\"\n [attr.xmlns:o]=\"enableVML ? 'urn:schemas-microsoft-com:office:office' : undefined\"\n [attr.xmlns:v]=\"enableVML ? 'urn:schemas-microsoft-com:vml' : undefined\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</html>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
480
479
|
}
|
|
481
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
480
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: HtmlComponent, decorators: [{
|
|
482
481
|
type: Component,
|
|
483
482
|
args: [{ selector: 'ng-email-html', changeDetection: ChangeDetectionStrategy.OnPush, template: "@let enableVML = $enableVML();\n@let lang = $lang();\n@let dir = $dir();\n\n<html\n id=\"__angular-email\"\n [lang]=\"lang\"\n [dir]=\"dir\"\n [attr.xmlns:o]=\"enableVML ? 'urn:schemas-microsoft-com:office:office' : undefined\"\n [attr.xmlns:v]=\"enableVML ? 'urn:schemas-microsoft-com:vml' : undefined\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</html>\n" }]
|
|
484
483
|
}] });
|
|
@@ -505,10 +504,10 @@ class ImgComponent {
|
|
|
505
504
|
...(this.$style() ?? {}),
|
|
506
505
|
};
|
|
507
506
|
});
|
|
508
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
509
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
507
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ImgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
508
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: ImgComponent, isStandalone: true, selector: "ng-email-img", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $disableDefaultStyle: { classPropertyName: "$disableDefaultStyle", publicName: "disableDefaultStyle", isSignal: true, isRequired: false, transformFunction: null }, $alt: { classPropertyName: "$alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, $src: { classPropertyName: "$src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, $width: { classPropertyName: "$width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<img\n [style]=\"$imageStyle()\"\n [class]=\"$styleClass()\"\n [alt]=\"$alt()\"\n [src]=\"$src()\"\n [width]=\"$width()\"\n [height]=\"$height()\"\n/>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
510
509
|
}
|
|
511
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
510
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ImgComponent, decorators: [{
|
|
512
511
|
type: Component,
|
|
513
512
|
args: [{ selector: 'ng-email-img', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<img\n [style]=\"$imageStyle()\"\n [class]=\"$styleClass()\"\n [alt]=\"$alt()\"\n [src]=\"$src()\"\n [width]=\"$width()\"\n [height]=\"$height()\"\n/>\n" }]
|
|
514
513
|
}] });
|
|
@@ -531,10 +530,10 @@ class LinkComponent {
|
|
|
531
530
|
...(this.$style() ?? {}),
|
|
532
531
|
};
|
|
533
532
|
});
|
|
534
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
535
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
533
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
534
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: LinkComponent, isStandalone: true, selector: "ng-email-link", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $disableDefaultStyle: { classPropertyName: "$disableDefaultStyle", publicName: "disableDefaultStyle", isSignal: true, isRequired: false, transformFunction: null }, $href: { classPropertyName: "$href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, $target: { classPropertyName: "$target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<a\n [style]=\"$linkStyle()\"\n [class]=\"$styleClass()\"\n [href]=\"$href()\"\n [target]=\"$target()\"\n ><ng-content></ng-content\n></a>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
536
535
|
}
|
|
537
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
536
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: LinkComponent, decorators: [{
|
|
538
537
|
type: Component,
|
|
539
538
|
args: [{ selector: 'ng-email-link', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [style]=\"$linkStyle()\"\n [class]=\"$styleClass()\"\n [href]=\"$href()\"\n [target]=\"$target()\"\n ><ng-content></ng-content\n></a>\n" }]
|
|
540
539
|
}] });
|
|
@@ -543,10 +542,10 @@ class RawComponent {
|
|
|
543
542
|
$disablePlainTextOutput = input(false, { alias: 'disablePlainTextOutput' });
|
|
544
543
|
$content = input('', { alias: 'content' });
|
|
545
544
|
$escapingContent = computed(() => `<!--${escapeForRawComponent(this.$content())}-->`);
|
|
546
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
547
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
545
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: RawComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
546
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: RawComponent, isStandalone: true, selector: "ng-email-raw", inputs: { $disablePlainTextOutput: { classPropertyName: "$disablePlainTextOutput", publicName: "disablePlainTextOutput", isSignal: true, isRequired: false, transformFunction: null }, $content: { classPropertyName: "$content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<angular-email-raw [attr.data-skip]=\"$disablePlainTextOutput()\">\n <noscript [attr.data-html]=\"$escapingContent()\"></noscript>\n</angular-email-raw>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
548
547
|
}
|
|
549
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
548
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: RawComponent, decorators: [{
|
|
550
549
|
type: Component,
|
|
551
550
|
args: [{ selector: 'ng-email-raw', changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<angular-email-raw [attr.data-skip]=\"$disablePlainTextOutput()\">\n <noscript [attr.data-html]=\"$escapingContent()\"></noscript>\n</angular-email-raw>\n" }]
|
|
552
551
|
}] });
|
|
@@ -561,10 +560,10 @@ class PreviewComponent {
|
|
|
561
560
|
const whiteSpaceCodes = ' ‌​‍‎‏';
|
|
562
561
|
return whiteSpaceCodes.repeat(this.maxLength - preview.length);
|
|
563
562
|
});
|
|
564
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
565
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.
|
|
563
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: PreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
564
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: PreviewComponent, isStandalone: true, selector: "ng-email-preview", inputs: { $preview: { classPropertyName: "$preview", publicName: "preview", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let text = $text();\n\n<div\n id=\"__angular-email-preview\"\n style=\"display: none; overflow: hidden; line-height: 1px; opacity: 0; max-height: 0; max-width: 0\"\n>\n {{ $preview() }}\n @if (text) {\n <ng-email-raw\n [content]=\"text\"\n [disablePlainTextOutput]=\"false\"\n ></ng-email-raw>\n }\n</div>\n", dependencies: [{ kind: "component", type: RawComponent, selector: "ng-email-raw", inputs: ["disablePlainTextOutput", "content"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
566
565
|
}
|
|
567
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: PreviewComponent, decorators: [{
|
|
568
567
|
type: Component,
|
|
569
568
|
args: [{ selector: 'ng-email-preview', changeDetection: ChangeDetectionStrategy.OnPush, imports: [RawComponent], template: "@let text = $text();\n\n<div\n id=\"__angular-email-preview\"\n style=\"display: none; overflow: hidden; line-height: 1px; opacity: 0; max-height: 0; max-width: 0\"\n>\n {{ $preview() }}\n @if (text) {\n <ng-email-raw\n [content]=\"text\"\n [disablePlainTextOutput]=\"false\"\n ></ng-email-raw>\n }\n</div>\n" }]
|
|
570
569
|
}] });
|
|
@@ -579,10 +578,10 @@ class SectionComponent {
|
|
|
579
578
|
...(this.$style() ?? {}),
|
|
580
579
|
});
|
|
581
580
|
});
|
|
582
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
583
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
581
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: SectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
582
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: SectionComponent, isStandalone: true, selector: "ng-email-section", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<table\n [align]=\"'center'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n width=\"100%\"\n role=\"presentation\"\n [style]=\"$sectionStyle()\"\n [class]=\"$styleClass()\"\n>\n <tbody>\n <tr>\n <td>\n <ng-content />\n </td>\n </tr>\n </tbody>\n</table>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
584
583
|
}
|
|
585
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
584
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: SectionComponent, decorators: [{
|
|
586
585
|
type: Component,
|
|
587
586
|
args: [{ selector: 'ng-email-section', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<table\n [align]=\"'center'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n width=\"100%\"\n role=\"presentation\"\n [style]=\"$sectionStyle()\"\n [class]=\"$styleClass()\"\n>\n <tbody>\n <tr>\n <td>\n <ng-content />\n </td>\n </tr>\n </tbody>\n</table>\n" }]
|
|
588
587
|
}] });
|
|
@@ -604,10 +603,10 @@ class TextComponent {
|
|
|
604
603
|
...(this.$style() ?? {}),
|
|
605
604
|
};
|
|
606
605
|
});
|
|
607
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.
|
|
608
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.
|
|
606
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: TextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
607
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.6", type: TextComponent, isStandalone: true, selector: "ng-email-text", inputs: { $style: { classPropertyName: "$style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, $styleClass: { classPropertyName: "$styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, $disableDefaultStyle: { classPropertyName: "$disableDefaultStyle", publicName: "disableDefaultStyle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p\n [style]=\"$textStyle()\"\n [class]=\"$styleClass()\"\n>\n <ng-content></ng-content>\n</p>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
609
608
|
}
|
|
610
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.
|
|
609
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: TextComponent, decorators: [{
|
|
611
610
|
type: Component,
|
|
612
611
|
args: [{ selector: 'ng-email-text', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p\n [style]=\"$textStyle()\"\n [class]=\"$styleClass()\"\n>\n <ng-content></ng-content>\n</p>\n" }]
|
|
613
612
|
}] });
|
|
@@ -623,13 +622,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
|
|
|
623
622
|
* @returns {Promise<string>} The rendered HTML or plain text.
|
|
624
623
|
*/
|
|
625
624
|
const render = async ({ component, selector, props, options }) => {
|
|
626
|
-
const normalizedHtml = await renderNgComponent(component, selector, props, options?.signalInputsPrefix);
|
|
627
|
-
const html = applyHtmlTransformations(normalizedHtml,
|
|
625
|
+
const { styles, html: normalizedHtml } = await renderNgComponent(component, selector, props, options?.signalInputsPrefix);
|
|
626
|
+
const html = applyHtmlTransformations(normalizedHtml, styles);
|
|
628
627
|
if (options?.plainText) {
|
|
629
628
|
return renderAsPlainText(html);
|
|
630
629
|
}
|
|
631
630
|
const doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
|
|
632
|
-
const tailwindConfig =
|
|
631
|
+
const tailwindConfig = options?.tailwindConfig;
|
|
633
632
|
const markup = await inlineCss(html, !!options?.pretty, tailwindConfig);
|
|
634
633
|
const document = `${doctype}${markup}`;
|
|
635
634
|
return document;
|
|
@@ -691,7 +690,18 @@ const renderNgComponent = async (component, selector, props, signalInputsPrefix)
|
|
|
691
690
|
const ngHtml = await renderApplication(bootstrap, {
|
|
692
691
|
document: `<${selector}></${selector}>`,
|
|
693
692
|
});
|
|
694
|
-
|
|
693
|
+
const $ = cheerio.load(ngHtml, {
|
|
694
|
+
xml: { lowerCaseAttributeNames: false, lowerCaseTags: false },
|
|
695
|
+
});
|
|
696
|
+
const styles = [];
|
|
697
|
+
$('style').each(function () {
|
|
698
|
+
const content = $(this).html();
|
|
699
|
+
if (content) {
|
|
700
|
+
styles.push(content);
|
|
701
|
+
}
|
|
702
|
+
});
|
|
703
|
+
const html = normalizeNgHtml(ngHtml, selector);
|
|
704
|
+
return { styles, html };
|
|
695
705
|
};
|
|
696
706
|
/**
|
|
697
707
|
* Normalizes the provided HTML string by extracting the content within the specified selector
|
|
@@ -704,7 +714,7 @@ const renderNgComponent = async (component, selector, props, signalInputsPrefix)
|
|
|
704
714
|
const normalizeNgHtml = (html, selector) => {
|
|
705
715
|
const nsHtmlRegex = new RegExp(`<(?!(\\/?(${HTMLElements.join('|')})))[^>]+>`, 'gm');
|
|
706
716
|
return html
|
|
707
|
-
.replace(new RegExp(
|
|
717
|
+
.replace(new RegExp(`[\\s\\S]*?<${selector}[\\s\\S]*?>([\\s\\S]*?)<\\/${selector}>[\\s\\S]*?`, 'gm'), '$1')
|
|
708
718
|
.replace(nsHtmlRegex, '');
|
|
709
719
|
};
|
|
710
720
|
/**
|
|
@@ -719,12 +729,12 @@ const normalizeNgHtml = (html, selector) => {
|
|
|
719
729
|
* @param cssFilePaths - An optional array of CSS file paths to apply styles from.
|
|
720
730
|
* @returns The transformed HTML string.
|
|
721
731
|
*/
|
|
722
|
-
const applyHtmlTransformations = (html,
|
|
732
|
+
const applyHtmlTransformations = (html, styles) => {
|
|
723
733
|
const $ = cheerio.load(html, {
|
|
724
734
|
xml: { lowerCaseAttributeNames: false, lowerCaseTags: false },
|
|
725
735
|
});
|
|
726
736
|
replacePlaceholders($);
|
|
727
|
-
applyStyles($,
|
|
737
|
+
applyStyles($, styles);
|
|
728
738
|
return $.html()
|
|
729
739
|
.replaceAll('\n', '')
|
|
730
740
|
.replace(/\s+/g, ' ')
|
|
@@ -755,10 +765,9 @@ const replacePlaceholders = ($) => {
|
|
|
755
765
|
* @param $ - The Cheerio API instance used to manipulate the HTML document.
|
|
756
766
|
* @param cssFilePaths - An array of file paths to the CSS files to be applied.
|
|
757
767
|
*/
|
|
758
|
-
const applyStyles = ($,
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
$('head').append(`<style>${styleContent}</style>`);
|
|
768
|
+
const applyStyles = ($, styles) => {
|
|
769
|
+
styles.forEach((style) => {
|
|
770
|
+
$('head').append(`<style>${style}</style>`);
|
|
762
771
|
});
|
|
763
772
|
};
|
|
764
773
|
/**
|
|
@@ -807,24 +816,6 @@ const inlineCss = async (html, pretty = false, tailwindConfig) => {
|
|
|
807
816
|
minify: true,
|
|
808
817
|
})).html;
|
|
809
818
|
};
|
|
810
|
-
/**
|
|
811
|
-
* Asynchronously retrieves the Tailwind CSS configuration.
|
|
812
|
-
*
|
|
813
|
-
* @param tailwindConfig - The path to the Tailwind CSS configuration file or a partial configuration object.
|
|
814
|
-
* @returns A promise that resolves to a partial Tailwind CSS configuration object, or `undefined` if no configuration is provided.
|
|
815
|
-
*/
|
|
816
|
-
const getTailwindConfig = async (tailwindConfig) => {
|
|
817
|
-
let config;
|
|
818
|
-
if (tailwindConfig) {
|
|
819
|
-
if (typeof tailwindConfig === 'string') {
|
|
820
|
-
config = (await import(tailwindConfig)).default;
|
|
821
|
-
}
|
|
822
|
-
else {
|
|
823
|
-
config = tailwindConfig;
|
|
824
|
-
}
|
|
825
|
-
}
|
|
826
|
-
return config;
|
|
827
|
-
};
|
|
828
819
|
|
|
829
820
|
/*
|
|
830
821
|
* Public API Surface of angular-email
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloakify-angular-email.mjs","sources":["../../../projects/angular-email/src/lib/components/background/background.component.ts","../../../projects/angular-email/src/lib/components/background/background.component.html","../../../projects/angular-email/src/lib/components/body/body.component.ts","../../../projects/angular-email/src/lib/components/body/body.component.html","../../../projects/angular-email/src/lib/components/button/button.component.ts","../../../projects/angular-email/src/lib/components/button/button.component.html","../../../projects/angular-email/src/lib/components/color-scheme/color-scheme.component.ts","../../../projects/angular-email/src/lib/components/color-scheme/color-scheme.component.html","../../../projects/angular-email/src/lib/components/column/column.component.ts","../../../projects/angular-email/src/lib/components/column/column.component.html","../../../projects/angular-email/src/lib/components/conditional/conditional.component.ts","../../../projects/angular-email/src/lib/components/conditional/conditional.component.html","../../../projects/angular-email/src/lib/components/container/container.component.ts","../../../projects/angular-email/src/lib/components/container/container.component.html","../../../projects/angular-email/src/lib/components/head/head.component.ts","../../../projects/angular-email/src/lib/components/head/head.component.html","../../../projects/angular-email/src/lib/utils.ts","../../../projects/angular-email/src/lib/components/heading/heading.component.ts","../../../projects/angular-email/src/lib/components/heading/heading.component.html","../../../projects/angular-email/src/lib/components/hr/hr.component.ts","../../../projects/angular-email/src/lib/components/hr/hr.component.html","../../../projects/angular-email/src/lib/components/html/html.component.ts","../../../projects/angular-email/src/lib/components/html/html.component.html","../../../projects/angular-email/src/lib/components/img/img.component.ts","../../../projects/angular-email/src/lib/components/img/img.component.html","../../../projects/angular-email/src/lib/components/link/link.component.ts","../../../projects/angular-email/src/lib/components/link/link.component.html","../../../projects/angular-email/src/lib/components/raw/raw.component.ts","../../../projects/angular-email/src/lib/components/raw/raw.component.html","../../../projects/angular-email/src/lib/components/preview/preview.component.ts","../../../projects/angular-email/src/lib/components/preview/preview.component.html","../../../projects/angular-email/src/lib/components/section/section.component.ts","../../../projects/angular-email/src/lib/components/section/section.component.html","../../../projects/angular-email/src/lib/components/text/text.component.ts","../../../projects/angular-email/src/lib/components/text/text.component.html","../../../projects/angular-email/src/lib/render.ts","../../../projects/angular-email/src/index.ts","../../../projects/angular-email/src/keycloakify-angular-email.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-background',\n templateUrl: 'background.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class BackgroundComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n\n $width = input<number>(0, { alias: 'width' });\n $height = input<number>(0, { alias: 'height' });\n $src = input<string>(undefined, { alias: 'src' });\n $bgRepeat = input<'repeat' | 'no-repeat'>('no-repeat', { alias: 'bgRepeat' });\n $bgColor = input<string>(undefined, { alias: 'bgColor' });\n\n $bgStyle = computed(() => ({ backgroundRepeat: this.$bgRepeat(), ...(this.$style() ?? {}) }));\n}\n","@let width = $width();\n@let height = $height();\n\n<table\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n [border]=\"0\"\n width=\"100%\"\n [attr.height]=\"height\"\n role=\"presentation\"\n>\n <tr>\n <td\n [align]=\"'top'\"\n [width]=\"width\"\n [height]=\"height && width ? height : undefined\"\n [attr.bgcolor]=\"$bgColor()\"\n [attr.background]=\"$src()\"\n [style]=\"$bgStyle()\"\n [class]=\"$styleClass()\"\n >\n <ng-content />\n </td>\n </tr>\n</table>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-body',\n templateUrl: 'body.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BodyComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n}\n","<body\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</body>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-button',\n templateUrl: 'button.component.html',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | null>(null, { alias: 'styleClass' });\n\n $href = input<string>(undefined, { alias: 'href' });\n $textContent = input.required<string>({ alias: 'textContent' });\n $width = input<number>(undefined, { alias: 'width' });\n $height = input<number>(undefined, { alias: 'height' });\n $borderRadius = input(0, { alias: 'borderRadius' });\n $textColor = input<string>(undefined, { alias: 'textColor' });\n $backgroundColor = input<string>(undefined, { alias: 'backgroundColor' });\n $borderColor = input<string>(undefined, { alias: 'borderColor' });\n $borderSize = input(1, { alias: 'borderSize' });\n $fontSize = input(16, { alias: 'fontSize' });\n $align = input<string>('left', { alias: 'align' });\n $withBackground = input(false, { alias: 'withBackground' });\n\n $arcsize = computed(() => Math.floor((this.$borderRadius() / (this.$height() ?? 1)) * 100));\n $lineHeight = computed(() =>\n this.$borderSize() ? (this.$height() ?? 0) - 2 * this.$borderSize() : (this.$height() ?? 0),\n );\n\n private $baseStyle = computed(() => ({\n '-webkit-text-size-adjust': 'none',\n borderRadius: this.$borderRadius(),\n display: 'inline-block',\n fontSize: this.$fontSize(),\n lineHeight: `${this.$lineHeight()}px`,\n maxWidth: this.$width(),\n textAlign: 'center',\n textDecoration: 'none',\n width: '100%',\n }));\n\n private $borderStyles = computed(() => ({\n border: `${this.$borderSize()}px solid ${this.$borderColor()}`,\n msoBorderAlt: 'none',\n }));\n\n private $propStyles = computed(() => ({\n // border styles\n ...(this.$borderColor() ? this.$borderStyles() : {}),\n // background styles\n ...(this.$backgroundColor() ? { backgroundColor: this.$backgroundColor() } : {}),\n // text styles\n ...(this.$textColor() ? { color: this.$textColor() } : {}),\n }));\n\n $withBackgroundStyle = computed(() => ({\n ...this.$baseStyle(),\n // background styles\n ...(this.$backgroundColor() ? { backgroundColor: this.$backgroundColor() } : {}),\n // text styles\n ...(this.$textColor() ? { color: this.$textColor() } : {}),\n ...(this.$style() ?? {}),\n ...(this.$withBackground() ? {} : { msoHide: 'all' }),\n }));\n\n $withoutBackgroundStyle = computed(() => ({\n ...this.$baseStyle(),\n // background styles\n ...this.$propStyles(),\n ...(this.$style() ?? {}),\n ...(this.$withBackground() ? {} : { msoHide: 'all' }),\n }));\n\n $noBgInnerHtml = computed(() => {\n const href = this.$href();\n const borderColor = this.$borderColor();\n const borderSize = this.$borderSize();\n const height = this.$height();\n const width = this.$width();\n const arcsize = this.$arcsize();\n const backgroundColor = this.$backgroundColor();\n const fontSize = this.$fontSize();\n const textColor = this.$textColor();\n const textContent = this.$textContent();\n return `<!--[if mso]>\n <v:roundrect href=\"${href}\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w=\"urn:schemas-microsoft-com:office:word\" style=\"${height !== undefined ? `height:${height}px` : ''};v-text-anchor:middle;${width !== undefined ? `height:${width}px` : ''};\" arcsize=\"${arcsize}%\" ${\n borderColor ? `strokecolor=${borderColor}` : ''\n } ${borderSize ? `strokeweight=\"${borderSize}px\"` : `stroke=\"false\"`} ${\n backgroundColor ? `fillcolor=${backgroundColor}` : `fill=\"false\"`\n }>\n <w:anchorlock/>\n <center style=\"font-size:${fontSize}px;${textColor ? `color:${textColor};` : ''}\">\n ${textContent}\n </center></v:roundrect>\n <![endif]-->`;\n });\n}\n","@let withBackground = $withBackground();\n@let align = $align();\n@let href = $href();\n@let height = $height();\n@let width = $width();\n@let borderRadius = $borderRadius();\n\n<ng-template #child><ng-content></ng-content></ng-template>\n\n<table\n [width]=\"'100%'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n style=\"border-collapse: collapse\"\n role=\"presentation\"\n>\n <tr>\n <td [align]=\"align\">\n @if (withBackground) {\n <table\n [align]=\"align\"\n [width]=\"width\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n role=\"presentation\"\n [style]=\"{\n border: $borderSize() + 'px solid ' + ($borderColor() ?? 'inherit'),\n borderRadius,\n }\"\n >\n <tr>\n <td\n [attr.bgcolor]=\"$backgroundColor()\"\n [width]=\"width\"\n [height]=\"height\"\n [style]=\"{\n borderRadius,\n height,\n width,\n maxWidth: width,\n textAlign: 'center',\n }\"\n >\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n </td>\n </tr>\n </table>\n } @else {\n <noscript [attr.data-html]=\"$noBgInnerHtml()\"></noscript>\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withoutBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n }\n </td>\n </tr>\n</table>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type ColorSchemeMode =\n | 'dark'\n /**\n * The email client will only ever render the content in the dark color scheme and forbids the\n * email client from overriding the color scheme.\n */\n | 'dark only'\n | 'light'\n /**\n * The email client will choose the light or dark theme to match the user’s preference.\n * If the user’s preference does not match something in the list, the email client will choose\n * which mode to display.\n */\n | 'light dark'\n /**\n * The email client will choose the first of the listed schemes that it supports taking user\n * preference into account and forbids the email client from overriding the color scheme.\n */\n | 'light dark only'\n /**\n * The email client will only ever render the content in the light color scheme and forbids the\n * email client from overriding the color scheme.\n */\n | 'light only'\n /**\n * Indicates that the email supports the page’s supported color schemes, if they are set, or\n * that it supports no color schemes at all otherwise.\n */\n | 'normal';\n\n@Component({\n selector: 'ng-email-color-scheme',\n templateUrl: 'color-scheme.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorSchemeComponent {\n $mode = input<ColorSchemeMode>('normal', { alias: 'mode' });\n $style = computed(\n () => `<style>:root { color-scheme: ${this.$mode()}; supported-color-schemes: ${this.$mode()}; }</style>`,\n );\n}\n","@let mode = $mode();\n\n<meta\n name=\"color-scheme\"\n [content]=\"mode\"\n/>\n<meta\n name=\"supported-color-schemes\"\n [content]=\"mode\"\n/>\n\n<noscript [attr.data-html]=\"$style()\"></noscript>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-column',\n templateUrl: 'column.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class ColumnComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $bgImage = input<string>(undefined, { alias: 'bgImage' });\n $bgColor = input<string>(undefined, { alias: 'bgColor' });\n}\n","<td\n [attr.background]=\"$bgImage()\"\n [attr.bgcolor]=\"$bgColor()\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n role=\"presentation\"\n>\n <ng-content />\n</td>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-conditional',\n templateUrl: 'conditional.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class ConditionalComponent {\n $expression = input(undefined, { alias: 'expression' });\n $mso = input<boolean>(undefined, { alias: 'mso' });\n\n noMsoInnerHtmlPre = '<!--[if !mso]><!-->';\n noMsoInnerHtmlPost = '<!--<![endif]-->';\n\n $msoInnerHtmlPre = computed(() => `<!--[if ${this.$expression() ?? 'mso'}]>`);\n msoInnerHtmlPost = '<![endif]-->';\n\n constructor() {\n effect(() => {\n if (typeof this.$expression() === 'undefined' && typeof this.$mso() === 'undefined')\n throw new RangeError('angular-email: Conditional expects the `expression` or `mso` prop to be defined');\n\n if (typeof this.$expression() !== 'undefined' && typeof this.$mso() !== 'undefined')\n throw new RangeError(\n 'angular-email: Conditional expects the `expression` or `mso` prop to be defined, not both',\n );\n });\n }\n}\n","@let mso = $mso();\n\n@if (!mso) {\n <noscript [attr.data-html]=\"noMsoInnerHtmlPre\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"noMsoInnerHtmlPost\"></noscript>\n} @else {\n <noscript [attr.data-html]=\"$msoInnerHtmlPre()\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"msoInnerHtmlPost\"></noscript>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-container',\n templateUrl: 'container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class ContainerComponent {\n random = Math.random();\n document = inject(DOCUMENT);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $alignment = input('center', { alias: 'alignment' });\n $disableDefaultStyle = input(false, { alias: 'disableDefaultStyle' });\n $containerWidth = input(600, { alias: 'containerWidth' });\n\n $containerStyle = computed(() => ({\n ...(this.$disableDefaultStyle() ? {} : { maxWidth: `${this.$containerWidth()}px` }),\n ...this.$style(),\n }));\n\n $trStyle = computed(() => ({\n ...(this.$disableDefaultStyle() ? {} : { width: '100%' }),\n }));\n\n $innerHtmlPre = computed(\n () =>\n `<!--[if mso]><table align=\"${this.$alignment()}\" width=\"${this.$containerWidth()}\" style=\"border-spacing: 0; width:${this.$containerWidth()}px;\" role=\"presentation\"><tr><td><![endif]-->`,\n );\n\n $innerHtmlPost = computed(() => `<!--[if mso]></td></tr></table><![endif]-->`);\n}\n","@let containerWidth = $containerWidth();\n@let alignment = $alignment();\n\n<div [style]=\"{ tableLayout: 'fixed', width: '100%' }\">\n <div [style]=\"{ margin: '0 auto', maxWidth: containerWidth }\">\n <noscript [attr.data-html]=\"$innerHtmlPre()\"></noscript>\n <table\n [align]=\"alignment\"\n [width]=\"'100%'\"\n role=\"presentation\"\n [cellSpacing]=\"0\"\n [cellPadding]=\"0\"\n [border]=\"0\"\n [style]=\"$containerStyle()\"\n [class]=\"$styleClass()\"\n >\n <tbody>\n <tr [style]=\"$trStyle()\">\n <td [align]=\"alignment\">\n <ng-content></ng-content>\n </td>\n </tr>\n </tbody>\n </table>\n <noscript [attr.data-html]=\"$innerHtmlPost()\"></noscript>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { ConditionalComponent } from '../conditional/conditional.component';\n\n@Component({\n selector: 'ng-email-head',\n templateUrl: 'head.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ConditionalComponent],\n schemas: [NO_ERRORS_SCHEMA],\n})\nexport class HeadComponent {\n $enableFormatDetection = input(false, { alias: 'enableFormatDetection' });\n xml = `\\n<xml><o:OfficeDocumentSettings><o:AllowPNG /><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml>\\n`;\n}\n","@let enableFormatDetection = $enableFormatDetection();\n\n<head>\n <meta\n http-equiv=\"content-type\"\n content=\"text/html; charset=UTF-8\"\n />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, user-scalable=yes\"\n />\n <meta name=\"x-apple-disable-message-reformatting\" />\n @if (!enableFormatDetection) {\n <meta\n name=\"format-detection\"\n content=\"telephone=no, date=no, address=no, email=no, url=no\"\n />\n }\n <ng-content></ng-content>\n <ng-email-conditional [mso]=\"true\">\n <noscript [attr.data-html]=\"xml\"></noscript>\n </ng-email-conditional>\n</head>\n","export const copyTextToClipboard = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n } catch {\n throw new Error('Not able to copy');\n }\n};\n\nexport const pxToPt = (px: string): number | null => (isNaN(Number(px)) ? null : (parseInt(px, 10) * 3) / 4);\n\nexport interface Margin {\n m?: string;\n mx?: string;\n my?: string;\n mt?: string;\n mr?: string;\n mb?: string;\n ml?: string;\n}\n\nexport const withMargin = (props: Margin) =>\n [\n withSpace(props.m, ['margin']),\n withSpace(props.mx, ['marginLeft', 'marginRight']),\n withSpace(props.my, ['marginTop', 'marginBottom']),\n withSpace(props.mt, ['marginTop']),\n withSpace(props.mr, ['marginRight']),\n withSpace(props.mb, ['marginBottom']),\n withSpace(props.ml, ['marginLeft']),\n ].filter((s) => Object.keys(s).length)[0];\n\nconst withSpace = (value: string | undefined, properties: string[]) => {\n return properties.reduce((styles, property) => {\n if (value) {\n return { ...styles, [property]: `${value}px` };\n }\n return styles;\n }, {});\n};\n\n// https://stackoverflow.com/a/61410824\n\nexport const styleToString = (style: Record<string, string | number | null> | undefined | null) => {\n if (!style) return '';\n return Object.keys(style).reduce(\n (acc, key) =>\n acc +\n key\n .split(/(?=[A-Z])/)\n .join('-')\n .toLowerCase() +\n ':' +\n style[key] +\n ';',\n '',\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const classToString = (style: string | string[] | Set<string> | Record<string, any> | null | undefined) => {\n if (!style) return '';\n if (typeof style === 'string') return style;\n if (Array.isArray(style)) return style.join(' ');\n return Object.keys(style).reduce(\n (acc, key) =>\n acc +\n key\n .split(/(?=[A-Z])/)\n .join('-')\n .toLowerCase() +\n ':' +\n style[key as keyof typeof style] +\n ';',\n '',\n );\n};\n\nexport const unreachable = (\n condition: never,\n message = `Entered unreachable code. Received '${condition}'.`,\n): never => {\n throw new TypeError(message);\n};\n\nexport const HTMLElements = [\n '!DOCTYPE',\n 'a',\n 'abbr',\n 'abbr',\n //\"acronym\", // NOT HTML5\n 'address',\n //\"applet\", // NOT HTML5 (NOT MAJORLY SUPPORTED)\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n //\"basefont\", // NOT HTML5\n 'bdi',\n 'bdo',\n //\"big\", // NOT HTML5\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n //\"center\", // NOT HTML5\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n //\"dir\", NOT HTML5 (use \"ul\" instead)\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n //\"font\", // NOT HTML5 (use CSS)\n 'footer',\n 'form',\n //\"frame\", // NOT HTML5\n //\"frameset\", // NOT HTML5\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'meta',\n 'meter',\n 'nav',\n //\"noframes\", // NOT HTML5\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n //\"strike\", NOT HTML5 (Use <del> or <s> instead)\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'svg',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n //\"tt\", // NOT HTML5 (Use CSS)\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n // xml\n 'xml',\n 'o:OfficeDocumentSettings',\n 'o:AllowPNG',\n 'o:PixelsPerInch',\n 'angular-email-raw',\n];\n\nconst START_TAG = '__COMMENT_START';\nconst END_TAG = '__COMMENT_END';\nexport function escapeForRawComponent(input: string): string {\n // escape comment sequences\n return input.replace(/<!--/g, START_TAG).replace(/-->/g, END_TAG);\n}\n\nexport function unescapeForRawComponent(input: string): string {\n return input.replace(new RegExp(START_TAG, 'g'), '<!--').replace(new RegExp(END_TAG, 'g'), '-->');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { styleToString, withMargin } from '../../utils';\n\n@Component({\n selector: 'ng-email-heading',\n templateUrl: 'heading.component.html',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeadingComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $as = input<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>('h1', { alias: 'as' });\n $m = input<string>(undefined, { alias: 'm' });\n $mx = input<string>(undefined, { alias: 'mx' });\n $my = input<string>(undefined, { alias: 'my' });\n $mt = input<string>(undefined, { alias: 'mt' });\n $mr = input<string>(undefined, { alias: 'mr' });\n $mb = input<string>(undefined, { alias: 'mb' });\n $ml = input<string>(undefined, { alias: 'ml' });\n $headingStyle = computed(() => {\n return styleToString({\n ...withMargin({\n m: this.$m(),\n mx: this.$mx(),\n my: this.$my(),\n mt: this.$mt(),\n mr: this.$mr(),\n mb: this.$mb(),\n ml: this.$ml(),\n }),\n ...(this.$style() ?? {}),\n });\n });\n}\n","@let heading = $as();\n@let style = $headingStyle();\n@let styleClass = $styleClass();\n@if (heading === 'h1') {\n <h1\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h1>\n} @else if (heading === 'h2') {\n <h2\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h2>\n} @else if (heading === 'h3') {\n <h3\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h3>\n} @else if (heading === 'h4') {\n <h4\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h4>\n} @else if (heading === 'h5') {\n <h5\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h5>\n} @else if (heading === 'h6') {\n <h6\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h6>\n} @else {\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-hr',\n templateUrl: 'hr.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HrComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $hrStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n width: '100%',\n border: 'none',\n borderTop: '1px solid #eaeaea',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<hr\n [style]=\"$hrStyle()\"\n [class]=\"$styleClass()\"\n/>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-html',\n templateUrl: 'html.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlComponent {\n $lang = input('en', { alias: 'lang' });\n $dir = input('ltr', { alias: 'dir' });\n $enableVML = input(true, { alias: 'enableVML' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n}\n","@let enableVML = $enableVML();\n@let lang = $lang();\n@let dir = $dir();\n\n<html\n id=\"__angular-email\"\n [lang]=\"lang\"\n [dir]=\"dir\"\n [attr.xmlns:o]=\"enableVML ? 'urn:schemas-microsoft-com:office:office' : undefined\"\n [attr.xmlns:v]=\"enableVML ? 'urn:schemas-microsoft-com:vml' : undefined\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</html>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-img',\n templateUrl: 'img.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImgComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $alt = input('', { alias: 'alt' });\n $src = input('', { alias: 'src' });\n $width = input('0', { alias: 'width' });\n $height = input('0', { alias: 'height' });\n $imageStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n display: 'block',\n outline: 'none',\n border: 'none',\n textDecoration: 'none',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<img\n [style]=\"$imageStyle()\"\n [class]=\"$styleClass()\"\n [alt]=\"$alt()\"\n [src]=\"$src()\"\n [width]=\"$width()\"\n [height]=\"$height()\"\n/>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-link',\n templateUrl: 'link.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $href = input('', { alias: 'href' });\n $target = input('_blank', { alias: 'target' });\n $linkStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n color: '#067df7',\n textDecoration: 'none',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<a\n [style]=\"$linkStyle()\"\n [class]=\"$styleClass()\"\n [href]=\"$href()\"\n [target]=\"$target()\"\n ><ng-content></ng-content\n></a>\n","import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { escapeForRawComponent } from '../../utils';\n\n@Component({\n selector: 'ng-email-raw',\n templateUrl: 'raw.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class RawComponent {\n $disablePlainTextOutput = input(false, { alias: 'disablePlainTextOutput' });\n $content = input('', { alias: 'content' });\n $escapingContent = computed(() => `<!--${escapeForRawComponent(this.$content())}-->`);\n}\n","<angular-email-raw [attr.data-skip]=\"$disablePlainTextOutput()\">\n <noscript [attr.data-html]=\"$escapingContent()\"></noscript>\n</angular-email-raw>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RawComponent } from '../raw/raw.component';\n\n@Component({\n selector: 'ng-email-preview',\n templateUrl: 'preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RawComponent],\n})\nexport class PreviewComponent {\n $preview = input('', { alias: 'preview' });\n\n maxLength = 150;\n $text = computed(() => {\n const preview = this.$preview();\n if (preview.length >= this.maxLength) return null;\n const whiteSpaceCodes = ' ‌​‍‎‏';\n return whiteSpaceCodes.repeat(this.maxLength - preview.length);\n });\n}\n","@let text = $text();\n\n<div\n id=\"__angular-email-preview\"\n style=\"display: none; overflow: hidden; line-height: 1px; opacity: 0; max-height: 0; max-width: 0\"\n>\n {{ $preview() }}\n @if (text) {\n <ng-email-raw\n [content]=\"text\"\n [disablePlainTextOutput]=\"false\"\n ></ng-email-raw>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { styleToString } from '../../utils';\n\n@Component({\n selector: 'ng-email-section',\n templateUrl: 'section.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class SectionComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $sectionStyle = computed(() => {\n return styleToString({\n width: '100%',\n ...(this.$style() ?? {}),\n });\n });\n}\n","<table\n [align]=\"'center'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n width=\"100%\"\n role=\"presentation\"\n [style]=\"$sectionStyle()\"\n [class]=\"$styleClass()\"\n>\n <tbody>\n <tr>\n <td>\n <ng-content />\n </td>\n </tr>\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-text',\n templateUrl: 'text.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $textStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n fontSize: '14px',\n lineHeight: '24px',\n margin: '16px 0',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<p\n [style]=\"$textStyle()\"\n [class]=\"$styleClass()\"\n>\n <ng-content></ng-content>\n</p>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { provideExperimentalZonelessChangeDetection, Type } from '@angular/core';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { provideServerRendering, renderApplication } from '@angular/platform-server';\nimport { render as maizzleRender } from '@maizzle/framework';\nimport * as cheerio from 'cheerio/slim';\nimport { convert } from 'html-to-text';\nimport { readFileSync } from 'node:fs';\nimport prettyPrint from 'pretty';\nimport { Config } from 'tailwindcss';\nimport { HTMLElements, unescapeForRawComponent } from './utils';\n\ntype Render = {\n component: Type<unknown>;\n /** Component selector */\n selector: string;\n props?: Record<string, any>;\n options?: {\n plainText?: boolean;\n pretty?: boolean;\n cssFilePaths?: string[];\n /** path or configuration object */\n tailwindConfig?: string | Partial<Config>;\n signalInputsPrefix?: string;\n };\n};\n\n/**\n * Renders an Angular component to HTML and applies transformations.\n *\n * @param component - The Angular component to render.\n * @param selector - The Component selector.\n * @param options - Optional rendering options.\n *\n * @returns {Promise<string>} The rendered HTML or plain text.\n */\nexport const render = async ({ component, selector, props, options }: Render) => {\n const normalizedHtml = await renderNgComponent(component, selector, props, options?.signalInputsPrefix);\n const html = applyHtmlTransformations(normalizedHtml, options?.cssFilePaths);\n if (options?.plainText) {\n return renderAsPlainText(html);\n }\n const doctype =\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">';\n const tailwindConfig = await getTailwindConfig(options?.tailwindConfig);\n const markup = await inlineCss(html, !!options?.pretty, tailwindConfig);\n const document = `${doctype}${markup}`;\n return document;\n};\n\n/**\n * Converts the given markup string to plain text while skipping certain elements.\n *\n * @param markup - The HTML markup string to be converted to plain text.\n * @returns The plain text representation of the given markup.\n *\n * The conversion skips the following elements:\n * - `<img>` tags\n * - Elements with the ID `__angular-email-preview`\n */\nconst renderAsPlainText = (markup: string) => {\n return convert(markup, {\n decodeEntities: true,\n formatters: {\n raw: (elem, _walk, builder) => {\n if (elem.children.length && elem.children[0].type === 'comment') {\n builder.addInline(unescapeForRawComponent(elem.children[0].data!.trim()));\n }\n },\n },\n selectors: [\n { selector: '[data-skip=\"true\"]', format: 'skip' },\n { selector: 'img', format: 'skip' },\n { selector: '#__angular-email-preview', format: 'skip' },\n {\n format: 'raw',\n options: {},\n selector: 'angular-email-raw',\n },\n ],\n });\n};\n\n/**\n * Renders an Angular component to html.\n *\n * @param component - The Angular component to render.\n * @param selector - The CSS selector for the component.\n * @returns A promise that resolves to the rendered HTML string.\n */\nconst renderNgComponent = async (\n component: Type<unknown>,\n selector: string,\n props?: Record<string, any>,\n signalInputsPrefix?: string,\n) => {\n const bootstrap = async () => {\n const appRef = await bootstrapApplication(component, {\n providers: [provideExperimentalZonelessChangeDetection(), provideServerRendering()],\n });\n appRef.components.forEach((componentRef) => {\n Object.entries(props ?? {}).forEach(([key, value]) => {\n if (key in componentRef.instance || `${signalInputsPrefix ?? ''}${key}` in componentRef.instance) {\n componentRef.setInput(key, value);\n }\n });\n componentRef.changeDetectorRef.detectChanges();\n });\n return appRef;\n };\n const ngHtml = await renderApplication(bootstrap, {\n document: `<${selector}></${selector}>`,\n });\n return normalizeNgHtml(ngHtml, selector);\n};\n\n/**\n * Normalizes the provided HTML string by extracting the content within the specified selector\n * and removing any non-standard HTML elements.\n *\n * @param html - The HTML string to be normalized.\n * @param selector - The CSS selector used to identify the content to be extracted.\n * @returns The normalized HTML string with the content of the specified selector and without non-standard HTML elements.\n */\nconst normalizeNgHtml = (html: string, selector: string): string => {\n const nsHtmlRegex = new RegExp(`<(?!(\\\\/?(${HTMLElements.join('|')})))[^>]+>`, 'gm');\n return html\n .replace(new RegExp(`.+<${selector}[\\\\s\\\\S]*?>([\\\\s\\\\S]*?)<\\\\/${selector}>.+`, 'gm'), '$1')\n .replace(nsHtmlRegex, '');\n};\n\n/**\n * Applies HTML transformations to the provided HTML string.\n *\n * This function uses Cheerio to load the HTML and perform transformations such as\n * replacing placeholders and applying styles from the provided CSS file paths.\n * It also ensures that certain HTML entities are replaced with their corresponding\n * characters.\n *\n * @param html - The HTML string to transform.\n * @param cssFilePaths - An optional array of CSS file paths to apply styles from.\n * @returns The transformed HTML string.\n */\nconst applyHtmlTransformations = (html: string, cssFilePaths?: string[]) => {\n const $ = cheerio.load(html, {\n xml: { lowerCaseAttributeNames: false, lowerCaseTags: false },\n });\n replacePlaceholders($);\n applyStyles($, cssFilePaths ?? []);\n return $.html()\n .replaceAll('\\n', '')\n .replace(/\\s+/g, ' ')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('$', '$');\n};\n\n/**\n * Replaces elements with the `data-html` attribute with their corresponding HTML content.\n *\n * This function iterates over all elements that have the `data-html` attribute,\n * retrieves the value of the attribute, and replaces the element with the HTML content\n * specified in the attribute.\n *\n * @param $ - The Cheerio API instance used to manipulate the HTML.\n */\nconst replacePlaceholders = ($: cheerio.CheerioAPI) => {\n $('[data-html]').each(function () {\n const content = $(this).attr('data-html');\n if (content) {\n $(this).replaceWith(`${content}`);\n }\n });\n};\n\n/**\n * Applies the styles from the specified CSS file paths to the HTML document.\n *\n * @param $ - The Cheerio API instance used to manipulate the HTML document.\n * @param cssFilePaths - An array of file paths to the CSS files to be applied.\n */\nconst applyStyles = ($: cheerio.CheerioAPI, cssFilePaths: string[]) => {\n (cssFilePaths ?? []).forEach((path) => {\n const styleContent = readFileSync(path, { encoding: 'utf-8' });\n $('head').append(`<style>${styleContent}</style>`);\n });\n};\n\n/**\n * Inlines CSS into the provided HTML string using Maizzle and Tailwind CSS.\n *\n * @param html - The HTML string to process.\n * @param pretty - Whether to prettify the output HTML. Defaults to `false`.\n * @param tailwindConfig - Optional Tailwind CSS configuration to use. If not provided, the `tailwindcss-preset-email` preset will be used.\n * @returns A promise that resolves to the processed HTML string with inlined CSS.\n */\nconst inlineCss = async (html: string, pretty: boolean = false, tailwindConfig?: Partial<Config>) => {\n //@ts-expect-error: missing exports\n const tailwindcssPresetEmail = (await import('tailwindcss-preset-email')).default;\n return (\n await maizzleRender(html, {\n afterTransformers: ({ html }) => {\n const renderedHtml = unescapeForRawComponent(\n html\n .replaceAll('\\n', '')\n .replace(/\\s+/g, ' ')\n .replaceAll('$', '$')\n .replace(/<angular-email-raw[\\s\\S]*?><!--(.*?)--><\\/angular-email-raw>/gm, `$1`),\n );\n if (pretty) return prettyPrint(renderedHtml);\n return renderedHtml;\n },\n css: {\n shorthand: true,\n inline: {\n applyWidthAttributes: true,\n applyHeightAttributes: true,\n },\n purge: {\n doNotRemoveHTMLCommentsWhoseOpeningTagContains: ['[if', '[endif', '<#if', '</#if', '<#else', '<#elseif'],\n removeHTMLComments: false,\n },\n tailwind: {\n presets: tailwindConfig ? [tailwindConfig] : [tailwindcssPresetEmail],\n content: [\n {\n raw: html,\n extension: 'html',\n },\n ],\n },\n },\n prettify: false,\n minify: true,\n })\n ).html;\n};\n\n/**\n * Asynchronously retrieves the Tailwind CSS configuration.\n *\n * @param tailwindConfig - The path to the Tailwind CSS configuration file or a partial configuration object.\n * @returns A promise that resolves to a partial Tailwind CSS configuration object, or `undefined` if no configuration is provided.\n */\nconst getTailwindConfig = async (tailwindConfig?: string | Partial<Config>) => {\n let config: Partial<Config> | undefined;\n if (tailwindConfig) {\n if (typeof tailwindConfig === 'string') {\n config = (await import(tailwindConfig)).default;\n } else {\n config = tailwindConfig;\n }\n }\n return config;\n};\n","/*\n * Public API Surface of angular-email\n */\n\nexport * from './lib/components/background/background.component';\nexport * from './lib/components/body/body.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/color-scheme/color-scheme.component';\nexport * from './lib/components/column/column.component';\nexport * from './lib/components/conditional/conditional.component';\nexport * from './lib/components/container/container.component';\nexport * from './lib/components/head/head.component';\nexport * from './lib/components/heading/heading.component';\nexport * from './lib/components/hr/hr.component';\nexport * from './lib/components/html/html.component';\nexport * from './lib/components/img/img.component';\nexport * from './lib/components/link/link.component';\nexport * from './lib/components/preview/preview.component';\nexport * from './lib/components/raw/raw.component';\nexport * from './lib/components/section/section.component';\nexport * from './lib/components/text/text.component';\nexport * from './lib/render';\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["maizzleRender"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keycloakify-angular-email.mjs","sources":["../../../projects/angular-email/src/lib/components/background/background.component.ts","../../../projects/angular-email/src/lib/components/background/background.component.html","../../../projects/angular-email/src/lib/components/body/body.component.ts","../../../projects/angular-email/src/lib/components/body/body.component.html","../../../projects/angular-email/src/lib/components/button/button.component.ts","../../../projects/angular-email/src/lib/components/button/button.component.html","../../../projects/angular-email/src/lib/components/color-scheme/color-scheme.component.ts","../../../projects/angular-email/src/lib/components/color-scheme/color-scheme.component.html","../../../projects/angular-email/src/lib/components/column/column.component.ts","../../../projects/angular-email/src/lib/components/column/column.component.html","../../../projects/angular-email/src/lib/components/conditional/conditional.component.ts","../../../projects/angular-email/src/lib/components/conditional/conditional.component.html","../../../projects/angular-email/src/lib/components/container/container.component.ts","../../../projects/angular-email/src/lib/components/container/container.component.html","../../../projects/angular-email/src/lib/components/head/head.component.ts","../../../projects/angular-email/src/lib/components/head/head.component.html","../../../projects/angular-email/src/lib/utils.ts","../../../projects/angular-email/src/lib/components/heading/heading.component.ts","../../../projects/angular-email/src/lib/components/heading/heading.component.html","../../../projects/angular-email/src/lib/components/hr/hr.component.ts","../../../projects/angular-email/src/lib/components/hr/hr.component.html","../../../projects/angular-email/src/lib/components/html/html.component.ts","../../../projects/angular-email/src/lib/components/html/html.component.html","../../../projects/angular-email/src/lib/components/img/img.component.ts","../../../projects/angular-email/src/lib/components/img/img.component.html","../../../projects/angular-email/src/lib/components/link/link.component.ts","../../../projects/angular-email/src/lib/components/link/link.component.html","../../../projects/angular-email/src/lib/components/raw/raw.component.ts","../../../projects/angular-email/src/lib/components/raw/raw.component.html","../../../projects/angular-email/src/lib/components/preview/preview.component.ts","../../../projects/angular-email/src/lib/components/preview/preview.component.html","../../../projects/angular-email/src/lib/components/section/section.component.ts","../../../projects/angular-email/src/lib/components/section/section.component.html","../../../projects/angular-email/src/lib/components/text/text.component.ts","../../../projects/angular-email/src/lib/components/text/text.component.html","../../../projects/angular-email/src/lib/render.ts","../../../projects/angular-email/src/index.ts","../../../projects/angular-email/src/keycloakify-angular-email.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-background',\n templateUrl: 'background.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class BackgroundComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n\n $width = input<number>(0, { alias: 'width' });\n $height = input<number>(0, { alias: 'height' });\n $src = input<string>(undefined, { alias: 'src' });\n $bgRepeat = input<'repeat' | 'no-repeat'>('no-repeat', { alias: 'bgRepeat' });\n $bgColor = input<string>(undefined, { alias: 'bgColor' });\n\n $bgStyle = computed(() => ({ backgroundRepeat: this.$bgRepeat(), ...(this.$style() ?? {}) }));\n}\n","@let width = $width();\n@let height = $height();\n\n<table\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n [border]=\"0\"\n width=\"100%\"\n [attr.height]=\"height\"\n role=\"presentation\"\n>\n <tr>\n <td\n [align]=\"'top'\"\n [width]=\"width\"\n [height]=\"height && width ? height : undefined\"\n [attr.bgcolor]=\"$bgColor()\"\n [attr.background]=\"$src()\"\n [style]=\"$bgStyle()\"\n [class]=\"$styleClass()\"\n >\n <ng-content />\n </td>\n </tr>\n</table>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-body',\n templateUrl: 'body.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BodyComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n}\n","<body\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</body>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-button',\n templateUrl: 'button.component.html',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | null>(null, { alias: 'styleClass' });\n\n $href = input<string>(undefined, { alias: 'href' });\n $textContent = input.required<string>({ alias: 'textContent' });\n $width = input<number>(undefined, { alias: 'width' });\n $height = input<number>(undefined, { alias: 'height' });\n $borderRadius = input(0, { alias: 'borderRadius' });\n $textColor = input<string>(undefined, { alias: 'textColor' });\n $backgroundColor = input<string>(undefined, { alias: 'backgroundColor' });\n $borderColor = input<string>(undefined, { alias: 'borderColor' });\n $borderSize = input(1, { alias: 'borderSize' });\n $fontSize = input(16, { alias: 'fontSize' });\n $align = input<string>('left', { alias: 'align' });\n $withBackground = input(false, { alias: 'withBackground' });\n\n $arcsize = computed(() => Math.floor((this.$borderRadius() / (this.$height() ?? 1)) * 100));\n $lineHeight = computed(() =>\n this.$borderSize() ? (this.$height() ?? 0) - 2 * this.$borderSize() : (this.$height() ?? 0),\n );\n\n private $baseStyle = computed(() => ({\n '-webkit-text-size-adjust': 'none',\n borderRadius: this.$borderRadius(),\n display: 'inline-block',\n fontSize: this.$fontSize(),\n lineHeight: `${this.$lineHeight()}px`,\n maxWidth: this.$width(),\n textAlign: 'center',\n textDecoration: 'none',\n width: '100%',\n }));\n\n private $borderStyles = computed(() => ({\n border: `${this.$borderSize()}px solid ${this.$borderColor()}`,\n msoBorderAlt: 'none',\n }));\n\n private $propStyles = computed(() => ({\n // border styles\n ...(this.$borderColor() ? this.$borderStyles() : {}),\n // background styles\n ...(this.$backgroundColor() ? { backgroundColor: this.$backgroundColor() } : {}),\n // text styles\n ...(this.$textColor() ? { color: this.$textColor() } : {}),\n }));\n\n $withBackgroundStyle = computed(() => ({\n ...this.$baseStyle(),\n // background styles\n ...(this.$backgroundColor() ? { backgroundColor: this.$backgroundColor() } : {}),\n // text styles\n ...(this.$textColor() ? { color: this.$textColor() } : {}),\n ...(this.$style() ?? {}),\n ...(this.$withBackground() ? {} : { msoHide: 'all' }),\n }));\n\n $withoutBackgroundStyle = computed(() => ({\n ...this.$baseStyle(),\n // background styles\n ...this.$propStyles(),\n ...(this.$style() ?? {}),\n ...(this.$withBackground() ? {} : { msoHide: 'all' }),\n }));\n\n $noBgInnerHtml = computed(() => {\n const href = this.$href();\n const borderColor = this.$borderColor();\n const borderSize = this.$borderSize();\n const height = this.$height();\n const width = this.$width();\n const arcsize = this.$arcsize();\n const backgroundColor = this.$backgroundColor();\n const fontSize = this.$fontSize();\n const textColor = this.$textColor();\n const textContent = this.$textContent();\n return `<!--[if mso]>\n <v:roundrect href=\"${href}\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w=\"urn:schemas-microsoft-com:office:word\" style=\"${height !== undefined ? `height:${height}px` : ''};v-text-anchor:middle;${width !== undefined ? `height:${width}px` : ''};\" arcsize=\"${arcsize}%\" ${\n borderColor ? `strokecolor=${borderColor}` : ''\n } ${borderSize ? `strokeweight=\"${borderSize}px\"` : `stroke=\"false\"`} ${\n backgroundColor ? `fillcolor=${backgroundColor}` : `fill=\"false\"`\n }>\n <w:anchorlock/>\n <center style=\"font-size:${fontSize}px;${textColor ? `color:${textColor};` : ''}\">\n ${textContent}\n </center></v:roundrect>\n <![endif]-->`;\n });\n}\n","@let withBackground = $withBackground();\n@let align = $align();\n@let href = $href();\n@let height = $height();\n@let width = $width();\n@let borderRadius = $borderRadius();\n\n<ng-template #child><ng-content></ng-content></ng-template>\n\n<table\n [width]=\"'100%'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n style=\"border-collapse: collapse\"\n role=\"presentation\"\n>\n <tr>\n <td [align]=\"align\">\n @if (withBackground) {\n <table\n [align]=\"align\"\n [width]=\"width\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n role=\"presentation\"\n [style]=\"{\n border: $borderSize() + 'px solid ' + ($borderColor() ?? 'inherit'),\n borderRadius,\n }\"\n >\n <tr>\n <td\n [attr.bgcolor]=\"$backgroundColor()\"\n [width]=\"width\"\n [height]=\"height\"\n [style]=\"{\n borderRadius,\n height,\n width,\n maxWidth: width,\n textAlign: 'center',\n }\"\n >\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n </td>\n </tr>\n </table>\n } @else {\n <noscript [attr.data-html]=\"$noBgInnerHtml()\"></noscript>\n <a\n [href]=\"href\"\n [class]=\"$styleClass()\"\n [style]=\"$withoutBackgroundStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"child\"></ng-container>\n </a>\n }\n </td>\n </tr>\n</table>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type ColorSchemeMode =\n | 'dark'\n /**\n * The email client will only ever render the content in the dark color scheme and forbids the\n * email client from overriding the color scheme.\n */\n | 'dark only'\n | 'light'\n /**\n * The email client will choose the light or dark theme to match the user’s preference.\n * If the user’s preference does not match something in the list, the email client will choose\n * which mode to display.\n */\n | 'light dark'\n /**\n * The email client will choose the first of the listed schemes that it supports taking user\n * preference into account and forbids the email client from overriding the color scheme.\n */\n | 'light dark only'\n /**\n * The email client will only ever render the content in the light color scheme and forbids the\n * email client from overriding the color scheme.\n */\n | 'light only'\n /**\n * Indicates that the email supports the page’s supported color schemes, if they are set, or\n * that it supports no color schemes at all otherwise.\n */\n | 'normal';\n\n@Component({\n selector: 'ng-email-color-scheme',\n templateUrl: 'color-scheme.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorSchemeComponent {\n $mode = input<ColorSchemeMode>('normal', { alias: 'mode' });\n $style = computed(\n () => `<style>:root { color-scheme: ${this.$mode()}; supported-color-schemes: ${this.$mode()}; }</style>`,\n );\n}\n","@let mode = $mode();\n\n<meta\n name=\"color-scheme\"\n [content]=\"mode\"\n/>\n<meta\n name=\"supported-color-schemes\"\n [content]=\"mode\"\n/>\n\n<noscript [attr.data-html]=\"$style()\"></noscript>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-column',\n templateUrl: 'column.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class ColumnComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $bgImage = input<string>(undefined, { alias: 'bgImage' });\n $bgColor = input<string>(undefined, { alias: 'bgColor' });\n}\n","<td\n [attr.background]=\"$bgImage()\"\n [attr.bgcolor]=\"$bgColor()\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n role=\"presentation\"\n>\n <ng-content />\n</td>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-conditional',\n templateUrl: 'conditional.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class ConditionalComponent {\n $expression = input(undefined, { alias: 'expression' });\n $mso = input<boolean>(undefined, { alias: 'mso' });\n\n noMsoInnerHtmlPre = '<!--[if !mso]><!-->';\n noMsoInnerHtmlPost = '<!--<![endif]-->';\n\n $msoInnerHtmlPre = computed(() => `<!--[if ${this.$expression() ?? 'mso'}]>`);\n msoInnerHtmlPost = '<![endif]-->';\n\n constructor() {\n effect(() => {\n if (typeof this.$expression() === 'undefined' && typeof this.$mso() === 'undefined')\n throw new RangeError('angular-email: Conditional expects the `expression` or `mso` prop to be defined');\n\n if (typeof this.$expression() !== 'undefined' && typeof this.$mso() !== 'undefined')\n throw new RangeError(\n 'angular-email: Conditional expects the `expression` or `mso` prop to be defined, not both',\n );\n });\n }\n}\n","@let mso = $mso();\n\n@if (!mso) {\n <noscript [attr.data-html]=\"noMsoInnerHtmlPre\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"noMsoInnerHtmlPost\"></noscript>\n} @else {\n <noscript [attr.data-html]=\"$msoInnerHtmlPre()\"></noscript>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <noscript [attr.data-html]=\"msoInnerHtmlPost\"></noscript>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-container',\n templateUrl: 'container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class ContainerComponent {\n random = Math.random();\n document = inject(DOCUMENT);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $alignment = input('center', { alias: 'alignment' });\n $disableDefaultStyle = input(false, { alias: 'disableDefaultStyle' });\n $containerWidth = input(600, { alias: 'containerWidth' });\n\n $containerStyle = computed(() => ({\n ...(this.$disableDefaultStyle() ? {} : { maxWidth: `${this.$containerWidth()}px` }),\n ...this.$style(),\n }));\n\n $trStyle = computed(() => ({\n ...(this.$disableDefaultStyle() ? {} : { width: '100%' }),\n }));\n\n $innerHtmlPre = computed(\n () =>\n `<!--[if mso]><table align=\"${this.$alignment()}\" width=\"${this.$containerWidth()}\" style=\"border-spacing: 0; width:${this.$containerWidth()}px;\" role=\"presentation\"><tr><td><![endif]-->`,\n );\n\n $innerHtmlPost = computed(() => `<!--[if mso]></td></tr></table><![endif]-->`);\n}\n","@let containerWidth = $containerWidth();\n@let alignment = $alignment();\n\n<div [style]=\"{ tableLayout: 'fixed', width: '100%' }\">\n <div [style]=\"{ margin: '0 auto', maxWidth: containerWidth }\">\n <noscript [attr.data-html]=\"$innerHtmlPre()\"></noscript>\n <table\n [align]=\"alignment\"\n [width]=\"'100%'\"\n role=\"presentation\"\n [cellSpacing]=\"0\"\n [cellPadding]=\"0\"\n [border]=\"0\"\n [style]=\"$containerStyle()\"\n [class]=\"$styleClass()\"\n >\n <tbody>\n <tr [style]=\"$trStyle()\">\n <td [align]=\"alignment\">\n <ng-content></ng-content>\n </td>\n </tr>\n </tbody>\n </table>\n <noscript [attr.data-html]=\"$innerHtmlPost()\"></noscript>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { ConditionalComponent } from '../conditional/conditional.component';\n\n@Component({\n selector: 'ng-email-head',\n templateUrl: 'head.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ConditionalComponent],\n schemas: [NO_ERRORS_SCHEMA],\n})\nexport class HeadComponent {\n $enableFormatDetection = input(false, { alias: 'enableFormatDetection' });\n xml = `\\n<xml><o:OfficeDocumentSettings><o:AllowPNG /><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml>\\n`;\n}\n","@let enableFormatDetection = $enableFormatDetection();\n\n<head>\n <meta\n http-equiv=\"content-type\"\n content=\"text/html; charset=UTF-8\"\n />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, user-scalable=yes\"\n />\n <meta name=\"x-apple-disable-message-reformatting\" />\n @if (!enableFormatDetection) {\n <meta\n name=\"format-detection\"\n content=\"telephone=no, date=no, address=no, email=no, url=no\"\n />\n }\n <ng-content></ng-content>\n <ng-email-conditional [mso]=\"true\">\n <noscript [attr.data-html]=\"xml\"></noscript>\n </ng-email-conditional>\n</head>\n","export const copyTextToClipboard = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n } catch {\n throw new Error('Not able to copy');\n }\n};\n\nexport const pxToPt = (px: string): number | null => (isNaN(Number(px)) ? null : (parseInt(px, 10) * 3) / 4);\n\nexport interface Margin {\n m?: string;\n mx?: string;\n my?: string;\n mt?: string;\n mr?: string;\n mb?: string;\n ml?: string;\n}\n\nexport const withMargin = (props: Margin) =>\n [\n withSpace(props.m, ['margin']),\n withSpace(props.mx, ['marginLeft', 'marginRight']),\n withSpace(props.my, ['marginTop', 'marginBottom']),\n withSpace(props.mt, ['marginTop']),\n withSpace(props.mr, ['marginRight']),\n withSpace(props.mb, ['marginBottom']),\n withSpace(props.ml, ['marginLeft']),\n ].filter((s) => Object.keys(s).length)[0];\n\nconst withSpace = (value: string | undefined, properties: string[]) => {\n return properties.reduce((styles, property) => {\n if (value) {\n return { ...styles, [property]: `${value}px` };\n }\n return styles;\n }, {});\n};\n\n// https://stackoverflow.com/a/61410824\n\nexport const styleToString = (style: Record<string, string | number | null> | undefined | null) => {\n if (!style) return '';\n return Object.keys(style).reduce(\n (acc, key) =>\n acc +\n key\n .split(/(?=[A-Z])/)\n .join('-')\n .toLowerCase() +\n ':' +\n style[key] +\n ';',\n '',\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const classToString = (style: string | string[] | Set<string> | Record<string, any> | null | undefined) => {\n if (!style) return '';\n if (typeof style === 'string') return style;\n if (Array.isArray(style)) return style.join(' ');\n return Object.keys(style).reduce(\n (acc, key) =>\n acc +\n key\n .split(/(?=[A-Z])/)\n .join('-')\n .toLowerCase() +\n ':' +\n style[key as keyof typeof style] +\n ';',\n '',\n );\n};\n\nexport const unreachable = (\n condition: never,\n message = `Entered unreachable code. Received '${condition}'.`,\n): never => {\n throw new TypeError(message);\n};\n\nexport const HTMLElements = [\n '!DOCTYPE',\n 'a',\n 'abbr',\n 'abbr',\n //\"acronym\", // NOT HTML5\n 'address',\n //\"applet\", // NOT HTML5 (NOT MAJORLY SUPPORTED)\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n //\"basefont\", // NOT HTML5\n 'bdi',\n 'bdo',\n //\"big\", // NOT HTML5\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n //\"center\", // NOT HTML5\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n //\"dir\", NOT HTML5 (use \"ul\" instead)\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n //\"font\", // NOT HTML5 (use CSS)\n 'footer',\n 'form',\n //\"frame\", // NOT HTML5\n //\"frameset\", // NOT HTML5\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'meta',\n 'meter',\n 'nav',\n //\"noframes\", // NOT HTML5\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n //\"strike\", NOT HTML5 (Use <del> or <s> instead)\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'svg',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n //\"tt\", // NOT HTML5 (Use CSS)\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n // xml\n 'xml',\n 'o:OfficeDocumentSettings',\n 'o:AllowPNG',\n 'o:PixelsPerInch',\n 'angular-email-raw',\n];\n\nconst START_TAG = '__COMMENT_START';\nconst END_TAG = '__COMMENT_END';\nexport function escapeForRawComponent(input: string): string {\n // escape comment sequences\n return input.replace(/<!--/g, START_TAG).replace(/-->/g, END_TAG);\n}\n\nexport function unescapeForRawComponent(input: string): string {\n return input.replace(new RegExp(START_TAG, 'g'), '<!--').replace(new RegExp(END_TAG, 'g'), '-->');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { styleToString, withMargin } from '../../utils';\n\n@Component({\n selector: 'ng-email-heading',\n templateUrl: 'heading.component.html',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeadingComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $as = input<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>('h1', { alias: 'as' });\n $m = input<string>(undefined, { alias: 'm' });\n $mx = input<string>(undefined, { alias: 'mx' });\n $my = input<string>(undefined, { alias: 'my' });\n $mt = input<string>(undefined, { alias: 'mt' });\n $mr = input<string>(undefined, { alias: 'mr' });\n $mb = input<string>(undefined, { alias: 'mb' });\n $ml = input<string>(undefined, { alias: 'ml' });\n $headingStyle = computed(() => {\n return styleToString({\n ...withMargin({\n m: this.$m(),\n mx: this.$mx(),\n my: this.$my(),\n mt: this.$mt(),\n mr: this.$mr(),\n mb: this.$mb(),\n ml: this.$ml(),\n }),\n ...(this.$style() ?? {}),\n });\n });\n}\n","@let heading = $as();\n@let style = $headingStyle();\n@let styleClass = $styleClass();\n@if (heading === 'h1') {\n <h1\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h1>\n} @else if (heading === 'h2') {\n <h2\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h2>\n} @else if (heading === 'h3') {\n <h3\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h3>\n} @else if (heading === 'h4') {\n <h4\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h4>\n} @else if (heading === 'h5') {\n <h5\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h5>\n} @else if (heading === 'h6') {\n <h6\n [style]=\"style\"\n [class]=\"styleClass\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </h6>\n} @else {\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-hr',\n templateUrl: 'hr.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HrComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $hrStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n width: '100%',\n border: 'none',\n borderTop: '1px solid #eaeaea',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<hr\n [style]=\"$hrStyle()\"\n [class]=\"$styleClass()\"\n/>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-html',\n templateUrl: 'html.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlComponent {\n $lang = input('en', { alias: 'lang' });\n $dir = input('ltr', { alias: 'dir' });\n $enableVML = input(true, { alias: 'enableVML' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n}\n","@let enableVML = $enableVML();\n@let lang = $lang();\n@let dir = $dir();\n\n<html\n id=\"__angular-email\"\n [lang]=\"lang\"\n [dir]=\"dir\"\n [attr.xmlns:o]=\"enableVML ? 'urn:schemas-microsoft-com:office:office' : undefined\"\n [attr.xmlns:v]=\"enableVML ? 'urn:schemas-microsoft-com:vml' : undefined\"\n [style]=\"$style()\"\n [class]=\"$styleClass()\"\n>\n <ng-content />\n</html>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-img',\n templateUrl: 'img.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImgComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $alt = input('', { alias: 'alt' });\n $src = input('', { alias: 'src' });\n $width = input('0', { alias: 'width' });\n $height = input('0', { alias: 'height' });\n $imageStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n display: 'block',\n outline: 'none',\n border: 'none',\n textDecoration: 'none',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<img\n [style]=\"$imageStyle()\"\n [class]=\"$styleClass()\"\n [alt]=\"$alt()\"\n [src]=\"$src()\"\n [width]=\"$width()\"\n [height]=\"$height()\"\n/>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-link',\n templateUrl: 'link.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $href = input('', { alias: 'href' });\n $target = input('_blank', { alias: 'target' });\n $linkStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n color: '#067df7',\n textDecoration: 'none',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<a\n [style]=\"$linkStyle()\"\n [class]=\"$styleClass()\"\n [href]=\"$href()\"\n [target]=\"$target()\"\n ><ng-content></ng-content\n></a>\n","import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { escapeForRawComponent } from '../../utils';\n\n@Component({\n selector: 'ng-email-raw',\n templateUrl: 'raw.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class RawComponent {\n $disablePlainTextOutput = input(false, { alias: 'disablePlainTextOutput' });\n $content = input('', { alias: 'content' });\n $escapingContent = computed(() => `<!--${escapeForRawComponent(this.$content())}-->`);\n}\n","<angular-email-raw [attr.data-skip]=\"$disablePlainTextOutput()\">\n <noscript [attr.data-html]=\"$escapingContent()\"></noscript>\n</angular-email-raw>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RawComponent } from '../raw/raw.component';\n\n@Component({\n selector: 'ng-email-preview',\n templateUrl: 'preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RawComponent],\n})\nexport class PreviewComponent {\n $preview = input('', { alias: 'preview' });\n\n maxLength = 150;\n $text = computed(() => {\n const preview = this.$preview();\n if (preview.length >= this.maxLength) return null;\n const whiteSpaceCodes = ' ‌​‍‎‏';\n return whiteSpaceCodes.repeat(this.maxLength - preview.length);\n });\n}\n","@let text = $text();\n\n<div\n id=\"__angular-email-preview\"\n style=\"display: none; overflow: hidden; line-height: 1px; opacity: 0; max-height: 0; max-width: 0\"\n>\n {{ $preview() }}\n @if (text) {\n <ng-email-raw\n [content]=\"text\"\n [disablePlainTextOutput]=\"false\"\n ></ng-email-raw>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { styleToString } from '../../utils';\n\n@Component({\n selector: 'ng-email-section',\n templateUrl: 'section.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class SectionComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $sectionStyle = computed(() => {\n return styleToString({\n width: '100%',\n ...(this.$style() ?? {}),\n });\n });\n}\n","<table\n [align]=\"'center'\"\n [border]=\"0\"\n [cellPadding]=\"0\"\n [cellSpacing]=\"0\"\n width=\"100%\"\n role=\"presentation\"\n [style]=\"$sectionStyle()\"\n [class]=\"$styleClass()\"\n>\n <tbody>\n <tr>\n <td>\n <ng-content />\n </td>\n </tr>\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ng-email-text',\n templateUrl: 'text.component.html',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $style = input<Record<string, any> | null | undefined>(null, { alias: 'style' });\n $styleClass = input<string | undefined>(undefined, { alias: 'styleClass' });\n $disableDefaultStyle = input<boolean>(false, { alias: 'disableDefaultStyle' });\n $textStyle = computed(() => {\n return {\n ...(this.$disableDefaultStyle()\n ? {}\n : {\n fontSize: '14px',\n lineHeight: '24px',\n margin: '16px 0',\n }),\n ...(this.$style() ?? {}),\n };\n });\n}\n","<p\n [style]=\"$textStyle()\"\n [class]=\"$styleClass()\"\n>\n <ng-content></ng-content>\n</p>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { provideExperimentalZonelessChangeDetection, Type } from '@angular/core';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { provideServerRendering, renderApplication } from '@angular/platform-server';\nimport { render as maizzleRender } from '@maizzle/framework';\nimport * as cheerio from 'cheerio/slim';\nimport { convert } from 'html-to-text';\nimport prettyPrint from 'pretty';\nimport { Config } from 'tailwindcss';\nimport { HTMLElements, unescapeForRawComponent } from './utils';\n\ntype Render = {\n component: Type<unknown>;\n /** Component selector */\n selector: string;\n props?: Record<string, any>;\n options?: {\n plainText?: boolean;\n pretty?: boolean;\n /** tailwind configuration object */\n tailwindConfig?: Partial<Config>;\n signalInputsPrefix?: string;\n };\n};\n\n/**\n * Renders an Angular component to HTML and applies transformations.\n *\n * @param component - The Angular component to render.\n * @param selector - The Component selector.\n * @param options - Optional rendering options.\n *\n * @returns {Promise<string>} The rendered HTML or plain text.\n */\nexport const render = async ({ component, selector, props, options }: Render) => {\n const { styles, html: normalizedHtml } = await renderNgComponent(\n component,\n selector,\n props,\n options?.signalInputsPrefix,\n );\n const html = applyHtmlTransformations(normalizedHtml, styles);\n if (options?.plainText) {\n return renderAsPlainText(html);\n }\n const doctype =\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">';\n const tailwindConfig = options?.tailwindConfig;\n const markup = await inlineCss(html, !!options?.pretty, tailwindConfig);\n const document = `${doctype}${markup}`;\n return document;\n};\n\n/**\n * Converts the given markup string to plain text while skipping certain elements.\n *\n * @param markup - The HTML markup string to be converted to plain text.\n * @returns The plain text representation of the given markup.\n *\n * The conversion skips the following elements:\n * - `<img>` tags\n * - Elements with the ID `__angular-email-preview`\n */\nconst renderAsPlainText = (markup: string) => {\n return convert(markup, {\n decodeEntities: true,\n formatters: {\n raw: (elem, _walk, builder) => {\n if (elem.children.length && elem.children[0].type === 'comment') {\n builder.addInline(unescapeForRawComponent(elem.children[0].data!.trim()));\n }\n },\n },\n selectors: [\n { selector: '[data-skip=\"true\"]', format: 'skip' },\n { selector: 'img', format: 'skip' },\n { selector: '#__angular-email-preview', format: 'skip' },\n {\n format: 'raw',\n options: {},\n selector: 'angular-email-raw',\n },\n ],\n });\n};\n\n/**\n * Renders an Angular component to html.\n *\n * @param component - The Angular component to render.\n * @param selector - The CSS selector for the component.\n * @returns A promise that resolves to the rendered HTML string.\n */\nconst renderNgComponent = async (\n component: Type<unknown>,\n selector: string,\n props?: Record<string, any>,\n signalInputsPrefix?: string,\n) => {\n const bootstrap = async () => {\n const appRef = await bootstrapApplication(component, {\n providers: [provideExperimentalZonelessChangeDetection(), provideServerRendering()],\n });\n appRef.components.forEach((componentRef) => {\n Object.entries(props ?? {}).forEach(([key, value]) => {\n if (key in componentRef.instance || `${signalInputsPrefix ?? ''}${key}` in componentRef.instance) {\n componentRef.setInput(key, value);\n }\n });\n componentRef.changeDetectorRef.detectChanges();\n });\n return appRef;\n };\n const ngHtml = await renderApplication(bootstrap, {\n document: `<${selector}></${selector}>`,\n });\n const $ = cheerio.load(ngHtml, {\n xml: { lowerCaseAttributeNames: false, lowerCaseTags: false },\n });\n const styles: string[] = [];\n $('style').each(function () {\n const content = $(this).html();\n if (content) {\n styles.push(content);\n }\n });\n const html = normalizeNgHtml(ngHtml, selector);\n return { styles, html };\n};\n\n/**\n * Normalizes the provided HTML string by extracting the content within the specified selector\n * and removing any non-standard HTML elements.\n *\n * @param html - The HTML string to be normalized.\n * @param selector - The CSS selector used to identify the content to be extracted.\n * @returns The normalized HTML string with the content of the specified selector and without non-standard HTML elements.\n */\nconst normalizeNgHtml = (html: string, selector: string): string => {\n const nsHtmlRegex = new RegExp(`<(?!(\\\\/?(${HTMLElements.join('|')})))[^>]+>`, 'gm');\n return html\n .replace(new RegExp(`[\\\\s\\\\S]*?<${selector}[\\\\s\\\\S]*?>([\\\\s\\\\S]*?)<\\\\/${selector}>[\\\\s\\\\S]*?`, 'gm'), '$1')\n .replace(nsHtmlRegex, '');\n};\n\n/**\n * Applies HTML transformations to the provided HTML string.\n *\n * This function uses Cheerio to load the HTML and perform transformations such as\n * replacing placeholders and applying styles from the provided CSS file paths.\n * It also ensures that certain HTML entities are replaced with their corresponding\n * characters.\n *\n * @param html - The HTML string to transform.\n * @param cssFilePaths - An optional array of CSS file paths to apply styles from.\n * @returns The transformed HTML string.\n */\nconst applyHtmlTransformations = (html: string, styles: string[]) => {\n const $ = cheerio.load(html, {\n xml: { lowerCaseAttributeNames: false, lowerCaseTags: false },\n });\n replacePlaceholders($);\n applyStyles($, styles);\n return $.html()\n .replaceAll('\\n', '')\n .replace(/\\s+/g, ' ')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('$', '$');\n};\n\n/**\n * Replaces elements with the `data-html` attribute with their corresponding HTML content.\n *\n * This function iterates over all elements that have the `data-html` attribute,\n * retrieves the value of the attribute, and replaces the element with the HTML content\n * specified in the attribute.\n *\n * @param $ - The Cheerio API instance used to manipulate the HTML.\n */\nconst replacePlaceholders = ($: cheerio.CheerioAPI) => {\n $('[data-html]').each(function () {\n const content = $(this).attr('data-html');\n if (content) {\n $(this).replaceWith(`${content}`);\n }\n });\n};\n\n/**\n * Applies the styles from the specified CSS file paths to the HTML document.\n *\n * @param $ - The Cheerio API instance used to manipulate the HTML document.\n * @param cssFilePaths - An array of file paths to the CSS files to be applied.\n */\nconst applyStyles = ($: cheerio.CheerioAPI, styles: string[]) => {\n styles.forEach((style) => {\n $('head').append(`<style>${style}</style>`);\n });\n};\n\n/**\n * Inlines CSS into the provided HTML string using Maizzle and Tailwind CSS.\n *\n * @param html - The HTML string to process.\n * @param pretty - Whether to prettify the output HTML. Defaults to `false`.\n * @param tailwindConfig - Optional Tailwind CSS configuration to use. If not provided, the `tailwindcss-preset-email` preset will be used.\n * @returns A promise that resolves to the processed HTML string with inlined CSS.\n */\nconst inlineCss = async (html: string, pretty: boolean = false, tailwindConfig?: Partial<Config>) => {\n //@ts-expect-error: missing exports\n const tailwindcssPresetEmail = (await import('tailwindcss-preset-email')).default;\n return (\n await maizzleRender(html, {\n afterTransformers: ({ html }) => {\n const renderedHtml = unescapeForRawComponent(\n html\n .replaceAll('\\n', '')\n .replace(/\\s+/g, ' ')\n .replaceAll('$', '$')\n .replace(/<angular-email-raw[\\s\\S]*?><!--(.*?)--><\\/angular-email-raw>/gm, `$1`),\n );\n if (pretty) return prettyPrint(renderedHtml);\n return renderedHtml;\n },\n css: {\n shorthand: true,\n inline: {\n applyWidthAttributes: true,\n applyHeightAttributes: true,\n },\n purge: {\n doNotRemoveHTMLCommentsWhoseOpeningTagContains: ['[if', '[endif', '<#if', '</#if', '<#else', '<#elseif'],\n removeHTMLComments: false,\n },\n tailwind: {\n presets: tailwindConfig ? [tailwindConfig] : [tailwindcssPresetEmail],\n content: [\n {\n raw: html,\n extension: 'html',\n },\n ],\n },\n },\n prettify: false,\n minify: true,\n })\n ).html;\n};\n","/*\n * Public API Surface of angular-email\n */\n\nexport * from './lib/components/background/background.component';\nexport * from './lib/components/body/body.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/color-scheme/color-scheme.component';\nexport * from './lib/components/column/column.component';\nexport * from './lib/components/conditional/conditional.component';\nexport * from './lib/components/container/container.component';\nexport * from './lib/components/head/head.component';\nexport * from './lib/components/heading/heading.component';\nexport * from './lib/components/hr/hr.component';\nexport * from './lib/components/html/html.component';\nexport * from './lib/components/img/img.component';\nexport * from './lib/components/link/link.component';\nexport * from './lib/components/preview/preview.component';\nexport * from './lib/components/raw/raw.component';\nexport * from './lib/components/section/section.component';\nexport * from './lib/components/text/text.component';\nexport * from './lib/render';\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["maizzleRender"],"mappings":"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"}
|
package/lib/render.d.ts
CHANGED
|
@@ -8,9 +8,8 @@ type Render = {
|
|
|
8
8
|
options?: {
|
|
9
9
|
plainText?: boolean;
|
|
10
10
|
pretty?: boolean;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
tailwindConfig?: string | Partial<Config>;
|
|
11
|
+
/** tailwind configuration object */
|
|
12
|
+
tailwindConfig?: Partial<Config>;
|
|
14
13
|
signalInputsPrefix?: string;
|
|
15
14
|
};
|
|
16
15
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keycloakify/angular-email",
|
|
3
|
-
"version": "0.0.1-rc.
|
|
3
|
+
"version": "0.0.1-rc.8",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Angular Email Builder",
|
|
@@ -30,12 +30,16 @@
|
|
|
30
30
|
"@angular/build": "^19.1.0",
|
|
31
31
|
"@angular/platform-server": "^19.1.0",
|
|
32
32
|
"@maizzle/framework": "^5.0.0",
|
|
33
|
-
"tailwindcss-preset-email": "^1.4.0"
|
|
33
|
+
"tailwindcss-preset-email": "^1.4.0",
|
|
34
|
+
"termost": "^1.4.0"
|
|
34
35
|
},
|
|
35
36
|
"sideEffects": false,
|
|
36
37
|
"publishConfig": {
|
|
37
38
|
"access": "public"
|
|
38
39
|
},
|
|
40
|
+
"bin": {
|
|
41
|
+
"keycloakify-angular-email": "bin/build.js"
|
|
42
|
+
},
|
|
39
43
|
"module": "fesm2022/keycloakify-angular-email.mjs",
|
|
40
44
|
"typings": "index.d.ts",
|
|
41
45
|
"exports": {
|