@maildeno/editor 0.1.4 → 0.4.3

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 (152) hide show
  1. package/CHANGELOG.md +304 -0
  2. package/README.md +397 -381
  3. package/dist/{RowPreviewLegacyComponent-yjHSkZLz.js → RowPreviewLegacyComponent-BFvLnPiK.js} +1 -1
  4. package/dist/{RowPreviewRow-D-wmhbhZ.js → RowPreviewRow-D-6koDUR.js} +2 -2
  5. package/dist/adapters/errors.d.ts +59 -0
  6. package/dist/adapters/index.d.ts +31 -0
  7. package/dist/adapters/types.d.ts +68 -0
  8. package/dist/brand.d.ts +15 -0
  9. package/dist/components/DesktopOnlyNotice.vue.d.ts +20 -0
  10. package/dist/components/features/emailBuilder/EmailEditor.vue.d.ts +182 -0
  11. package/dist/components/features/emailBuilder/assistant/AssistantPanel.vue.d.ts +37 -0
  12. package/dist/components/features/emailBuilder/blocks/AnchorBlock.vue.d.ts +3 -0
  13. package/dist/components/features/emailBuilder/blocks/ButtonBlock.vue.d.ts +3 -0
  14. package/dist/components/features/emailBuilder/blocks/DividerBlock.vue.d.ts +3 -0
  15. package/dist/components/features/emailBuilder/blocks/HeadingBlock.vue.d.ts +3 -0
  16. package/dist/components/features/emailBuilder/blocks/ImageBlock.vue.d.ts +3 -0
  17. package/dist/components/features/emailBuilder/blocks/ListBlock.vue.d.ts +3 -0
  18. package/dist/components/features/emailBuilder/blocks/MenuBlock.vue.d.ts +3 -0
  19. package/dist/components/features/emailBuilder/blocks/ParagraphBlock.vue.d.ts +3 -0
  20. package/dist/components/features/emailBuilder/blocks/SocialsBlock.vue.d.ts +3 -0
  21. package/dist/components/features/emailBuilder/blocks/SpacerBlock.vue.d.ts +3 -0
  22. package/dist/components/features/emailBuilder/blocks/VideoBlock.vue.d.ts +3 -0
  23. package/dist/components/features/emailBuilder/canvas/Canvas.vue.d.ts +3 -0
  24. package/dist/components/features/emailBuilder/canvas/CanvasColumn.vue.d.ts +49 -0
  25. package/dist/components/features/emailBuilder/canvas/CanvasComponent.vue.d.ts +56 -0
  26. package/dist/components/features/emailBuilder/canvas/CanvasElement.vue.d.ts +21 -0
  27. package/dist/components/features/emailBuilder/canvas/CanvasRow.vue.d.ts +49 -0
  28. package/dist/components/features/emailBuilder/canvas/CanvasRowSpacer.vue.d.ts +40 -0
  29. package/dist/components/features/emailBuilder/health/HealthIndicator.vue.d.ts +3 -0
  30. package/dist/components/features/emailBuilder/layout/Header.vue.d.ts +54 -0
  31. package/dist/components/features/emailBuilder/layout/SendEmail.vue.d.ts +21 -0
  32. package/dist/components/features/emailBuilder/layout/SidebarLeft.vue.d.ts +3 -0
  33. package/dist/components/features/emailBuilder/layout/SidebarRight.vue.d.ts +3 -0
  34. package/dist/components/features/emailBuilder/panels/AnchorPanel.vue.d.ts +3 -0
  35. package/dist/components/features/emailBuilder/panels/ButtonPanel.vue.d.ts +3 -0
  36. package/dist/components/features/emailBuilder/panels/DividerPanel.vue.d.ts +3 -0
  37. package/dist/components/features/emailBuilder/panels/HeadingPanel.vue.d.ts +3 -0
  38. package/dist/components/features/emailBuilder/panels/ImagePanel.vue.d.ts +3 -0
  39. package/dist/components/features/emailBuilder/panels/ListPanel.vue.d.ts +3 -0
  40. package/dist/components/features/emailBuilder/panels/MenuPanel.vue.d.ts +3 -0
  41. package/dist/components/features/emailBuilder/panels/ParagraphPanel.vue.d.ts +3 -0
  42. package/dist/components/features/emailBuilder/panels/RowColumnPanel.vue.d.ts +13 -0
  43. package/dist/components/features/emailBuilder/panels/RowPanel.vue.d.ts +13 -0
  44. package/dist/components/features/emailBuilder/panels/RowSpacerPanel.vue.d.ts +13 -0
  45. package/dist/components/features/emailBuilder/panels/SocialsPanel.vue.d.ts +3 -0
  46. package/dist/components/features/emailBuilder/panels/SpacerPanel.vue.d.ts +3 -0
  47. package/dist/components/features/emailBuilder/panels/VideoPanel.vue.d.ts +3 -0
  48. package/dist/components/features/emailBuilder/panels/shared/DeviceTabs.vue.d.ts +19 -0
  49. package/dist/components/features/emailBuilder/panels/shared/LinkFieldMergeTags.vue.d.ts +31 -0
  50. package/dist/components/features/emailBuilder/panels/shared/OverrideBadge.vue.d.ts +9 -0
  51. package/dist/components/features/emailBuilder/panels/shared/PreviewBadge.vue.d.ts +11 -0
  52. package/dist/components/features/emailBuilder/panels/shared/TextFieldMergeTags.vue.d.ts +25 -0
  53. package/dist/components/features/emailBuilder/panels/ui/BoxStylingSection.vue.d.ts +7 -0
  54. package/dist/components/features/emailBuilder/panels/ui/PropertyAlignment.vue.d.ts +30 -0
  55. package/dist/components/features/emailBuilder/panels/ui/PropertyColor.vue.d.ts +75 -0
  56. package/dist/components/features/emailBuilder/panels/ui/PropertyGradientColor.vue.d.ts +27 -0
  57. package/dist/components/features/emailBuilder/panels/ui/PropertyNumberSlider.vue.d.ts +74 -0
  58. package/dist/components/features/emailBuilder/panels/ui/PropertySection.vue.d.ts +17 -0
  59. package/dist/components/features/emailBuilder/panels/ui/PropertySelect.vue.d.ts +74 -0
  60. package/dist/components/features/emailBuilder/panels/ui/PropertyTextStyle.vue.d.ts +52 -0
  61. package/dist/components/features/emailBuilder/panels/ui/PropertyTextStylePanel.vue.d.ts +72 -0
  62. package/dist/components/features/emailBuilder/panels/ui/PropertyToggle.vue.d.ts +45 -0
  63. package/dist/components/features/emailBuilder/panels/ui/PropertyVisibility.vue.d.ts +32 -0
  64. package/dist/components/features/emailBuilder/panels/ui/SpacingControl.vue.d.ts +19 -0
  65. package/dist/components/features/emailBuilder/panels/ui/color-picker/AlphaSlider.vue.d.ts +28 -0
  66. package/dist/components/features/emailBuilder/panels/ui/color-picker/ColorPickerPanel.vue.d.ts +31 -0
  67. package/dist/components/features/emailBuilder/panels/ui/color-picker/HueSlider.vue.d.ts +19 -0
  68. package/dist/components/features/emailBuilder/panels/ui/color-picker/RecentColors.vue.d.ts +20 -0
  69. package/dist/components/features/emailBuilder/panels/ui/color-picker/SVPanel.vue.d.ts +39 -0
  70. package/dist/components/features/emailBuilder/panels/ui/visibility-rule/Rule.vue.d.ts +28 -0
  71. package/dist/components/features/emailBuilder/preview/PreviewScreen.vue.d.ts +7 -0
  72. package/dist/components/features/emailBuilder/preview/ui/PreviewCanvas.vue.d.ts +10 -0
  73. package/dist/components/features/emailBuilder/preview/ui/PreviewCapabilityBadges.vue.d.ts +12 -0
  74. package/dist/components/features/emailBuilder/preview/ui/PreviewClientCard.vue.d.ts +20 -0
  75. package/dist/components/features/emailBuilder/preview/ui/PreviewClientList.vue.d.ts +21 -0
  76. package/dist/components/features/emailBuilder/preview/ui/PreviewClientPicker.vue.d.ts +16 -0
  77. package/dist/components/features/emailBuilder/preview/ui/PreviewComponent.vue.d.ts +10 -0
  78. package/dist/components/features/emailBuilder/preview/ui/PreviewDetailView.vue.d.ts +41 -0
  79. package/dist/components/features/emailBuilder/preview/ui/PreviewRendered.vue.d.ts +8 -0
  80. package/dist/components/features/emailBuilder/product/RowPreview.vue.d.ts +8 -0
  81. package/dist/components/features/emailBuilder/product/RowPreviewChildren.vue.d.ts +14 -0
  82. package/dist/components/features/emailBuilder/product/RowPreviewLegacyComponent.vue.d.ts +14 -0
  83. package/dist/components/features/emailBuilder/product/RowPreviewRow.vue.d.ts +9 -0
  84. package/dist/components/features/emailBuilder/product/SavedRowsPanel.vue.d.ts +3 -0
  85. package/dist/components/features/emailBuilder/product/SavedTemplatesPanel.vue.d.ts +13 -0
  86. package/dist/components/features/emailBuilder/product/VersionHistoryPanel.vue.d.ts +14 -0
  87. package/dist/components/features/emailBuilder/sidebar/SidebarBlockButton.vue.d.ts +35 -0
  88. package/dist/components/features/emailBuilder/tabs/GeneralTab.vue.d.ts +3 -0
  89. package/dist/components/features/emailBuilder/tabs/LayoutTab.vue.d.ts +3 -0
  90. package/dist/components/features/emailBuilder/tabs/content/ContentTab.vue.d.ts +3 -0
  91. package/dist/components/features/emailBuilder/tabs/content/LayersPanel.vue.d.ts +7 -0
  92. package/dist/components/features/emailBuilder/tabs/general/MergeTagsTab.vue.d.ts +3 -0
  93. package/dist/components/features/emailBuilder/tabs/general/StylesTab.vue.d.ts +3 -0
  94. package/dist/components/features/emailBuilder/tabs/general/VisibilityTab.vue.d.ts +3 -0
  95. package/dist/components/features/emailBuilder/tabs/general/VisibilityWrapESPTab.vue.d.ts +3 -0
  96. package/dist/components/features/emailBuilder/tabs/general/merge-tags/LinkTagTab.vue.d.ts +3 -0
  97. package/dist/components/features/emailBuilder/tabs/general/merge-tags/MergeTagTab.vue.d.ts +3 -0
  98. package/dist/components/features/emailBuilder/ui/LinkInputDialog.vue.d.ts +17 -0
  99. package/dist/components/features/emailBuilder/ui/canvas/CanvasRowDropZone.vue.d.ts +12 -0
  100. package/dist/components/features/emailBuilder/ui/canvas/DropZone.vue.d.ts +10 -0
  101. package/dist/components/features/emailBuilder/ui/canvas/Loader.vue.d.ts +19 -0
  102. package/dist/components/features/emailBuilder/ui/layers-panel/ComponentIcon.vue.d.ts +7 -0
  103. package/dist/components/features/emailBuilder/ui/layers-panel/LayerColumnChildren.vue.d.ts +42 -0
  104. package/dist/components/features/emailBuilder/ui/layers-panel/LayerDropLine.vue.d.ts +8 -0
  105. package/dist/components/features/emailBuilder/ui/renderers/AnchorRenderer.vue.d.ts +10 -0
  106. package/dist/components/features/emailBuilder/ui/renderers/DividerRenderer.vue.d.ts +10 -0
  107. package/dist/components/features/emailBuilder/ui/renderers/HeadingRenderer.vue.d.ts +10 -0
  108. package/dist/components/features/emailBuilder/ui/renderers/ImageRenderer.vue.d.ts +10 -0
  109. package/dist/components/features/emailBuilder/ui/renderers/ListRenderer.vue.d.ts +10 -0
  110. package/dist/components/features/emailBuilder/ui/renderers/MenuRenderer.vue.d.ts +10 -0
  111. package/dist/components/features/emailBuilder/ui/renderers/ParagraphRenderer.vue.d.ts +10 -0
  112. package/dist/components/features/emailBuilder/ui/renderers/SocialsRenderer.vue.d.ts +10 -0
  113. package/dist/components/features/emailBuilder/ui/renderers/SpacerRenderer.vue.d.ts +10 -0
  114. package/dist/components/features/emailBuilder/ui/renderers/VideoRenderer.vue.d.ts +10 -0
  115. package/dist/components/features/emailBuilder/ui/rich-text-editor/RichTextEditor.vue.d.ts +12 -0
  116. package/dist/components/features/emailBuilder/ui/rich-text-editor/pickers/MergeTagPicker.vue.d.ts +18 -0
  117. package/dist/components/features/emailBuilder/ui/rich-text-editor/pickers/RichTextColorPicker.vue.d.ts +15 -0
  118. package/dist/components/features/emailBuilder/ui/visibility/SupportBadge.vue.d.ts +10 -0
  119. package/dist/components/features/emailBuilder/ui/visibility/VisibilityPopover.vue.d.ts +45 -0
  120. package/dist/components/ui/ConfirmDialog.vue.d.ts +3 -0
  121. package/dist/components/ui/Icon.vue.d.ts +33 -0
  122. package/dist/components/ui/InfoDialog.vue.d.ts +12 -0
  123. package/dist/components/ui/Loading.vue.d.ts +6 -0
  124. package/dist/components/ui/ShadowSafeToast.vue.d.ts +3 -0
  125. package/dist/components/ui/primitives/Button.vue.d.ts +23 -0
  126. package/dist/components/ui/primitives/DatePicker.vue.d.ts +16 -0
  127. package/dist/components/ui/primitives/Dialog.vue.d.ts +34 -0
  128. package/dist/components/ui/primitives/InputText.vue.d.ts +29 -0
  129. package/dist/components/ui/primitives/Message.vue.d.ts +20 -0
  130. package/dist/components/ui/primitives/Select.vue.d.ts +22 -0
  131. package/dist/composables/emailBuilder/components/useSystemRows.d.ts +22 -0
  132. package/dist/composables/emailBuilder/core/ui/useLayerHoverScroll.d.ts +10 -10
  133. package/dist/composables/emailBuilder/core/useEmailBuilder.d.ts +18 -0
  134. package/dist/composables/emailBuilder/export/logic/espLogicWrapper.d.ts +4 -4
  135. package/dist/composables/emailBuilder/export/targets/templateSnapshot.d.ts +24 -0
  136. package/dist/composables/emailBuilder/persistence/useEmailBuilderPersistence.d.ts +1 -1
  137. package/dist/composables/system/useColorScheme.d.ts +16 -0
  138. package/dist/editor.css +2074 -1688
  139. package/dist/{element-CWjNN0lY.js → element-95RHug4F.js} +3275 -1986
  140. package/dist/element-scoped-styles.css +2074 -1688
  141. package/dist/element.d.ts +1 -1
  142. package/dist/element.js +1 -1
  143. package/dist/{html-DGrfikay.js → html-D6UnSE1C.js} +1 -1
  144. package/dist/index.d.ts +4 -2
  145. package/dist/index.js +3325 -1984
  146. package/dist/init.d.ts +95 -2
  147. package/dist/init.js +29 -3
  148. package/dist/theme.d.ts +68 -17
  149. package/dist/types/assistant.d.ts +56 -0
  150. package/dist/{vue.runtime.esm-bundler-CfYyFhW6.js → vue.runtime.esm-bundler-BaHqghYy.js} +3 -3
  151. package/package.json +6 -3
  152. package/dist/composables/emailBuilder/transform/pipeline/optimizeAI.d.ts +0 -125
@@ -0,0 +1,34 @@
1
+ type __VLS_Props = {
2
+ visible?: boolean;
3
+ header?: string;
4
+ closable?: boolean;
5
+ /** Accepted for API compatibility; not implemented. */
6
+ draggable?: boolean;
7
+ /** Announced by screen readers when there is no visible header. */
8
+ ariaLabel?: string;
9
+ /** Accepted for API compatibility; this dialog is always modal. */
10
+ modal?: boolean;
11
+ };
12
+ declare var __VLS_12: {}, __VLS_14: {};
13
+ type __VLS_Slots = {} & {
14
+ default?: (props: typeof __VLS_12) => any;
15
+ } & {
16
+ footer?: (props: typeof __VLS_14) => any;
17
+ };
18
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
19
+ "update:visible": (value: boolean) => any;
20
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
21
+ "onUpdate:visible"?: ((value: boolean) => any) | undefined;
22
+ }>, {
23
+ visible: boolean;
24
+ draggable: boolean;
25
+ closable: boolean;
26
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Text input.
3
+ *
4
+ * defineExpose is deliberate: several call sites do
5
+ * `inputRef.value?.focus()` / `.select()` directly on the component ref,
6
+ * so those methods are exposed explicitly as a real, typed contract
7
+ * rather than relying on internals.
8
+ */
9
+ type __VLS_Props = {
10
+ modelValue?: string | number | null;
11
+ invalid?: boolean;
12
+ disabled?: boolean;
13
+ };
14
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {
15
+ focus: () => void | undefined;
16
+ select: () => void | undefined;
17
+ blur: () => void | undefined;
18
+ readonly input: HTMLInputElement | null;
19
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
20
+ "update:modelValue": (value: string) => any;
21
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
22
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
23
+ }>, {
24
+ invalid: boolean;
25
+ modelValue: string | number | null;
26
+ disabled: boolean;
27
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
@@ -0,0 +1,20 @@
1
+ type __VLS_Props = {
2
+ severity?: "info" | "success" | "warn" | "error";
3
+ closable?: boolean;
4
+ };
5
+ declare var __VLS_6: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_6) => any;
8
+ };
9
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
+ severity: "info" | "success" | "warn" | "error";
11
+ closable: boolean;
12
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
13
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
16
+ type __VLS_WithSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };
@@ -0,0 +1,22 @@
1
+ type __VLS_Props = {
2
+ modelValue?: unknown;
3
+ options?: any[];
4
+ optionLabel?: string | null;
5
+ optionValue?: string | null;
6
+ placeholder?: string;
7
+ disabled?: boolean;
8
+ filter?: boolean;
9
+ filterPlaceholder?: string;
10
+ };
11
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
+ "update:modelValue": (value: unknown) => any;
13
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ "onUpdate:modelValue"?: ((value: unknown) => any) | undefined;
15
+ }>, {
16
+ filter: boolean;
17
+ disabled: boolean;
18
+ options: any[];
19
+ placeholder: string;
20
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import { SavedRow, EditorStorageAdapter } from '../../../adapters/types';
2
+ declare function createSystemRowsInstance(storageAdapterInstance?: EditorStorageAdapter): {
3
+ systemRows: import('vue').Ref<{
4
+ id: string;
5
+ name: string;
6
+ createdAt: string;
7
+ row: Record<string, any>;
8
+ }[], SavedRow[] | {
9
+ id: string;
10
+ name: string;
11
+ createdAt: string;
12
+ row: Record<string, any>;
13
+ }[]>;
14
+ isFetching: import('vue').Ref<boolean, boolean>;
15
+ isSupported: import('vue').Ref<boolean, boolean>;
16
+ fetchRows: () => Promise<void>;
17
+ cloneRowForCanvas: (entryId: string) => Record<string, any> | null;
18
+ };
19
+ export type SystemRowsInstance = ReturnType<typeof createSystemRowsInstance>;
20
+ export declare function provideSystemRows(storageAdapterInstance?: EditorStorageAdapter): SystemRowsInstance;
21
+ export declare function useSystemRows(): SystemRowsInstance;
22
+ export {};
@@ -4,17 +4,17 @@ export declare function useLayerHoverScroll(layerHoveredId: Ref<string | null>,
4
4
  behavior?: ScrollBehavior;
5
5
  delay?: number;
6
6
  /**
7
- * Margin (in px) from the viewport edges within which the target is
8
- * considered "comfortably visible" and no scroll is needed. Default 80 px
9
- * gives breathing room on both sides without being so generous that
10
- * elements land right against an edge.
11
- */
7
+ * Margin (in px) from the viewport edges within which the target is
8
+ * considered "comfortably visible" and no scroll is needed. Default 80 px
9
+ * gives breathing room on both sides without being so generous that
10
+ * elements land right against an edge.
11
+ */
12
12
  inViewMargin?: number;
13
13
  /**
14
- * If the target is more than this many pixels from the current scroll
15
- * position, use instant jump instead of smooth scroll. Default 600 px
16
- * covers roughly half a typical viewport — anything farther than that
17
- * should teleport, not animate.
18
- */
14
+ * If the target is more than this many pixels from the current scroll
15
+ * position, use instant jump instead of smooth scroll. Default 600 px
16
+ * covers roughly half a typical viewport — anything farther than that
17
+ * should teleport, not animate.
18
+ */
19
19
  instantThreshold?: number;
20
20
  }): void;
@@ -132,7 +132,16 @@ export declare function provideEmailBuilder(storageAdapterInstance?: EditorStora
132
132
  content: {
133
133
  rows: any[];
134
134
  };
135
+ }, historyAction?: string) => void;
136
+ setJson: (data: any, opts?: {
137
+ history?: "undoable" | "reset";
135
138
  }) => void;
139
+ getSelection: () => {
140
+ id: string;
141
+ type: string | null;
142
+ } | null;
143
+ setSelection: (id: string | null) => boolean;
144
+ onChange: (cb: () => void) => (() => void);
136
145
  };
137
146
  /**
138
147
  * Every file that isn't the root calls this exactly as before —
@@ -269,6 +278,15 @@ declare function createEmailBuilderInstance(storageAdapterInstance?: EditorStora
269
278
  content: {
270
279
  rows: any[];
271
280
  };
281
+ }, historyAction?: string) => void;
282
+ setJson: (data: any, opts?: {
283
+ history?: "undoable" | "reset";
272
284
  }) => void;
285
+ getSelection: () => {
286
+ id: string;
287
+ type: string | null;
288
+ } | null;
289
+ setSelection: (id: string | null) => boolean;
290
+ onChange: (cb: () => void) => (() => void);
273
291
  };
274
292
  export {};
@@ -6,10 +6,10 @@ export interface ESPSyntaxMeta {
6
6
  description: string;
7
7
  docsUrl?: string;
8
8
  /**
9
- * Whether this ESP supports boolean nesting / parenthesised sub-expressions.
10
- * When false, buildFullExpression flattens all rules to a single level and
11
- * the UI should warn the user that nested groups are not supported.
12
- */
9
+ * Whether this ESP supports boolean nesting / parenthesised sub-expressions.
10
+ * When false, buildFullExpression flattens all rules to a single level and
11
+ * the UI should warn the user that nested groups are not supported.
12
+ */
13
13
  supportsNesting: boolean;
14
14
  }
15
15
  export declare const ESP_SYNTAX_META: Record<KnownESPSyntax, ESPSyntaxMeta>;
@@ -0,0 +1,24 @@
1
+ export declare const CURRENT_SCHEMA_VERSION = "1.0";
2
+ /**
3
+ * The canonical snapshot shape — exactly what `getJson()` returns, which is
4
+ * what makes `setJson(getJson())` a lossless round-trip.
5
+ */
6
+ export interface TemplateSnapshotJson {
7
+ template_id: string;
8
+ template_name: string;
9
+ canvas: any;
10
+ rows: any[];
11
+ schema_version: string;
12
+ }
13
+ export declare const toTemplateId: (name: string) => string;
14
+ /**
15
+ * Normalizes any recognized template shape onto the current one.
16
+ *
17
+ * Throws with a specific message rather than returning null: callers surface
18
+ * `error.message` directly to the user, and "Unrecognized template file
19
+ * format" is more use than a silent failure. The major-version guard is the
20
+ * one case worth failing loudly on — a newer schema may contain block types
21
+ * this build cannot render, and silently dropping them would corrupt the
22
+ * user's design on the next save.
23
+ */
24
+ export declare function normalizeTemplateSnapshot(data: any): TemplateSnapshotJson;
@@ -20,7 +20,7 @@ export interface RestoredDraft {
20
20
  canvas: Record<string, any>;
21
21
  updatedAt: string;
22
22
  /** Reflects the templateId stored in the payload — use this to verify the
23
- * draft belongs to the currently open template before restoring it. */
23
+ * draft belongs to the currently open template before restoring it. */
24
24
  templateId: string | null;
25
25
  /** Cached template display name — set when the template was first loaded from DB. */
26
26
  name?: string;
@@ -0,0 +1,16 @@
1
+ import { Ref } from 'vue';
2
+ /**
3
+ * `auto` follows the host page. `light` and `dark` pin the editor regardless
4
+ * of what the page is doing — useful when the editor is embedded in a shell
5
+ * whose theme it should not inherit.
6
+ */
7
+ export type ColorMode = "light" | "dark" | "auto";
8
+ /**
9
+ * @param mode The `colorMode` prop, as a ref.
10
+ * @param host The custom-element host when running under element.ts, else
11
+ * null. Reflected onto as well, so `:host(.dark)` matches in an
12
+ * unscoped shadow build.
13
+ */
14
+ export declare function useColorScheme(mode: Ref<ColorMode | undefined>, host?: HTMLElement | null): {
15
+ isDark: import('vue').ComputedRef<boolean>;
16
+ };