@endora-commerce/page-builder-admin 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/chrome/AssetPickers.d.ts +16 -0
- package/dist/chrome/AssetPickers.d.ts.map +1 -0
- package/dist/chrome/AssetPickers.js +112 -0
- package/dist/chrome/AssetPickers.js.map +1 -0
- package/dist/chrome/CatalogPickers.d.ts +6 -0
- package/dist/chrome/CatalogPickers.d.ts.map +1 -0
- package/dist/chrome/CatalogPickers.js +310 -0
- package/dist/chrome/CatalogPickers.js.map +1 -0
- package/dist/chrome/ColorPaletteModal.d.ts +11 -0
- package/dist/chrome/ColorPaletteModal.d.ts.map +1 -0
- package/dist/chrome/ColorPaletteModal.js +82 -0
- package/dist/chrome/ColorPaletteModal.js.map +1 -0
- package/dist/chrome/ColorPaletteProvider.d.ts +7 -0
- package/dist/chrome/ColorPaletteProvider.d.ts.map +1 -0
- package/dist/chrome/ColorPaletteProvider.js +40 -0
- package/dist/chrome/ColorPaletteProvider.js.map +1 -0
- package/dist/chrome/PageBuilderHeaderActions.d.ts +52 -0
- package/dist/chrome/PageBuilderHeaderActions.d.ts.map +1 -0
- package/dist/chrome/PageBuilderHeaderActions.js +242 -0
- package/dist/chrome/PageBuilderHeaderActions.js.map +1 -0
- package/dist/chrome/PageBuilderOverlayBridge.d.ts +10 -0
- package/dist/chrome/PageBuilderOverlayBridge.d.ts.map +1 -0
- package/dist/chrome/PageBuilderOverlayBridge.js +25 -0
- package/dist/chrome/PageBuilderOverlayBridge.js.map +1 -0
- package/dist/chrome/QuickTooltip.d.ts +8 -0
- package/dist/chrome/QuickTooltip.d.ts.map +1 -0
- package/dist/chrome/QuickTooltip.js +33 -0
- package/dist/chrome/QuickTooltip.js.map +1 -0
- package/dist/chrome/action-bar-target.d.ts +12 -0
- package/dist/chrome/action-bar-target.d.ts.map +1 -0
- package/dist/chrome/action-bar-target.js +37 -0
- package/dist/chrome/action-bar-target.js.map +1 -0
- package/dist/chrome/cms-page-builder-api.d.ts +21 -0
- package/dist/chrome/cms-page-builder-api.d.ts.map +1 -0
- package/dist/chrome/cms-page-builder-api.js +50 -0
- package/dist/chrome/cms-page-builder-api.js.map +1 -0
- package/dist/chrome/page-builder-data.d.ts +5 -0
- package/dist/chrome/page-builder-data.d.ts.map +1 -0
- package/dist/chrome/page-builder-data.js +12 -0
- package/dist/chrome/page-builder-data.js.map +1 -0
- package/dist/email/EmailBuilderActionBar.d.ts +8 -0
- package/dist/email/EmailBuilderActionBar.d.ts.map +1 -0
- package/dist/email/EmailBuilderActionBar.js +91 -0
- package/dist/email/EmailBuilderActionBar.js.map +1 -0
- package/dist/email/EmailEditorPane.d.ts +42 -0
- package/dist/email/EmailEditorPane.d.ts.map +1 -0
- package/dist/email/EmailEditorPane.js +637 -0
- package/dist/email/EmailEditorPane.js.map +1 -0
- package/dist/email/EmailRichTextField.d.ts +14 -0
- package/dist/email/EmailRichTextField.d.ts.map +1 -0
- package/dist/email/EmailRichTextField.js +45 -0
- package/dist/email/EmailRichTextField.js.map +1 -0
- package/dist/email/EmailRowLayoutPicker.d.ts +8 -0
- package/dist/email/EmailRowLayoutPicker.d.ts.map +1 -0
- package/dist/email/EmailRowLayoutPicker.js +17 -0
- package/dist/email/EmailRowLayoutPicker.js.map +1 -0
- package/dist/email/EmailVariableFields.d.ts +13 -0
- package/dist/email/EmailVariableFields.d.ts.map +1 -0
- package/dist/email/EmailVariableFields.js +49 -0
- package/dist/email/EmailVariableFields.js.map +1 -0
- package/dist/email/EmailVariablesProvider.d.ts +15 -0
- package/dist/email/EmailVariablesProvider.d.ts.map +1 -0
- package/dist/email/EmailVariablesProvider.js +54 -0
- package/dist/email/EmailVariablesProvider.js.map +1 -0
- package/dist/email/email-builder-plugin.d.ts +6 -0
- package/dist/email/email-builder-plugin.d.ts.map +1 -0
- package/dist/email/email-builder-plugin.js +14 -0
- package/dist/email/email-builder-plugin.js.map +1 -0
- package/dist/email/email-template-layout.d.ts +16 -0
- package/dist/email/email-template-layout.d.ts.map +1 -0
- package/dist/email/email-template-layout.js +55 -0
- package/dist/email/email-template-layout.js.map +1 -0
- package/dist/email/email-templates-api.d.ts +14 -0
- package/dist/email/email-templates-api.d.ts.map +1 -0
- package/dist/email/email-templates-api.js +54 -0
- package/dist/email/email-templates-api.js.map +1 -0
- package/dist/email/index.d.ts +33 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +33 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/insert-at-cursor.d.ts +8 -0
- package/dist/email/insert-at-cursor.d.ts.map +1 -0
- package/dist/email/insert-at-cursor.js +12 -0
- package/dist/email/insert-at-cursor.js.map +1 -0
- package/dist/email/variables.d.ts +20 -0
- package/dist/email/variables.d.ts.map +1 -0
- package/dist/email/variables.js +41 -0
- package/dist/email/variables.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/package.json +69 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailEditorPane.js","sourceRoot":"","sources":["../../src/email/EmailEditorPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CustomField } from '@measured/puck';
|
|
2
|
+
import { htmlFromTiptap } from '@endora-commerce/cms-components';
|
|
3
|
+
/**
|
|
4
|
+
* Reuses the CMS Page Builder Rich Content TipTap field, plus an email Variable
|
|
5
|
+
* button. Persisted authoring value is TipTap JSON (`content`); `html` is synced
|
|
6
|
+
* in resolveData via sanitizeEmailHtml(htmlFromTiptap(...)).
|
|
7
|
+
*/
|
|
8
|
+
type TipTapJson = Parameters<typeof htmlFromTiptap>[0];
|
|
9
|
+
/** Puck custom field bound to EmailRichText `content` (TipTap JSON). */
|
|
10
|
+
export declare const emailRichTextContentField: CustomField<TipTapJson | null>;
|
|
11
|
+
/** Sync TipTap JSON → email-safe HTML string. */
|
|
12
|
+
export declare function emailHtmlFromRichContent(content: unknown): string;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=EmailRichTextField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailRichTextField.d.ts","sourceRoot":"","sources":["../../src/email/EmailRichTextField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKjE;;;;GAIG;AAEH,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAsDvD,wEAAwE;AACxE,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,UAAU,GAAG,IAAI,CAUpE,CAAC;AAUF,iDAAiD;AACjD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAOjE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { lazy, Suspense } from 'react';
|
|
3
|
+
import { sanitizeEmailHtml } from '@endora-commerce/email-components';
|
|
4
|
+
import { htmlFromTiptap } from '@endora-commerce/cms-components';
|
|
5
|
+
import { Button } from '@endora-commerce/admin-kit/ui';
|
|
6
|
+
import { toAbsoluteAssetUrl } from '@endora-commerce/admin-kit/lib';
|
|
7
|
+
import { useEmailVariables } from './EmailVariablesProvider.js';
|
|
8
|
+
const LazyRichContentEditorField = lazy(async () => {
|
|
9
|
+
const mod = await import('@endora-commerce/cms-components');
|
|
10
|
+
return { default: mod.RichContentEditorField };
|
|
11
|
+
});
|
|
12
|
+
function VariableToolbarButton({ insert, }) {
|
|
13
|
+
const { openPicker } = useEmailVariables();
|
|
14
|
+
return (_jsx(Button, { type: "button", variant: "outline", size: "sm", className: "h-[30px] px-2 text-xs", onMouseDown: (e) => e.preventDefault(), onClick: () => openPicker(insert), children: "Variable" }));
|
|
15
|
+
}
|
|
16
|
+
function EmailRichTextContentEditor({ value, onChange, readOnly = false, }) {
|
|
17
|
+
return (_jsx(Suspense, { fallback: _jsx("p", { className: "text-sm text-muted-foreground", children: "Loading editor\u2026" }), children: _jsx(LazyRichContentEditorField, { value: value ?? null, onChange: onChange, ...(readOnly ? { readOnly: true } : {}), toolbarExtra: (editor) => (_jsx(VariableToolbarButton, { insert: (snippet) => {
|
|
18
|
+
editor.chain().focus().insertContent(snippet).run();
|
|
19
|
+
} })) }) }));
|
|
20
|
+
}
|
|
21
|
+
/** Puck custom field bound to EmailRichText `content` (TipTap JSON). */
|
|
22
|
+
export const emailRichTextContentField = {
|
|
23
|
+
type: 'custom',
|
|
24
|
+
label: 'Rich text',
|
|
25
|
+
render: ({ value, onChange, readOnly }) => (_jsx(EmailRichTextContentEditor, { value: value, onChange: onChange, ...(readOnly !== undefined ? { readOnly } : {}) })),
|
|
26
|
+
};
|
|
27
|
+
/** Make host-relative image URLs absolute so email clients / preview can load them. */
|
|
28
|
+
function absolutizeImgSrcs(html) {
|
|
29
|
+
return html.replace(/<img\b([^>]*?)\bsrc="([^"]*)"/gi, (_full, before, src) => {
|
|
30
|
+
const absolute = toAbsoluteAssetUrl(src);
|
|
31
|
+
return `<img${before}src="${absolute.replace(/"/g, '"')}"`;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** Sync TipTap JSON → email-safe HTML string. */
|
|
35
|
+
export function emailHtmlFromRichContent(content) {
|
|
36
|
+
if (!content || typeof content !== 'object')
|
|
37
|
+
return '';
|
|
38
|
+
try {
|
|
39
|
+
return absolutizeImgSrcs(sanitizeEmailHtml(htmlFromTiptap(content)));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=EmailRichTextField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailRichTextField.js","sourceRoot":"","sources":["../../src/email/EmailRichTextField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import { type EmailRowLayoutPresetId } from '@endora-commerce/email-components';
|
|
3
|
+
export declare function EmailRowLayoutPicker({ open, onOpenChange, onSelect, }: {
|
|
4
|
+
open: boolean;
|
|
5
|
+
onOpenChange: (open: boolean) => void;
|
|
6
|
+
onSelect: (presetId: EmailRowLayoutPresetId) => void;
|
|
7
|
+
}): ReactElement | null;
|
|
8
|
+
//# sourceMappingURL=EmailRowLayoutPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailRowLayoutPicker.d.ts","sourceRoot":"","sources":["../../src/email/EmailRowLayoutPicker.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,mCAAmC,CAAC;AAG3C,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACtD,GAAG,YAAY,GAAG,IAAI,CAqDtB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
|
+
import { EMAIL_ROW_LAYOUT_PRESETS, } from '@endora-commerce/email-components';
|
|
5
|
+
import { Button } from '@endora-commerce/admin-kit/ui';
|
|
6
|
+
export function EmailRowLayoutPicker({ open, onOpenChange, onSelect, }) {
|
|
7
|
+
if (!open || typeof document === 'undefined')
|
|
8
|
+
return null;
|
|
9
|
+
return createPortal(_jsx("div", { className: "fixed inset-0 flex items-center justify-center bg-black/40 p-4", style: { zIndex: 10000 }, role: "presentation", onPointerDown: (e) => {
|
|
10
|
+
if (e.target === e.currentTarget)
|
|
11
|
+
onOpenChange(false);
|
|
12
|
+
}, children: _jsxs("div", { className: "w-full max-w-md rounded-lg border bg-background p-5 shadow-lg", role: "dialog", "aria-modal": "true", "aria-labelledby": "email-row-layout-picker-title", onPointerDown: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "mb-4 space-y-1", children: [_jsx("h2", { id: "email-row-layout-picker-title", className: "text-lg font-semibold", children: "Choose column layout" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Pick how many columns this row should have (max 6). You can change it later from the row action bar." })] }), _jsx("div", { className: "grid grid-cols-2 gap-2", children: EMAIL_ROW_LAYOUT_PRESETS.map((preset) => (_jsx(Button, { type: "button", variant: "outline", className: "h-auto justify-start py-3", onClick: () => {
|
|
13
|
+
onSelect(preset.id);
|
|
14
|
+
onOpenChange(false);
|
|
15
|
+
}, children: _jsx("span", { className: "font-medium", children: preset.label }) }, preset.id))) }), _jsx("div", { className: "mt-4 flex justify-end", children: _jsx(Button, { type: "button", variant: "ghost", onClick: () => onOpenChange(false), children: "Skip" }) })] }) }), document.body);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=EmailRowLayoutPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailRowLayoutPicker.js","sourceRoot":"","sources":["../../src/email/EmailRowLayoutPicker.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EACL,wBAAwB,GAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAEvD,MAAM,UAAU,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,QAAQ,GAKT;IACC,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAE1D,OAAO,YAAY,CACjB,cACE,SAAS,EAAC,gEAAgE,EAC1E,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EACxB,IAAI,EAAC,cAAc,EACnB,aAAa,EAAE,CAAC,CAAC,EAAQ,EAAE;YACzB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,YAED,eACE,SAAS,EAAC,+DAA+D,EACzE,IAAI,EAAC,QAAQ,gBACF,MAAM,qBACD,+BAA+B,EAC/C,aAAa,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,aAE/C,eAAK,SAAS,EAAC,gBAAgB,aAC7B,aAAI,EAAE,EAAC,+BAA+B,EAAC,SAAS,EAAC,uBAAuB,qCAEnE,EACL,YAAG,SAAS,EAAC,+BAA+B,qHAGxC,IACA,EACN,cAAK,SAAS,EAAC,wBAAwB,YACpC,wBAAwB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxC,KAAC,MAAM,IAEL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,2BAA2B,EACrC,OAAO,EAAE,GAAS,EAAE;4BAClB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BACpB,YAAY,CAAC,KAAK,CAAC,CAAC;wBACtB,CAAC,YAED,eAAM,SAAS,EAAC,aAAa,YAAE,MAAM,CAAC,KAAK,GAAQ,IAT9C,MAAM,CAAC,EAAE,CAUP,CACV,CAAC,GACE,EACN,cAAK,SAAS,EAAC,uBAAuB,YACpC,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,GAAS,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,qBAErE,GACL,IACF,GACF,EACN,QAAQ,CAAC,IAAI,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CustomField } from '@measured/puck';
|
|
2
|
+
/** Puck custom field: single-line text + variable insert. */
|
|
3
|
+
export declare const emailTextWithVariablesField: CustomField<string>;
|
|
4
|
+
/** Puck custom field: textarea + variable insert. */
|
|
5
|
+
export declare const emailTextareaWithVariablesField: CustomField<string>;
|
|
6
|
+
export declare function EmailSubjectWithVariables({ value, onChange, disabled, id, placeholder, }: {
|
|
7
|
+
value: string;
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
id?: string;
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
}): React.ReactElement;
|
|
13
|
+
//# sourceMappingURL=EmailVariableFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailVariableFields.d.ts","sourceRoot":"","sources":["../../src/email/EmailVariableFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAiElD,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAG3D,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,+BAA+B,EAAE,WAAW,CAAC,MAAM,CAG/D,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,KAAK,CAAC,YAAY,CAgCrB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { Button, Input, Textarea } from '@endora-commerce/admin-kit/ui';
|
|
4
|
+
import { insertAtCursor } from './insert-at-cursor.js';
|
|
5
|
+
import { useEmailVariables } from './EmailVariablesProvider.js';
|
|
6
|
+
function VariableFieldShell({ multiline, value, onChange, readOnly, field, }) {
|
|
7
|
+
const ref = useRef(null);
|
|
8
|
+
const { openPicker } = useEmailVariables();
|
|
9
|
+
const insert = (snippet) => {
|
|
10
|
+
const el = ref.current;
|
|
11
|
+
const current = value ?? '';
|
|
12
|
+
const start = el?.selectionStart ?? current.length;
|
|
13
|
+
const end = el?.selectionEnd ?? start;
|
|
14
|
+
const next = insertAtCursor(current, snippet, start, end);
|
|
15
|
+
onChange(next.value);
|
|
16
|
+
requestAnimationFrame(() => {
|
|
17
|
+
el?.focus();
|
|
18
|
+
el?.setSelectionRange(next.selectionStart, next.selectionEnd);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
return (_jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [field.label ? _jsx("span", { className: "text-sm font-medium", children: field.label }) : _jsx("span", {}), _jsx(Button, { type: "button", variant: "outline", size: "sm", disabled: readOnly, onClick: () => openPicker(insert), children: "Variable" })] }), multiline ? (_jsx(Textarea, { ref: ref, value: value ?? '', onChange: (e) => onChange(e.target.value), disabled: readOnly, rows: 4, placeholder: field.placeholder })) : (_jsx(Input, { ref: ref, value: value ?? '', onChange: (e) => onChange(e.target.value), disabled: readOnly, placeholder: field.placeholder }))] }));
|
|
22
|
+
}
|
|
23
|
+
/** Puck custom field: single-line text + variable insert. */
|
|
24
|
+
export const emailTextWithVariablesField = {
|
|
25
|
+
type: 'custom',
|
|
26
|
+
render: (props) => _jsx(VariableFieldShell, { ...props, multiline: false }),
|
|
27
|
+
};
|
|
28
|
+
/** Puck custom field: textarea + variable insert. */
|
|
29
|
+
export const emailTextareaWithVariablesField = {
|
|
30
|
+
type: 'custom',
|
|
31
|
+
render: (props) => _jsx(VariableFieldShell, { ...props, multiline: true }),
|
|
32
|
+
};
|
|
33
|
+
export function EmailSubjectWithVariables({ value, onChange, disabled, id, placeholder, }) {
|
|
34
|
+
const ref = useRef(null);
|
|
35
|
+
const { openPicker } = useEmailVariables();
|
|
36
|
+
const insert = (snippet) => {
|
|
37
|
+
const el = ref.current;
|
|
38
|
+
const start = el?.selectionStart ?? value.length;
|
|
39
|
+
const end = el?.selectionEnd ?? start;
|
|
40
|
+
const next = insertAtCursor(value, snippet, start, end);
|
|
41
|
+
onChange(next.value);
|
|
42
|
+
requestAnimationFrame(() => {
|
|
43
|
+
el?.focus();
|
|
44
|
+
el?.setSelectionRange(next.selectionStart, next.selectionEnd);
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
return (_jsxs("div", { className: "flex gap-2", children: [_jsx(Input, { id: id, ref: ref, value: value, onChange: (e) => onChange(e.target.value), disabled: disabled, placeholder: placeholder, className: "flex-1" }), _jsx(Button, { type: "button", variant: "outline", disabled: disabled, onClick: () => openPicker(insert), children: "Variable" })] }));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=EmailVariableFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailVariableFields.js","sourceRoot":"","sources":["../../src/email/EmailVariableFields.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAShE,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,GAC+B;IACpC,MAAM,GAAG,GAAG,MAAM,CAAgD,IAAI,CAAC,CAAC;IACxE,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,CAAC,OAAe,EAAQ,EAAE;QACvC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,EAAE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;QACnD,MAAM,GAAG,GAAG,EAAE,EAAE,YAAY,IAAI,KAAK,CAAC;QACtC,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,qBAAqB,CAAC,GAAG,EAAE;YACzB,EAAE,EAAE,KAAK,EAAE,CAAC;YACZ,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,yCAAyC,aACrD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,qBAAqB,YAAE,KAAK,CAAC,KAAK,GAAQ,CAAC,CAAC,CAAC,gBAAQ,EACpF,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,yBAE9F,IACL,EACL,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,QAAQ,IACP,GAAG,EAAE,GAA2C,EAChD,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,CAAC,EACP,WAAW,EAAE,KAAK,CAAC,WAAW,GAC9B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IACJ,GAAG,EAAE,GAAwC,EAC7C,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,KAAK,CAAC,WAAW,GAC9B,CACH,IACG,CACP,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAwB;IAC9D,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAC,kBAAkB,OAAK,KAAK,EAAE,SAAS,EAAE,KAAK,GAAI;CACvE,CAAC;AAEF,qDAAqD;AACrD,MAAM,CAAC,MAAM,+BAA+B,GAAwB;IAClE,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAC,kBAAkB,OAAK,KAAK,EAAE,SAAS,SAAG;CAC/D,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,WAAW,GAOZ;IACC,MAAM,GAAG,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,CAAC,OAAe,EAAQ,EAAE;QACvC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,MAAM,KAAK,GAAG,EAAE,EAAE,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;QACjD,MAAM,GAAG,GAAG,EAAE,EAAE,YAAY,IAAI,KAAK,CAAC;QACtC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,qBAAqB,CAAC,GAAG,EAAE;YACzB,EAAE,EAAE,KAAK,EAAE,CAAC;YACZ,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,YAAY,aACzB,KAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAC,QAAQ,GAClB,EACF,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,yBAEpF,IACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { EmailVariableItem } from './variables.js';
|
|
3
|
+
export type { EmailVariableItem } from './variables.js';
|
|
4
|
+
export { varSnippet } from './insert-at-cursor.js';
|
|
5
|
+
type InsertHandler = (snippet: string) => void;
|
|
6
|
+
interface EmailVariablesContextValue {
|
|
7
|
+
variables: EmailVariableItem[];
|
|
8
|
+
openPicker: (onInsert: InsertHandler) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function useEmailVariables(): EmailVariablesContextValue;
|
|
11
|
+
export declare function EmailVariablesProvider({ variables, children, }: {
|
|
12
|
+
variables: EmailVariableItem[];
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
}): React.ReactElement;
|
|
15
|
+
//# sourceMappingURL=EmailVariablesProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailVariablesProvider.d.ts","sourceRoot":"","sources":["../../src/email/EmailVariablesProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE/C,UAAU,0BAA0B;IAClC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;CAC/C;AAID,wBAAgB,iBAAiB,IAAI,0BAA0B,CAW9D;AAED,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,KAAK,CAAC,YAAY,CAiGrB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useMemo, useState } from 'react';
|
|
3
|
+
import { Button, Input } from '@endora-commerce/admin-kit/ui';
|
|
4
|
+
import { normalize } from '@endora-commerce/admin-kit/lib';
|
|
5
|
+
import { varSnippet } from './insert-at-cursor.js';
|
|
6
|
+
export { varSnippet } from './insert-at-cursor.js';
|
|
7
|
+
const EmailVariablesContext = createContext(null);
|
|
8
|
+
export function useEmailVariables() {
|
|
9
|
+
const ctx = useContext(EmailVariablesContext);
|
|
10
|
+
if (!ctx) {
|
|
11
|
+
return {
|
|
12
|
+
variables: [],
|
|
13
|
+
openPicker: () => {
|
|
14
|
+
/* no-op when provider is absent */
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return ctx;
|
|
19
|
+
}
|
|
20
|
+
export function EmailVariablesProvider({ variables, children, }) {
|
|
21
|
+
const [open, setOpen] = useState(false);
|
|
22
|
+
const [query, setQuery] = useState('');
|
|
23
|
+
const [pendingInsert, setPendingInsert] = useState(null);
|
|
24
|
+
const openPicker = useCallback((onInsert) => {
|
|
25
|
+
setPendingInsert(() => onInsert);
|
|
26
|
+
setQuery('');
|
|
27
|
+
setOpen(true);
|
|
28
|
+
}, []);
|
|
29
|
+
const value = useMemo(() => ({ variables, openPicker }), [variables, openPicker]);
|
|
30
|
+
const filtered = useMemo(() => {
|
|
31
|
+
const q = normalize(query);
|
|
32
|
+
if (!q)
|
|
33
|
+
return variables;
|
|
34
|
+
return variables.filter((v) => normalize(v.key).includes(q) ||
|
|
35
|
+
normalize(v.label).includes(q) ||
|
|
36
|
+
(v.description !== undefined && normalize(v.description).includes(q)));
|
|
37
|
+
}, [variables, query]);
|
|
38
|
+
const pick = (item) => {
|
|
39
|
+
const snippet = item.snippet ?? varSnippet(item.key);
|
|
40
|
+
pendingInsert?.(snippet);
|
|
41
|
+
setOpen(false);
|
|
42
|
+
setPendingInsert(null);
|
|
43
|
+
};
|
|
44
|
+
return (_jsxs(EmailVariablesContext.Provider, { value: value, children: [children, open ? (_jsx("div", { className: "fixed inset-0 z-[80] flex items-center justify-center bg-black/40 p-4", role: "dialog", "aria-modal": "true", "aria-label": "Insert variable", onClick: (e) => {
|
|
45
|
+
if (e.target === e.currentTarget) {
|
|
46
|
+
setOpen(false);
|
|
47
|
+
setPendingInsert(null);
|
|
48
|
+
}
|
|
49
|
+
}, children: _jsxs("div", { className: "flex max-h-[80vh] w-full max-w-lg flex-col rounded-lg border bg-background shadow-lg", children: [_jsxs("div", { className: "space-y-2 border-b p-4", children: [_jsx("h2", { className: "text-sm font-semibold", children: "Insert variable" }), _jsx(Input, { autoFocus: true, placeholder: "Search variables\u2026", value: query, onChange: (e) => setQuery(e.target.value) })] }), _jsxs("ul", { className: "min-h-0 flex-1 overflow-y-auto p-2", children: [filtered.map((v) => (_jsx("li", { children: _jsxs("button", { type: "button", className: "flex w-full flex-col items-start gap-0.5 rounded-md px-3 py-2 text-left hover:bg-muted", onClick: () => pick(v), children: [_jsx("span", { className: "text-sm font-medium", children: v.label }), _jsx("span", { className: "font-mono text-xs text-muted-foreground", children: v.snippet ?? varSnippet(v.key) }), v.description ? (_jsx("span", { className: "text-xs text-muted-foreground", children: v.description })) : null] }) }, v.key))), filtered.length === 0 ? (_jsx("li", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "No matches." })) : null] }), _jsx("div", { className: "flex justify-end border-t p-3", children: _jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: () => {
|
|
50
|
+
setOpen(false);
|
|
51
|
+
setPendingInsert(null);
|
|
52
|
+
}, children: "Cancel" }) })] }) })) : null] }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=EmailVariablesProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailVariablesProvider.js","sourceRoot":"","sources":["../../src/email/EmailVariablesProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Plugin } from '@measured/puck';
|
|
2
|
+
/**
|
|
3
|
+
* Email builder plugin — Outline like CMS, without CMS viewport / responsive field wiring.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createEmailBuilderEditorPlugin(): Plugin;
|
|
6
|
+
//# sourceMappingURL=email-builder-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-builder-plugin.d.ts","sourceRoot":"","sources":["../../src/email/email-builder-plugin.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAQvD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { PageBuilderOutline } from '@endora-commerce/page-builder-core/editor';
|
|
4
|
+
/**
|
|
5
|
+
* Email builder plugin — Outline like CMS, without CMS viewport / responsive field wiring.
|
|
6
|
+
*/
|
|
7
|
+
export function createEmailBuilderEditorPlugin() {
|
|
8
|
+
return {
|
|
9
|
+
overrides: {
|
|
10
|
+
outline: ({ children }) => (_jsx(PageBuilderOutline, { children: children })),
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=email-builder-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-builder-plugin.js","sourceRoot":"","sources":["../../src/email/email-builder-plugin.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,SAAS,EAAE;YACT,OAAO,EAAE,CAAC,EAAE,QAAQ,EAA2B,EAAgB,EAAE,CAAC,CAChE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,CACpD;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Data } from '@measured/puck';
|
|
2
|
+
import type { EmailTemplateDetail } from '@endora-commerce/contracts';
|
|
3
|
+
export declare function saveCanvasAsEmailTemplate(input: {
|
|
4
|
+
name: string;
|
|
5
|
+
code: string;
|
|
6
|
+
data: Data;
|
|
7
|
+
salesChannelIds?: string[];
|
|
8
|
+
languages: string[];
|
|
9
|
+
activeLanguage: string | null;
|
|
10
|
+
}): Promise<EmailTemplateDetail>;
|
|
11
|
+
export declare function listEmailTemplatesForApply(salesChannelId?: string | null): Promise<Array<{
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
}>>;
|
|
15
|
+
export declare function loadEmailTemplateCanvas(templateId: string, preferredLanguage: string | null): Promise<Data>;
|
|
16
|
+
//# sourceMappingURL=email-template-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-template-layout.d.ts","sourceRoot":"","sources":["../../src/email/email-template-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAwB,MAAM,4BAA4B,CAAC;AAS5F,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwB/B;AAED,wBAAsB,0BAA0B,CAC9C,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAM/C;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { emptyPageBuilderData, isEmptyPageBuilderData } from '../chrome/page-builder-data.js';
|
|
2
|
+
import { createEmailTemplate, getEmailTemplate, listEmailTemplates, putEmailTemplateContent, } from './email-templates-api.js';
|
|
3
|
+
export async function saveCanvasAsEmailTemplate(input) {
|
|
4
|
+
if (isEmptyPageBuilderData(input.data)) {
|
|
5
|
+
throw new Error('EMPTY_CANVAS');
|
|
6
|
+
}
|
|
7
|
+
if (input.languages.length === 0) {
|
|
8
|
+
throw new Error('MISSING_SCOPE');
|
|
9
|
+
}
|
|
10
|
+
const language = input.activeLanguage ?? input.languages[0];
|
|
11
|
+
if (!language) {
|
|
12
|
+
throw new Error('MISSING_SCOPE');
|
|
13
|
+
}
|
|
14
|
+
const created = await createEmailTemplate({
|
|
15
|
+
name: input.name.trim(),
|
|
16
|
+
code: input.code.trim(),
|
|
17
|
+
languages: input.languages,
|
|
18
|
+
...(input.salesChannelIds && input.salesChannelIds.length > 0
|
|
19
|
+
? { salesChannelIds: input.salesChannelIds }
|
|
20
|
+
: {}),
|
|
21
|
+
});
|
|
22
|
+
return putEmailTemplateContent(created.id, language, {
|
|
23
|
+
content: input.data,
|
|
24
|
+
expectedVersion: created.version,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export async function listEmailTemplatesForApply(salesChannelId) {
|
|
28
|
+
const res = await listEmailTemplates(salesChannelId ?? undefined);
|
|
29
|
+
return res.items.map((tpl) => ({
|
|
30
|
+
id: tpl.id,
|
|
31
|
+
label: tpl.name ? `${tpl.name} (${tpl.code})` : tpl.code,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
export async function loadEmailTemplateCanvas(templateId, preferredLanguage) {
|
|
35
|
+
const detail = await getEmailTemplate(templateId);
|
|
36
|
+
const language = (preferredLanguage && detail.languages.includes(preferredLanguage)
|
|
37
|
+
? preferredLanguage
|
|
38
|
+
: null) ??
|
|
39
|
+
detail.languages[0] ??
|
|
40
|
+
Object.keys(detail.content)[0] ??
|
|
41
|
+
null;
|
|
42
|
+
if (!language) {
|
|
43
|
+
return emptyPageBuilderData();
|
|
44
|
+
}
|
|
45
|
+
const tree = detail.content[language];
|
|
46
|
+
if (tree && typeof tree === 'object') {
|
|
47
|
+
return structuredClone(tree);
|
|
48
|
+
}
|
|
49
|
+
const fallback = Object.values(detail.content)[0];
|
|
50
|
+
if (fallback && typeof fallback === 'object') {
|
|
51
|
+
return structuredClone(fallback);
|
|
52
|
+
}
|
|
53
|
+
return emptyPageBuilderData();
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=email-template-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-template-layout.js","sourceRoot":"","sources":["../../src/email/email-template-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CreateEmailTemplateRequest, EmailBranding, EmailTemplateDetail, EmailTemplateSummary, PutEmailBlockContentRequest } from '@endora-commerce/contracts';
|
|
2
|
+
/** The logo and accent colour the preview resolves `{{var branding.*}}` from. */
|
|
3
|
+
export declare function getEmailBranding(salesChannelId: string | null): Promise<EmailBranding>;
|
|
4
|
+
/** The templates offered by the "apply a template" picker. */
|
|
5
|
+
export declare function listEmailTemplates(salesChannelId?: string): Promise<{
|
|
6
|
+
items: EmailTemplateSummary[];
|
|
7
|
+
}>;
|
|
8
|
+
/** One template with its per-language canvases. */
|
|
9
|
+
export declare function getEmailTemplate(id: string): Promise<EmailTemplateDetail>;
|
|
10
|
+
/** Create the template a "save canvas as template" writes into. */
|
|
11
|
+
export declare function createEmailTemplate(body: CreateEmailTemplateRequest): Promise<EmailTemplateDetail>;
|
|
12
|
+
/** Write one language's canvas into an existing template. */
|
|
13
|
+
export declare function putEmailTemplateContent(id: string, language: string, body: PutEmailBlockContentRequest): Promise<EmailTemplateDetail>;
|
|
14
|
+
//# sourceMappingURL=email-templates-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-templates-api.d.ts","sourceRoot":"","sources":["../../src/email/email-templates-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AAuCpC,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAEtF;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAChC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,KAAK,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAAC,CAM5C;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAIzE;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,6DAA6D;AAC7D,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAO9B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { apiClient } from '@endora-commerce/admin-kit/lib';
|
|
2
|
+
/**
|
|
3
|
+
* The five e-mail-template calls and the one branding read, rebuilt on the
|
|
4
|
+
* published `apiClient` — the **client exit**
|
|
5
|
+
* (`specs/091-module-owned-admin-surfaces/contracts/admin-component-contribution.md`
|
|
6
|
+
* Z1.2, which is P2's clarification of R6 and needs no new rule).
|
|
7
|
+
*
|
|
8
|
+
* `email-template-layout.ts` and `EmailEditorPane` reached
|
|
9
|
+
* `transactional_emails`' own `transactionalEmailsClient` for these. That is the
|
|
10
|
+
* one kind of module knowledge a published component may carry and rebuild — an
|
|
11
|
+
* HTTP path plus a contract type — and every type it needs is already
|
|
12
|
+
* `@endora-commerce/contracts`', so nothing here is a copy of a
|
|
13
|
+
* `transactional_emails` type.
|
|
14
|
+
*
|
|
15
|
+
* **The rejected alternative is why this is not a shortcut.** Having
|
|
16
|
+
* `transactional_emails` publish the three template operations on its own
|
|
17
|
+
* package would re-create the coupling this removes: `newsletter` would reach
|
|
18
|
+
* `@endora-commerce/mod-transactional-emails` for its template hub, a real
|
|
19
|
+
* cross-module reach ledgered for as long as it stood, where three `GET`/`POST`s
|
|
20
|
+
* over published types are none.
|
|
21
|
+
*
|
|
22
|
+
* **The branding exposure is carried across unchanged and is recorded rather
|
|
23
|
+
* than solved** (Z1.2). The endpoint is `transactional_emails`', so an operator
|
|
24
|
+
* who switches that module off gets a 503 here — as they did before this package
|
|
25
|
+
* existed. The call site degrades to an empty logo and the builder still opens,
|
|
26
|
+
* which is honest.
|
|
27
|
+
*/
|
|
28
|
+
const BASE = '/api/v1/admin/transactional-emails';
|
|
29
|
+
const unwrap = (p) => p.then((r) => r.data);
|
|
30
|
+
/** `?salesChannelId=…`, or the empty string for the unscoped read. */
|
|
31
|
+
function scopeQs(salesChannelId) {
|
|
32
|
+
return salesChannelId ? `?salesChannelId=${encodeURIComponent(salesChannelId)}` : '';
|
|
33
|
+
}
|
|
34
|
+
/** The logo and accent colour the preview resolves `{{var branding.*}}` from. */
|
|
35
|
+
export function getEmailBranding(salesChannelId) {
|
|
36
|
+
return unwrap(apiClient.get(`${BASE}/branding${scopeQs(salesChannelId)}`));
|
|
37
|
+
}
|
|
38
|
+
/** The templates offered by the "apply a template" picker. */
|
|
39
|
+
export function listEmailTemplates(salesChannelId) {
|
|
40
|
+
return unwrap(apiClient.get(`${BASE}/templates${scopeQs(salesChannelId ?? null)}`));
|
|
41
|
+
}
|
|
42
|
+
/** One template with its per-language canvases. */
|
|
43
|
+
export function getEmailTemplate(id) {
|
|
44
|
+
return unwrap(apiClient.get(`${BASE}/templates/${encodeURIComponent(id)}`));
|
|
45
|
+
}
|
|
46
|
+
/** Create the template a "save canvas as template" writes into. */
|
|
47
|
+
export function createEmailTemplate(body) {
|
|
48
|
+
return unwrap(apiClient.post(`${BASE}/templates`, body));
|
|
49
|
+
}
|
|
50
|
+
/** Write one language's canvas into an existing template. */
|
|
51
|
+
export function putEmailTemplateContent(id, language, body) {
|
|
52
|
+
return unwrap(apiClient.put(`${BASE}/templates/${encodeURIComponent(id)}/content/${language}`, body));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=email-templates-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-templates-api.js","sourceRoot":"","sources":["../../src/email/email-templates-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAS3D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,IAAI,GAAG,oCAAoC,CAAC;AAIlD,MAAM,MAAM,GAAG,CAAI,CAAmB,EAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE7E,sEAAsE;AACtE,SAAS,OAAO,CAAC,cAA6B;IAC5C,OAAO,cAAc,CAAC,CAAC,CAAC,mBAAmB,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,cAA6B;IAC5D,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAsB,GAAG,IAAI,YAAY,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAChC,cAAuB;IAEvB,OAAO,MAAM,CACX,SAAS,CAAC,GAAG,CACX,GAAG,IAAI,aAAa,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CACtD,CACF,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,MAAM,CACX,SAAS,CAAC,GAAG,CAA4B,GAAG,IAAI,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CACxF,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,mBAAmB,CACjC,IAAgC;IAEhC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAA4B,GAAG,IAAI,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,uBAAuB,CACrC,EAAU,EACV,QAAgB,EAChB,IAAiC;IAEjC,OAAO,MAAM,CACX,SAAS,CAAC,GAAG,CACX,GAAG,IAAI,cAAc,kBAAkB,CAAC,EAAE,CAAC,YAAY,QAAQ,EAAE,EACjE,IAAI,CACL,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@endora-commerce/page-builder-admin/email` — the e-mail builder: the editor
|
|
3
|
+
* pane, its variable provider and fields, the row-layout picker, the rich-text
|
|
4
|
+
* field, the action bar and the template save/apply operations.
|
|
5
|
+
*
|
|
6
|
+
* It lived in `admin/src/modules/_shared/email-builder/`, a directory the admin
|
|
7
|
+
* application owned and no module did — which is what made it invisible to every
|
|
8
|
+
* instrument in the estate: `check:admin-surface` attributes ownership from the
|
|
9
|
+
* route table and the nav, and `_shared` is claimed by neither, so eighteen
|
|
10
|
+
* cross-directory reaches sat in no ledger and drained without anybody
|
|
11
|
+
* reporting it (`admin-component-contribution.md` Z1.2).
|
|
12
|
+
*
|
|
13
|
+
* The twelve reaches **out** of it are not now unwatched; they are impossible.
|
|
14
|
+
* `@/` is a Vite and `tsc` alias a package cannot resolve, so this package's own
|
|
15
|
+
* type-check refuses one — a stronger instrument than a ledger, and one nobody
|
|
16
|
+
* has to remember. The six reaches **in** are bare specifiers into a published
|
|
17
|
+
* `exports` map, which is what a package split *produces* rather than a coupling
|
|
18
|
+
* it breaks.
|
|
19
|
+
*
|
|
20
|
+
* Both remaining pieces of module knowledge take the **client exit**: the
|
|
21
|
+
* template operations and the branding read are rebuilt on `apiClient` over
|
|
22
|
+
* `@endora-commerce/contracts` types in `email-templates-api.ts`, and the colour
|
|
23
|
+
* palette in the chrome's `cms-page-builder-api.ts`. `newsletterVariables` took
|
|
24
|
+
* the third exit and lives in `newsletter`, its only consumer.
|
|
25
|
+
*/
|
|
26
|
+
export { EmailEditorPane, previewNode, type EmailEditorPaneProps, type EmailEmbedCodeOption, type EmailPreviewWidth, } from './EmailEditorPane.js';
|
|
27
|
+
export { EmailVariablesProvider, useEmailVariables, type EmailVariableItem, } from './EmailVariablesProvider.js';
|
|
28
|
+
export { EmailSubjectWithVariables } from './EmailVariableFields.js';
|
|
29
|
+
export { BRANDING_VARIABLES, mergeEmailVariables } from './variables.js';
|
|
30
|
+
export { insertAtCursor, varSnippet } from './insert-at-cursor.js';
|
|
31
|
+
export { createEmailBuilderEditorPlugin } from './email-builder-plugin.js';
|
|
32
|
+
export { listEmailTemplatesForApply, loadEmailTemplateCanvas, saveCanvasAsEmailTemplate, } from './email-template-layout.js';
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EACL,eAAe,EACf,WAAW,EACX,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@endora-commerce/page-builder-admin/email` — the e-mail builder: the editor
|
|
3
|
+
* pane, its variable provider and fields, the row-layout picker, the rich-text
|
|
4
|
+
* field, the action bar and the template save/apply operations.
|
|
5
|
+
*
|
|
6
|
+
* It lived in `admin/src/modules/_shared/email-builder/`, a directory the admin
|
|
7
|
+
* application owned and no module did — which is what made it invisible to every
|
|
8
|
+
* instrument in the estate: `check:admin-surface` attributes ownership from the
|
|
9
|
+
* route table and the nav, and `_shared` is claimed by neither, so eighteen
|
|
10
|
+
* cross-directory reaches sat in no ledger and drained without anybody
|
|
11
|
+
* reporting it (`admin-component-contribution.md` Z1.2).
|
|
12
|
+
*
|
|
13
|
+
* The twelve reaches **out** of it are not now unwatched; they are impossible.
|
|
14
|
+
* `@/` is a Vite and `tsc` alias a package cannot resolve, so this package's own
|
|
15
|
+
* type-check refuses one — a stronger instrument than a ledger, and one nobody
|
|
16
|
+
* has to remember. The six reaches **in** are bare specifiers into a published
|
|
17
|
+
* `exports` map, which is what a package split *produces* rather than a coupling
|
|
18
|
+
* it breaks.
|
|
19
|
+
*
|
|
20
|
+
* Both remaining pieces of module knowledge take the **client exit**: the
|
|
21
|
+
* template operations and the branding read are rebuilt on `apiClient` over
|
|
22
|
+
* `@endora-commerce/contracts` types in `email-templates-api.ts`, and the colour
|
|
23
|
+
* palette in the chrome's `cms-page-builder-api.ts`. `newsletterVariables` took
|
|
24
|
+
* the third exit and lives in `newsletter`, its only consumer.
|
|
25
|
+
*/
|
|
26
|
+
export { EmailEditorPane, previewNode, } from './EmailEditorPane.js';
|
|
27
|
+
export { EmailVariablesProvider, useEmailVariables, } from './EmailVariablesProvider.js';
|
|
28
|
+
export { EmailSubjectWithVariables } from './EmailVariableFields.js';
|
|
29
|
+
export { BRANDING_VARIABLES, mergeEmailVariables } from './variables.js';
|
|
30
|
+
export { insertAtCursor, varSnippet } from './insert-at-cursor.js';
|
|
31
|
+
export { createEmailBuilderEditorPlugin } from './email-builder-plugin.js';
|
|
32
|
+
export { listEmailTemplatesForApply, loadEmailTemplateCanvas, saveCanvasAsEmailTemplate, } from './email-template-layout.js';
|
|
33
|
+
//# sourceMappingURL=index.js.map
|