@maildeno/editor 0.4.5 → 0.4.7

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 (234) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/DatePicker-DIaGGAVI.js +5347 -0
  3. package/dist/DatePicker-DmMga5gQ.js +5347 -0
  4. package/dist/Dialog-GTfGtduh.js +6294 -0
  5. package/dist/HealthIndicator--ScSxVRA.js +1216 -0
  6. package/dist/HealthIndicator-BraAh2Aj.js +1217 -0
  7. package/dist/Icon-BYmOM482.js +2537 -0
  8. package/dist/Icon-c2SPT3-6.js +2577 -0
  9. package/dist/PreviewCanvas-C1-rP9-B.js +533 -0
  10. package/dist/PreviewCanvas-Nro7tNCn.js +533 -0
  11. package/dist/RichTextEditor-CrYhiAOo.js +12217 -0
  12. package/dist/RichTextEditor-D7Itx0fL.js +12218 -0
  13. package/dist/RowPreviewChildren-B66HbFdX.js +4 -0
  14. package/dist/RowPreviewChildren-DvrE9HTT.js +4 -0
  15. package/dist/{RowPreviewLegacyComponent-DVxrCJ14.js → RowPreviewLegacyComponent-CPqaWwsE.js} +1 -1
  16. package/dist/{RowPreviewRow-0pEQLmS4.js → RowPreviewRow-B91YPfoz.js} +1 -1
  17. package/dist/{RowPreviewRow-Eum1wh1W.js → RowPreviewRow-MaA-9ApX.js} +2 -2
  18. package/dist/SavedRowsPanel-CF-7R3q_.js +492 -0
  19. package/dist/SavedRowsPanel-TLOEvs3Z.js +491 -0
  20. package/dist/_plugin-vue_export-helper-Dj7HTbfw.js +8 -0
  21. package/dist/components/features/emailBuilder/EmailEditor.vue.d.ts +3 -3
  22. package/dist/composables/emailBuilder/transform/pipeline/optimize.d.ts +4 -4
  23. package/dist/editor.css +1 -1
  24. package/dist/element-CeRQDEn3.js +21396 -0
  25. package/dist/element.js +1 -1
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.js +8220 -41805
  28. package/dist/init.js +17 -16
  29. package/dist/mergeTagDefinitions-Cler19nv.js +27 -0
  30. package/dist/useEmailBuilder-CjJoxzTi.js +4893 -0
  31. package/dist/useEmailBuilder-gOc8otd8.js +4893 -0
  32. package/dist/useToast-DeNMwkP3.js +194 -0
  33. package/dist/{vue.runtime.esm-bundler-CsdyQceJ.js → vue.runtime.esm-bundler-D2AjRP90.js} +0 -1
  34. package/package.json +4 -2
  35. package/dist/adapters/index.d.ts +0 -38
  36. package/dist/baseStyles.d.ts +0 -13
  37. package/dist/blocks/canvasStyleHelpers.d.ts +0 -17
  38. package/dist/blocks/definitions/anchor.d.ts +0 -2
  39. package/dist/blocks/definitions/button.d.ts +0 -2
  40. package/dist/blocks/definitions/divider.d.ts +0 -2
  41. package/dist/blocks/definitions/heading.d.ts +0 -2
  42. package/dist/blocks/definitions/image.d.ts +0 -2
  43. package/dist/blocks/definitions/list.d.ts +0 -2
  44. package/dist/blocks/definitions/menu.d.ts +0 -2
  45. package/dist/blocks/definitions/paragraph.d.ts +0 -2
  46. package/dist/blocks/definitions/socials.d.ts +0 -2
  47. package/dist/blocks/definitions/spacer.d.ts +0 -2
  48. package/dist/blocks/definitions/video.d.ts +0 -2
  49. package/dist/blocks/index.d.ts +0 -8
  50. package/dist/brand.d.ts +0 -15
  51. package/dist/components/DesktopOnlyNotice.vue.d.ts +0 -20
  52. package/dist/components/features/emailBuilder/assistant/AssistantPanel.vue.d.ts +0 -37
  53. package/dist/components/features/emailBuilder/blocks/AnchorBlock.vue.d.ts +0 -3
  54. package/dist/components/features/emailBuilder/blocks/ButtonBlock.vue.d.ts +0 -3
  55. package/dist/components/features/emailBuilder/blocks/DividerBlock.vue.d.ts +0 -3
  56. package/dist/components/features/emailBuilder/blocks/HeadingBlock.vue.d.ts +0 -3
  57. package/dist/components/features/emailBuilder/blocks/ImageBlock.vue.d.ts +0 -3
  58. package/dist/components/features/emailBuilder/blocks/ListBlock.vue.d.ts +0 -3
  59. package/dist/components/features/emailBuilder/blocks/MenuBlock.vue.d.ts +0 -3
  60. package/dist/components/features/emailBuilder/blocks/ParagraphBlock.vue.d.ts +0 -3
  61. package/dist/components/features/emailBuilder/blocks/SocialsBlock.vue.d.ts +0 -3
  62. package/dist/components/features/emailBuilder/blocks/SpacerBlock.vue.d.ts +0 -3
  63. package/dist/components/features/emailBuilder/blocks/VideoBlock.vue.d.ts +0 -3
  64. package/dist/components/features/emailBuilder/canvas/Canvas.vue.d.ts +0 -3
  65. package/dist/components/features/emailBuilder/canvas/CanvasColumn.vue.d.ts +0 -49
  66. package/dist/components/features/emailBuilder/canvas/CanvasComponent.vue.d.ts +0 -56
  67. package/dist/components/features/emailBuilder/canvas/CanvasElement.vue.d.ts +0 -21
  68. package/dist/components/features/emailBuilder/canvas/CanvasRow.vue.d.ts +0 -49
  69. package/dist/components/features/emailBuilder/canvas/CanvasRowSpacer.vue.d.ts +0 -40
  70. package/dist/components/features/emailBuilder/health/HealthIndicator.vue.d.ts +0 -3
  71. package/dist/components/features/emailBuilder/layout/Header.vue.d.ts +0 -54
  72. package/dist/components/features/emailBuilder/layout/SendEmail.vue.d.ts +0 -21
  73. package/dist/components/features/emailBuilder/layout/SidebarLeft.vue.d.ts +0 -3
  74. package/dist/components/features/emailBuilder/layout/SidebarRight.vue.d.ts +0 -3
  75. package/dist/components/features/emailBuilder/panels/AnchorPanel.vue.d.ts +0 -3
  76. package/dist/components/features/emailBuilder/panels/ButtonPanel.vue.d.ts +0 -3
  77. package/dist/components/features/emailBuilder/panels/DividerPanel.vue.d.ts +0 -3
  78. package/dist/components/features/emailBuilder/panels/HeadingPanel.vue.d.ts +0 -3
  79. package/dist/components/features/emailBuilder/panels/ImagePanel.vue.d.ts +0 -3
  80. package/dist/components/features/emailBuilder/panels/ListPanel.vue.d.ts +0 -3
  81. package/dist/components/features/emailBuilder/panels/MenuPanel.vue.d.ts +0 -3
  82. package/dist/components/features/emailBuilder/panels/ParagraphPanel.vue.d.ts +0 -3
  83. package/dist/components/features/emailBuilder/panels/RowColumnPanel.vue.d.ts +0 -13
  84. package/dist/components/features/emailBuilder/panels/RowPanel.vue.d.ts +0 -13
  85. package/dist/components/features/emailBuilder/panels/RowSpacerPanel.vue.d.ts +0 -13
  86. package/dist/components/features/emailBuilder/panels/SocialsPanel.vue.d.ts +0 -3
  87. package/dist/components/features/emailBuilder/panels/SpacerPanel.vue.d.ts +0 -3
  88. package/dist/components/features/emailBuilder/panels/VideoPanel.vue.d.ts +0 -3
  89. package/dist/components/features/emailBuilder/panels/shared/DeviceTabs.vue.d.ts +0 -19
  90. package/dist/components/features/emailBuilder/panels/shared/LinkFieldMergeTags.vue.d.ts +0 -31
  91. package/dist/components/features/emailBuilder/panels/shared/OverrideBadge.vue.d.ts +0 -9
  92. package/dist/components/features/emailBuilder/panels/shared/PreviewBadge.vue.d.ts +0 -11
  93. package/dist/components/features/emailBuilder/panels/shared/TextFieldMergeTags.vue.d.ts +0 -25
  94. package/dist/components/features/emailBuilder/panels/ui/BoxStylingSection.vue.d.ts +0 -7
  95. package/dist/components/features/emailBuilder/panels/ui/PropertyAlignment.vue.d.ts +0 -30
  96. package/dist/components/features/emailBuilder/panels/ui/PropertyColor.vue.d.ts +0 -75
  97. package/dist/components/features/emailBuilder/panels/ui/PropertyGradientColor.vue.d.ts +0 -27
  98. package/dist/components/features/emailBuilder/panels/ui/PropertyNumberSlider.vue.d.ts +0 -74
  99. package/dist/components/features/emailBuilder/panels/ui/PropertySection.vue.d.ts +0 -17
  100. package/dist/components/features/emailBuilder/panels/ui/PropertySelect.vue.d.ts +0 -74
  101. package/dist/components/features/emailBuilder/panels/ui/PropertyTextStyle.vue.d.ts +0 -52
  102. package/dist/components/features/emailBuilder/panels/ui/PropertyTextStylePanel.vue.d.ts +0 -72
  103. package/dist/components/features/emailBuilder/panels/ui/PropertyToggle.vue.d.ts +0 -45
  104. package/dist/components/features/emailBuilder/panels/ui/PropertyVisibility.vue.d.ts +0 -32
  105. package/dist/components/features/emailBuilder/panels/ui/SpacingControl.vue.d.ts +0 -19
  106. package/dist/components/features/emailBuilder/panels/ui/color-picker/AlphaSlider.vue.d.ts +0 -28
  107. package/dist/components/features/emailBuilder/panels/ui/color-picker/ColorPickerPanel.vue.d.ts +0 -31
  108. package/dist/components/features/emailBuilder/panels/ui/color-picker/HueSlider.vue.d.ts +0 -19
  109. package/dist/components/features/emailBuilder/panels/ui/color-picker/RecentColors.vue.d.ts +0 -20
  110. package/dist/components/features/emailBuilder/panels/ui/color-picker/SVPanel.vue.d.ts +0 -39
  111. package/dist/components/features/emailBuilder/panels/ui/visibility-rule/Rule.vue.d.ts +0 -28
  112. package/dist/components/features/emailBuilder/preview/PreviewScreen.vue.d.ts +0 -7
  113. package/dist/components/features/emailBuilder/preview/ui/PreviewCanvas.vue.d.ts +0 -10
  114. package/dist/components/features/emailBuilder/preview/ui/PreviewCapabilityBadges.vue.d.ts +0 -12
  115. package/dist/components/features/emailBuilder/preview/ui/PreviewClientCard.vue.d.ts +0 -20
  116. package/dist/components/features/emailBuilder/preview/ui/PreviewClientList.vue.d.ts +0 -21
  117. package/dist/components/features/emailBuilder/preview/ui/PreviewClientPicker.vue.d.ts +0 -16
  118. package/dist/components/features/emailBuilder/preview/ui/PreviewComponent.vue.d.ts +0 -10
  119. package/dist/components/features/emailBuilder/preview/ui/PreviewDetailView.vue.d.ts +0 -41
  120. package/dist/components/features/emailBuilder/preview/ui/PreviewRendered.vue.d.ts +0 -8
  121. package/dist/components/features/emailBuilder/product/RowPreview.vue.d.ts +0 -8
  122. package/dist/components/features/emailBuilder/product/RowPreviewChildren.vue.d.ts +0 -14
  123. package/dist/components/features/emailBuilder/product/RowPreviewLegacyComponent.vue.d.ts +0 -14
  124. package/dist/components/features/emailBuilder/product/RowPreviewRow.vue.d.ts +0 -9
  125. package/dist/components/features/emailBuilder/product/SavedRowsPanel.vue.d.ts +0 -3
  126. package/dist/components/features/emailBuilder/product/SavedTemplatesPanel.vue.d.ts +0 -13
  127. package/dist/components/features/emailBuilder/product/VersionHistoryPanel.vue.d.ts +0 -14
  128. package/dist/components/features/emailBuilder/sidebar/SidebarBlockButton.vue.d.ts +0 -35
  129. package/dist/components/features/emailBuilder/tabs/GeneralTab.vue.d.ts +0 -3
  130. package/dist/components/features/emailBuilder/tabs/LayoutTab.vue.d.ts +0 -3
  131. package/dist/components/features/emailBuilder/tabs/content/ContentTab.vue.d.ts +0 -3
  132. package/dist/components/features/emailBuilder/tabs/content/LayersPanel.vue.d.ts +0 -7
  133. package/dist/components/features/emailBuilder/tabs/general/MergeTagsTab.vue.d.ts +0 -3
  134. package/dist/components/features/emailBuilder/tabs/general/StylesTab.vue.d.ts +0 -3
  135. package/dist/components/features/emailBuilder/tabs/general/VisibilityTab.vue.d.ts +0 -3
  136. package/dist/components/features/emailBuilder/tabs/general/VisibilityWrapESPTab.vue.d.ts +0 -3
  137. package/dist/components/features/emailBuilder/tabs/general/merge-tags/LinkTagTab.vue.d.ts +0 -3
  138. package/dist/components/features/emailBuilder/tabs/general/merge-tags/MergeTagTab.vue.d.ts +0 -3
  139. package/dist/components/features/emailBuilder/ui/LinkInputDialog.vue.d.ts +0 -17
  140. package/dist/components/features/emailBuilder/ui/canvas/CanvasRowDropZone.vue.d.ts +0 -12
  141. package/dist/components/features/emailBuilder/ui/canvas/DropZone.vue.d.ts +0 -10
  142. package/dist/components/features/emailBuilder/ui/canvas/Loader.vue.d.ts +0 -19
  143. package/dist/components/features/emailBuilder/ui/layers-panel/ComponentIcon.vue.d.ts +0 -7
  144. package/dist/components/features/emailBuilder/ui/layers-panel/LayerColumnChildren.vue.d.ts +0 -42
  145. package/dist/components/features/emailBuilder/ui/layers-panel/LayerDropLine.vue.d.ts +0 -8
  146. package/dist/components/features/emailBuilder/ui/renderers/AnchorRenderer.vue.d.ts +0 -10
  147. package/dist/components/features/emailBuilder/ui/renderers/DividerRenderer.vue.d.ts +0 -10
  148. package/dist/components/features/emailBuilder/ui/renderers/HeadingRenderer.vue.d.ts +0 -10
  149. package/dist/components/features/emailBuilder/ui/renderers/ImageRenderer.vue.d.ts +0 -10
  150. package/dist/components/features/emailBuilder/ui/renderers/ListRenderer.vue.d.ts +0 -10
  151. package/dist/components/features/emailBuilder/ui/renderers/MenuRenderer.vue.d.ts +0 -10
  152. package/dist/components/features/emailBuilder/ui/renderers/ParagraphRenderer.vue.d.ts +0 -10
  153. package/dist/components/features/emailBuilder/ui/renderers/SocialsRenderer.vue.d.ts +0 -10
  154. package/dist/components/features/emailBuilder/ui/renderers/SpacerRenderer.vue.d.ts +0 -10
  155. package/dist/components/features/emailBuilder/ui/renderers/VideoRenderer.vue.d.ts +0 -10
  156. package/dist/components/features/emailBuilder/ui/rich-text-editor/RichTextEditor.vue.d.ts +0 -12
  157. package/dist/components/features/emailBuilder/ui/rich-text-editor/pickers/MergeTagPicker.vue.d.ts +0 -18
  158. package/dist/components/features/emailBuilder/ui/rich-text-editor/pickers/RichTextColorPicker.vue.d.ts +0 -15
  159. package/dist/components/features/emailBuilder/ui/visibility/SupportBadge.vue.d.ts +0 -10
  160. package/dist/components/features/emailBuilder/ui/visibility/VisibilityPopover.vue.d.ts +0 -45
  161. package/dist/components/ui/ConfirmDialog.vue.d.ts +0 -3
  162. package/dist/components/ui/Icon.vue.d.ts +0 -33
  163. package/dist/components/ui/InfoDialog.vue.d.ts +0 -12
  164. package/dist/components/ui/Loading.vue.d.ts +0 -6
  165. package/dist/components/ui/ShadowSafeToast.vue.d.ts +0 -3
  166. package/dist/components/ui/primitives/Button.vue.d.ts +0 -23
  167. package/dist/components/ui/primitives/DatePicker.vue.d.ts +0 -16
  168. package/dist/components/ui/primitives/Dialog.vue.d.ts +0 -34
  169. package/dist/components/ui/primitives/InputText.vue.d.ts +0 -29
  170. package/dist/components/ui/primitives/Message.vue.d.ts +0 -20
  171. package/dist/components/ui/primitives/Select.vue.d.ts +0 -22
  172. package/dist/composables/emailBuilder/components/useComponentStyleEditor.d.ts +0 -72
  173. package/dist/composables/emailBuilder/components/useProductRowActions.d.ts +0 -3
  174. package/dist/composables/emailBuilder/components/useProductRows.d.ts +0 -59
  175. package/dist/composables/emailBuilder/components/useSystemRows.d.ts +0 -22
  176. package/dist/composables/emailBuilder/core/config/componentConfig.d.ts +0 -29
  177. package/dist/composables/emailBuilder/core/link-tags/useLinkTagInsert.d.ts +0 -13
  178. package/dist/composables/emailBuilder/core/merge-tags/mergeTagDefinitions.d.ts +0 -64
  179. package/dist/composables/emailBuilder/core/merge-tags/resolveMergeTags.d.ts +0 -27
  180. package/dist/composables/emailBuilder/core/ui/useLayerHoverScroll.d.ts +0 -20
  181. package/dist/composables/emailBuilder/core/ui/useLayoutDrag.d.ts +0 -85
  182. package/dist/composables/emailBuilder/core/ui/useRichTextEditors.d.ts +0 -6
  183. package/dist/composables/emailBuilder/core/ui/visibilityBadgeHelpers.d.ts +0 -22
  184. package/dist/composables/emailBuilder/core/useEmailBuilder.d.ts +0 -292
  185. package/dist/composables/emailBuilder/core/useEmailBuilderDefault.d.ts +0 -507
  186. package/dist/composables/emailBuilder/core/useEmailBuilderOperations.d.ts +0 -31
  187. package/dist/composables/emailBuilder/core/useEmailBuilderVisibility.d.ts +0 -31
  188. package/dist/composables/emailBuilder/export/actions/download.d.ts +0 -24
  189. package/dist/composables/emailBuilder/export/generators/html.d.ts +0 -3
  190. package/dist/composables/emailBuilder/export/generators/mjml.d.ts +0 -6
  191. package/dist/composables/emailBuilder/export/generators/react-email.d.ts +0 -61
  192. package/dist/composables/emailBuilder/export/helpers/generatorHelpers.d.ts +0 -53
  193. package/dist/composables/emailBuilder/export/logic/reactLogicWrapper.d.ts +0 -31
  194. package/dist/composables/emailBuilder/export/merge-tags/mergeTagMapper.d.ts +0 -42
  195. package/dist/composables/emailBuilder/export/merge-tags/reactMergeTagMapper.d.ts +0 -26
  196. package/dist/composables/emailBuilder/export/shared/containers.d.ts +0 -18
  197. package/dist/composables/emailBuilder/export/shared/styles.d.ts +0 -12
  198. package/dist/composables/emailBuilder/export/shared/tagIdentifier.d.ts +0 -1
  199. package/dist/composables/emailBuilder/export/targets/htmlExport.d.ts +0 -20
  200. package/dist/composables/emailBuilder/export/targets/jsonExport.d.ts +0 -28
  201. package/dist/composables/emailBuilder/export/targets/mjmlExport.d.ts +0 -19
  202. package/dist/composables/emailBuilder/export/targets/reactEmailExport.d.ts +0 -20
  203. package/dist/composables/emailBuilder/export/targets/templateSnapshot.d.ts +0 -24
  204. package/dist/composables/emailBuilder/export/transformers/espWrapper.d.ts +0 -2
  205. package/dist/composables/emailBuilder/export/transformers/formatting.d.ts +0 -3
  206. package/dist/composables/emailBuilder/export/transformers/minify.d.ts +0 -33
  207. package/dist/composables/emailBuilder/export/transformers/tagMapper.d.ts +0 -29
  208. package/dist/composables/emailBuilder/export/types/export.d.ts +0 -24
  209. package/dist/composables/emailBuilder/export/useEmailExportEngine.d.ts +0 -63
  210. package/dist/composables/emailBuilder/export/useEmailExportMobileStyles.d.ts +0 -3
  211. package/dist/composables/emailBuilder/export/useExportSettings.d.ts +0 -5
  212. package/dist/composables/emailBuilder/health/accessibilityChecker.d.ts +0 -64
  213. package/dist/composables/emailBuilder/health/healthIndicator.d.ts +0 -19
  214. package/dist/composables/emailBuilder/history/useEmailBuilderHistory.d.ts +0 -26
  215. package/dist/composables/emailBuilder/history/useHistory.d.ts +0 -16
  216. package/dist/composables/emailBuilder/preview/useClientPreview.d.ts +0 -127
  217. package/dist/composables/emailBuilder/transform/pipeline/hydrate.d.ts +0 -54
  218. package/dist/composables/emailBuilder/types/emailBuilder.d.ts +0 -79
  219. package/dist/composables/system/useColor.d.ts +0 -26
  220. package/dist/composables/system/useDeviceDetection.d.ts +0 -5
  221. package/dist/composables/system/useGoogleFonts.d.ts +0 -11
  222. package/dist/composables/system/useImageUpload.d.ts +0 -23
  223. package/dist/composables/system/useSavedRowsPanel.d.ts +0 -35
  224. package/dist/composables/ui/useConfirm.d.ts +0 -33
  225. package/dist/composables/ui/useInfoDialog.d.ts +0 -22
  226. package/dist/composables/ui/useTeleportTarget.d.ts +0 -49
  227. package/dist/composables/ui/useToast.d.ts +0 -32
  228. package/dist/devStyleMirror.d.ts +0 -20
  229. package/dist/documentScopedStyles.d.ts +0 -39
  230. package/dist/element-Dq6bmt2l.js +0 -48454
  231. package/dist/lightDom.d.ts +0 -30
  232. package/dist/shadowStyles.d.ts +0 -8
  233. package/dist/utils/generateId.d.ts +0 -1
  234. package/dist/utils/shadowDom.d.ts +0 -30
@@ -1,127 +0,0 @@
1
- export type ClientPlatform = "web" | "desktop" | "mobile";
2
- export type DarkModeStrategy = "respects-meta" | "near-black-swap" | "partial-transparent" | "none";
3
- export interface ClientCapabilities {
4
- /** @font-face / Google Fonts <link> support. Falls back to the next
5
- * font in the `font-family` stack (typically Arial) when false. */
6
- webFonts: boolean;
7
- /** CSS gradients (linear / radial) on <td> background. Outlook desktop
8
- * needs VML for these — see `vml` below. */
9
- gradients: boolean;
10
- /** border-radius on <td>. Note: border-radius on <a> (your button output)
11
- * works much more broadly — even Outlook desktop renders rounded <a>
12
- * buttons since 2016 via the -webkit-border-radius alias. Use
13
- * `buttonBorderRadius` for the button-specific capability. */
14
- tdBorderRadius: boolean;
15
- /** border-radius on <a> elements styled as inline-block buttons.
16
- * Outlook desktop SUPPORTS this (since 2016 webkit). */
17
- buttonBorderRadius: boolean;
18
- /** box-shadow on <td> or <div>. Rare — only modern WebKit clients. */
19
- boxShadow: boolean;
20
- /** background-image / `background="..."` attribute on <td>. */
21
- bgImageOnTd: boolean;
22
- /** VML rendering — required for gradients and bg images in Outlook desktop.
23
- * When false, gradient/bg fallback to the solid `backgroundColor`. */
24
- vml: boolean;
25
- /** Honors <!--[if mso]> conditional comments. Used to feed Outlook
26
- * VML-only fallbacks. Universal Microsoft trait. */
27
- msoConditionals: boolean;
28
- /** Animated GIF support. Outlook desktop shows first frame only. */
29
- animatedGifs: boolean;
30
- /** <video> tag in email. Only Apple Mail and iOS Mail render this. */
31
- videoTag: boolean;
32
- /** SVG as <img src="*.svg">. Renders in all modern clients including
33
- * Outlook desktop (verified by QA) — file extension doesn't affect
34
- * rendering once the image is fetched via HTTP and decoded. */
35
- svgImg: boolean;
36
- /** Retina / 2x images via srcset / width attribute. */
37
- retinaImages: boolean;
38
- /** @media (max-width: 600px) query support for responsive design.
39
- * Outlook desktop classic ignores all <style> tags entirely. */
40
- mediaQueries: boolean;
41
- /** <style> tag in <head> respected at all. Gmail web strips it from
42
- * <head> but keeps inline styles. */
43
- embeddedStyles: boolean;
44
- /** `align="center"` attribute on <table> and `<td>`. Universal. */
45
- tableAlign: boolean;
46
- /** `padding` style on <td>. Universal in practice, but Outlook desktop
47
- * measures padding differently — included for completeness. */
48
- tdPadding: boolean;
49
- darkModeStrategy: DarkModeStrategy;
50
- }
51
- export interface EmailClient {
52
- id: string;
53
- name: string;
54
- vendor: string;
55
- platform: ClientPlatform;
56
- /** Engine that powers rendering. */
57
- engine: string;
58
- /** Approximate global market share (%). For sorting; not displayed as fact. */
59
- marketShare?: number;
60
- /** Brand accent color for the client tile. */
61
- accentColor: string;
62
- /** Single emoji or short identifier shown in the card avatar. */
63
- logoText: string;
64
- capabilities: ClientCapabilities;
65
- /** Maximum content width the client renders at (chrome-excluded). */
66
- viewportWidth: number;
67
- /** Short human description for tooltip / detail header. */
68
- description: string;
69
- /** When previewing on this client, treat the layout as mobile (forces
70
- * mobile-only CSS classes to apply and triggers `mobileStack` if set). */
71
- forcesMobile: boolean;
72
- }
73
- declare function hydrateFromStorage(): void;
74
- export declare function useClientPreview(): {
75
- selectedClients: import('vue').ComputedRef<EmailClient[]>;
76
- availableClients: import('vue').ComputedRef<EmailClient[]>;
77
- allClients: readonly {
78
- readonly id: string;
79
- readonly name: string;
80
- readonly vendor: string;
81
- readonly platform: ClientPlatform;
82
- readonly engine: string;
83
- readonly marketShare?: number | undefined;
84
- readonly accentColor: string;
85
- readonly logoText: string;
86
- readonly capabilities: {
87
- readonly webFonts: boolean;
88
- readonly gradients: boolean;
89
- readonly tdBorderRadius: boolean;
90
- readonly buttonBorderRadius: boolean;
91
- readonly boxShadow: boolean;
92
- readonly bgImageOnTd: boolean;
93
- readonly vml: boolean;
94
- readonly msoConditionals: boolean;
95
- readonly animatedGifs: boolean;
96
- readonly videoTag: boolean;
97
- readonly svgImg: boolean;
98
- readonly retinaImages: boolean;
99
- readonly mediaQueries: boolean;
100
- readonly embeddedStyles: boolean;
101
- readonly tableAlign: boolean;
102
- readonly tdPadding: boolean;
103
- readonly darkModeStrategy: DarkModeStrategy;
104
- };
105
- readonly viewportWidth: number;
106
- readonly description: string;
107
- readonly forcesMobile: boolean;
108
- }[];
109
- activeClientId: Readonly<import('vue').Ref<string | null, string | null>>;
110
- activeClient: import('vue').ComputedRef<EmailClient | null>;
111
- activeClientIndex: import('vue').ComputedRef<number>;
112
- hasNext: import('vue').ComputedRef<boolean>;
113
- hasPrev: import('vue').ComputedRef<boolean>;
114
- isHydrated: Readonly<import('vue').Ref<boolean, boolean>>;
115
- addClient: (id: string) => void;
116
- removeClient: (id: string) => void;
117
- setActiveClient: (id: string | null) => void;
118
- goToNextClient: () => void;
119
- goToPrevClient: () => void;
120
- resetToDefaults: () => void;
121
- hydrateFromStorage: typeof hydrateFromStorage;
122
- transformForClient: (html: string, client: EmailClient) => string;
123
- darkModeCss: (client: EmailClient, isDark: boolean) => string;
124
- darkChromeBg: (isDark: boolean) => string;
125
- applyDarkModeDom: (doc: Document | null | undefined, client: EmailClient, isDark: boolean) => void;
126
- };
127
- export {};
@@ -1,54 +0,0 @@
1
- /**
2
- * hydrate.ts
3
- * Restores stripped defaults when importing an optimized JSON template.
4
- *
5
- * Strategy: deepMerge(DEFAULTS, saved) — saved value always wins;
6
- * stripped keys fall back to current defaults automatically.
7
- *
8
- * Now supports both new `children` shape and legacy `components` shape per column.
9
- * On hydration, columns are always written with `children` going forward.
10
- */
11
- interface Component {
12
- id: string;
13
- type: string;
14
- componentType?: string;
15
- props: Record<string, unknown>;
16
- }
17
- type CanvasChild = Component | NestedRow | RowSpacer;
18
- interface Column {
19
- id: string;
20
- width: number;
21
- children?: CanvasChild[];
22
- components?: Component[];
23
- [key: string]: unknown;
24
- }
25
- interface NestedRow {
26
- id: string;
27
- type: "row";
28
- columns?: Column[];
29
- [key: string]: unknown;
30
- }
31
- interface RowSpacer {
32
- id: string;
33
- type: "row-spacer";
34
- [key: string]: unknown;
35
- }
36
- type Row = NestedRow | RowSpacer;
37
- interface Canvas {
38
- language?: string;
39
- preheaderText?: string;
40
- bodyBackgroundColor?: string;
41
- bodyBackgroundImage?: string;
42
- bodyBackgroundSize?: string;
43
- bodyBackgroundPosition?: string;
44
- bodyBackgroundRepeat?: string;
45
- backgroundColor?: string;
46
- width?: number;
47
- padding?: Record<string, number>;
48
- mobileBreakpoint?: number;
49
- [key: string]: unknown;
50
- }
51
- export declare const hydrateComponent: (comp: Component) => Component;
52
- export declare const hydrateCanvas: (canvas: Canvas) => Canvas;
53
- export declare const hydrateRows: (rows: Row[]) => Row[];
54
- export {};
@@ -1,79 +0,0 @@
1
- export interface Padding {
2
- top: number;
3
- right: number;
4
- bottom: number;
5
- left: number;
6
- }
7
- export interface Border {
8
- width: number;
9
- style: string;
10
- color: string;
11
- radius: number;
12
- }
13
- export interface GradientStop {
14
- color: string;
15
- position: number;
16
- }
17
- export interface Gradient {
18
- type: "linear" | "radial";
19
- direction: string;
20
- colors: GradientStop[];
21
- }
22
- export interface BackgroundGradient {
23
- useGradient: boolean;
24
- solid: string;
25
- gradient: Gradient;
26
- }
27
- export interface Visibility {
28
- [conditionKey: string]: any;
29
- }
30
- export type CanvasChild = CanvasComponentNode | CanvasRowNode | CanvasSpacerNode;
31
- export interface CanvasComponentNode {
32
- id: string;
33
- type: "component";
34
- componentType: string;
35
- props: Record<string, any>;
36
- visibility?: Visibility;
37
- }
38
- export interface CanvasRowNode {
39
- id: string;
40
- type: "row";
41
- name: string;
42
- columns: CanvasColumn[];
43
- backgroundColor: string;
44
- backgroundGradient: BackgroundGradient;
45
- backgroundImage?: string;
46
- backgroundSize?: string;
47
- backgroundPosition?: string;
48
- backgroundRepeat?: string;
49
- padding: Padding;
50
- border: Border;
51
- minHeight: number;
52
- gap: number;
53
- mobileStack: boolean;
54
- visibility: Visibility;
55
- }
56
- export interface CanvasSpacerNode {
57
- id: string;
58
- type: "row-spacer";
59
- name: string;
60
- height: number;
61
- backgroundColor: string;
62
- backgroundGradient: BackgroundGradient;
63
- visibility: Visibility;
64
- }
65
- export interface CanvasColumn {
66
- id: string;
67
- width: number;
68
- children: CanvasChild[];
69
- backgroundColor: string;
70
- backgroundGradient: BackgroundGradient;
71
- backgroundImage?: string;
72
- backgroundSize?: string;
73
- backgroundPosition?: string;
74
- backgroundRepeat?: string;
75
- padding: Padding;
76
- border: Border;
77
- verticalAlign: "top" | "middle" | "bottom";
78
- }
79
- export type TopLevelRow = CanvasRowNode | CanvasSpacerNode;
@@ -1,26 +0,0 @@
1
- type RGB = [number, number, number];
2
- export declare function useColor(initial?: string): {
3
- h: import('vue').Ref<number, number>;
4
- s: import('vue').Ref<number, number>;
5
- v: import('vue').Ref<number, number>;
6
- a: import('vue').Ref<number, number>;
7
- rgb: import('vue').ComputedRef<RGB>;
8
- hex: import('vue').ComputedRef<string>;
9
- rgba: import('vue').ComputedRef<string>;
10
- cssColor: import('vue').ComputedRef<string>;
11
- hsl: import('vue').ComputedRef<{
12
- h: number;
13
- s: number;
14
- l: number;
15
- }>;
16
- hsb: import('vue').ComputedRef<{
17
- h: number;
18
- s: number;
19
- b: number;
20
- }>;
21
- setFromHex: (hexVal: string) => boolean;
22
- setFromRgb: (r: number, g: number, b: number) => void;
23
- setFromHsl: (hh: number, ss: number, ll: number) => void;
24
- setFromHsb: (hh: number, ss: number, bb: number) => void;
25
- };
26
- export {};
@@ -1,5 +0,0 @@
1
- import { Ref } from 'vue';
2
- export declare const useDeviceDetection: () => {
3
- isDesktop: Ref<boolean, boolean>;
4
- isMobile: import('vue').ComputedRef<boolean>;
5
- };
@@ -1,11 +0,0 @@
1
- export declare const useGoogleFonts: () => {
2
- googleFonts: import('vue').Ref<string[], string[]>;
3
- loadGoogleFont: (fontFamily?: string) => void;
4
- getGoogleFontImports: (fonts: string[]) => string;
5
- syncFontsForTemplate: (fonts: string[]) => void;
6
- preconnectGoogleFonts: () => void;
7
- isWebSafeFont: (font: string) => boolean;
8
- WEB_SAFE_FONTS: Set<string>;
9
- FONTS_WITH_ITALICS: Set<string>;
10
- DEFAULT_WEIGHTS: number[];
11
- };
@@ -1,23 +0,0 @@
1
- export interface UploadResult {
2
- previewUrl: string;
3
- permanentUrl: string;
4
- cleanup: () => void;
5
- }
6
- export declare class ImageUploadError extends Error {
7
- constructor(message: string);
8
- }
9
- export declare function validateImageFile(file: File): void;
10
- export declare function swapOnLoad(permanentUrl: string, onReady: () => void, cleanup: () => void): void;
11
- /**
12
- * Called from within a component's setup — useStorageAdapter() requires
13
- * that timing, which is why this is a composable rather than a plain
14
- * export like the three functions above (none of which need injection).
15
- *
16
- * Returns handleImageUploadFlow pre-bound to the active adapter, so call
17
- * sites keep the exact same 4-argument call shape they always had.
18
- */
19
- export declare function useImageUploader(): {
20
- handleImageUploadFlow: (file: File, onPreview: (objectUrl: string) => void, onSuccess: (permanentUrl: string, cleanup: () => void) => void, onError: (message: string) => void) => Promise<void>;
21
- swapOnLoad: typeof swapOnLoad;
22
- validateImageFile: typeof validateImageFile;
23
- };
@@ -1,35 +0,0 @@
1
- /**
2
- * Shared open/close state for the Saved Rows panel.
3
- *
4
- * this used to be Nuxt's useState, shared across components by
5
- * matching string key. Same provide/inject conversion as useEmailBuilder —
6
- * one instance created at the EmailEditor root, injected everywhere else,
7
- * so LayoutTab's toggle button and SavedRowsPanel's isOpen check still see
8
- * the same boolean.
9
- *
10
- * The "system" tab concept was removed from SavedRowsPanel.vue
11
- * (see its top-of-file note) — activeTab is kept here since LayoutTab still
12
- * references the shape, but it's permanently "user" now in practice.
13
- */
14
- export type SavedRowsTab = "user" | "system";
15
- type SavedRowsPanelInstance = ReturnType<typeof createSavedRowsPanelInstance>;
16
- /** Called once, at the EmailEditor root. */
17
- export declare function provideSavedRowsPanel(): {
18
- isOpen: import('vue').Ref<boolean, boolean>;
19
- activeTab: import('vue').Ref<SavedRowsTab, SavedRowsTab>;
20
- open: (tab?: SavedRowsTab) => void;
21
- close: () => void;
22
- toggle: (tab?: SavedRowsTab) => void;
23
- setTab: (tab: SavedRowsTab) => void;
24
- };
25
- /** Every other file calls this exactly as before. */
26
- export declare const useSavedRowsPanel: () => SavedRowsPanelInstance;
27
- declare function createSavedRowsPanelInstance(): {
28
- isOpen: import('vue').Ref<boolean, boolean>;
29
- activeTab: import('vue').Ref<SavedRowsTab, SavedRowsTab>;
30
- open: (tab?: SavedRowsTab) => void;
31
- close: () => void;
32
- toggle: (tab?: SavedRowsTab) => void;
33
- setTab: (tab: SavedRowsTab) => void;
34
- };
35
- export {};
@@ -1,33 +0,0 @@
1
- /**
2
- * Confirmation dialog store.
3
- *
4
- * Module-level singleton state rather than provide/inject, deliberately.
5
- * An injected service has two failure modes this avoids: it can't be read
6
- * from the same component that provides it (Vue's inject() never sees the
7
- * current component's own provide()), and two copies of the providing
8
- * module produce two different injection keys for what should be one
9
- * store. A module-scoped ref has neither problem — one store, no keys, no
10
- * dependency on where in the tree the caller sits — so it behaves
11
- * identically however the editor is mounted.
12
- */
13
- export interface ConfirmOptions {
14
- message?: string;
15
- header?: string;
16
- acceptLabel?: string;
17
- rejectLabel?: string;
18
- acceptClass?: string;
19
- rejectClass?: string;
20
- accept?: () => void;
21
- reject?: () => void;
22
- }
23
- /** Null when nothing is pending — ConfirmDialog.vue renders on this. */
24
- export declare const activeConfirm: import('vue').ShallowRef<ConfirmOptions | null, ConfirmOptions | null>;
25
- export declare const confirmVisible: import('vue').Ref<boolean, boolean>;
26
- declare function close(): void;
27
- export declare function acceptActive(): void;
28
- export declare function rejectActive(): void;
29
- export declare function useConfirm(): {
30
- require(options: ConfirmOptions): void;
31
- close: typeof close;
32
- };
33
- export {};
@@ -1,22 +0,0 @@
1
- /**
2
- * same provide/inject conversion — called from SidebarBlockButton.vue
3
- * and useEmailExportEngine.ts (via useEmailBuilder), both needing to open the
4
- * same dialog that presumably renders once near the EmailEditor root.
5
- */
6
- type InfoDialogInstance = ReturnType<typeof createInfoDialogInstance>;
7
- /** Called once, at the EmailEditor root. */
8
- export declare function provideInfoDialog(): {
9
- visible: import('vue').Ref<boolean, boolean>;
10
- header: import('vue').Ref<string, string>;
11
- message: import('vue').Ref<string, string>;
12
- open: (msg: string, h?: string) => void;
13
- };
14
- /** Every other file calls this exactly as before. */
15
- export declare const useInfoDialog: () => InfoDialogInstance;
16
- declare function createInfoDialogInstance(): {
17
- visible: import('vue').Ref<boolean, boolean>;
18
- header: import('vue').Ref<string, string>;
19
- message: import('vue').Ref<string, string>;
20
- open: (msg: string, h?: string) => void;
21
- };
22
- export {};
@@ -1,49 +0,0 @@
1
- import { Ref, ComputedRef } from 'vue';
2
- /**
3
- * Fixes a real, confirmed bug: every <Teleport to="body"> throughout this
4
- * package (7 separate files — color pickers, the merge-tag picker, loading
5
- * overlay, canvas action bar, preview client picker/screen) was hardcoded
6
- * to the literal string "body". Vue resolves a string `to` target via
7
- * document.querySelector() internally, which cannot see past a shadow
8
- * root boundary at all — so for the custom-element usage path, every one
9
- * of these was teleporting its content to the actual page body, entirely
10
- * outside the shadow root where all of this package's CSS lives. The teleported content still
11
- * rendered, just completely unstyled, and this doubles as the mechanism
12
- * behind a second, related bug: click-outside handlers elsewhere in this
13
- * package querying document.querySelector('[data-color-panel]') for that
14
- * same teleported content could never find it either, for the identical
15
- * reason.
16
- *
17
- * The fix has to be an actual DOM element reference, not a selector
18
- * string — a string target re-triggers the exact document.querySelector
19
- * problem this exists to solve. EmailEditor.vue provides this once, at
20
- * its own root, pointing at a dedicated element it renders for exactly
21
- * this purpose — every other file across the package just injects it and
22
- * hands it straight to :to, with zero per-file conditional logic for
23
- * which usage path (Vue component vs custom element) is active.
24
- *
25
- * A Ref, not a plain value: the target element is a template ref inside
26
- * EmailEditor.vue, so it doesn't exist yet at the moment provide() runs
27
- * during setup() — only after mount. Providing the Ref object itself
28
- * (not .value) means every injecting component's own :to="target" template
29
- * binding re-evaluates automatically once it populates, with no extra
30
- * wiring needed anywhere else.
31
- */
32
- export type TeleportTarget = Ref<HTMLElement | null>;
33
- /** Called once, at the EmailEditor root, with the ref it renders a container element into. */
34
- export declare function provideTeleportTarget(target: TeleportTarget): void;
35
- /**
36
- * Every other file calls this and hands the result straight to
37
- * <Teleport :to="...">. Falls back to "body" (Vue's own default) rather
38
- * than throwing — matches useInfoDialog/useStorageAdapter's reasoning. A
39
- * component used in isolation, outside EmailEditor.vue's tree entirely,
40
- * should still degrade to Vue's normal behavior rather than crash.
41
- */
42
- export declare function useTeleportTarget(): TeleportTarget | "body";
43
- /**
44
- * The same target, typed for the `to` prop of Reka UI's portal components
45
- * (and Vue's own Teleport), which accept `string | HTMLElement` but not
46
- * `null`. Normalises the not-yet-mounted case to undefined so the portal
47
- * falls back to its own default instead of erroring on a null target.
48
- */
49
- export declare function usePortalTarget(): ComputedRef<string | HTMLElement | undefined>;
@@ -1,32 +0,0 @@
1
- /**
2
- * Toast notification store.
3
- *
4
- * Module-level store for the same reasons as useConfirm — no injection
5
- * key, no service registration, and no dependency on where in the
6
- * component tree the caller sits.
7
- */
8
- export interface ToastMessage {
9
- id: number;
10
- severity?: "success" | "info" | "warn" | "error" | string;
11
- summary?: string;
12
- detail?: string;
13
- life?: number;
14
- }
15
- export declare const toasts: import('vue').Ref<{
16
- id: number;
17
- severity?: "success" | "info" | "warn" | "error" | string | undefined;
18
- summary?: string | undefined;
19
- detail?: string | undefined;
20
- life?: number | undefined;
21
- }[], ToastMessage[] | {
22
- id: number;
23
- severity?: "success" | "info" | "warn" | "error" | string | undefined;
24
- summary?: string | undefined;
25
- detail?: string | undefined;
26
- life?: number | undefined;
27
- }[]>;
28
- export declare function removeToast(id: number): void;
29
- export declare function useToast(): {
30
- add(message: Omit<ToastMessage, "id">): void;
31
- removeAll(): void;
32
- };
@@ -1,20 +0,0 @@
1
- /**
2
- * Mirrors `document.head` <style> tags into a shadow root.
3
- *
4
- * Only needed when running the editor from source (the playground and its
5
- * element-demo page). In a built bundle, every component's scoped CSS is
6
- * substituted into shadowStyles.ts at build time, so the shadow root is
7
- * self-contained and this does nothing.
8
- *
9
- * From source there is no build step, so Vite injects each `.vue` file's
10
- * scoped styles into `document.head` as it serves them — and a shadow root
11
- * does not inherit page styles. The result is a shadow root with the base
12
- * stylesheet but none of the component CSS: unsized icons, dialogs without
13
- * chrome, panels without layout. It looks like the editor is broken when in
14
- * fact only this one delivery path is missing.
15
- *
16
- * Gated on whether the extracted CSS actually arrived rather than on
17
- * `import.meta.env.DEV`, so it switches itself off the moment the real
18
- * styles are present — including in a dev build that does run the plugin.
19
- */
20
- export declare function mirrorHeadStylesInto(shadowRoot: ShadowRoot): () => void;
@@ -1,39 +0,0 @@
1
- /**
2
- * Fixes a real, browser-level Shadow DOM limitation that no amount of
3
- * getting the CSS *into* the shadow root can solve: `@font-face`,
4
- * `@property`, and `@import` are **document-scoped at-rules**. Declared
5
- * inside a shadow root, browsers silently ignore them. The rules are
6
- * present, the CSS is valid, nothing errors — they just do nothing.
7
- *
8
- * Two very visible symptoms this causes, both confirmed from real
9
- * browser behavior rather than automated tests (jsdom checks DOM
10
- * structure, never font loading or the real CSS cascade, so this class of
11
- * bug is invisible to it):
12
- *
13
- * 1. Icon fonts render blank. A rule like `.icon:before{content:"\ue001"}`
14
- * applies correctly, but the `@font-face` defining the family is
15
- * dropped — so the glyph has no font to come from, while inline SVG
16
- * icons are unaffected. That asymmetry makes it look like "only some
17
- * icons broke". The Satoshi brand font, pulled in via `@import`, hits
18
- * the same wall.
19
- *
20
- * 2. Tailwind v4 looks broken/scattered. It emits `@property` rules
21
- * (`--tw-border-style`, `--tw-shadow`, the transform variables, and
22
- * so on) purely to give those custom properties their initial
23
- * values. Dropped inside a shadow root, every
24
- * `var(--tw-border-style)` resolves to nothing, so borders, shadows,
25
- * and transforms silently stop applying while plain utilities like
26
- * flex/padding keep working.
27
- *
28
- * The fix is simply to also place these specific rules in document.head,
29
- * where they're valid — the rest of the CSS stays in the shadow root,
30
- * where it still provides the isolation the custom element exists for.
31
- * Fonts and registered custom properties are global by nature; there's
32
- * no isolation to lose by hoisting them.
33
- */
34
- /**
35
- * Extracts every document-scoped rule from the given stylesheets and adds
36
- * them to document.head. Idempotent — safe to call on every mount, and on
37
- * every element instance if several exist on one page.
38
- */
39
- export declare function injectDocumentScopedRules(cssStrings: string[]): void;