@rudyzeinoun/email-builder 0.0.14 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/index.d.mts +1882 -3
  2. package/dist/index.d.ts +1882 -3
  3. package/dist/index.js +310 -7
  4. package/dist/index.mjs +276 -7
  5. package/package.json +6 -3
  6. package/dist/Reader/core.d.mts +0 -1862
  7. package/dist/Reader/core.d.ts +0 -1862
  8. package/dist/Reader/core.d.ts.map +0 -1
  9. package/dist/Reader/core.js +0 -80
  10. package/dist/Reader/core.js.map +0 -1
  11. package/dist/Reader/core.mjs +0 -80
  12. package/dist/Reader/core.mjs.map +0 -1
  13. package/dist/blocks/ColumnsContainer/ColumnsContainerPropsSchema.d.mts +0 -136
  14. package/dist/blocks/ColumnsContainer/ColumnsContainerPropsSchema.d.ts +0 -136
  15. package/dist/blocks/ColumnsContainer/ColumnsContainerPropsSchema.d.ts.map +0 -1
  16. package/dist/blocks/ColumnsContainer/ColumnsContainerPropsSchema.js +0 -16
  17. package/dist/blocks/ColumnsContainer/ColumnsContainerPropsSchema.js.map +0 -1
  18. package/dist/blocks/ColumnsContainer/ColumnsContainerPropsSchema.mjs +0 -16
  19. package/dist/blocks/ColumnsContainer/ColumnsContainerPropsSchema.mjs.map +0 -1
  20. package/dist/blocks/ColumnsContainer/ColumnsContainerReader.d.mts +0 -4
  21. package/dist/blocks/ColumnsContainer/ColumnsContainerReader.d.ts +0 -4
  22. package/dist/blocks/ColumnsContainer/ColumnsContainerReader.d.ts.map +0 -1
  23. package/dist/blocks/ColumnsContainer/ColumnsContainerReader.js +0 -23
  24. package/dist/blocks/ColumnsContainer/ColumnsContainerReader.js.map +0 -1
  25. package/dist/blocks/ColumnsContainer/ColumnsContainerReader.mjs +0 -23
  26. package/dist/blocks/ColumnsContainer/ColumnsContainerReader.mjs.map +0 -1
  27. package/dist/blocks/Container/ContainerPropsSchema.d.mts +0 -86
  28. package/dist/blocks/Container/ContainerPropsSchema.d.ts +0 -86
  29. package/dist/blocks/Container/ContainerPropsSchema.d.ts.map +0 -1
  30. package/dist/blocks/Container/ContainerPropsSchema.js +0 -13
  31. package/dist/blocks/Container/ContainerPropsSchema.js.map +0 -1
  32. package/dist/blocks/Container/ContainerPropsSchema.mjs +0 -13
  33. package/dist/blocks/Container/ContainerPropsSchema.mjs.map +0 -1
  34. package/dist/blocks/Container/ContainerReader.d.mts +0 -4
  35. package/dist/blocks/Container/ContainerReader.d.ts +0 -4
  36. package/dist/blocks/Container/ContainerReader.d.ts.map +0 -1
  37. package/dist/blocks/Container/ContainerReader.js +0 -9
  38. package/dist/blocks/Container/ContainerReader.js.map +0 -1
  39. package/dist/blocks/Container/ContainerReader.mjs +0 -9
  40. package/dist/blocks/Container/ContainerReader.mjs.map +0 -1
  41. package/dist/blocks/EmailLayout/EmailLayoutPropsSchema.d.mts +0 -28
  42. package/dist/blocks/EmailLayout/EmailLayoutPropsSchema.d.ts +0 -28
  43. package/dist/blocks/EmailLayout/EmailLayoutPropsSchema.d.ts.map +0 -1
  44. package/dist/blocks/EmailLayout/EmailLayoutPropsSchema.js +0 -30
  45. package/dist/blocks/EmailLayout/EmailLayoutPropsSchema.js.map +0 -1
  46. package/dist/blocks/EmailLayout/EmailLayoutPropsSchema.mjs +0 -30
  47. package/dist/blocks/EmailLayout/EmailLayoutPropsSchema.mjs.map +0 -1
  48. package/dist/blocks/EmailLayout/EmailLayoutReader.d.mts +0 -4
  49. package/dist/blocks/EmailLayout/EmailLayoutReader.d.ts +0 -4
  50. package/dist/blocks/EmailLayout/EmailLayoutReader.d.ts.map +0 -1
  51. package/dist/blocks/EmailLayout/EmailLayoutReader.js +0 -59
  52. package/dist/blocks/EmailLayout/EmailLayoutReader.js.map +0 -1
  53. package/dist/blocks/EmailLayout/EmailLayoutReader.mjs +0 -59
  54. package/dist/blocks/EmailLayout/EmailLayoutReader.mjs.map +0 -1
  55. package/dist/index.d.ts.map +0 -1
  56. package/dist/index.js.map +0 -1
  57. package/dist/index.mjs.map +0 -1
  58. package/dist/renderers/renderToStaticMarkup.d.mts +0 -7
  59. package/dist/renderers/renderToStaticMarkup.d.ts +0 -7
  60. package/dist/renderers/renderToStaticMarkup.d.ts.map +0 -1
  61. package/dist/renderers/renderToStaticMarkup.js +0 -10
  62. package/dist/renderers/renderToStaticMarkup.js.map +0 -1
  63. package/dist/renderers/renderToStaticMarkup.mjs +0 -10
  64. package/dist/renderers/renderToStaticMarkup.mjs.map +0 -1
  65. package/dist/renderers/renderToStaticMarkup.spec.d.mts +0 -5
  66. package/dist/renderers/renderToStaticMarkup.spec.d.ts +0 -5
  67. package/dist/renderers/renderToStaticMarkup.spec.d.ts.map +0 -1
  68. package/dist/renderers/renderToStaticMarkup.spec.js +0 -20
  69. package/dist/renderers/renderToStaticMarkup.spec.js.map +0 -1
  70. package/dist/renderers/renderToStaticMarkup.spec.mjs +0 -20
  71. package/dist/renderers/renderToStaticMarkup.spec.mjs.map +0 -1
package/dist/index.js CHANGED
@@ -1,7 +1,310 @@
1
- export { default as renderToStaticMarkup } from './renderers/renderToStaticMarkup';
2
- export { ReaderBlockSchema,
3
- //
4
- ReaderDocumentSchema,
5
- //
6
- ReaderBlock, default as Reader, } from './Reader/core';
7
- //# sourceMappingURL=index.js.map
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ // If the importer is in node compatibility mode or this is not an ESM
51
+ // file that has been converted to a CommonJS file using a Babel-
52
+ // compatible transform (i.e. "__esModule" has not been set), then set
53
+ // "default" to the CommonJS "module.exports" for node compatibility.
54
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
+ mod
56
+ ));
57
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
+
59
+ // src/index.ts
60
+ var index_exports = {};
61
+ __export(index_exports, {
62
+ Reader: () => Reader,
63
+ ReaderBlock: () => ReaderBlock,
64
+ ReaderBlockSchema: () => ReaderBlockSchema,
65
+ ReaderDocumentSchema: () => ReaderDocumentSchema,
66
+ renderToStaticMarkup: () => renderToStaticMarkup
67
+ });
68
+ module.exports = __toCommonJS(index_exports);
69
+
70
+ // src/renderers/renderToStaticMarkup.tsx
71
+ var import_react5 = __toESM(require("react"));
72
+ var import_server = require("react-dom/server");
73
+
74
+ // src/Reader/core.tsx
75
+ var import_react4 = __toESM(require("react"));
76
+ var import_zod4 = require("zod");
77
+ var import_block_avatar = require("@usewaypoint/block-avatar");
78
+ var import_block_button = require("@usewaypoint/block-button");
79
+ var import_block_divider = require("@usewaypoint/block-divider");
80
+ var import_block_heading = require("@usewaypoint/block-heading");
81
+ var import_block_html = require("@usewaypoint/block-html");
82
+ var import_block_image = require("@usewaypoint/block-image");
83
+ var import_block_spacer = require("@usewaypoint/block-spacer");
84
+ var import_block_text = require("@usewaypoint/block-text");
85
+ var import_document_core = require("@usewaypoint/document-core");
86
+
87
+ // src/blocks/ColumnsContainer/ColumnsContainerPropsSchema.ts
88
+ var import_zod = require("zod");
89
+ var import_block_columns_container = require("@usewaypoint/block-columns-container");
90
+ var BasePropsShape = import_block_columns_container.ColumnsContainerPropsSchema.shape.props.unwrap().unwrap().shape;
91
+ var ColumnsContainerPropsSchema = import_zod.z.object({
92
+ style: import_block_columns_container.ColumnsContainerPropsSchema.shape.style,
93
+ props: import_zod.z.object(__spreadProps(__spreadValues({}, BasePropsShape), {
94
+ columns: import_zod.z.tuple([
95
+ import_zod.z.object({ childrenIds: import_zod.z.array(import_zod.z.string()) }),
96
+ import_zod.z.object({ childrenIds: import_zod.z.array(import_zod.z.string()) }),
97
+ import_zod.z.object({ childrenIds: import_zod.z.array(import_zod.z.string()) })
98
+ ])
99
+ })).optional().nullable()
100
+ });
101
+ var ColumnsContainerPropsSchema_default = ColumnsContainerPropsSchema;
102
+
103
+ // src/blocks/ColumnsContainer/ColumnsContainerReader.tsx
104
+ var import_react = __toESM(require("react"));
105
+ var import_block_columns_container2 = require("@usewaypoint/block-columns-container");
106
+ function ColumnsContainerReader({ style, props }) {
107
+ const _a = props != null ? props : {}, { columns } = _a, restProps = __objRest(_a, ["columns"]);
108
+ let cols = void 0;
109
+ if (columns) {
110
+ cols = columns.map((col) => col.childrenIds.map((childId) => /* @__PURE__ */ import_react.default.createElement(ReaderBlock, { key: childId, id: childId })));
111
+ }
112
+ return /* @__PURE__ */ import_react.default.createElement(import_block_columns_container2.ColumnsContainer, { props: restProps, columns: cols, style });
113
+ }
114
+
115
+ // src/blocks/Container/ContainerPropsSchema.tsx
116
+ var import_zod2 = require("zod");
117
+ var import_block_container = require("@rudyzeinoun/block-container");
118
+ var ContainerPropsSchema = import_zod2.z.object({
119
+ style: import_block_container.ContainerPropsSchema.shape.style,
120
+ className: import_zod2.z.string().optional().nullable(),
121
+ loopStart: import_zod2.z.number().optional().nullable(),
122
+ loopEnd: import_zod2.z.number().optional().nullable(),
123
+ props: import_zod2.z.object({
124
+ childrenIds: import_zod2.z.array(import_zod2.z.string()).optional().nullable()
125
+ }).optional().nullable()
126
+ });
127
+
128
+ // src/blocks/Container/ContainerReader.tsx
129
+ var import_react2 = __toESM(require("react"));
130
+ var import_block_container2 = require("@rudyzeinoun/block-container");
131
+ function ContainerReader({ style, props, className, loopStart, loopEnd }) {
132
+ var _a;
133
+ const childrenIds = (_a = props == null ? void 0 : props.childrenIds) != null ? _a : [];
134
+ return /* @__PURE__ */ import_react2.default.createElement(import_block_container2.Container, { className, "data-loop-start": loopStart, "data-loop-end": loopEnd, style }, childrenIds.map((childId) => /* @__PURE__ */ import_react2.default.createElement(ReaderBlock, { key: childId, id: childId })));
135
+ }
136
+
137
+ // src/blocks/EmailLayout/EmailLayoutPropsSchema.tsx
138
+ var import_zod3 = require("zod");
139
+ var COLOR_SCHEMA = import_zod3.z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
140
+ var FONT_FAMILY_SCHEMA = import_zod3.z.enum([
141
+ "MODERN_SANS",
142
+ "BOOK_SANS",
143
+ "ORGANIC_SANS",
144
+ "GEOMETRIC_SANS",
145
+ "HEAVY_SANS",
146
+ "ROUNDED_SANS",
147
+ "MODERN_SERIF",
148
+ "BOOK_SERIF",
149
+ "MONOSPACE"
150
+ ]).nullable().optional();
151
+ var EmailLayoutPropsSchema = import_zod3.z.object({
152
+ backdropColor: COLOR_SCHEMA,
153
+ borderColor: COLOR_SCHEMA,
154
+ borderRadius: import_zod3.z.number().optional().nullable(),
155
+ canvasColor: COLOR_SCHEMA,
156
+ textColor: COLOR_SCHEMA,
157
+ fontFamily: FONT_FAMILY_SCHEMA,
158
+ childrenIds: import_zod3.z.array(import_zod3.z.string()).optional().nullable()
159
+ });
160
+
161
+ // src/blocks/EmailLayout/EmailLayoutReader.tsx
162
+ var import_react3 = __toESM(require("react"));
163
+ function getFontFamily(fontFamily) {
164
+ const f = fontFamily != null ? fontFamily : "MODERN_SANS";
165
+ switch (f) {
166
+ case "MODERN_SANS":
167
+ return '"Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif';
168
+ case "BOOK_SANS":
169
+ return 'Optima, Candara, "Noto Sans", source-sans-pro, sans-serif';
170
+ case "ORGANIC_SANS":
171
+ return 'Seravek, "Gill Sans Nova", Ubuntu, Calibri, "DejaVu Sans", source-sans-pro, sans-serif';
172
+ case "GEOMETRIC_SANS":
173
+ return 'Avenir, "Avenir Next LT Pro", Montserrat, Corbel, "URW Gothic", source-sans-pro, sans-serif';
174
+ case "HEAVY_SANS":
175
+ return 'Bahnschrift, "DIN Alternate", "Franklin Gothic Medium", "Nimbus Sans Narrow", sans-serif-condensed, sans-serif';
176
+ case "ROUNDED_SANS":
177
+ return 'ui-rounded, "Hiragino Maru Gothic ProN", Quicksand, Comfortaa, Manjari, "Arial Rounded MT Bold", Calibri, source-sans-pro, sans-serif';
178
+ case "MODERN_SERIF":
179
+ return 'Charter, "Bitstream Charter", "Sitka Text", Cambria, serif';
180
+ case "BOOK_SERIF":
181
+ return '"Iowan Old Style", "Palatino Linotype", "URW Palladio L", P052, serif';
182
+ case "MONOSPACE":
183
+ return '"Nimbus Mono PS", "Courier New", "Cutive Mono", monospace';
184
+ }
185
+ }
186
+ function getBorder({ borderColor }) {
187
+ if (!borderColor) {
188
+ return void 0;
189
+ }
190
+ return `1px solid ${borderColor}`;
191
+ }
192
+ function EmailLayoutReader(props) {
193
+ var _a, _b, _c, _d, _e;
194
+ const childrenIds = (_a = props.childrenIds) != null ? _a : [];
195
+ return /* @__PURE__ */ import_react3.default.createElement(
196
+ "div",
197
+ {
198
+ style: {
199
+ backgroundColor: (_b = props.backdropColor) != null ? _b : "#F5F5F5",
200
+ color: (_c = props.textColor) != null ? _c : "#262626",
201
+ fontFamily: getFontFamily(props.fontFamily),
202
+ fontSize: "16px",
203
+ fontWeight: "400",
204
+ letterSpacing: "0.15008px",
205
+ lineHeight: "1.5",
206
+ margin: "0",
207
+ padding: "32px 0",
208
+ minHeight: "100%",
209
+ width: "100%"
210
+ }
211
+ },
212
+ /* @__PURE__ */ import_react3.default.createElement(
213
+ "table",
214
+ {
215
+ align: "center",
216
+ width: "100%",
217
+ style: {
218
+ margin: "0 auto",
219
+ maxWidth: "600px",
220
+ backgroundColor: (_d = props.canvasColor) != null ? _d : "#FFFFFF",
221
+ borderRadius: (_e = props.borderRadius) != null ? _e : void 0,
222
+ border: getBorder(props)
223
+ },
224
+ role: "presentation",
225
+ cellSpacing: "0",
226
+ cellPadding: "0",
227
+ border: 0
228
+ },
229
+ /* @__PURE__ */ import_react3.default.createElement("tbody", null, /* @__PURE__ */ import_react3.default.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ import_react3.default.createElement("td", null, childrenIds.map((childId) => /* @__PURE__ */ import_react3.default.createElement(ReaderBlock, { key: childId, id: childId })))))
230
+ )
231
+ );
232
+ }
233
+
234
+ // src/Reader/core.tsx
235
+ var ReaderContext = (0, import_react4.createContext)({});
236
+ function useReaderDocument() {
237
+ return (0, import_react4.useContext)(ReaderContext);
238
+ }
239
+ var READER_DICTIONARY = (0, import_document_core.buildBlockConfigurationDictionary)({
240
+ ColumnsContainer: {
241
+ schema: ColumnsContainerPropsSchema_default,
242
+ Component: ColumnsContainerReader
243
+ },
244
+ Container: {
245
+ schema: ContainerPropsSchema,
246
+ Component: ContainerReader
247
+ },
248
+ EmailLayout: {
249
+ schema: EmailLayoutPropsSchema,
250
+ Component: EmailLayoutReader
251
+ },
252
+ //
253
+ Avatar: {
254
+ schema: import_block_avatar.AvatarPropsSchema,
255
+ Component: import_block_avatar.Avatar
256
+ },
257
+ Button: {
258
+ schema: import_block_button.ButtonPropsSchema,
259
+ Component: import_block_button.Button
260
+ },
261
+ Divider: {
262
+ schema: import_block_divider.DividerPropsSchema,
263
+ Component: import_block_divider.Divider
264
+ },
265
+ Heading: {
266
+ schema: import_block_heading.HeadingPropsSchema,
267
+ Component: import_block_heading.Heading
268
+ },
269
+ Html: {
270
+ schema: import_block_html.HtmlPropsSchema,
271
+ Component: import_block_html.Html
272
+ },
273
+ Image: {
274
+ schema: import_block_image.ImagePropsSchema,
275
+ Component: import_block_image.Image
276
+ },
277
+ Spacer: {
278
+ schema: import_block_spacer.SpacerPropsSchema,
279
+ Component: import_block_spacer.Spacer
280
+ },
281
+ Text: {
282
+ schema: import_block_text.TextPropsSchema,
283
+ Component: import_block_text.Text
284
+ }
285
+ });
286
+ var ReaderBlockSchema = (0, import_document_core.buildBlockConfigurationSchema)(READER_DICTIONARY);
287
+ var ReaderDocumentSchema = import_zod4.z.record(import_zod4.z.string(), ReaderBlockSchema);
288
+ var BaseReaderBlock = (0, import_document_core.buildBlockComponent)(READER_DICTIONARY);
289
+ function ReaderBlock({ id }) {
290
+ const document = useReaderDocument();
291
+ return /* @__PURE__ */ import_react4.default.createElement(BaseReaderBlock, __spreadValues({}, document[id]));
292
+ }
293
+ function Reader({ document, rootBlockId }) {
294
+ return /* @__PURE__ */ import_react4.default.createElement(ReaderContext.Provider, { value: document }, /* @__PURE__ */ import_react4.default.createElement(ReaderBlock, { id: rootBlockId }));
295
+ }
296
+
297
+ // src/renderers/renderToStaticMarkup.tsx
298
+ function renderToStaticMarkup(document, { rootBlockId }) {
299
+ return "<!DOCTYPE html>" + (0, import_server.renderToStaticMarkup)(
300
+ /* @__PURE__ */ import_react5.default.createElement("html", null, /* @__PURE__ */ import_react5.default.createElement("body", null, /* @__PURE__ */ import_react5.default.createElement(Reader, { document, rootBlockId })))
301
+ );
302
+ }
303
+ // Annotate the CommonJS export names for ESM import in node:
304
+ 0 && (module.exports = {
305
+ Reader,
306
+ ReaderBlock,
307
+ ReaderBlockSchema,
308
+ ReaderDocumentSchema,
309
+ renderToStaticMarkup
310
+ });
package/dist/index.mjs CHANGED
@@ -1,7 +1,276 @@
1
- export { default as renderToStaticMarkup } from './renderers/renderToStaticMarkup.mjs';
2
- export { ReaderBlockSchema,
3
- //
4
- ReaderDocumentSchema,
5
- //
6
- ReaderBlock, default as Reader, } from './Reader/core.mjs';
7
- //# sourceMappingURL=index.mjs.map
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+
33
+ // src/renderers/renderToStaticMarkup.tsx
34
+ import React5 from "react";
35
+ import { renderToStaticMarkup as baseRenderToStaticMarkup } from "react-dom/server";
36
+
37
+ // src/Reader/core.tsx
38
+ import React4, { createContext, useContext } from "react";
39
+ import { z as z4 } from "zod";
40
+ import { Avatar, AvatarPropsSchema } from "@usewaypoint/block-avatar";
41
+ import { Button, ButtonPropsSchema } from "@usewaypoint/block-button";
42
+ import { Divider, DividerPropsSchema } from "@usewaypoint/block-divider";
43
+ import { Heading, HeadingPropsSchema } from "@usewaypoint/block-heading";
44
+ import { Html, HtmlPropsSchema } from "@usewaypoint/block-html";
45
+ import { Image, ImagePropsSchema } from "@usewaypoint/block-image";
46
+ import { Spacer, SpacerPropsSchema } from "@usewaypoint/block-spacer";
47
+ import { Text, TextPropsSchema } from "@usewaypoint/block-text";
48
+ import {
49
+ buildBlockComponent,
50
+ buildBlockConfigurationDictionary,
51
+ buildBlockConfigurationSchema
52
+ } from "@usewaypoint/document-core";
53
+
54
+ // src/blocks/ColumnsContainer/ColumnsContainerPropsSchema.ts
55
+ import { z } from "zod";
56
+ import { ColumnsContainerPropsSchema as BaseColumnsContainerPropsSchema } from "@usewaypoint/block-columns-container";
57
+ var BasePropsShape = BaseColumnsContainerPropsSchema.shape.props.unwrap().unwrap().shape;
58
+ var ColumnsContainerPropsSchema = z.object({
59
+ style: BaseColumnsContainerPropsSchema.shape.style,
60
+ props: z.object(__spreadProps(__spreadValues({}, BasePropsShape), {
61
+ columns: z.tuple([
62
+ z.object({ childrenIds: z.array(z.string()) }),
63
+ z.object({ childrenIds: z.array(z.string()) }),
64
+ z.object({ childrenIds: z.array(z.string()) })
65
+ ])
66
+ })).optional().nullable()
67
+ });
68
+ var ColumnsContainerPropsSchema_default = ColumnsContainerPropsSchema;
69
+
70
+ // src/blocks/ColumnsContainer/ColumnsContainerReader.tsx
71
+ import React from "react";
72
+ import { ColumnsContainer as BaseColumnsContainer } from "@usewaypoint/block-columns-container";
73
+ function ColumnsContainerReader({ style, props }) {
74
+ const _a = props != null ? props : {}, { columns } = _a, restProps = __objRest(_a, ["columns"]);
75
+ let cols = void 0;
76
+ if (columns) {
77
+ cols = columns.map((col) => col.childrenIds.map((childId) => /* @__PURE__ */ React.createElement(ReaderBlock, { key: childId, id: childId })));
78
+ }
79
+ return /* @__PURE__ */ React.createElement(BaseColumnsContainer, { props: restProps, columns: cols, style });
80
+ }
81
+
82
+ // src/blocks/Container/ContainerPropsSchema.tsx
83
+ import { z as z2 } from "zod";
84
+ import { ContainerPropsSchema as BaseContainerPropsSchema } from "@rudyzeinoun/block-container";
85
+ var ContainerPropsSchema = z2.object({
86
+ style: BaseContainerPropsSchema.shape.style,
87
+ className: z2.string().optional().nullable(),
88
+ loopStart: z2.number().optional().nullable(),
89
+ loopEnd: z2.number().optional().nullable(),
90
+ props: z2.object({
91
+ childrenIds: z2.array(z2.string()).optional().nullable()
92
+ }).optional().nullable()
93
+ });
94
+
95
+ // src/blocks/Container/ContainerReader.tsx
96
+ import React2 from "react";
97
+ import { Container as BaseContainer } from "@rudyzeinoun/block-container";
98
+ function ContainerReader({ style, props, className, loopStart, loopEnd }) {
99
+ var _a;
100
+ const childrenIds = (_a = props == null ? void 0 : props.childrenIds) != null ? _a : [];
101
+ return /* @__PURE__ */ React2.createElement(BaseContainer, { className, "data-loop-start": loopStart, "data-loop-end": loopEnd, style }, childrenIds.map((childId) => /* @__PURE__ */ React2.createElement(ReaderBlock, { key: childId, id: childId })));
102
+ }
103
+
104
+ // src/blocks/EmailLayout/EmailLayoutPropsSchema.tsx
105
+ import { z as z3 } from "zod";
106
+ var COLOR_SCHEMA = z3.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
107
+ var FONT_FAMILY_SCHEMA = z3.enum([
108
+ "MODERN_SANS",
109
+ "BOOK_SANS",
110
+ "ORGANIC_SANS",
111
+ "GEOMETRIC_SANS",
112
+ "HEAVY_SANS",
113
+ "ROUNDED_SANS",
114
+ "MODERN_SERIF",
115
+ "BOOK_SERIF",
116
+ "MONOSPACE"
117
+ ]).nullable().optional();
118
+ var EmailLayoutPropsSchema = z3.object({
119
+ backdropColor: COLOR_SCHEMA,
120
+ borderColor: COLOR_SCHEMA,
121
+ borderRadius: z3.number().optional().nullable(),
122
+ canvasColor: COLOR_SCHEMA,
123
+ textColor: COLOR_SCHEMA,
124
+ fontFamily: FONT_FAMILY_SCHEMA,
125
+ childrenIds: z3.array(z3.string()).optional().nullable()
126
+ });
127
+
128
+ // src/blocks/EmailLayout/EmailLayoutReader.tsx
129
+ import React3 from "react";
130
+ function getFontFamily(fontFamily) {
131
+ const f = fontFamily != null ? fontFamily : "MODERN_SANS";
132
+ switch (f) {
133
+ case "MODERN_SANS":
134
+ return '"Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif';
135
+ case "BOOK_SANS":
136
+ return 'Optima, Candara, "Noto Sans", source-sans-pro, sans-serif';
137
+ case "ORGANIC_SANS":
138
+ return 'Seravek, "Gill Sans Nova", Ubuntu, Calibri, "DejaVu Sans", source-sans-pro, sans-serif';
139
+ case "GEOMETRIC_SANS":
140
+ return 'Avenir, "Avenir Next LT Pro", Montserrat, Corbel, "URW Gothic", source-sans-pro, sans-serif';
141
+ case "HEAVY_SANS":
142
+ return 'Bahnschrift, "DIN Alternate", "Franklin Gothic Medium", "Nimbus Sans Narrow", sans-serif-condensed, sans-serif';
143
+ case "ROUNDED_SANS":
144
+ return 'ui-rounded, "Hiragino Maru Gothic ProN", Quicksand, Comfortaa, Manjari, "Arial Rounded MT Bold", Calibri, source-sans-pro, sans-serif';
145
+ case "MODERN_SERIF":
146
+ return 'Charter, "Bitstream Charter", "Sitka Text", Cambria, serif';
147
+ case "BOOK_SERIF":
148
+ return '"Iowan Old Style", "Palatino Linotype", "URW Palladio L", P052, serif';
149
+ case "MONOSPACE":
150
+ return '"Nimbus Mono PS", "Courier New", "Cutive Mono", monospace';
151
+ }
152
+ }
153
+ function getBorder({ borderColor }) {
154
+ if (!borderColor) {
155
+ return void 0;
156
+ }
157
+ return `1px solid ${borderColor}`;
158
+ }
159
+ function EmailLayoutReader(props) {
160
+ var _a, _b, _c, _d, _e;
161
+ const childrenIds = (_a = props.childrenIds) != null ? _a : [];
162
+ return /* @__PURE__ */ React3.createElement(
163
+ "div",
164
+ {
165
+ style: {
166
+ backgroundColor: (_b = props.backdropColor) != null ? _b : "#F5F5F5",
167
+ color: (_c = props.textColor) != null ? _c : "#262626",
168
+ fontFamily: getFontFamily(props.fontFamily),
169
+ fontSize: "16px",
170
+ fontWeight: "400",
171
+ letterSpacing: "0.15008px",
172
+ lineHeight: "1.5",
173
+ margin: "0",
174
+ padding: "32px 0",
175
+ minHeight: "100%",
176
+ width: "100%"
177
+ }
178
+ },
179
+ /* @__PURE__ */ React3.createElement(
180
+ "table",
181
+ {
182
+ align: "center",
183
+ width: "100%",
184
+ style: {
185
+ margin: "0 auto",
186
+ maxWidth: "600px",
187
+ backgroundColor: (_d = props.canvasColor) != null ? _d : "#FFFFFF",
188
+ borderRadius: (_e = props.borderRadius) != null ? _e : void 0,
189
+ border: getBorder(props)
190
+ },
191
+ role: "presentation",
192
+ cellSpacing: "0",
193
+ cellPadding: "0",
194
+ border: 0
195
+ },
196
+ /* @__PURE__ */ React3.createElement("tbody", null, /* @__PURE__ */ React3.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ React3.createElement("td", null, childrenIds.map((childId) => /* @__PURE__ */ React3.createElement(ReaderBlock, { key: childId, id: childId })))))
197
+ )
198
+ );
199
+ }
200
+
201
+ // src/Reader/core.tsx
202
+ var ReaderContext = createContext({});
203
+ function useReaderDocument() {
204
+ return useContext(ReaderContext);
205
+ }
206
+ var READER_DICTIONARY = buildBlockConfigurationDictionary({
207
+ ColumnsContainer: {
208
+ schema: ColumnsContainerPropsSchema_default,
209
+ Component: ColumnsContainerReader
210
+ },
211
+ Container: {
212
+ schema: ContainerPropsSchema,
213
+ Component: ContainerReader
214
+ },
215
+ EmailLayout: {
216
+ schema: EmailLayoutPropsSchema,
217
+ Component: EmailLayoutReader
218
+ },
219
+ //
220
+ Avatar: {
221
+ schema: AvatarPropsSchema,
222
+ Component: Avatar
223
+ },
224
+ Button: {
225
+ schema: ButtonPropsSchema,
226
+ Component: Button
227
+ },
228
+ Divider: {
229
+ schema: DividerPropsSchema,
230
+ Component: Divider
231
+ },
232
+ Heading: {
233
+ schema: HeadingPropsSchema,
234
+ Component: Heading
235
+ },
236
+ Html: {
237
+ schema: HtmlPropsSchema,
238
+ Component: Html
239
+ },
240
+ Image: {
241
+ schema: ImagePropsSchema,
242
+ Component: Image
243
+ },
244
+ Spacer: {
245
+ schema: SpacerPropsSchema,
246
+ Component: Spacer
247
+ },
248
+ Text: {
249
+ schema: TextPropsSchema,
250
+ Component: Text
251
+ }
252
+ });
253
+ var ReaderBlockSchema = buildBlockConfigurationSchema(READER_DICTIONARY);
254
+ var ReaderDocumentSchema = z4.record(z4.string(), ReaderBlockSchema);
255
+ var BaseReaderBlock = buildBlockComponent(READER_DICTIONARY);
256
+ function ReaderBlock({ id }) {
257
+ const document = useReaderDocument();
258
+ return /* @__PURE__ */ React4.createElement(BaseReaderBlock, __spreadValues({}, document[id]));
259
+ }
260
+ function Reader({ document, rootBlockId }) {
261
+ return /* @__PURE__ */ React4.createElement(ReaderContext.Provider, { value: document }, /* @__PURE__ */ React4.createElement(ReaderBlock, { id: rootBlockId }));
262
+ }
263
+
264
+ // src/renderers/renderToStaticMarkup.tsx
265
+ function renderToStaticMarkup(document, { rootBlockId }) {
266
+ return "<!DOCTYPE html>" + baseRenderToStaticMarkup(
267
+ /* @__PURE__ */ React5.createElement("html", null, /* @__PURE__ */ React5.createElement("body", null, /* @__PURE__ */ React5.createElement(Reader, { document, rootBlockId })))
268
+ );
269
+ }
270
+ export {
271
+ Reader,
272
+ ReaderBlock,
273
+ ReaderBlockSchema,
274
+ ReaderDocumentSchema,
275
+ renderToStaticMarkup
276
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudyzeinoun/email-builder",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "description": "React component to render email messages",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -16,7 +16,7 @@
16
16
  "dist"
17
17
  ],
18
18
  "scripts": {
19
- "build": "npx tsc"
19
+ "build": "npx tsc -p tsconfig.build.json"
20
20
  },
21
21
  "author": "carlos@usewaypoint.com",
22
22
  "license": "MIT",
@@ -26,7 +26,7 @@
26
26
  "zod": "^1 || ^2 || ^3"
27
27
  },
28
28
  "dependencies": {
29
- "@rudyzeinoun/block-container": "^0.0.6",
29
+ "@rudyzeinoun/block-container": "^0.0.8",
30
30
  "@usewaypoint/block-avatar": "^0.0.3",
31
31
  "@usewaypoint/block-button": "^0.0.3",
32
32
  "@usewaypoint/block-columns-container": "^0.0.3",
@@ -37,5 +37,8 @@
37
37
  "@usewaypoint/block-spacer": "^0.0.3",
38
38
  "@usewaypoint/block-text": "^0.0.6",
39
39
  "@usewaypoint/document-core": "^0.0.6"
40
+ },
41
+ "devDependencies": {
42
+ "tsup": "^8.4.0"
40
43
  }
41
44
  }