@useinsider/guido 1.0.3-beta.d8a9e56 → 1.0.3-beta.dbf4a88

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 (189) hide show
  1. package/dist/components/Guido.vue.js +8 -8
  2. package/dist/components/Guido.vue2.js +74 -69
  3. package/dist/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.js +18 -0
  4. package/dist/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue2.js +16 -0
  5. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +24 -0
  6. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +64 -0
  7. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +18 -0
  8. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +107 -0
  9. package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.js +18 -0
  10. package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue2.js +12 -0
  11. package/dist/components/wrappers/WpDrawer.vue.js +6 -4
  12. package/dist/composables/useStripo.js +41 -34
  13. package/dist/config/compiler/unsubscribeCompilerRules.js +42 -29
  14. package/dist/config/migrator/index.js +7 -6
  15. package/dist/config/migrator/unsubscribeMigrator.js +124 -0
  16. package/dist/enums/defaults.js +6 -3
  17. package/dist/enums/unsubscribe.js +43 -6
  18. package/dist/extensions/Blocks/Checkbox/control.js +55 -53
  19. package/dist/extensions/Blocks/RadioButton/control.js +44 -42
  20. package/dist/extensions/Blocks/Unsubscribe/block.js +131 -0
  21. package/dist/extensions/Blocks/Unsubscribe/control.js +167 -0
  22. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +42 -0
  23. package/dist/extensions/Blocks/Unsubscribe/extension.js +21 -0
  24. package/dist/extensions/Blocks/Unsubscribe/iconsRegistry.js +21 -0
  25. package/dist/extensions/Blocks/Unsubscribe/settingsPanel.js +35 -0
  26. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +42 -0
  27. package/dist/extensions/Blocks/Unsubscribe/tagRegistry.js +10 -0
  28. package/dist/extensions/Blocks/Unsubscribe/template.js +22 -0
  29. package/dist/extensions/Blocks/Unsubscribe/utils/constants.js +11 -0
  30. package/dist/extensions/Blocks/Unsubscribe/utils/utils.js +6 -0
  31. package/dist/guido.css +1 -1
  32. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +2 -1
  33. package/dist/package.json.js +7 -0
  34. package/dist/services/unsubscribeApi.js +16 -0
  35. package/dist/{@types → src/@types}/generic.d.ts +9 -0
  36. package/dist/{components → src/components}/Guido.vue.d.ts +2 -2
  37. package/dist/src/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts +2 -0
  38. package/dist/src/components/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts +2 -0
  39. package/dist/src/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts +2 -0
  40. package/dist/src/components/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts +2 -0
  41. package/dist/{components → src/components}/wrappers/WpDrawer.vue.d.ts +6 -4
  42. package/dist/src/config/migrator/index.d.ts +1 -0
  43. package/dist/src/config/migrator/unsubscribeMigrator.d.ts +1 -0
  44. package/dist/src/enums/unsubscribe.d.ts +38 -0
  45. package/dist/src/extensions/Blocks/Unsubscribe/block.d.ts +32 -0
  46. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +29 -0
  47. package/dist/src/extensions/Blocks/Unsubscribe/elements/preview.d.ts +11 -0
  48. package/dist/src/extensions/Blocks/Unsubscribe/iconsRegistry.d.ts +4 -0
  49. package/dist/src/extensions/Blocks/Unsubscribe/tagRegistry.d.ts +4 -0
  50. package/dist/src/extensions/Blocks/Unsubscribe/template.d.ts +12 -0
  51. package/dist/src/extensions/Blocks/Unsubscribe/utils/constants.d.ts +9 -0
  52. package/dist/src/extensions/Blocks/Unsubscribe/utils/utils.d.ts +7 -0
  53. package/dist/src/extensions/Blocks/_Boilerplate/settingsPanel.d.ts +4 -0
  54. package/dist/src/extensions/DynamicContent/extension.d.ts +2 -0
  55. package/dist/src/services/unsubscribeApi.d.ts +4 -0
  56. package/dist/src/stores/config.d.ts +96 -0
  57. package/dist/src/stores/unsubscribe.d.ts +256 -0
  58. package/dist/stores/config.js +17 -0
  59. package/dist/stores/unsubscribe.js +126 -6
  60. package/dist/utils/templatePreparation.js +17 -16
  61. package/package.json +6 -1
  62. package/dist/config/migrator/index.d.ts +0 -1
  63. package/dist/enums/unsubscribe.d.ts +0 -15
  64. package/dist/stores/unsubscribe.d.ts +0 -8
  65. /package/dist/{@types → src/@types}/events.d.ts +0 -0
  66. /package/dist/{@types → src/@types}/save-as-template.d.ts +0 -0
  67. /package/dist/{App.vue.d.ts → src/App.vue.d.ts} +0 -0
  68. /package/dist/{components → src/components}/organisms/LoadingWrapper.vue.d.ts +0 -0
  69. /package/dist/{components → src/components}/organisms/base/Toaster.vue.d.ts +0 -0
  70. /package/dist/{components → src/components}/organisms/email-preview/PreviewContainer.vue.d.ts +0 -0
  71. /package/dist/{components → src/components}/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +0 -0
  72. /package/dist/{components → src/components}/organisms/email-preview/amp/AmpToggle.vue.d.ts +0 -0
  73. /package/dist/{components → src/components}/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +0 -0
  74. /package/dist/{components → src/components}/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +0 -0
  75. /package/dist/{components → src/components}/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +0 -0
  76. /package/dist/{components → src/components}/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +0 -0
  77. /package/dist/{components → src/components}/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +0 -0
  78. /package/dist/{components → src/components}/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +0 -0
  79. /package/dist/{components → src/components}/organisms/header/HeaderWrapper.vue.d.ts +0 -0
  80. /package/dist/{components → src/components}/organisms/header/LeftSlot.vue.d.ts +0 -0
  81. /package/dist/{components → src/components}/organisms/header/MiddleSlot.vue.d.ts +0 -0
  82. /package/dist/{components → src/components}/organisms/header/RightSlot.vue.d.ts +0 -0
  83. /package/dist/{components → src/components}/organisms/header/ViewOptions.vue.d.ts +0 -0
  84. /package/dist/{components → src/components}/organisms/header/version-history/RestoreButton.vue.d.ts +0 -0
  85. /package/dist/{components → src/components}/organisms/header/version-history/VersionHistory.vue.d.ts +0 -0
  86. /package/dist/{components → src/components}/organisms/header/version-history/VersionHistoryItem.vue.d.ts +0 -0
  87. /package/dist/{components → src/components}/organisms/header/version-history/ViewOptions.vue.d.ts +0 -0
  88. /package/dist/{components → src/components}/organisms/onboarding/AMPOnboarding.vue.d.ts +0 -0
  89. /package/dist/{components → src/components}/organisms/onboarding/GenericOnboarding.vue.d.ts +0 -0
  90. /package/dist/{components → src/components}/organisms/onboarding/NewVersionPopup.vue.d.ts +0 -0
  91. /package/dist/{components → src/components}/organisms/onboarding/OnboardingWrapper.vue.d.ts +0 -0
  92. /package/dist/{components → src/components}/organisms/onboarding/TextBlockOnboarding.vue.d.ts +0 -0
  93. /package/dist/{components → src/components}/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts +0 -0
  94. /package/dist/{components → src/components}/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts +0 -0
  95. /package/dist/{components → src/components}/wrappers/WpModal.vue.d.ts +0 -0
  96. /package/dist/{composables → src/composables}/useActionsApi.d.ts +0 -0
  97. /package/dist/{composables → src/composables}/useApiExample.d.ts +0 -0
  98. /package/dist/{composables → src/composables}/useCodeEditorApi.d.ts +0 -0
  99. /package/dist/{composables → src/composables}/useConfig.d.ts +0 -0
  100. /package/dist/{composables → src/composables}/useCustomInterfaceAppearance.d.ts +0 -0
  101. /package/dist/{composables → src/composables}/useDebounce.d.ts +0 -0
  102. /package/dist/{composables → src/composables}/useExport.d.ts +0 -0
  103. /package/dist/{composables → src/composables}/useGuidoActions.d.ts +0 -0
  104. /package/dist/{composables → src/composables}/useHtmlCompiler.d.ts +0 -0
  105. /package/dist/{composables → src/composables}/useHtmlValidator.d.ts +0 -0
  106. /package/dist/{composables → src/composables}/useHttp.d.ts +0 -0
  107. /package/dist/{composables → src/composables}/usePartner.d.ts +0 -0
  108. /package/dist/{composables → src/composables}/usePreviewMode.d.ts +0 -0
  109. /package/dist/{composables → src/composables}/useProvideInject.d.ts +0 -0
  110. /package/dist/{composables → src/composables}/useRecommendation.d.ts +0 -0
  111. /package/dist/{composables → src/composables}/useResponsivePreview.d.ts +0 -0
  112. /package/dist/{composables → src/composables}/useSave.d.ts +0 -0
  113. /package/dist/{composables → src/composables}/useStripo.d.ts +0 -0
  114. /package/dist/{composables → src/composables}/useStripoEventHandler.d.ts +0 -0
  115. /package/dist/{composables → src/composables}/useToaster.d.ts +0 -0
  116. /package/dist/{composables → src/composables}/useTranslations.d.ts +0 -0
  117. /package/dist/{composables → src/composables}/useValidation.d.ts +0 -0
  118. /package/dist/{composables → src/composables}/useVersionHistoryApi.d.ts +0 -0
  119. /package/dist/{composables → src/composables}/validators/saveAsTemplate.d.ts +0 -0
  120. /package/dist/{config → src/config}/compiler/htmlCompilerRules.d.ts +0 -0
  121. /package/dist/{config → src/config}/compiler/outlookCompilerRules.d.ts +0 -0
  122. /package/dist/{config → src/config}/compiler/recommendationCompilerRules.d.ts +0 -0
  123. /package/dist/{config → src/config}/compiler/socialCompilerRules.d.ts +0 -0
  124. /package/dist/{config → src/config}/compiler/unsubscribeCompilerRules.d.ts +0 -0
  125. /package/dist/{config → src/config}/migrator/checkboxMigrator.d.ts +0 -0
  126. /package/dist/{config → src/config}/migrator/couponBlockMigrator.d.ts +0 -0
  127. /package/dist/{config → src/config}/migrator/radioButtonMigrator.d.ts +0 -0
  128. /package/dist/{enums → src/enums}/defaults.d.ts +0 -0
  129. /package/dist/{enums → src/enums}/displayConditions.d.ts +0 -0
  130. /package/dist/{enums → src/enums}/html-validator.d.ts +0 -0
  131. /package/dist/{enums → src/enums}/onboarding.d.ts +0 -0
  132. /package/dist/{enums → src/enums}/preview.d.ts +0 -0
  133. /package/dist/{enums → src/enums}/recommendation.d.ts +0 -0
  134. /package/dist/{enums → src/enums}/toaster.d.ts +0 -0
  135. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/block.d.ts +0 -0
  136. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/control.d.ts +0 -0
  137. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/extension.d.ts +0 -0
  138. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/iconsRegistry.d.ts +0 -0
  139. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/settingsPanel.d.ts +0 -0
  140. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/template.d.ts +0 -0
  141. /package/dist/{extensions → src/extensions}/Blocks/CouponBlock/block.d.ts +0 -0
  142. /package/dist/{extensions → src/extensions}/Blocks/CouponBlock/extension.d.ts +0 -0
  143. /package/dist/{extensions → src/extensions}/Blocks/CouponBlock/iconsRegistry.d.ts +0 -0
  144. /package/dist/{extensions → src/extensions}/Blocks/CouponBlock/settingsPanel.d.ts +0 -0
  145. /package/dist/{extensions → src/extensions}/Blocks/CouponBlock/template.d.ts +0 -0
  146. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/block.d.ts +0 -0
  147. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/control.d.ts +0 -0
  148. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/extension.d.ts +0 -0
  149. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/iconsRegistry.d.ts +0 -0
  150. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/settingsPanel.d.ts +0 -0
  151. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/template.d.ts +0 -0
  152. /package/dist/{extensions/Blocks/_Boilerplate → src/extensions/Blocks/Unsubscribe}/extension.d.ts +0 -0
  153. /package/dist/{extensions/Blocks/_Boilerplate → src/extensions/Blocks/Unsubscribe}/settingsPanel.d.ts +0 -0
  154. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/block.d.ts +0 -0
  155. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/control.d.ts +0 -0
  156. /package/dist/{extensions/DynamicContent → src/extensions/Blocks/_Boilerplate}/extension.d.ts +0 -0
  157. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/iconsRegistry.d.ts +0 -0
  158. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/template.d.ts +0 -0
  159. /package/dist/{extensions → src/extensions}/DynamicContent/dynamic-content-modal.d.ts +0 -0
  160. /package/dist/{extensions → src/extensions}/DynamicContent/dynamic-content.d.ts +0 -0
  161. /package/dist/{library.d.ts → src/library.d.ts} +0 -0
  162. /package/dist/{main.d.ts → src/main.d.ts} +0 -0
  163. /package/dist/{mock → src/mock}/api/auth.d.ts +0 -0
  164. /package/dist/{mock → src/mock}/api/custom-fonts.d.ts +0 -0
  165. /package/dist/{mock → src/mock}/api/default-template.d.ts +0 -0
  166. /package/dist/{mock → src/mock}/api/template-library.d.ts +0 -0
  167. /package/dist/{mock → src/mock}/api/unsubscribe.d.ts +0 -0
  168. /package/dist/{mock → src/mock}/api/user-modal-state.d.ts +0 -0
  169. /package/dist/{mock → src/mock}/api/validator.d.ts +0 -0
  170. /package/dist/{mock → src/mock}/browser.d.ts +0 -0
  171. /package/dist/{mock → src/mock}/handlers.d.ts +0 -0
  172. /package/dist/{services → src/services}/onboardingApi.d.ts +0 -0
  173. /package/dist/{services → src/services}/stripoApi.d.ts +0 -0
  174. /package/dist/{services → src/services}/templateLibraryApi.d.ts +0 -0
  175. /package/dist/{stores → src/stores}/dynamic-content.d.ts +0 -0
  176. /package/dist/{stores → src/stores}/editor.d.ts +0 -0
  177. /package/dist/{stores → src/stores}/onboarding.d.ts +0 -0
  178. /package/dist/{stores → src/stores}/preview.d.ts +0 -0
  179. /package/dist/{stores → src/stores}/recommendation.d.ts +0 -0
  180. /package/dist/{stores → src/stores}/save-as-template.d.ts +0 -0
  181. /package/dist/{stores → src/stores}/toaster.d.ts +0 -0
  182. /package/dist/{stores → src/stores}/version-history.d.ts +0 -0
  183. /package/dist/{utils → src/utils}/arrayUtil.d.ts +0 -0
  184. /package/dist/{utils → src/utils}/base64.d.ts +0 -0
  185. /package/dist/{utils → src/utils}/dateUtil.d.ts +0 -0
  186. /package/dist/{utils → src/utils}/genericUtil.d.ts +0 -0
  187. /package/dist/{utils → src/utils}/htmlCompiler.d.ts +0 -0
  188. /package/dist/{utils → src/utils}/templatePreparation.d.ts +0 -0
  189. /package/dist/{utils → src/utils}/tooltipUtils.d.ts +0 -0
@@ -226,7 +226,8 @@ var V = "esd-block-button", $ = "esd-block-text", X = "esd-block-image", G = "es
226
226
  name: "name",
227
227
  disabled: "disabled"
228
228
  }, ot = {
229
- ...D
229
+ ...D,
230
+ caption: "caption"
230
231
  }, Et = {
231
232
  ...D,
232
233
  text: "text"
@@ -0,0 +1,7 @@
1
+ const o = { stripo: { version: "2.42.0" } }, s = {
2
+ guido: o
3
+ };
4
+ export {
5
+ s as default,
6
+ o as guido
7
+ };
@@ -0,0 +1,16 @@
1
+ import { useHttp as t } from "../composables/useHttp.js";
2
+ import { useToaster as n } from "../composables/useToaster.js";
3
+ const u = () => {
4
+ const { get: r } = t(), { handleError: s } = n();
5
+ return { getUnsubscribePages: async () => {
6
+ try {
7
+ const { data: e = [] } = await r("/unsubscribe-pages/get-all");
8
+ return e;
9
+ } catch (e) {
10
+ return s(e, "Failed to fetch unsubscribe pages"), [];
11
+ }
12
+ } };
13
+ };
14
+ export {
15
+ u as useUnsubscribeApi
16
+ };
@@ -1,4 +1,7 @@
1
1
  import type { CompilerRule } from './html-compiler';
2
+ type Extensions = {
3
+ unsubscribe?: boolean;
4
+ };
2
5
  type Features = {
3
6
  dynamicContent?: boolean;
4
7
  saveAsTemplate?: boolean;
@@ -16,8 +19,14 @@ export type GuidoConfig = {
16
19
  useHeader?: boolean;
17
20
  emailHeader: EmailHeader;
18
21
  partner?: Partner;
22
+ extensions?: Extensions;
19
23
  features?: Features;
20
24
  };
25
+ export type TemplateConfig = {
26
+ preselectedDynamicContentList?: DynamicContent[];
27
+ selectedUnsubscribePages?: number[];
28
+ variationId?: string;
29
+ };
21
30
  export type DynamicContent = {
22
31
  value: string;
23
32
  text: string;
@@ -1,4 +1,4 @@
1
- import type { DynamicContent, GuidoConfig } from '@@/Types/generic';
1
+ import type { DynamicContent, GuidoConfig, TemplateConfig } from '@@/Types/generic';
2
2
  import type { SavedTemplateDetails } from '@@/Types/stripo';
3
3
  type __VLS_Props = {
4
4
  templateId: string;
@@ -9,8 +9,8 @@ type __VLS_Props = {
9
9
  username?: string;
10
10
  html?: string;
11
11
  css?: string;
12
- preselectedDynamicContentList: DynamicContent[];
13
12
  guidoConfig: GuidoConfig;
13
+ templateConfig?: TemplateConfig;
14
14
  };
15
15
  declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__VLS_Props>, {
16
16
  dynamicContent: {
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
2
+ export default _default;
@@ -2,7 +2,7 @@ import type { FooterButtonGroupOptions } from '@@/Types/wrappers/wp-drawer';
2
2
  interface Props {
3
3
  id: string;
4
4
  className?: string;
5
- size?: string;
5
+ size?: 'small' | 'medium' | 'large';
6
6
  closeOnOutsideClick?: boolean;
7
7
  descriptionStatus?: boolean;
8
8
  descriptionText?: string;
@@ -10,9 +10,11 @@ interface Props {
10
10
  status: boolean;
11
11
  titleText: string;
12
12
  }
13
- declare var __VLS_12: {};
13
+ declare var __VLS_12: {}, __VLS_14: {};
14
14
  type __VLS_Slots = {} & {
15
- default?: (props: typeof __VLS_12) => any;
15
+ headerBottomSlot?: (props: typeof __VLS_12) => any;
16
+ } & {
17
+ default?: (props: typeof __VLS_14) => any;
16
18
  };
17
19
  declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<Props>, {
18
20
  className: string;
@@ -32,7 +34,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
32
34
  descriptionText: string;
33
35
  }>>>, {
34
36
  className: string;
35
- size: string;
37
+ size: "small" | "medium" | "large";
36
38
  closeOnOutsideClick: boolean;
37
39
  descriptionStatus: boolean;
38
40
  descriptionText: string;
@@ -0,0 +1 @@
1
+ export declare const migrate: (html: string) => Promise<string>;
@@ -0,0 +1 @@
1
+ export declare function migrateUnsubscribe(html: string): Promise<string>;
@@ -0,0 +1,38 @@
1
+ export declare const LINK_TYPES: {
2
+ UNSUBSCRIBE_LINK_TYPE: number;
3
+ PREFERENCES_LINK_TYPE: number;
4
+ };
5
+ export declare const LINK_REGEXES: {
6
+ UNSUBSCRIBE_LINK_REGEX: RegExp;
7
+ DATA_OGSB_BUTTON_CSS_REGEX: string;
8
+ GLOBAL_UNSUBSCRIBE_LINK_REGEX: RegExp;
9
+ PREFERENCES_UNSUBSCRIBE_LINK_REGEX: RegExp;
10
+ };
11
+ export declare const URLS: {
12
+ UNSUBSCRIBE_URL: string;
13
+ PREFERENCES_URL: string;
14
+ };
15
+ export declare const INSIDER_ID = "iid";
16
+ export declare const DEFAULT_UNSUBSCRIBE_GROUP: {
17
+ readonly name: "Global Unsubscribe";
18
+ readonly sendGridId: "G";
19
+ };
20
+ export declare const ACADEMY_LINK = "https://academy.useinsider.com/docs/global-unsubscribe-preference-center";
21
+ export declare const UNSUBSCRIBE_PAGES_LINK = "/email/unsubscribe-pages";
22
+ export declare const PAGE_TYPES: {
23
+ GLOBAL_UNSUBSCRIBE: number;
24
+ GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE: number;
25
+ SUBSCRIPTION_PREFERENCE_CENTER: number;
26
+ SUBSCRIPTION_PREFERENCE_CONFIRMATION: number;
27
+ RESUBSCRIBE: number;
28
+ };
29
+ export declare const TYPE_COLLECTIONS: {
30
+ [x: number]: number[];
31
+ };
32
+ export declare const TYPE_TRANSLATIONS: {
33
+ [x: number]: string;
34
+ };
35
+ export declare const MERGE_TAGS: {
36
+ [x: number]: string;
37
+ default: string;
38
+ };
@@ -0,0 +1,32 @@
1
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { Block, BlockCompositionType } from '@stripoinc/ui-editor-extensions';
3
+ export declare const UNSUBSCRIBE_BLOCK_ID = "unsubscribe-block";
4
+ export declare class UnsubscribeBlock extends Block {
5
+ private selectEventListener;
6
+ private cancelEventListener;
7
+ private currentNode?;
8
+ constructor();
9
+ getId(): string;
10
+ getIcon(): string;
11
+ getBlockCompositionType(): BlockCompositionType;
12
+ getName(): string;
13
+ getDescription(): string;
14
+ getTemplate(): string;
15
+ onCreated(node: ImmutableHtmlNode): void;
16
+ onSelect(node: ImmutableHtmlNode): undefined;
17
+ onDelete(node: ImmutableHtmlNode): undefined;
18
+ onDestroy(): void;
19
+ private _setupSelectEventListener;
20
+ private _removeSelectEventListener;
21
+ private _setupCancelEventListener;
22
+ private _removeCancelEventListener;
23
+ private _handleCancel;
24
+ private _removeEventListeners;
25
+ private _updateBlock;
26
+ private _getMergeTag;
27
+ private _openDrawer;
28
+ private _checkExistingBlocks;
29
+ private _loadBlockState;
30
+ private _resetStoreState;
31
+ private _removeBlockTemplatesFromStore;
32
+ }
@@ -0,0 +1,29 @@
1
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { Control } from '@stripoinc/ui-editor-extensions';
3
+ export declare const UNSUBSCRIBE_CONTROL_ID = "ui-elements-unsubscribe";
4
+ export declare class UnsubscribeControl extends Control {
5
+ private currentPreviewIndex;
6
+ private currentNode?;
7
+ private currentPages?;
8
+ private valueChangeHandlers;
9
+ private lastParsedAttribute?;
10
+ getId(): string;
11
+ getTemplate(): string;
12
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
13
+ onRender(): void;
14
+ onDestroy(): void;
15
+ private get totalTemplates();
16
+ private _listenToFormUpdates;
17
+ private _onButtonClick;
18
+ private _onPrevClick;
19
+ private _onNextClick;
20
+ private _updatePreview;
21
+ private _updateCounter;
22
+ private _getPreview;
23
+ private _getButton;
24
+ private _getLabel;
25
+ private _getIconButton;
26
+ private _getPrevButton;
27
+ private _getNextButton;
28
+ private _getCounterText;
29
+ }
@@ -0,0 +1,11 @@
1
+ import { UIElement } from '@stripoinc/ui-editor-extensions';
2
+ export declare const PREVIEW_UI_ELEMENT_ID = "unsubscribe-preview";
3
+ export declare class PreviewUIElement extends UIElement {
4
+ private imgElement?;
5
+ getId(): string;
6
+ getTemplate(): string;
7
+ onRender(container: HTMLElement): void;
8
+ setValue(value: string): void;
9
+ getValue(): string;
10
+ onDestroy(): void;
11
+ }
@@ -0,0 +1,4 @@
1
+ import { IconsRegistry } from '@stripoinc/ui-editor-extensions';
2
+ export declare class UnsubscribeIconsRegistry extends IconsRegistry {
3
+ registerIconsSvg(iconsMap: Record<string, string>): void;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { UIElementTagRegistry } from '@stripoinc/ui-editor-extensions';
2
+ export declare class UnsubscribeTagRegistry extends UIElementTagRegistry {
3
+ registerUiElements(uiElementsTagsMap: Record<string, string>): void;
4
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Migration template for legacy unsubscribe blocks.
3
+ * This template is used to identify and migrate older versions of the unsubscribe block
4
+ * that may exist in saved email templates. The migration is detected in the Block's
5
+ * onCreated() lifecycle method via the 'data-migration' attribute check.
6
+ *
7
+ * Note: This template is currently exported but not actively used in the codebase.
8
+ * It serves as a reference for the expected structure of legacy blocks during migration.
9
+ */
10
+ declare const migrationTemplate = "\n <td\n esd-extension-block-id=\"unsubscribe-block\"\n class=\"esd-block-text unsubscribe-block-v2 esd-block-unsubscribe esd-unsubscribe-block esd-extension-block\"\n >\n {-{-TITLE-}-}\n </td>\n";
11
+ export declare function getDefaultTemplate(): string;
12
+ export default migrationTemplate;
@@ -0,0 +1,9 @@
1
+ export declare const UNSUBSCRIBE_EVENTS: {
2
+ readonly SELECT: "unsubscribe:select";
3
+ readonly CANCEL: "unsubscribe:cancel";
4
+ };
5
+ export type UnsubscribeEvent = typeof UNSUBSCRIBE_EVENTS[keyof typeof UNSUBSCRIBE_EVENTS];
6
+ export declare const DATA_ATTRIBUTES: {
7
+ readonly PAGE_TYPE: "data-unsubscribe-page-type";
8
+ readonly PAGE_LIST: "data-unsubscribe-page-list";
9
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Parses a comma-separated list of page IDs into an array of numbers.
3
+ * Filters out invalid values (NaN, empty strings, negative numbers).
4
+ * @param pageList - Comma-separated string of page IDs
5
+ * @returns Array of valid page IDs
6
+ */
7
+ export declare function parsePageList(pageList: string): number[];
@@ -0,0 +1,4 @@
1
+ import { SettingsPanelRegistry, SettingsPanelTab } from '@stripoinc/ui-editor-extensions';
2
+ export declare class SettingsPanel extends SettingsPanelRegistry {
3
+ registerBlockControls(blockControlsMap: Record<string, SettingsPanelTab[]>): void;
4
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@stripoinc/ui-editor-extensions").Extension;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import type { UnsubscribePage } from '@@/Types/unsubscribe';
2
+ export declare const useUnsubscribeApi: () => {
3
+ getUnsubscribePages: () => Promise<UnsubscribePage[]>;
4
+ };
@@ -0,0 +1,96 @@
1
+ import type { GuidoConfig, TemplateConfig } from '@@/Types/generic';
2
+ interface StoreState {
3
+ guidoConfig: GuidoConfig;
4
+ templateConfig?: TemplateConfig;
5
+ }
6
+ export declare const useConfigStore: import("pinia").StoreDefinition<"config", StoreState, {
7
+ getVariationId: (state: {
8
+ guidoConfig: {
9
+ translationsPath: string;
10
+ htmlCompilerRules?: ({
11
+ type: "replace";
12
+ search: string;
13
+ replacement: string;
14
+ replaceAll?: boolean | undefined;
15
+ id: string;
16
+ description?: string | undefined;
17
+ priority: number;
18
+ } | {
19
+ type: "regex";
20
+ pattern: string;
21
+ replacement: string;
22
+ flags?: string | undefined;
23
+ id: string;
24
+ description?: string | undefined;
25
+ priority: number;
26
+ } | {
27
+ type: "remove";
28
+ targets: string[] | {
29
+ exec: (string: string) => RegExpExecArray | null;
30
+ test: (string: string) => boolean;
31
+ readonly source: string;
32
+ readonly global: boolean;
33
+ readonly ignoreCase: boolean;
34
+ readonly multiline: boolean;
35
+ lastIndex: number;
36
+ compile: (pattern: string, flags?: string) => RegExp;
37
+ readonly flags: string;
38
+ readonly sticky: boolean;
39
+ readonly unicode: boolean;
40
+ readonly dotAll: boolean;
41
+ readonly hasIndices: boolean;
42
+ [Symbol.match]: (string: string) => RegExpMatchArray | null;
43
+ [Symbol.replace]: {
44
+ (string: string, replaceValue: string): string;
45
+ (string: string, replacer: (substring: string, ...args: any[]) => string): string;
46
+ };
47
+ [Symbol.search]: (string: string) => number;
48
+ [Symbol.split]: (string: string, limit?: number) => string[];
49
+ [Symbol.matchAll]: (str: string) => IterableIterator<RegExpMatchArray>;
50
+ }[];
51
+ id: string;
52
+ description?: string | undefined;
53
+ priority: number;
54
+ } | {
55
+ type: "custom";
56
+ processor: (html: string) => string;
57
+ id: string;
58
+ description?: string | undefined;
59
+ priority: number;
60
+ })[] | undefined;
61
+ ignoreDefaultHtmlCompilerRules?: boolean | undefined;
62
+ useHeader?: boolean | undefined;
63
+ emailHeader: {
64
+ senderName: string;
65
+ subject: string;
66
+ };
67
+ partner?: {
68
+ partnerName: string;
69
+ productType: number;
70
+ messageType: number;
71
+ } | undefined;
72
+ extensions?: {
73
+ unsubscribe?: boolean | undefined;
74
+ } | undefined;
75
+ features?: {
76
+ dynamicContent?: boolean | undefined;
77
+ saveAsTemplate?: boolean | undefined;
78
+ versionHistory?: boolean | undefined;
79
+ } | undefined;
80
+ };
81
+ templateConfig?: {
82
+ preselectedDynamicContentList?: {
83
+ value: string;
84
+ text: string;
85
+ fallback?: string | undefined;
86
+ format?: {
87
+ key: string;
88
+ value: string;
89
+ } | undefined;
90
+ }[] | undefined;
91
+ selectedUnsubscribePages?: number[] | undefined;
92
+ variationId?: string | undefined;
93
+ } | undefined;
94
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => string;
95
+ }, {}>;
96
+ export {};
@@ -0,0 +1,256 @@
1
+ import type { UnsubscribePage } from '@@/Types/unsubscribe';
2
+ interface StoreState {
3
+ templates: UnsubscribePage[];
4
+ selectedTemplates: Record<number, number>;
5
+ selectedUnsubscribePages: number[];
6
+ selectedCollectionType: number;
7
+ activeType: number;
8
+ pageSelectionUpdateStatus: boolean;
9
+ pageSelectionDrawerStatus: boolean;
10
+ typeSelectionDrawerStatus: boolean;
11
+ isGlobalUnsubscribeDisabled: boolean;
12
+ isSubscriptionPreferencesCenterDisabled: boolean;
13
+ }
14
+ export declare const useUnsubscribeStore: import("pinia").StoreDefinition<"unsubscribe", StoreState, {
15
+ getSelectedCollection: (state: {
16
+ templates: {
17
+ id: number;
18
+ name: string;
19
+ type: number;
20
+ isVisible: number;
21
+ html: string;
22
+ originalHtml: string;
23
+ css: string;
24
+ thumbnail: string;
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ status: number;
28
+ }[];
29
+ selectedTemplates: Record<number, number>;
30
+ selectedUnsubscribePages: number[];
31
+ selectedCollectionType: number;
32
+ activeType: number;
33
+ pageSelectionUpdateStatus: boolean;
34
+ pageSelectionDrawerStatus: boolean;
35
+ typeSelectionDrawerStatus: boolean;
36
+ isGlobalUnsubscribeDisabled: boolean;
37
+ isSubscriptionPreferencesCenterDisabled: boolean;
38
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => number[];
39
+ getSelectedTemplateByActiveType: (state: {
40
+ templates: {
41
+ id: number;
42
+ name: string;
43
+ type: number;
44
+ isVisible: number;
45
+ html: string;
46
+ originalHtml: string;
47
+ css: string;
48
+ thumbnail: string;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ status: number;
52
+ }[];
53
+ selectedTemplates: Record<number, number>;
54
+ selectedUnsubscribePages: number[];
55
+ selectedCollectionType: number;
56
+ activeType: number;
57
+ pageSelectionUpdateStatus: boolean;
58
+ pageSelectionDrawerStatus: boolean;
59
+ typeSelectionDrawerStatus: boolean;
60
+ isGlobalUnsubscribeDisabled: boolean;
61
+ isSubscriptionPreferencesCenterDisabled: boolean;
62
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => number;
63
+ getTemplatesByActiveType: (state: {
64
+ templates: {
65
+ id: number;
66
+ name: string;
67
+ type: number;
68
+ isVisible: number;
69
+ html: string;
70
+ originalHtml: string;
71
+ css: string;
72
+ thumbnail: string;
73
+ createdAt: string;
74
+ updatedAt: string;
75
+ status: number;
76
+ }[];
77
+ selectedTemplates: Record<number, number>;
78
+ selectedUnsubscribePages: number[];
79
+ selectedCollectionType: number;
80
+ activeType: number;
81
+ pageSelectionUpdateStatus: boolean;
82
+ pageSelectionDrawerStatus: boolean;
83
+ typeSelectionDrawerStatus: boolean;
84
+ isGlobalUnsubscribeDisabled: boolean;
85
+ isSubscriptionPreferencesCenterDisabled: boolean;
86
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => {
87
+ id: number;
88
+ name: string;
89
+ type: number;
90
+ isVisible: number;
91
+ html: string;
92
+ originalHtml: string;
93
+ css: string;
94
+ thumbnail: string;
95
+ createdAt: string;
96
+ updatedAt: string;
97
+ status: number;
98
+ }[];
99
+ getThumbnailByTemplateId: (state: {
100
+ templates: {
101
+ id: number;
102
+ name: string;
103
+ type: number;
104
+ isVisible: number;
105
+ html: string;
106
+ originalHtml: string;
107
+ css: string;
108
+ thumbnail: string;
109
+ createdAt: string;
110
+ updatedAt: string;
111
+ status: number;
112
+ }[];
113
+ selectedTemplates: Record<number, number>;
114
+ selectedUnsubscribePages: number[];
115
+ selectedCollectionType: number;
116
+ activeType: number;
117
+ pageSelectionUpdateStatus: boolean;
118
+ pageSelectionDrawerStatus: boolean;
119
+ typeSelectionDrawerStatus: boolean;
120
+ isGlobalUnsubscribeDisabled: boolean;
121
+ isSubscriptionPreferencesCenterDisabled: boolean;
122
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => (id: number) => string;
123
+ getSelectedUnsubscribePagesByCollection: (state: {
124
+ templates: {
125
+ id: number;
126
+ name: string;
127
+ type: number;
128
+ isVisible: number;
129
+ html: string;
130
+ originalHtml: string;
131
+ css: string;
132
+ thumbnail: string;
133
+ createdAt: string;
134
+ updatedAt: string;
135
+ status: number;
136
+ }[];
137
+ selectedTemplates: Record<number, number>;
138
+ selectedUnsubscribePages: number[];
139
+ selectedCollectionType: number;
140
+ activeType: number;
141
+ pageSelectionUpdateStatus: boolean;
142
+ pageSelectionDrawerStatus: boolean;
143
+ typeSelectionDrawerStatus: boolean;
144
+ isGlobalUnsubscribeDisabled: boolean;
145
+ isSubscriptionPreferencesCenterDisabled: boolean;
146
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => (collectionType: number) => number[];
147
+ isActiveTypeFirstInCollection: (state: {
148
+ templates: {
149
+ id: number;
150
+ name: string;
151
+ type: number;
152
+ isVisible: number;
153
+ html: string;
154
+ originalHtml: string;
155
+ css: string;
156
+ thumbnail: string;
157
+ createdAt: string;
158
+ updatedAt: string;
159
+ status: number;
160
+ }[];
161
+ selectedTemplates: Record<number, number>;
162
+ selectedUnsubscribePages: number[];
163
+ selectedCollectionType: number;
164
+ activeType: number;
165
+ pageSelectionUpdateStatus: boolean;
166
+ pageSelectionDrawerStatus: boolean;
167
+ typeSelectionDrawerStatus: boolean;
168
+ isGlobalUnsubscribeDisabled: boolean;
169
+ isSubscriptionPreferencesCenterDisabled: boolean;
170
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => boolean;
171
+ isActiveTypeLastInCollection: (state: {
172
+ templates: {
173
+ id: number;
174
+ name: string;
175
+ type: number;
176
+ isVisible: number;
177
+ html: string;
178
+ originalHtml: string;
179
+ css: string;
180
+ thumbnail: string;
181
+ createdAt: string;
182
+ updatedAt: string;
183
+ status: number;
184
+ }[];
185
+ selectedTemplates: Record<number, number>;
186
+ selectedUnsubscribePages: number[];
187
+ selectedCollectionType: number;
188
+ activeType: number;
189
+ pageSelectionUpdateStatus: boolean;
190
+ pageSelectionDrawerStatus: boolean;
191
+ typeSelectionDrawerStatus: boolean;
192
+ isGlobalUnsubscribeDisabled: boolean;
193
+ isSubscriptionPreferencesCenterDisabled: boolean;
194
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => boolean;
195
+ hasTemplatesByCollectionType: (state: {
196
+ templates: {
197
+ id: number;
198
+ name: string;
199
+ type: number;
200
+ isVisible: number;
201
+ html: string;
202
+ originalHtml: string;
203
+ css: string;
204
+ thumbnail: string;
205
+ createdAt: string;
206
+ updatedAt: string;
207
+ status: number;
208
+ }[];
209
+ selectedTemplates: Record<number, number>;
210
+ selectedUnsubscribePages: number[];
211
+ selectedCollectionType: number;
212
+ activeType: number;
213
+ pageSelectionUpdateStatus: boolean;
214
+ pageSelectionDrawerStatus: boolean;
215
+ typeSelectionDrawerStatus: boolean;
216
+ isGlobalUnsubscribeDisabled: boolean;
217
+ isSubscriptionPreferencesCenterDisabled: boolean;
218
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => Record<number, boolean>;
219
+ unsubscribePagesStatus: (state: {
220
+ templates: {
221
+ id: number;
222
+ name: string;
223
+ type: number;
224
+ isVisible: number;
225
+ html: string;
226
+ originalHtml: string;
227
+ css: string;
228
+ thumbnail: string;
229
+ createdAt: string;
230
+ updatedAt: string;
231
+ status: number;
232
+ }[];
233
+ selectedTemplates: Record<number, number>;
234
+ selectedUnsubscribePages: number[];
235
+ selectedCollectionType: number;
236
+ activeType: number;
237
+ pageSelectionUpdateStatus: boolean;
238
+ pageSelectionDrawerStatus: boolean;
239
+ typeSelectionDrawerStatus: boolean;
240
+ isGlobalUnsubscribeDisabled: boolean;
241
+ isSubscriptionPreferencesCenterDisabled: boolean;
242
+ } & import("pinia").PiniaCustomStateProperties<StoreState>) => boolean;
243
+ }, {
244
+ $reset(): void;
245
+ fetchTemplates(): Promise<void>;
246
+ setCollection(collectionType: number): void;
247
+ setCollectionWithoutAutoSelection(collectionType: number): void;
248
+ setSelectedTemplate(template: number): void;
249
+ setNextType(): void;
250
+ setPreviousType(): void;
251
+ loadSelectedTemplates(templates: number[]): void;
252
+ getSelectedTemplatesByCollection(type: number): number[];
253
+ addUnsubscribePages(pageIds: number[]): void;
254
+ removeUnsubscribePages(pageIds: number[]): void;
255
+ }>;
256
+ export {};