@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
@@ -0,0 +1,491 @@
1
+ import { C as G, K as O, L as s, M as ve, N as fe, P as ae, S as N, T as K, X as Z, Z as ge, _ as H, f as $, g as t, gt as Q, h as R, l as ee, mt as I, n as xe, r as be, s as he, st as h, u as M, v as W, vt as T, w as te, y as d, yt as z, z as j } from "./vue.runtime.esm-bundler-D2AjRP90.js";
2
+ import { J as we, K as ye, V as ke, Y as _e, l as Ce, q as Re, u as re } from "./element-CeRQDEn3.js";
3
+ import { I as $e, V as Se, h as Pe, n as Ie } from "./useEmailBuilder-gOc8otd8.js";
4
+ var Te = {
5
+ key: 1,
6
+ style: {
7
+ height: "4px",
8
+ width: "100%"
9
+ }
10
+ }, De = /* @__PURE__ */ K({
11
+ __name: "RowPreviewChildren",
12
+ props: {
13
+ children: {},
14
+ scale: {},
15
+ depth: {}
16
+ },
17
+ setup(m) {
18
+ const w = te(() => import("./RowPreviewRow-MaA-9ApX.js")), k = te(() => import("./RowPreviewLegacyComponent-CPqaWwsE.js"));
19
+ function f(v) {
20
+ const g = v?.backgroundGradient;
21
+ if (g?.useGradient === !0 && Array.isArray(g?.gradient?.colors) && g.gradient.colors.length >= 2) {
22
+ const { type: c, direction: _, colors: D } = g.gradient, S = D.map((r) => `${r.color} ${r.position}%`).join(", ");
23
+ return c === "radial" ? `radial-gradient(circle at center, ${S})` : `linear-gradient(${_}, ${S})`;
24
+ }
25
+ return v?.backgroundColor ?? v?.props?.backgroundColor ?? "transparent";
26
+ }
27
+ function p(v) {
28
+ return v.height ?? v.props?.height ?? 8;
29
+ }
30
+ return (v, g) => (s(!0), d($, null, j(m.children, (c, _) => (s(), d($, { key: c.id }, [(m.depth ?? 0) < 5 ? (s(), d($, { key: 0 }, [c.type === "row" ? (s(), H(I(w), {
31
+ key: 0,
32
+ row: c,
33
+ scale: m.scale,
34
+ depth: (m.depth ?? 0) + 1
35
+ }, null, 8, [
36
+ "row",
37
+ "scale",
38
+ "depth"
39
+ ])) : c.type === "row-spacer" ? (s(), d("div", {
40
+ key: 1,
41
+ style: T({
42
+ width: "100%",
43
+ height: p(c) + "px",
44
+ background: f(c),
45
+ flexShrink: "0"
46
+ })
47
+ }, null, 4)) : c.type === "component" ? (s(), H(I(k), {
48
+ key: 2,
49
+ comp: {
50
+ ...c,
51
+ type: c.componentType ?? c.type
52
+ },
53
+ scale: m.scale
54
+ }, null, 8, ["comp", "scale"])) : (s(), H(I(k), {
55
+ key: 3,
56
+ comp: c,
57
+ scale: m.scale
58
+ }, null, 8, ["comp", "scale"]))], 64)) : (s(), d("div", Te))], 64))), 128));
59
+ }
60
+ }), Fe = De, Me = {
61
+ key: 0,
62
+ class: "w-full border border-dashed border-(--md-border) rounded",
63
+ style: { "min-height": "10px" }
64
+ }, ze = /* @__PURE__ */ K({
65
+ __name: "RowPreview",
66
+ props: {
67
+ row: {},
68
+ scale: {}
69
+ },
70
+ setup(m) {
71
+ const w = m, { WEB_SAFE_FONTS: k, FONTS_WITH_ITALICS: f, DEFAULT_WEIGHTS: p } = Pe(), v = (r) => {
72
+ const i = r?.backgroundGradient;
73
+ if (i?.useGradient === !0 && Array.isArray(i?.gradient?.colors) && i.gradient.colors.length >= 2) {
74
+ const { type: l, direction: u, colors: x } = i.gradient, b = x.map((y) => `${y.color} ${y.position}%`).join(", ");
75
+ return l === "radial" ? `radial-gradient(circle at center, ${b})` : `linear-gradient(${u}, ${b})`;
76
+ }
77
+ return r?.backgroundColor || "transparent";
78
+ }, g = (r) => {
79
+ if (f.has(r)) {
80
+ const i = p.map((u) => `0,${u}`), l = p.map((u) => `1,${u}`);
81
+ return `ital,wght@${[...i, ...l].join(";")}`;
82
+ }
83
+ return `wght@${p.join(";")}`;
84
+ }, c = (r) => {
85
+ if (!r || typeof document > "u" || k.has(r)) return;
86
+ const i = `https://fonts.googleapis.com/css2?family=${r.trim().replace(/\s+/g, "+")}:${g(r)}&display=swap`;
87
+ if (!document.querySelector(`link[href="${i}"]`)) {
88
+ const l = document.createElement("link");
89
+ l.rel = "stylesheet", l.href = i, document.head.appendChild(l);
90
+ }
91
+ }, _ = () => {
92
+ function r(i) {
93
+ for (const l of i) if (l.type === "row") for (const u of l.columns ?? []) r(u.children ?? u.components ?? []);
94
+ else {
95
+ const u = l.props;
96
+ if (!u?.fontFamily) continue;
97
+ const x = l.componentType ?? l.type;
98
+ [
99
+ "heading",
100
+ "paragraph",
101
+ "list",
102
+ "menu",
103
+ "button",
104
+ "anchor"
105
+ ].includes(x) && c(u.fontFamily);
106
+ }
107
+ }
108
+ for (const i of w.row.columns ?? []) r(i.children ?? i.components ?? []);
109
+ };
110
+ O(() => w.row, () => _(), {
111
+ deep: !0,
112
+ immediate: !0
113
+ }), ae(() => _());
114
+ const D = R(() => {
115
+ const r = w.row, i = {
116
+ display: "flex",
117
+ flexDirection: "row",
118
+ background: v(r),
119
+ padding: `${r.padding?.top ?? 0}px ${r.padding?.right ?? 0}px ${r.padding?.bottom ?? 0}px ${r.padding?.left ?? 0}px`,
120
+ alignItems: "stretch",
121
+ border: `${r.border?.width ?? 0}px ${r.border?.style ?? "solid"} ${r.border?.color ?? "transparent"}`,
122
+ borderRadius: `${r.border?.radius ?? 0}px`,
123
+ gap: `${r.gap ?? 0}px`
124
+ };
125
+ return r.backgroundImage && (i.backgroundImage = `url(${r.backgroundImage})`, i.backgroundSize = r.backgroundSize || "cover", i.backgroundPosition = r.backgroundPosition || "center center"), i;
126
+ });
127
+ function S(r, i) {
128
+ const l = {
129
+ top: "flex-start",
130
+ middle: "center",
131
+ bottom: "flex-end"
132
+ }, u = r.width ?? 100, x = i?.columns?.length || 1, b = i?.gap ?? 0, y = x > 1 ? b * (x - 1) / x : 0, F = y > 0 ? `calc(${u}% - ${y}px)` : `${u}%`, C = {
133
+ flex: `0 0 ${F}`,
134
+ width: F,
135
+ maxWidth: F,
136
+ boxSizing: "border-box",
137
+ background: v(r),
138
+ padding: `${r.padding?.top ?? 10}px ${r.padding?.right ?? 10}px ${r.padding?.bottom ?? 10}px ${r.padding?.left ?? 10}px`,
139
+ border: `${r.border?.width ?? 0}px ${r.border?.style ?? "solid"} ${r.border?.color ?? "transparent"}`,
140
+ borderRadius: `${r.border?.radius ?? 0}px`,
141
+ overflow: "hidden",
142
+ minWidth: "0",
143
+ display: "flex",
144
+ flexDirection: "column",
145
+ justifyContent: l[r.verticalAlign] || "flex-start"
146
+ };
147
+ return r.backgroundImage && (C.backgroundImage = `url(${r.backgroundImage})`, C.backgroundSize = r.backgroundSize || "cover", C.backgroundPosition = r.backgroundPosition || "center center", C.minHeight = "14px"), C;
148
+ }
149
+ return (r, i) => (s(), d("div", {
150
+ style: T(D.value),
151
+ class: "flex w-full pointer-events-none select-none"
152
+ }, [(s(!0), d($, null, j(m.row.columns, (l) => (s(), d("div", {
153
+ key: l.id,
154
+ style: T(S(l, m.row)),
155
+ class: "overflow-hidden shrink-0"
156
+ }, [G(Fe, {
157
+ children: l.children ?? l.components ?? [],
158
+ scale: m.scale,
159
+ depth: 0
160
+ }, null, 8, ["children", "scale"]), (l.children ?? l.components ?? []).length === 0 ? (s(), d("div", Me)) : W("", !0)], 4))), 128))], 4));
161
+ }
162
+ }), je = ze, Be = {
163
+ key: 0,
164
+ class: "w-65 sticky top-16 h-[calc(100vh-5.25rem)] z-80"
165
+ }, Ae = { class: "bg-(--md-surface) flex flex-col h-full border-r border-(--md-border)/80" }, Ee = { class: "flex items-center justify-between px-3.5 py-3 shrink-0" }, Le = { class: "relative group/close" }, He = { class: "px-3.5 pb-2 shrink-0" }, Ve = {
166
+ key: 0,
167
+ class: "flex items-center gap-1"
168
+ }, Ne = ["aria-pressed", "onClick"], Ge = {
169
+ key: 1,
170
+ class: "text-[11px] font-medium text-(--md-text-subtle)"
171
+ }, Oe = { class: "flex-1 min-h-0 overflow-y-auto" }, We = {
172
+ key: 0,
173
+ class: "p-2 flex flex-col gap-2"
174
+ }, Ke = {
175
+ key: 1,
176
+ class: "flex flex-col items-center gap-3 px-5 py-12 text-center"
177
+ }, Ue = {
178
+ key: 2,
179
+ class: "p-2 flex flex-col gap-1.5"
180
+ }, qe = ["onClick", "onDragstart"], Ye = ["onDblclick"], Je = ["onBlur", "onKeyup"], Xe = { class: "text-[10px] text-(--md-text-subtle) shrink-0 tabular-nums" }, Ze = {
181
+ key: 2,
182
+ class: "relative group/del"
183
+ }, Qe = ["onClick"], et = {
184
+ key: 1,
185
+ class: "flex items-center gap-1.5 px-2 py-1.5"
186
+ }, tt = { class: "flex-1 text-[11px] font-medium text-(--md-text-muted) truncate" }, rt = { class: "text-[10px] text-(--md-text-subtle) shrink-0 tabular-nums" }, ot = 600, oe = 25, at = /* @__PURE__ */ K({
187
+ __name: "SavedRowsPanel",
188
+ setup(m) {
189
+ const { isOpen: w, close: k } = _e(), f = Re(), p = ye(), v = $e(), g = Ce(), c = Se(), { rows: _, saveToHistoryImmediate: D } = Ie(), { startLayoutDrag: S, endLayoutDrag: r } = we(), i = {
190
+ rows: p.systemRows,
191
+ isFetching: p.isFetching,
192
+ ensureFetched: () => p.fetchRows(),
193
+ rename: () => {
194
+ throw new Error("Shared rows are read-only");
195
+ },
196
+ remove: () => {
197
+ throw new Error("Shared rows are read-only");
198
+ },
199
+ cloneForCanvas: (o) => p.cloneRowForCanvas(o)
200
+ }, l = {
201
+ rows: f.productRows,
202
+ isFetching: f.isFetching,
203
+ ensureFetched: () => f.fetchRows(),
204
+ rename: (o, e) => f.renameProductRow(o, e),
205
+ remove: (o) => f.deleteProductRow(o),
206
+ cloneForCanvas: (o) => f.cloneRowForCanvas(o)
207
+ }, u = h("user"), x = R(() => p.isSupported.value && p.systemRows.value.length > 0);
208
+ O(x, (o) => {
209
+ !o && u.value === "system" && (u.value = "user");
210
+ });
211
+ const b = R(() => u.value === "system" && x.value ? i : l), y = R(() => u.value === "system"), F = R(() => !y.value && c.value.rename !== !1), C = R(() => !y.value && c.value.delete !== !1);
212
+ O(w, async (o) => {
213
+ o && await Promise.all([f.fetchRows(), p.fetchRows()]);
214
+ }, { immediate: !0 });
215
+ const se = R(() => b.value.rows.value), V = h(null);
216
+ function ne(o, e) {
217
+ V.value = e, S(o, {
218
+ type: "product-row",
219
+ entryId: e
220
+ });
221
+ }
222
+ function ie() {
223
+ V.value = null, r();
224
+ }
225
+ const U = h({}), q = h({});
226
+ function Y(o) {
227
+ const e = U.value[o];
228
+ return e && e > 0 ? e / ot : 0;
229
+ }
230
+ function le(o) {
231
+ const e = q.value[o];
232
+ return e ? Math.max(oe, Math.round(e * Y(o))) : oe;
233
+ }
234
+ const B = h(null), A = h(null);
235
+ function de(o, e) {
236
+ !o || !B.value || (o.dataset.entryId = e, B.value.observe(o));
237
+ }
238
+ function ue(o, e) {
239
+ !o || !A.value || (o.dataset.entryId = e, A.value.observe(o));
240
+ }
241
+ ae(() => {
242
+ B.value = new ResizeObserver((o) => {
243
+ for (const e of o) {
244
+ const a = e.target.dataset.entryId;
245
+ if (a) {
246
+ const n = e.contentRect.width;
247
+ n > 0 && (U.value[a] = n);
248
+ }
249
+ }
250
+ }), A.value = new ResizeObserver((o) => {
251
+ for (const e of o) {
252
+ const a = e.target.dataset.entryId;
253
+ if (a) {
254
+ const n = e.borderBoxSize?.[0]?.blockSize ?? e.contentRect.height;
255
+ n > 0 && (q.value[a] = n);
256
+ }
257
+ }
258
+ });
259
+ }), fe(() => {
260
+ B.value?.disconnect(), A.value?.disconnect();
261
+ });
262
+ function ce(o) {
263
+ if (P.value === o) return;
264
+ const e = b.value.cloneForCanvas(o);
265
+ e && (_.value.push(e), D("add-product-row"));
266
+ }
267
+ function pe(o) {
268
+ v.require({
269
+ message: "Remove this product row from the library?",
270
+ header: "Clear product",
271
+ acceptLabel: "Yes",
272
+ rejectLabel: "Cancel",
273
+ acceptClass: "!bg-[var(--md-danger)] !hover:opacity-90 !border-[var(--md-danger)] !px-6 !py-2",
274
+ rejectClass: "!bg-[var(--md-border)] !hover:bg-[var(--md-border-strong)] !text-[var(--md-text)] !border-[var(--md-border)] !px-6 !py-2",
275
+ accept: async () => {
276
+ try {
277
+ await b.value.remove(o);
278
+ } catch (e) {
279
+ console.error("[maildeno-editor] failed to delete saved row:", e), re(e) || g.add({
280
+ severity: "error",
281
+ summary: "Delete failed",
282
+ detail: "That row couldn't be removed.",
283
+ life: 4e3
284
+ });
285
+ }
286
+ },
287
+ reject: () => {
288
+ }
289
+ });
290
+ }
291
+ const P = h(null), E = h(""), L = h(null);
292
+ function me(o) {
293
+ P.value = o.id, E.value = o.name, ve(() => {
294
+ (Array.isArray(L.value) ? L.value[0] : L.value)?.focus();
295
+ });
296
+ }
297
+ async function J(o) {
298
+ const e = "Saved";
299
+ if (P.value === o) {
300
+ const a = E.value.trim().toLowerCase().replace(/\s+/g, "_").replace(/[^a-z0-9_]/g, "");
301
+ try {
302
+ const n = await b.value.rename(o, a);
303
+ P.value = null, g.add({
304
+ severity: n ? "success" : "error",
305
+ summary: n ? "Rename successful" : "Save failed",
306
+ detail: n ? e : "Please try again",
307
+ life: 3e3
308
+ });
309
+ } catch (n) {
310
+ console.error("[maildeno-editor] failed to rename saved row:", n), re(n) || g.add({
311
+ severity: "error",
312
+ summary: "Rename failed",
313
+ detail: "Please try again",
314
+ life: 4e3
315
+ });
316
+ }
317
+ }
318
+ }
319
+ function X(o) {
320
+ return new Date(o).toLocaleDateString(void 0, {
321
+ month: "short",
322
+ day: "numeric"
323
+ });
324
+ }
325
+ return (o, e) => (s(), H(xe, { name: "panel-slide" }, {
326
+ default: Z(() => [I(w) ? (s(), d("div", Be, [t("div", Ae, [
327
+ t("div", Ee, [e[8] || (e[8] = t("div", { class: "flex items-center gap-2" }, [t("svg", {
328
+ class: "w-3.5 h-3.5 text-(--md-text-subtle)",
329
+ viewBox: "0 0 24 24",
330
+ fill: "none",
331
+ stroke: "currentColor",
332
+ "stroke-width": "2",
333
+ "stroke-linecap": "round",
334
+ "stroke-linejoin": "round"
335
+ }, [t("path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z" })]), t("span", { class: "text-[11px] font-semibold text-(--md-text-subtle) uppercase tracking-[.08em]" }, " Saved Rows ")], -1)), t("div", Le, [t("button", {
336
+ onClick: e[0] || (e[0] = (...a) => I(k) && I(k)(...a)),
337
+ class: "w-6 h-6 flex items-center justify-center rounded-md text-(--md-text-subtle) hover:text-(--md-text-muted) hover:bg-(--md-surface-muted) transition-colors focus:outline-none"
338
+ }, [...e[6] || (e[6] = [t("svg", {
339
+ class: "w-3.5 h-3.5",
340
+ viewBox: "0 0 24 24",
341
+ fill: "none",
342
+ stroke: "currentColor",
343
+ "stroke-width": "2",
344
+ "stroke-linecap": "round",
345
+ "stroke-linejoin": "round"
346
+ }, [t("path", { d: "M18 6 6 18M6 6l12 12" })], -1)])]), e[7] || (e[7] = t("div", { class: "pointer-events-none absolute right-0 top-full mt-1.5 px-2 py-1 bg-(--md-tooltip-bg) text-(--md-tooltip-text) text-[10px] font-medium rounded-md whitespace-nowrap opacity-0 group-hover/close:opacity-100 -translate-y-0.5 group-hover/close:translate-y-0 transition-all duration-150 z-50 after:content-[''] after:absolute after:bottom-full after:right-2 after:border-4 after:border-transparent after:border-b-(--md-tooltip-bg)" }, " Close panel ", -1))])]),
347
+ t("div", He, [x.value ? (s(), d("div", Ve, [(s(), d($, null, j(["user", "system"], (a) => t("button", {
348
+ key: a,
349
+ type: "button",
350
+ class: Q(["px-2 py-1 rounded-md text-[11px] font-medium transition-colors", u.value === a ? "bg-(--md-accent-bg) text-(--md-accent-text)" : "text-(--md-text-subtle) hover:text-(--md-text-muted) hover:bg-(--md-surface-muted)"]),
351
+ "aria-pressed": u.value === a,
352
+ onClick: (n) => u.value = a
353
+ }, z(a === "user" ? "My Rows" : "Shared"), 11, Ne)), 64))])) : (s(), d("span", Ge, "My Rows"))]),
354
+ t("div", Oe, [b.value.isFetching.value ? (s(), d("div", We, [(s(), d($, null, j(3, (a) => t("div", {
355
+ key: a,
356
+ class: "rounded-lg border border-(--md-border) overflow-hidden"
357
+ }, [t("div", {
358
+ class: "bg-(--md-surface-muted) animate-pulse",
359
+ style: T({ height: 80 + a * 20 + "px" })
360
+ }, null, 4), e[9] || (e[9] = t("div", { class: "flex items-center gap-2 px-2.5 py-2" }, [t("div", { class: "h-2 flex-1 rounded-full bg-(--md-surface-muted) animate-pulse" }), t("div", { class: "h-2 w-7 rounded-full bg-(--md-surface-muted) animate-pulse" })], -1))])), 64))])) : b.value.rows.value.length === 0 ? (s(), d("div", Ke, [...e[10] || (e[10] = [t("div", { class: "w-10 h-10 rounded-xl bg-(--md-surface-hover) border border-(--md-border)/80 flex items-center justify-center" }, [t("svg", {
361
+ class: "w-5 h-5 text-(--md-text-subtle)",
362
+ viewBox: "0 0 24 24",
363
+ fill: "none",
364
+ stroke: "currentColor",
365
+ "stroke-width": "1.5",
366
+ "stroke-linecap": "round",
367
+ "stroke-linejoin": "round"
368
+ }, [t("path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z" })])], -1), t("div", { class: "space-y-1" }, [t("p", { class: "text-xs font-medium text-(--md-text-subtle)" }, " No saved rows yet "), t("p", { class: "text-[11px] text-(--md-text-subtle) leading-relaxed" }, [
369
+ N(" Select a row on the canvas,"),
370
+ t("br"),
371
+ N("then click "),
372
+ t("span", { class: "text-(--md-row-selection-fg) font-medium" }, "Save"),
373
+ N(" in the toolbar. ")
374
+ ])], -1)])])) : (s(), d("div", Ue, [G(be, { name: "row-list" }, {
375
+ default: Z(() => [(s(!0), d($, null, j(se.value, (a) => (s(), d("div", {
376
+ key: a.id,
377
+ draggable: "true",
378
+ class: Q(["group relative rounded-lg border bg-(--md-surface) overflow-hidden transition-all duration-150 select-none cursor-grab active:cursor-grabbing", [V.value === a.id ? "ring-2 ring-(--md-row-selection) ring-offset-1 opacity-60 border-(--md-row-selection)" : "border-(--md-border)/80 hover:border-(--md-border-strong) hover:shadow-[0_2px_8px_rgba(0,0,0,0.07)]"]]),
379
+ onClick: (n) => ce(a.id),
380
+ onDragstart: (n) => ne(n, a.id),
381
+ onDragend: ie
382
+ }, [t("div", {
383
+ ref_for: !0,
384
+ ref: (n) => de(n, a.id),
385
+ class: "relative overflow-hidden border-b border-(--md-border)",
386
+ style: T({
387
+ height: le(a.id) + "px",
388
+ backgroundColor: a.row.backgroundColor || "#f9fafb"
389
+ })
390
+ }, [t("div", {
391
+ ref_for: !0,
392
+ ref: (n) => ue(n, a.id),
393
+ class: "absolute top-0 left-0 pointer-events-none",
394
+ style: T({
395
+ width: "600px",
396
+ transformOrigin: "top left",
397
+ transform: `scale(${Y(a.id)})`
398
+ })
399
+ }, [G(je, { row: a.row }, null, 8, ["row"])], 4), e[11] || (e[11] = t("div", { class: "absolute inset-0 bg-(--md-text)/0 group-hover:bg-(--md-text)/[0.03] transition-colors duration-150 flex items-center justify-center" }, [t("div", { class: "opacity-0 group-hover:opacity-100 transition-opacity duration-150 flex items-center gap-1.5 bg-(--md-surface)/90 backdrop-blur-sm border border-(--md-border) rounded-full px-2.5 py-1 shadow-sm" }, [t("svg", {
400
+ class: "w-3 h-3 text-(--md-text-subtle)",
401
+ viewBox: "0 0 24 24",
402
+ fill: "none",
403
+ stroke: "currentColor",
404
+ "stroke-width": "2",
405
+ "stroke-linecap": "round",
406
+ "stroke-linejoin": "round"
407
+ }, [t("path", { d: "M12 5v14M5 12l7-7 7 7" })]), t("span", { class: "text-[10px] font-medium text-(--md-text-muted)" }, "Click to insert")])], -1))], 4), F.value ? (s(), d("div", {
408
+ key: 0,
409
+ onClick: e[5] || (e[5] = M(() => {
410
+ }, ["stop"])),
411
+ class: "flex items-center gap-1.5 px-2 py-1.5"
412
+ }, [
413
+ e[14] || (e[14] = t("div", { class: "shrink-0 text-(--md-text-subtle) group-hover:text-(--md-text-muted) transition-colors cursor-grab active:cursor-grabbing" }, [t("svg", {
414
+ class: "w-3 h-3",
415
+ viewBox: "0 0 16 16",
416
+ fill: "currentColor"
417
+ }, [
418
+ t("circle", {
419
+ cx: "5",
420
+ cy: "4",
421
+ r: "1.2"
422
+ }),
423
+ t("circle", {
424
+ cx: "11",
425
+ cy: "4",
426
+ r: "1.2"
427
+ }),
428
+ t("circle", {
429
+ cx: "5",
430
+ cy: "8",
431
+ r: "1.2"
432
+ }),
433
+ t("circle", {
434
+ cx: "11",
435
+ cy: "8",
436
+ r: "1.2"
437
+ }),
438
+ t("circle", {
439
+ cx: "5",
440
+ cy: "12",
441
+ r: "1.2"
442
+ }),
443
+ t("circle", {
444
+ cx: "11",
445
+ cy: "12",
446
+ r: "1.2"
447
+ })
448
+ ])], -1)),
449
+ P.value !== a.id ? (s(), d("span", {
450
+ key: 0,
451
+ onDblclick: M((n) => me(a), ["stop"]),
452
+ onClick: e[1] || (e[1] = M(() => {
453
+ }, ["stop"])),
454
+ class: "flex-1 text-[11px] font-medium text-(--md-text-muted) truncate cursor-text"
455
+ }, z(a.name), 41, Ye)) : ge((s(), d("input", {
456
+ key: 1,
457
+ "onUpdate:modelValue": e[2] || (e[2] = (n) => E.value = n),
458
+ onBlur: (n) => J(a.id),
459
+ onKeyup: [ee((n) => J(a.id), ["enter"]), e[3] || (e[3] = ee((n) => P.value = null, ["escape"]))],
460
+ onClick: e[4] || (e[4] = M(() => {
461
+ }, ["stop"])),
462
+ class: "flex-1 text-[11px] text-(--md-text) border border-(--md-row-selection) bg-(--md-row-selection-bg)/40 rounded-md px-1.5 py-0.5 focus:outline-none focus:border-(--md-row-selection)",
463
+ ref_for: !0,
464
+ ref_key: "renameInputRef",
465
+ ref: L
466
+ }, null, 40, Je)), [[he, E.value]]),
467
+ t("span", Xe, z(X(a.createdAt)), 1),
468
+ C.value ? (s(), d("div", Ze, [t("button", {
469
+ onClick: M((n) => pe(a.id), ["stop"]),
470
+ class: "hidden group-hover:flex items-center justify-center w-5 h-5 shrink-0 rounded-md text-(--md-text-subtle) hover:text-(--md-danger) hover:bg-(--md-danger-bg) transition-colors focus:outline-none"
471
+ }, [...e[12] || (e[12] = [t("svg", {
472
+ class: "w-3 h-3",
473
+ viewBox: "0 0 24 24",
474
+ fill: "none",
475
+ stroke: "currentColor",
476
+ "stroke-width": "1.75",
477
+ "stroke-linecap": "round",
478
+ "stroke-linejoin": "round"
479
+ }, [t("path", { d: "M3 6h18M8 6V4h8v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }), t("path", { d: "M10 11v6M14 11v6" })], -1)])], 8, Qe), e[13] || (e[13] = t("div", { class: "pointer-events-none absolute bottom-full right-0 mb-1.5 px-2 py-1 bg-(--md-tooltip-bg) text-(--md-tooltip-text) text-[10px] font-medium rounded-md whitespace-nowrap opacity-0 group-hover/del:opacity-100 translate-y-0.5 group-hover/del:translate-y-0 transition-all duration-150 z-50 after:content-[''] after:absolute after:top-full after:right-2 after:border-4 after:border-transparent after:border-t-(--md-tooltip-bg)" }, " Remove ", -1))])) : W("", !0)
480
+ ])) : (s(), d("div", et, [t("span", tt, z(a.name), 1), t("span", rt, z(X(a.createdAt)), 1)]))], 42, qe))), 128))]),
481
+ _: 1
482
+ })]))])
483
+ ])])) : W("", !0)]),
484
+ _: 1
485
+ }));
486
+ }
487
+ }), lt = /* @__PURE__ */ ke(at, [["__scopeId", "data-v-ef885a8c"]]);
488
+ export {
489
+ lt as default,
490
+ Fe as t
491
+ };
@@ -0,0 +1,8 @@
1
+ var a = (t, r) => {
2
+ const e = t.__vccOpts || t;
3
+ for (const [_, o] of r) e[_] = o;
4
+ return e;
5
+ };
6
+ export {
7
+ a as t
8
+ };
@@ -135,7 +135,7 @@ type __VLS_Props = {
135
135
  declare var __VLS_17: {
136
136
  templateId: string | null;
137
137
  isSaving: boolean;
138
- saveStatus: import('../../../composables/emailBuilder/persistence/useEmailBuilderPersistence').AutoSaveStatus;
138
+ saveStatus: import('../../..').AutoSaveStatus;
139
139
  }, __VLS_80: {
140
140
  editor: EditorWriteApi;
141
141
  };
@@ -151,8 +151,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
151
151
  getJson: () => {
152
152
  template_id: string;
153
153
  template_name: string;
154
- canvas: Partial<import('../../../composables/emailBuilder/transform/pipeline/optimize').Canvas>;
155
- rows: Partial<import('../../../composables/emailBuilder/transform/pipeline/optimize').NestedRow | import('../../../composables/emailBuilder/transform/pipeline/optimize').RowSpacer>[];
154
+ canvas: Partial<import('../../..').Canvas>;
155
+ rows: Partial<import('../../..').NestedRow | import('../../..').RowSpacer>[];
156
156
  schema_version: string;
157
157
  } | null;
158
158
  setJson: (data: any, opts?: {
@@ -5,18 +5,18 @@
5
5
  *
6
6
  * Supports both new `children` shape and legacy `components` shape per column.
7
7
  */
8
- interface VisibilityConfig {
8
+ export interface VisibilityConfig {
9
9
  enabled: boolean;
10
10
  match: "all" | "any";
11
11
  rules: unknown[];
12
12
  }
13
- interface BorderConfig {
13
+ export interface BorderConfig {
14
14
  width: number;
15
15
  style: string;
16
16
  color: string;
17
17
  radius?: number;
18
18
  }
19
- interface GradientConfig {
19
+ export interface GradientConfig {
20
20
  useGradient: boolean;
21
21
  solid: string;
22
22
  gradient: {
@@ -37,7 +37,7 @@ interface Component {
37
37
  props: Record<string, unknown>;
38
38
  }
39
39
  type CanvasChild = Component | NestedRow | RowSpacer;
40
- interface Column {
40
+ export interface Column {
41
41
  id: string;
42
42
  width: number;
43
43
  /** New shape */