create-email-template 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +356 -0
- package/dist/components/builder/block-palette.d.ts +4 -0
- package/dist/components/builder/block-palette.d.ts.map +1 -0
- package/dist/components/builder/canvas.d.ts +4 -0
- package/dist/components/builder/canvas.d.ts.map +1 -0
- package/dist/components/builder/editable-block-renderer.d.ts +7 -0
- package/dist/components/builder/editable-block-renderer.d.ts.map +1 -0
- package/dist/components/builder/email-builder.d.ts +5 -0
- package/dist/components/builder/email-builder.d.ts.map +1 -0
- package/dist/components/builder/inline-text-editor.d.ts +15 -0
- package/dist/components/builder/inline-text-editor.d.ts.map +1 -0
- package/dist/components/builder/properties-panel.d.ts +8 -0
- package/dist/components/builder/properties-panel.d.ts.map +1 -0
- package/dist/components/builder/selection-toolbar.d.ts +12 -0
- package/dist/components/builder/selection-toolbar.d.ts.map +1 -0
- package/dist/components/builder/sortable-item.d.ts +10 -0
- package/dist/components/builder/sortable-item.d.ts.map +1 -0
- package/dist/components/builder/variables-info-dialog.d.ts +7 -0
- package/dist/components/builder/variables-info-dialog.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/sheet.d.ts +15 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/types.d.ts +125 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/core/blocks.d.ts +33 -0
- package/dist/core/blocks.d.ts.map +1 -0
- package/dist/core/default-blocks.d.ts +2 -0
- package/dist/core/default-blocks.d.ts.map +1 -0
- package/dist/core/id.d.ts +2 -0
- package/dist/core/id.d.ts.map +1 -0
- package/dist/core/normalize.d.ts +2 -0
- package/dist/core/normalize.d.ts.map +1 -0
- package/dist/core/render.d.ts +10 -0
- package/dist/core/render.d.ts.map +1 -0
- package/dist/core/richtext.d.ts +2 -0
- package/dist/core/richtext.d.ts.map +1 -0
- package/dist/core/template.d.ts +2 -0
- package/dist/core/template.d.ts.map +1 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/variables.d.ts +2 -0
- package/dist/core/variables.d.ts.map +1 -0
- package/dist/hooks/use-autosave.d.ts +14 -0
- package/dist/hooks/use-autosave.d.ts.map +1 -0
- package/dist/hooks/use-email-builder.d.ts +36 -0
- package/dist/hooks/use-email-builder.d.ts.map +1 -0
- package/dist/hooks/use-render-email.d.ts +15 -0
- package/dist/hooks/use-render-email.d.ts.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27976 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/shims/use-sync-external-store.d.ts +4 -0
- package/dist/shims/use-sync-external-store.d.ts.map +1 -0
- package/dist/store/autosave-context.d.ts +13 -0
- package/dist/store/autosave-context.d.ts.map +1 -0
- package/dist/store/create-email-builder-store.d.ts +42 -0
- package/dist/store/create-email-builder-store.d.ts.map +1 -0
- package/dist/store/email-builder-provider.d.ts +14 -0
- package/dist/store/email-builder-provider.d.ts.map +1 -0
- package/dist/store/vanilla-store.d.ts +8 -0
- package/dist/store/vanilla-store.d.ts.map +1 -0
- package/dist/style.css +2 -0
- package/package.json +70 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { BlockDefinition, EmailBlock, EmailBlockProps, EmailBlockType, EmailContext, EmailPalette, EmailSettings } from "../core/types";
|
|
2
|
+
import type { EmailVariable, EmailVariableSection } from "../core/variables";
|
|
3
|
+
/** `Partial` distributivo sobre una unión (útil para props de bloques). */
|
|
4
|
+
export type DistributivePartial<T> = T extends unknown ? Partial<T> : never;
|
|
5
|
+
/** Sube una imagen y devuelve su URL (R2, S3, tu API, etc.). */
|
|
6
|
+
export type UploadImage = (file: File) => Promise<string>;
|
|
7
|
+
/**
|
|
8
|
+
* Valores por defecto personalizados por tipo de bloque.
|
|
9
|
+
* Se aplican sobre los defaults de la librería (o sobre un `blockLibrary` custom).
|
|
10
|
+
* Ej.: `{ text: { text: "Tu mensaje" }, button: { label: "Ver más" } }`
|
|
11
|
+
*/
|
|
12
|
+
export type BlockDefaultsMap = Partial<Record<EmailBlockType, DistributivePartial<EmailBlockProps>>>;
|
|
13
|
+
export interface EmailBuilderLabels {
|
|
14
|
+
blocksTitle: string;
|
|
15
|
+
optionsTitle: string;
|
|
16
|
+
optionsOpen: string;
|
|
17
|
+
optionsClose: string;
|
|
18
|
+
noSelection: string;
|
|
19
|
+
editInlineHint: string;
|
|
20
|
+
listEditHint: string;
|
|
21
|
+
columnsEditHint: string;
|
|
22
|
+
addListItem: string;
|
|
23
|
+
listItemPlaceholder: string;
|
|
24
|
+
imagePlaceholder: string;
|
|
25
|
+
uploadImage: string;
|
|
26
|
+
replaceImage: string;
|
|
27
|
+
uploading: string;
|
|
28
|
+
imageUploaded: string;
|
|
29
|
+
imageUploadError: string;
|
|
30
|
+
logoUrl: string;
|
|
31
|
+
imageAlt: string;
|
|
32
|
+
imageHref: string;
|
|
33
|
+
imageWidth: string;
|
|
34
|
+
buttonLabel: string;
|
|
35
|
+
buttonHref: string;
|
|
36
|
+
align: string;
|
|
37
|
+
backgroundColor: string;
|
|
38
|
+
buttonBackground: string;
|
|
39
|
+
buttonColor: string;
|
|
40
|
+
textColor: string;
|
|
41
|
+
icon: string;
|
|
42
|
+
quoteAuthor: string;
|
|
43
|
+
quoteBorderColor: string;
|
|
44
|
+
quoteMarginLeft: string;
|
|
45
|
+
quotePaddingY: string;
|
|
46
|
+
quotePaddingX: string;
|
|
47
|
+
quoteBorderWidth: string;
|
|
48
|
+
dividerColor: string;
|
|
49
|
+
dividerHeight: string;
|
|
50
|
+
spacerHeight: string;
|
|
51
|
+
pageBackground: string;
|
|
52
|
+
cardBorderWidth: string;
|
|
53
|
+
cardBorderRadius: string;
|
|
54
|
+
settings: string;
|
|
55
|
+
deviceMobile: string;
|
|
56
|
+
deviceDesktop: string;
|
|
57
|
+
canvasPreview: string;
|
|
58
|
+
variablesInfoTitle: string;
|
|
59
|
+
variablesInfoDescription: string;
|
|
60
|
+
variablesGroup: string;
|
|
61
|
+
dragToStart: string;
|
|
62
|
+
dropAtEnd: string;
|
|
63
|
+
drag: string;
|
|
64
|
+
moveUp: string;
|
|
65
|
+
moveDown: string;
|
|
66
|
+
duplicate: string;
|
|
67
|
+
delete: string;
|
|
68
|
+
}
|
|
69
|
+
export declare const DEFAULT_LABELS: EmailBuilderLabels;
|
|
70
|
+
export interface EmailBuilderConfig {
|
|
71
|
+
variables?: EmailVariable[];
|
|
72
|
+
variableSections?: EmailVariableSection[];
|
|
73
|
+
blockLibrary?: BlockDefinition[];
|
|
74
|
+
blockDefaults?: BlockDefaultsMap;
|
|
75
|
+
palette?: Partial<EmailPalette>;
|
|
76
|
+
defaultSettings?: Partial<EmailSettings>;
|
|
77
|
+
sampleContext?: EmailContext;
|
|
78
|
+
labels?: Partial<EmailBuilderLabels>;
|
|
79
|
+
/** Profundidad máxima del historial de deshacer. Default: 50. */
|
|
80
|
+
historyLimit?: number;
|
|
81
|
+
}
|
|
82
|
+
export interface ResolvedEmailBuilderConfig {
|
|
83
|
+
variables: EmailVariable[];
|
|
84
|
+
variableSections: EmailVariableSection[];
|
|
85
|
+
blockLibrary: BlockDefinition[];
|
|
86
|
+
blockMap: Record<EmailBlockType, BlockDefinition>;
|
|
87
|
+
palette: EmailPalette;
|
|
88
|
+
defaultSettings: EmailSettings;
|
|
89
|
+
sampleContext: EmailContext;
|
|
90
|
+
uploadImage?: UploadImage;
|
|
91
|
+
labels: EmailBuilderLabels;
|
|
92
|
+
historyLimit: number;
|
|
93
|
+
}
|
|
94
|
+
/** Payload persistible del builder (lo que se guarda en la BD). */
|
|
95
|
+
export interface AutosavePayload {
|
|
96
|
+
content: EmailBlock[];
|
|
97
|
+
settings: EmailSettings;
|
|
98
|
+
}
|
|
99
|
+
export interface AutosaveSuccess<TData = unknown> {
|
|
100
|
+
ok: true;
|
|
101
|
+
/** Lo que devolvió tu `onSave` (ej. `{ json, html }` del backend). */
|
|
102
|
+
data: TData;
|
|
103
|
+
payload: AutosavePayload;
|
|
104
|
+
savedAt: Date;
|
|
105
|
+
}
|
|
106
|
+
export interface AutosaveError {
|
|
107
|
+
ok: false;
|
|
108
|
+
error: unknown;
|
|
109
|
+
payload: AutosavePayload;
|
|
110
|
+
}
|
|
111
|
+
export interface AutosaveOptions<TData = unknown> {
|
|
112
|
+
/**
|
|
113
|
+
* Tu fetch al backend: recibe el payload y devuelve lo que tu API retorne
|
|
114
|
+
* (ej. `{ json, html }` renderizado con `create-email-renderer`).
|
|
115
|
+
* La librería no hace network por su cuenta.
|
|
116
|
+
*/
|
|
117
|
+
onSave: (payload: AutosavePayload) => Promise<TData>;
|
|
118
|
+
/** Cada cuánto se intenta guardar si hay cambios. Default: `10_000` (10s). */
|
|
119
|
+
intervalMs?: number;
|
|
120
|
+
/** Interruptor rápido sin desmontar el provider. Default: `true`. */
|
|
121
|
+
enabled?: boolean;
|
|
122
|
+
/** Callback opcional tras cada intento (éxito o error), para toasts/feedback. */
|
|
123
|
+
onSaved?: (result: AutosaveSuccess<TData> | AutosaveError) => void;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { EmailBlock, EmailBlockProps, EmailContext, EmailPalette } from "./types";
|
|
3
|
+
export declare const alignMap: {
|
|
4
|
+
readonly left: "left";
|
|
5
|
+
readonly center: "center";
|
|
6
|
+
readonly right: "right";
|
|
7
|
+
};
|
|
8
|
+
export { alignMap as blockAlignMap };
|
|
9
|
+
export declare const blockPadding: (props: EmailBlockProps) => {
|
|
10
|
+
padding: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const BlockRenderer: ({ block, context, palette, }: {
|
|
13
|
+
block: EmailBlock;
|
|
14
|
+
context: EmailContext;
|
|
15
|
+
palette?: EmailPalette;
|
|
16
|
+
}) => React.JSX.Element | null;
|
|
17
|
+
export declare const EmailBody: ({ blocks, context, palette, cardBorderWidth, cardBorderRadius, }: {
|
|
18
|
+
blocks: EmailBlock[];
|
|
19
|
+
context: EmailContext;
|
|
20
|
+
palette?: EmailPalette;
|
|
21
|
+
cardBorderWidth?: number;
|
|
22
|
+
cardBorderRadius?: number;
|
|
23
|
+
}) => React.JSX.Element;
|
|
24
|
+
export declare const EmailTemplate: ({ blocks, subject, context, palette, pageBackground, cardBorderWidth, cardBorderRadius, }: {
|
|
25
|
+
blocks: EmailBlock[];
|
|
26
|
+
subject: string;
|
|
27
|
+
context: EmailContext;
|
|
28
|
+
palette?: EmailPalette;
|
|
29
|
+
pageBackground?: string;
|
|
30
|
+
cardBorderWidth?: number;
|
|
31
|
+
cardBorderRadius?: number;
|
|
32
|
+
}) => React.JSX.Element;
|
|
33
|
+
//# sourceMappingURL=blocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/core/blocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EAab,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,QAAQ;;;;CAIX,CAAA;AAEV,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,CAAA;AAEpC,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe;;CAIlD,CAAA;AAwcD,eAAO,MAAM,aAAa,GAAI,8BAI3B;IACD,KAAK,EAAE,UAAU,CAAA;IACjB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,6BAyFA,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,kEAMvB;IACD,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,sBAmBA,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,2FAQ3B;IACD,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,sBAcA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-blocks.d.ts","sourceRoot":"","sources":["../../src/core/default-blocks.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/core/id.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,QAAO,MAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/core/normalize.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { EmailBlock, EmailContext, EmailPalette, EmailSettings } from "./types";
|
|
2
|
+
export interface RenderEmailHtmlOptions {
|
|
3
|
+
blocks: EmailBlock[];
|
|
4
|
+
subject?: string;
|
|
5
|
+
context?: EmailContext;
|
|
6
|
+
settings?: Partial<EmailSettings>;
|
|
7
|
+
palette?: EmailPalette;
|
|
8
|
+
}
|
|
9
|
+
export declare const renderEmailHtml: ({ blocks, subject, context, settings, palette, }: RenderEmailHtmlOptions) => Promise<string>;
|
|
10
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAMD,eAAO,MAAM,eAAe,GAAU,kDAMnC,sBAAsB,KAAG,OAAO,CAAC,MAAM,CAWvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"richtext.d.ts","sourceRoot":"","sources":["../../src/core/richtext.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/core/template.ts"],"names":[],"mappings":"AAEA,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAEA,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../src/core/variables.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AutosaveOptions } from "../config/types";
|
|
2
|
+
import type { EmailBuilderStore } from "../store/create-email-builder-store";
|
|
3
|
+
import { AutosaveStatusContext } from "../store/autosave-context";
|
|
4
|
+
import type { AutosaveStatus } from "../store/autosave-context";
|
|
5
|
+
export type { AutosaveStatus };
|
|
6
|
+
export { useAutosaveStatus } from "../store/autosave-context";
|
|
7
|
+
/**
|
|
8
|
+
* Ciclo de autoguardado: cada `intervalMs`, si el builder está `dirty` y no hay
|
|
9
|
+
* un guardado en vuelo, llama a `onSave(payload)` y marca el store como salvado.
|
|
10
|
+
* La librería no hace network: `onSave` es el fetch del consumidor.
|
|
11
|
+
*/
|
|
12
|
+
export declare const useAutosaveEffect: <TData>(options: AutosaveOptions<TData>, store: EmailBuilderStore) => AutosaveStatus<TData>;
|
|
13
|
+
export { AutosaveStatusContext };
|
|
14
|
+
//# sourceMappingURL=use-autosave.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-autosave.d.ts","sourceRoot":"","sources":["../../src/hooks/use-autosave.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,EACrC,SAAS,eAAe,CAAC,KAAK,CAAC,EAC/B,OAAO,iBAAiB,KACvB,cAAc,CAAC,KAAK,CAgEtB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { EmailContext } from "../core/types";
|
|
2
|
+
export declare const useEmailBuilder: () => {
|
|
3
|
+
config: import("..").ResolvedEmailBuilderConfig;
|
|
4
|
+
variables: import("create-email-renderer/variables").EmailVariable[];
|
|
5
|
+
blockLibrary: import("create-email-renderer/types").BlockDefinition[];
|
|
6
|
+
blockMap: Record<import("create-email-renderer/types").EmailBlockType, import("create-email-renderer/types").BlockDefinition>;
|
|
7
|
+
palette: import("create-email-renderer/types").EmailPalette;
|
|
8
|
+
sampleContext: EmailContext;
|
|
9
|
+
labels: import("..").EmailBuilderLabels;
|
|
10
|
+
uploadImage: import("..").UploadImage | undefined;
|
|
11
|
+
blocks: import("create-email-renderer/types").EmailBlock[];
|
|
12
|
+
selectedId: string | null;
|
|
13
|
+
propertiesOpen: boolean;
|
|
14
|
+
settings: import("create-email-renderer/types").EmailSettings;
|
|
15
|
+
dirty: boolean;
|
|
16
|
+
hydrate: (data: {
|
|
17
|
+
blocks: import("create-email-renderer/types").EmailBlock[];
|
|
18
|
+
settings?: Partial<import("create-email-renderer/types").EmailSettings>;
|
|
19
|
+
}) => void;
|
|
20
|
+
setSettings: (patch: Partial<import("create-email-renderer/types").EmailSettings>) => void;
|
|
21
|
+
addBlock: (type: import("create-email-renderer/types").EmailBlockType, index?: number) => void;
|
|
22
|
+
reorder: (activeIndex: number, overIndex: number) => void;
|
|
23
|
+
updateBlockProps: (id: string, props: import("create-email-renderer/types").EmailBlockProps) => void;
|
|
24
|
+
removeBlock: (id: string) => void;
|
|
25
|
+
duplicateBlock: (id: string) => void;
|
|
26
|
+
select: (id: string | null) => void;
|
|
27
|
+
setPropertiesOpen: (open: boolean) => void;
|
|
28
|
+
markSaved: () => void;
|
|
29
|
+
getSavePayload: () => import("..").EmailBuilderPayload;
|
|
30
|
+
renderHtml: (opts?: {
|
|
31
|
+
context?: EmailContext;
|
|
32
|
+
subject?: string;
|
|
33
|
+
}) => Promise<string>;
|
|
34
|
+
resolve: (text: string, context?: EmailContext) => string;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=use-email-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-email-builder.d.ts","sourceRoot":"","sources":["../../src/hooks/use-email-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AASlD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;gBAcH,CAAC;;;;;;;;;;;;wBAQR;QAAE,OAAO,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;oBAoBnD,MAAM,YAAY,YAAY,KAAG,MAAM;CAoCjD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EmailContext } from "../core/types";
|
|
2
|
+
export interface RenderEmailOptions {
|
|
3
|
+
context?: EmailContext;
|
|
4
|
+
subject?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const useRenderEmail: () => {
|
|
7
|
+
renderHtml: (opts?: RenderEmailOptions) => Promise<string>;
|
|
8
|
+
getHtml: (opts?: RenderEmailOptions) => Promise<string>;
|
|
9
|
+
getPayload: () => import("..").EmailBuilderPayload;
|
|
10
|
+
resolve: (text: string, context?: EmailContext) => string;
|
|
11
|
+
html: string | null;
|
|
12
|
+
isPending: boolean;
|
|
13
|
+
setHtml: import("react").Dispatch<import("react").SetStateAction<string | null>>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=use-render-email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-render-email.d.ts","sourceRoot":"","sources":["../../src/hooks/use-render-email.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc;wBAQT,kBAAkB;qBAuBlB,kBAAkB,KAAG,OAAO,CAAC,MAAM,CAAC;;oBAgB3C,MAAM,YAAY,YAAY,KAAG,MAAM;;;;CAcjD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import "./index.css";
|
|
2
|
+
export * from "./core/types";
|
|
3
|
+
export * from "./core/default-blocks";
|
|
4
|
+
export * from "./core/variables";
|
|
5
|
+
export * from "./core/richtext";
|
|
6
|
+
export * from "./core/normalize";
|
|
7
|
+
export * from "./core/blocks";
|
|
8
|
+
export * from "./core/render";
|
|
9
|
+
export * from "./config/types";
|
|
10
|
+
export * from "./config/defaults";
|
|
11
|
+
export * from "./store/create-email-builder-store";
|
|
12
|
+
export * from "./store/email-builder-provider";
|
|
13
|
+
export * from "./hooks/use-email-builder";
|
|
14
|
+
export * from "./hooks/use-render-email";
|
|
15
|
+
export * from "./hooks/use-autosave";
|
|
16
|
+
export * from "./components/builder/email-builder";
|
|
17
|
+
export * from "./components/builder/block-palette";
|
|
18
|
+
export * from "./components/builder/canvas";
|
|
19
|
+
export * from "./components/builder/sortable-item";
|
|
20
|
+
export * from "./components/builder/editable-block-renderer";
|
|
21
|
+
export * from "./components/builder/properties-panel";
|
|
22
|
+
export * from "./components/builder/inline-text-editor";
|
|
23
|
+
export * from "./components/builder/selection-toolbar";
|
|
24
|
+
export * from "./components/builder/variables-info-dialog";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAG/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC"}
|