@useinsider/guido 1.0.2-beta.ab357f5 → 1.0.2-beta.ad1dcd9

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 (162) hide show
  1. package/README.md +1 -1
  2. package/dist/@types/generic.d.ts +8 -0
  3. package/dist/components/Guido.vue.d.ts +2 -2
  4. package/dist/components/Guido.vue.js +2 -2
  5. package/dist/components/Guido.vue2.js +66 -61
  6. package/dist/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts +2 -0
  7. package/dist/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.js +18 -0
  8. package/dist/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue2.js +16 -0
  9. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts +2 -0
  10. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +24 -0
  11. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +64 -0
  12. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts +2 -0
  13. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +18 -0
  14. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +108 -0
  15. package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts +2 -0
  16. package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.js +18 -0
  17. package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue2.js +12 -0
  18. package/dist/components/wrappers/WpDrawer.vue.d.ts +6 -4
  19. package/dist/components/wrappers/WpDrawer.vue.js +6 -4
  20. package/dist/composables/useHtmlValidator.d.ts +2 -1
  21. package/dist/composables/useHtmlValidator.js +114 -95
  22. package/dist/composables/useSave.js +6 -6
  23. package/dist/composables/useStripo.js +35 -29
  24. package/dist/config/compiler/unsubscribeCompilerRules.js +19 -19
  25. package/dist/config/migrator/checkboxMigrator.d.ts +1 -0
  26. package/dist/config/migrator/checkboxMigrator.js +83 -0
  27. package/dist/config/migrator/index.d.ts +1 -0
  28. package/dist/config/migrator/index.js +9 -0
  29. package/dist/config/migrator/unsubscribeMigrator.d.ts +1 -0
  30. package/dist/config/migrator/unsubscribeMigrator.js +112 -0
  31. package/dist/enums/defaults.js +6 -3
  32. package/dist/enums/unsubscribe.d.ts +19 -0
  33. package/dist/enums/unsubscribe.js +39 -6
  34. package/dist/extensions/Blocks/Checkbox/block.d.ts +10 -0
  35. package/dist/extensions/Blocks/Checkbox/block.js +39 -0
  36. package/dist/extensions/Blocks/Checkbox/control.d.ts +22 -0
  37. package/dist/extensions/Blocks/Checkbox/control.js +104 -0
  38. package/dist/extensions/Blocks/Checkbox/extension.d.ts +2 -0
  39. package/dist/extensions/Blocks/Checkbox/extension.js +20 -0
  40. package/dist/extensions/Blocks/Checkbox/settingsPanel.d.ts +4 -0
  41. package/dist/extensions/Blocks/Checkbox/settingsPanel.js +38 -0
  42. package/dist/extensions/Blocks/Checkbox/template.d.ts +6 -0
  43. package/dist/extensions/Blocks/Checkbox/template.js +75 -0
  44. package/dist/extensions/Blocks/Unsubscribe/block.d.ts +30 -0
  45. package/dist/extensions/Blocks/Unsubscribe/block.js +141 -0
  46. package/dist/extensions/Blocks/Unsubscribe/control.d.ts +29 -0
  47. package/dist/extensions/Blocks/Unsubscribe/control.js +180 -0
  48. package/dist/extensions/Blocks/Unsubscribe/elements/preview.d.ts +11 -0
  49. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +54 -0
  50. package/dist/extensions/Blocks/Unsubscribe/extension.d.ts +2 -0
  51. package/dist/extensions/Blocks/Unsubscribe/extension.js +21 -0
  52. package/dist/extensions/Blocks/Unsubscribe/settingsPanel.d.ts +4 -0
  53. package/dist/extensions/Blocks/Unsubscribe/settingsPanel.js +32 -0
  54. package/dist/extensions/Blocks/Unsubscribe/template.d.ts +3 -0
  55. package/dist/extensions/Blocks/Unsubscribe/template.js +28 -0
  56. package/dist/extensions/Blocks/Unsubscribe/utils/constants.d.ts +9 -0
  57. package/dist/extensions/Blocks/Unsubscribe/utils/constants.js +11 -0
  58. package/dist/extensions/Blocks/Unsubscribe/utils/utils.d.ts +7 -0
  59. package/dist/extensions/Blocks/Unsubscribe/utils/utils.js +6 -0
  60. package/dist/extensions/Blocks/_Boilerplate/block.d.ts +10 -0
  61. package/dist/extensions/Blocks/_Boilerplate/control.d.ts +17 -0
  62. package/dist/extensions/Blocks/_Boilerplate/extension.d.ts +2 -0
  63. package/dist/extensions/Blocks/_Boilerplate/settingsPanel.d.ts +4 -0
  64. package/dist/extensions/Blocks/_Boilerplate/template.d.ts +6 -0
  65. package/dist/extensions/DynamicContent/dynamic-content.js +41 -27
  66. package/dist/extensions/DynamicContent/extension.js +18 -6
  67. package/dist/guido.css +1 -1
  68. package/dist/mock/api/unsubscribe.d.ts +2 -0
  69. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/Extension.js +72 -48
  70. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ExtensionBuilder.js +74 -49
  71. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/Block.js +120 -38
  72. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js +5 -11
  73. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js +5 -11
  74. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockName.js +12 -0
  75. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js +5 -11
  76. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js +116 -101
  77. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js +5 -11
  78. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js +5 -11
  79. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js +5 -11
  80. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/Popover.js +12 -0
  81. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js +5 -11
  82. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js +5 -11
  83. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js +5 -11
  84. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementsAttributes.js +23 -43
  85. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/Control.js +21 -17
  86. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelRegistry.js +8 -15
  87. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelTab.js +30 -29
  88. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/modifications/ModificationDescription.js +19 -23
  89. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElement.js +37 -19
  90. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElementTagRegistry.js +2 -15
  91. package/dist/services/unsubscribeApi.d.ts +4 -0
  92. package/dist/services/unsubscribeApi.js +16 -0
  93. package/dist/stores/unsubscribe.d.ts +183 -5
  94. package/dist/stores/unsubscribe.js +125 -6
  95. package/package.json +2 -2
  96. package/dist/_virtual/AddCustomFont.js +0 -4
  97. package/dist/_virtual/AiAssistantValueType.js +0 -4
  98. package/dist/_virtual/BackgroundColorBuiltInControl.js +0 -4
  99. package/dist/_virtual/BackgroundImageBuiltInControl.js +0 -4
  100. package/dist/_virtual/Block.js +0 -4
  101. package/dist/_virtual/BlockAttributes.js +0 -4
  102. package/dist/_virtual/BlockCompositionType.js +0 -4
  103. package/dist/_virtual/BlockPaddingsBuiltInControl.js +0 -4
  104. package/dist/_virtual/BlockRenderer.js +0 -4
  105. package/dist/_virtual/BlockType.js +0 -4
  106. package/dist/_virtual/BlocksPanel.js +0 -4
  107. package/dist/_virtual/BuiltInControl.js +0 -4
  108. package/dist/_virtual/BuiltInControlTypes.js +0 -4
  109. package/dist/_virtual/ButtonBorderBuiltInControl.js +0 -4
  110. package/dist/_virtual/ButtonColorBuiltInControl.js +0 -4
  111. package/dist/_virtual/ButtonFontColorBuiltInControl.js +0 -4
  112. package/dist/_virtual/ButtonInternalIndentsBuiltInControl.js +0 -4
  113. package/dist/_virtual/ButtonTextBuiltInControl.js +0 -4
  114. package/dist/_virtual/ContextAction.js +0 -4
  115. package/dist/_virtual/ContextActionType.js +0 -4
  116. package/dist/_virtual/Control.js +0 -4
  117. package/dist/_virtual/EditorStatePropertyType.js +0 -4
  118. package/dist/_virtual/Extension.js +0 -4
  119. package/dist/_virtual/ExtensionBuilder.js +0 -4
  120. package/dist/_virtual/FontFamilyBuiltInControl.js +0 -4
  121. package/dist/_virtual/LinkColorBuiltInControl.js +0 -4
  122. package/dist/_virtual/ModificationDescription.js +0 -4
  123. package/dist/_virtual/PanelPosition.js +0 -4
  124. package/dist/_virtual/PreviewDeviceMode.js +0 -4
  125. package/dist/_virtual/SettingsPanelRegistry.js +0 -4
  126. package/dist/_virtual/SettingsPanelTab.js +0 -4
  127. package/dist/_virtual/SettingsTab.js +0 -4
  128. package/dist/_virtual/StructureBorderBuiltInControl.js +0 -4
  129. package/dist/_virtual/StructurePaddingsBuiltInControl.js +0 -4
  130. package/dist/_virtual/TextColorBuiltInControl.js +0 -4
  131. package/dist/_virtual/TextLineSpacingBuiltInControl.js +0 -4
  132. package/dist/_virtual/TextSizeBuiltInControl.js +0 -4
  133. package/dist/_virtual/TextStyleBuiltInControl.js +0 -4
  134. package/dist/_virtual/UIElement.js +0 -4
  135. package/dist/_virtual/UIElementTagRegistry.js +0 -4
  136. package/dist/_virtual/UIElementType.js +0 -4
  137. package/dist/_virtual/UIElementsAttributes.js +0 -4
  138. package/dist/_virtual/index.js +0 -5
  139. package/dist/_virtual/index2.js +0 -4
  140. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlockRenderer.js +0 -18
  141. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlocksPanel.js +0 -32
  142. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/ContextAction.js +0 -18
  143. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AddCustomFont.js +0 -8
  144. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockAttributes.js +0 -34
  145. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundColorBuiltInControl.js +0 -43
  146. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundImageBuiltInControl.js +0 -46
  147. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BlockPaddingsBuiltInControl.js +0 -44
  148. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BuiltInControl.js +0 -22
  149. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonBorderBuiltInControl.js +0 -46
  150. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonColorBuiltInControl.js +0 -46
  151. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonFontColorBuiltInControl.js +0 -45
  152. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonInternalIndentsBuiltInControl.js +0 -45
  153. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonTextBuiltInControl.js +0 -45
  154. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/FontFamilyBuiltInControl.js +0 -43
  155. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/LinkColorBuiltInControl.js +0 -45
  156. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructureBorderBuiltInControl.js +0 -46
  157. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructurePaddingsBuiltInControl.js +0 -44
  158. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextColorBuiltInControl.js +0 -43
  159. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextLineSpacingBuiltInControl.js +0 -43
  160. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextSizeBuiltInControl.js +0 -45
  161. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextStyleBuiltInControl.js +0 -43
  162. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/index.js +0 -266
@@ -0,0 +1,112 @@
1
+ var A = Object.defineProperty;
2
+ var T = (l, e, t) => e in l ? A(l, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[e] = t;
3
+ var d = (l, e, t) => T(l, typeof e != "symbol" ? e + "" : e, t);
4
+ import { MERGE_TAGS as p, PAGE_TYPES as g } from "../../enums/unsubscribe.js";
5
+ import { DATA_ATTRIBUTES as y } from "../../extensions/Blocks/Unsubscribe/utils/constants.js";
6
+ import { useUnsubscribeStore as x } from "../../stores/unsubscribe.js";
7
+ class h {
8
+ constructor() {
9
+ d(this, "parser");
10
+ this.parser = new DOMParser();
11
+ }
12
+ async migrate(e) {
13
+ try {
14
+ const t = this.parser.parseFromString(e, "text/html"), s = t.querySelectorAll("td.unsubscribe-block");
15
+ if (!s.length)
16
+ return e;
17
+ const u = x();
18
+ return await u.fetchTemplates(), s.forEach((i) => {
19
+ const a = i.getAttribute("id"), n = this.extractUnsubscribeContent(i), r = this.getCollectionTypeFromMergeTag(n.linkHref), o = u.getSelectedUnsubscribePagesByCollection(r);
20
+ console.debug("[UnsubscribeMigrator]", {
21
+ mergeTag: n.linkHref,
22
+ collectionType: r,
23
+ pageIds: o
24
+ });
25
+ const c = this.buildUnsubscribeBlock(n, r, o), b = this.parser.parseFromString(
26
+ `<table id="tempDoc"><tbody><tr>${c}</tr></tbody></table>`,
27
+ "text/html"
28
+ ).querySelector(".unsubscribe-block-v2");
29
+ b && i.parentNode && (b.setAttribute("id", a || ""), i.parentNode.replaceChild(b, i));
30
+ }), t.documentElement.outerHTML;
31
+ } catch (t) {
32
+ return console.error("UnsubscribeMigrator failed:", t), e;
33
+ }
34
+ }
35
+ extractUnsubscribeContent(e) {
36
+ var m;
37
+ const t = e.querySelector("p");
38
+ if (!t)
39
+ return {
40
+ textBefore: "You can ",
41
+ linkText: "unsubscribe",
42
+ linkHref: "{{ins-unsubscribe-link}}",
43
+ linkStyle: "",
44
+ textAfter: " from our emails, if you need to.",
45
+ isBold: !1,
46
+ isItalic: !1,
47
+ align: "center",
48
+ paragraphStyle: ""
49
+ };
50
+ const s = e.getAttribute("align") || t.getAttribute("align") || "center", u = t.getAttribute("style") || "", i = t.querySelector("a.unsubscribe-link") || t.querySelector('a[href*="unsubscribe"]');
51
+ if (!i)
52
+ return {
53
+ textBefore: "You can ",
54
+ linkText: "unsubscribe",
55
+ linkHref: "{{ins-unsubscribe-link}}",
56
+ linkStyle: "",
57
+ textAfter: " from our emails, if you need to.",
58
+ isBold: !1,
59
+ isItalic: !1,
60
+ align: s,
61
+ paragraphStyle: u
62
+ };
63
+ const a = ((m = i.textContent) == null ? void 0 : m.trim()) || "unsubscribe", n = i.getAttribute("href") || "{{ins-unsubscribe-link}}", r = i.getAttribute("style") || "", o = t.textContent || "", c = o.indexOf(a), f = c >= 0 ? o.substring(0, c).trim() : "You can ", b = c >= 0 ? o.substring(c + a.length).trim() : " from our emails, if you need to.", k = !!t.querySelector("b, strong"), S = !!t.querySelector("i, em");
64
+ return {
65
+ textBefore: f,
66
+ linkText: a,
67
+ linkHref: this.normalizeUnsubscribeHref(n),
68
+ linkStyle: r,
69
+ textAfter: b,
70
+ isBold: k,
71
+ isItalic: S,
72
+ align: s,
73
+ paragraphStyle: u
74
+ };
75
+ }
76
+ buildUnsubscribeBlock(e, t, s) {
77
+ const u = e.linkStyle ? ` style="${e.linkStyle}"` : "", a = `<a ${`href="${e.linkHref}" class="unsubscribe-link" target="_blank" data-unsubscribe-link="true"`}${u}>${e.linkText}</a>`, n = [];
78
+ e.textBefore && n.push(e.textBefore), n.push(a), e.textAfter && n.push(e.textAfter);
79
+ let r = n.join(" ");
80
+ e.isBold && e.isItalic ? r = `<strong path="1,0"><em path="1,0,0">${r}</em></strong>` : e.isBold ? r = `<strong path="1,0">${r}</strong>` : e.isItalic && (r = `<em path="1,0">${r}</em>`);
81
+ const o = e.align ? ` align="${e.align}"` : "", c = e.paragraphStyle ? ` style="${e.paragraphStyle}"` : "", f = s.length > 0 ? ` ${y.PAGE_LIST}="${s.join(",")}"` : "", b = ` ${y.PAGE_TYPE}="${t}"`;
82
+ return `
83
+ <td
84
+ data-migration="true"
85
+ esd-extension-block-id="unsubscribe-block"
86
+ class="esd-block-text unsubscribe-block-v2 esd-block-unsubscribe esd-unsubscribe-block esd-extension-block"
87
+ ${o}${b}${f}
88
+ >
89
+ <p path="1"${c}>
90
+ ${r}
91
+ </p>
92
+ </td>
93
+ `;
94
+ }
95
+ getCollectionTypeFromMergeTag(e) {
96
+ return e === p[g.SUBSCRIPTION_PREFERENCE_CENTER] ? g.SUBSCRIPTION_PREFERENCE_CENTER : e === p[g.GLOBAL_UNSUBSCRIBE] ? g.GLOBAL_UNSUBSCRIBE : g.GLOBAL_UNSUBSCRIBE;
97
+ }
98
+ normalizeUnsubscribeHref(e) {
99
+ if (Object.values(p).includes(e))
100
+ return e;
101
+ const s = e.match(/{{ins-(?:global-)?(?:preferences-)?unsubscribe-link}}/);
102
+ return s ? s[0] : e.includes("unsubscribe") || e.includes("unsub") ? (console.warn(
103
+ `[UnsubscribeMigrator] Unrecognized unsubscribe href format: "${e}". Defaulting to {{ins-unsubscribe-link}}`
104
+ ), "{{ins-unsubscribe-link}}") : e;
105
+ }
106
+ }
107
+ async function $(l) {
108
+ return new h().migrate(l);
109
+ }
110
+ export {
111
+ $ as migrateUnsubscribe
112
+ };
@@ -4,6 +4,9 @@ const a = {
4
4
  senderName: "",
5
5
  subject: ""
6
6
  },
7
+ extensions: {
8
+ unsubscribe: !0
9
+ },
7
10
  features: {
8
11
  dynamicContent: !0,
9
12
  saveAsTemplate: !0,
@@ -13,7 +16,7 @@ const a = {
13
16
  }, t = {
14
17
  promotional: 1,
15
18
  transactional: 2
16
- }, e = "email", o = "Guido User", n = t.promotional, i = 2, s = {
19
+ }, e = "email", o = "Guido User", n = t.promotional, s = 2, i = {
17
20
  email: 60,
18
21
  architect: 49
19
22
  }, u = [
@@ -53,8 +56,8 @@ export {
53
56
  n as DefaultMessageType,
54
57
  e as DefaultProductType,
55
58
  o as DefaultUsername,
56
- i as EditorType,
57
- s as ProductIds,
59
+ s as EditorType,
60
+ i as ProductIds,
58
61
  u as TEST_PARTNER_LIST,
59
62
  t as TemplateTypes
60
63
  };
@@ -13,3 +13,22 @@ export declare const URLS: {
13
13
  PREFERENCES_URL: string;
14
14
  };
15
15
  export declare const INSIDER_ID = "iid";
16
+ export declare const ACADEMY_LINK = "https://academy.useinsider.com/docs/global-unsubscribe-preference-center";
17
+ export declare const UNSUBSCRIBE_PAGES_LINK = "/email/unsubscribe-pages";
18
+ export declare const PAGE_TYPES: {
19
+ GLOBAL_UNSUBSCRIBE: number;
20
+ GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE: number;
21
+ SUBSCRIPTION_PREFERENCE_CENTER: number;
22
+ SUBSCRIPTION_PREFERENCE_CONFIRMATION: number;
23
+ RESUBSCRIBE: number;
24
+ };
25
+ export declare const TYPE_COLLECTIONS: {
26
+ [x: number]: number[];
27
+ };
28
+ export declare const TYPE_TRANSLATIONS: {
29
+ [x: number]: string;
30
+ };
31
+ export declare const MERGE_TAGS: {
32
+ [x: number]: string;
33
+ default: string;
34
+ };
@@ -1,17 +1,50 @@
1
- const E = {
1
+ import { useTranslations as e } from "../composables/useTranslations.js";
2
+ const s = e(), n = {
2
3
  UNSUBSCRIBE_LINK_TYPE: 1,
3
4
  PREFERENCES_LINK_TYPE: 3
4
- }, s = {
5
+ }, S = {
5
6
  UNSUBSCRIBE_LINK_REGEX: /{{ins-unsubscribe-link}}/g,
6
7
  DATA_OGSB_BUTTON_CSS_REGEX: "\\[data-ogsb\\]\\s*\\.es-button\\.es-button-[0-9]+\\s*\\{(?:[^\\}]*)\\}",
7
8
  GLOBAL_UNSUBSCRIBE_LINK_REGEX: /{{ins-global-unsubscribe-link}}/g,
8
9
  PREFERENCES_UNSUBSCRIBE_LINK_REGEX: /{{ins-preferences-unsubscribe-link}}/g
9
- }, _ = {
10
+ }, N = {
10
11
  UNSUBSCRIBE_URL: "https://mail.useinsider.com/user/v1/unsub",
11
12
  PREFERENCES_URL: "https://mail.useinsider.com/user/v1/prefs"
13
+ }, _ = "https://academy.useinsider.com/docs/global-unsubscribe-preference-center", I = "/email/unsubscribe-pages", E = {
14
+ GLOBAL_UNSUBSCRIBE: 1,
15
+ GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE: 2,
16
+ SUBSCRIPTION_PREFERENCE_CENTER: 3,
17
+ SUBSCRIPTION_PREFERENCE_CONFIRMATION: 4,
18
+ RESUBSCRIBE: 5
19
+ }, r = {
20
+ [E.GLOBAL_UNSUBSCRIBE]: [
21
+ E.GLOBAL_UNSUBSCRIBE,
22
+ E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE,
23
+ E.RESUBSCRIBE
24
+ ],
25
+ [E.SUBSCRIPTION_PREFERENCE_CENTER]: [
26
+ E.SUBSCRIPTION_PREFERENCE_CENTER,
27
+ E.SUBSCRIPTION_PREFERENCE_CONFIRMATION
28
+ ]
29
+ }, i = {
30
+ [E.GLOBAL_UNSUBSCRIBE]: s("unsubscription-preference.type-global-unsubscribe"),
31
+ [E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: s("unsubscription-preference.type-global-unsubscription-confirmation"),
32
+ [E.RESUBSCRIBE]: s("unsubscription-preference.type-resubscribe"),
33
+ [E.SUBSCRIPTION_PREFERENCE_CENTER]: s("unsubscription-preference.type-subscription-preferences-center"),
34
+ [E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: s("unsubscription-preference.type-subscription-preferences-confirmation")
35
+ }, B = {
36
+ default: "{{ins-unsubscribe-link}}",
37
+ [E.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
38
+ [E.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
12
39
  };
13
40
  export {
14
- s as LINK_REGEXES,
15
- E as LINK_TYPES,
16
- _ as URLS
41
+ _ as ACADEMY_LINK,
42
+ S as LINK_REGEXES,
43
+ n as LINK_TYPES,
44
+ B as MERGE_TAGS,
45
+ E as PAGE_TYPES,
46
+ r as TYPE_COLLECTIONS,
47
+ i as TYPE_TRANSLATIONS,
48
+ I as UNSUBSCRIBE_PAGES_LINK,
49
+ N as URLS
17
50
  };
@@ -0,0 +1,10 @@
1
+ import { Block, BlockCompositionType } from '@stripoinc/ui-editor-extensions';
2
+ export declare const CHECKBOX_BLOCK_ID = "checkbox-block";
3
+ export declare class CheckboxBlock extends Block {
4
+ getId(): string;
5
+ getIcon(): string;
6
+ getBlockCompositionType(): BlockCompositionType;
7
+ getName(): string;
8
+ getDescription(): string;
9
+ getTemplate(): string;
10
+ }
@@ -0,0 +1,39 @@
1
+ import { Block as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/blocks/Block.js";
2
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js";
3
+ import { BlockCompositionType as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js";
4
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockName.js";
5
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js";
6
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js";
7
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js";
8
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js";
9
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js";
10
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/Popover.js";
11
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js";
12
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js";
13
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js";
14
+ import { getDefaultTemplate as r } from "./template.js";
15
+ const e = "checkbox-block";
16
+ class x extends t {
17
+ getId() {
18
+ return e;
19
+ }
20
+ getIcon() {
21
+ return "check-circle";
22
+ }
23
+ getBlockCompositionType() {
24
+ return o.BLOCK;
25
+ }
26
+ getName() {
27
+ return this.api.translate("Checkbox block");
28
+ }
29
+ getDescription() {
30
+ return this.api.translate("Checkbox block description");
31
+ }
32
+ getTemplate() {
33
+ return r();
34
+ }
35
+ }
36
+ export {
37
+ e as CHECKBOX_BLOCK_ID,
38
+ x as CheckboxBlock
39
+ };
@@ -0,0 +1,22 @@
1
+ import { Control, ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ export declare const CHECKBOX_CONTROL_BLOCK_ID = "ui-elements-checkbox";
3
+ interface UnsubOption {
4
+ name: string;
5
+ sendGridId: string;
6
+ }
7
+ export declare class CheckboxControl extends Control {
8
+ private currentNode?;
9
+ private selectedUnsubGroup?;
10
+ unsubList: UnsubOption[];
11
+ getId(): string;
12
+ _setFormValues(): void;
13
+ _getLabel(text: string, name?: string): string;
14
+ _getSelectItem(text: string, value: string): string;
15
+ _getSelect(): string;
16
+ getTemplate(): string;
17
+ _onSelectChange(value: string | number): void;
18
+ _listenToFormUpdates(): void;
19
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
20
+ onRender(): Promise<void>;
21
+ }
22
+ export {};
@@ -0,0 +1,104 @@
1
+ var E = Object.defineProperty;
2
+ var c = (o, s, t) => s in o ? E(o, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[s] = t;
3
+ var a = (o, s, t) => c(o, typeof s != "symbol" ? s + "" : s, t);
4
+ import { useHttp as p } from "../../../composables/useHttp.js";
5
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js";
6
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js";
7
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockName.js";
8
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js";
9
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js";
10
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js";
11
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js";
12
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js";
13
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/Popover.js";
14
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js";
15
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js";
16
+ import { UEAttr as e } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementsAttributes.js";
17
+ import { UIElementType as r } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js";
18
+ import { Control as m } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/controls/Control.js";
19
+ import { ModificationDescription as l } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/modifications/ModificationDescription.js";
20
+ const d = "ui-elements-checkbox", n = "select", { get: L } = p();
21
+ class K extends m {
22
+ constructor() {
23
+ super(...arguments);
24
+ a(this, "currentNode");
25
+ a(this, "selectedUnsubGroup");
26
+ a(this, "unsubList", []);
27
+ }
28
+ getId() {
29
+ return d;
30
+ }
31
+ _setFormValues() {
32
+ this.api.updateValues({
33
+ [n]: ""
34
+ });
35
+ }
36
+ _getLabel(t, i = `${Math.random()}`) {
37
+ return `
38
+ <${r.LABEL}
39
+ ${e.LABEL.text}="${t}"
40
+ ${e.LABEL.name}="${i}">
41
+ </${r.LABEL}>
42
+ `;
43
+ }
44
+ _getSelectItem(t, i) {
45
+ return `
46
+ <${r.SELECT_ITEM}
47
+ ${e.SELECT_ITEM.text}="${t}"
48
+ ${e.SELECT_ITEM.value}="${i}">
49
+ </${r.SELECT_ITEM}>`;
50
+ }
51
+ _getSelect() {
52
+ return this.unsubList.map((t) => this._getSelectItem(t.name, t.sendGridId)).join("");
53
+ }
54
+ getTemplate() {
55
+ return `
56
+ <div class="checkbox-controls-container">
57
+ <div class="checkbox-select-container container two-columns stretch">
58
+ <${r.LABEL}
59
+ ${e.LABEL.text}="${this.api.translate("Unsubscribe Group")}"
60
+ ${e.LABEL.name}="${Math.random()}">
61
+ </${r.LABEL}>
62
+
63
+ <${r.SELECTPICKER}
64
+ ${e.SELECTPICKER.name}="${n}"
65
+ ${e.SELECTPICKER.placeholder}="${this.api.translate("Select Unsubscribe Group")}">
66
+ ${this._getSelect()}
67
+ </${r.SELECTPICKER}>
68
+ </div>
69
+ </div>
70
+ `;
71
+ }
72
+ _onSelectChange(t) {
73
+ this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute("id", t.toString()).apply(new l(`Updated text to ${t}`));
74
+ }
75
+ _listenToFormUpdates() {
76
+ this.api.onValueChanged(n, (t) => this._onSelectChange(t));
77
+ }
78
+ onTemplateNodeUpdated(t) {
79
+ if (this.currentNode = t, "getAttribute" in t) {
80
+ const i = Number(t.getAttribute("id"));
81
+ i && (this.selectedUnsubGroup = i, this.api.updateValues({
82
+ [n]: this.selectedUnsubGroup
83
+ }));
84
+ }
85
+ }
86
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
87
+ async onRender() {
88
+ const t = await L(
89
+ "/unsubscribe-groups/unsubscribe-list"
90
+ ), i = t.data.map((u) => ({
91
+ [e.SELECT_ITEM.text]: u.name,
92
+ [e.SELECT_ITEM.value]: u.sendGridId
93
+ }));
94
+ this.unsubList = t.data, this.api.setUIEAttribute(
95
+ n,
96
+ e.SELECTPICKER.items,
97
+ i
98
+ ), this._setFormValues(), this._listenToFormUpdates();
99
+ }
100
+ }
101
+ export {
102
+ d as CHECKBOX_CONTROL_BLOCK_ID,
103
+ K as CheckboxControl
104
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@stripoinc/ui-editor-extensions").Extension;
2
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js";
2
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js";
3
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockName.js";
4
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js";
5
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js";
6
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js";
7
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js";
8
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js";
9
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/Popover.js";
10
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js";
11
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js";
12
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js";
13
+ import { ExtensionBuilder as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/ExtensionBuilder.js";
14
+ import { CheckboxBlock as t } from "./block.js";
15
+ import { CheckboxControl as r } from "./control.js";
16
+ import { CheckboxBlockSettings as i } from "./settingsPanel.js";
17
+ const g = new o().addBlock(t).withSettingsPanelRegistry(i).addControl(r).build();
18
+ export {
19
+ g as default
20
+ };
@@ -0,0 +1,4 @@
1
+ import { SettingsPanelRegistry, SettingsPanelTab } from '@stripoinc/ui-editor-extensions';
2
+ export declare class CheckboxBlockSettings extends SettingsPanelRegistry {
3
+ registerBlockControls(blockControlsMap: Record<string, SettingsPanelTab[]>): void;
4
+ }
@@ -0,0 +1,38 @@
1
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js";
2
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js";
3
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockName.js";
4
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js";
5
+ import { ContainerControls as i, TextControls as m } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js";
6
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js";
7
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js";
8
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js";
9
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/Popover.js";
10
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js";
11
+ import { SettingsTab as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js";
12
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js";
13
+ import { SettingsPanelRegistry as e } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelRegistry.js";
14
+ import { SettingsPanelTab as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelTab.js";
15
+ import { CHECKBOX_BLOCK_ID as p } from "./block.js";
16
+ import { CHECKBOX_CONTROL_BLOCK_ID as C } from "./control.js";
17
+ class x extends e {
18
+ registerBlockControls(r) {
19
+ r[p] = [
20
+ new t(
21
+ o.SETTINGS,
22
+ [
23
+ C,
24
+ i.EXTERNAL_INDENTS
25
+ ]
26
+ ),
27
+ new t(
28
+ o.STYLES,
29
+ [
30
+ m.TEXT_BLOCK_BACKGROUND_COLOR
31
+ ]
32
+ )
33
+ ];
34
+ }
35
+ }
36
+ export {
37
+ x as CheckboxBlockSettings
38
+ };
@@ -0,0 +1,6 @@
1
+ declare const migrationTemplate = "\n <td \n align=\"left\" \n esd-extension-block-id=\"checkbox-block\" \n class=\"checkbox-block-v2 esd-block-checkbox esd-checkbox-block esd-extension-block es-p20\"\n >\n <table cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" width=\"100%\">\n <tbody>\n <tr>\n <td align=\"left\" width=\"39\" style=\"vertical-align: top\">\n <input type=\"checkbox\">\n </td>\n <td align=\"left\" width=\"816\" style=\"vertical-align: top\">\n <table cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" width=\"100%\">\n <tbody>\n <tr>\n {-{-TITLE-}-}\n </tr>\n <tr>\n {-{-DESCRIPTION-}-}\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n";
2
+ /**
3
+ * @returns The template for the default checkbox block
4
+ */
5
+ export declare function getDefaultTemplate(): string;
6
+ export default migrationTemplate;
@@ -0,0 +1,75 @@
1
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js";
2
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js";
3
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockName.js";
4
+ import { BlockType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js";
5
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js";
6
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js";
7
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js";
8
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js";
9
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/Popover.js";
10
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js";
11
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js";
12
+ import "../../../node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js";
13
+ const e = {
14
+ TITLE: "Unsubscribe From All Email Lists",
15
+ DESCRIPTION: "You will still receive important transactional and billing-related emails."
16
+ }, l = `
17
+ <td align="left" class="checkbox-block-v2 esd-block-checkbox es-p20">
18
+ <table cellpadding="0" cellspacing="0" role="presentation" width="100%">
19
+ <tbody>
20
+ <tr>
21
+ <td align="left" width="39" style="vertical-align: top;">
22
+ <input type="checkbox">
23
+ </td>
24
+ <td align="left" width="816" style="vertical-align: top;">
25
+ <table cellpadding="0" cellspacing="0" role="presentation" width="100%">
26
+ <tbody>
27
+ <${t.BLOCK_TEXT}>
28
+ {-{-TITLE-}-}
29
+ </${t.BLOCK_TEXT}>
30
+ <${t.BLOCK_TEXT}>
31
+ {-{-DESCRIPTION-}-}
32
+ </${t.BLOCK_TEXT}>
33
+ </tbody>
34
+ </table>
35
+ </td>
36
+ </tr>
37
+ </tbody>
38
+ </table>
39
+ </td>
40
+ `, m = `
41
+ <td
42
+ align="left"
43
+ esd-extension-block-id="checkbox-block"
44
+ class="checkbox-block-v2 esd-block-checkbox esd-checkbox-block esd-extension-block es-p20"
45
+ >
46
+ <table cellpadding="0" cellspacing="0" role="presentation" width="100%">
47
+ <tbody>
48
+ <tr>
49
+ <td align="left" width="39" style="vertical-align: top">
50
+ <input type="checkbox">
51
+ </td>
52
+ <td align="left" width="816" style="vertical-align: top">
53
+ <table cellpadding="0" cellspacing="0" role="presentation" width="100%">
54
+ <tbody>
55
+ <tr>
56
+ {-{-TITLE-}-}
57
+ </tr>
58
+ <tr>
59
+ {-{-DESCRIPTION-}-}
60
+ </tr>
61
+ </tbody>
62
+ </table>
63
+ </td>
64
+ </tr>
65
+ </tbody>
66
+ </table>
67
+ </td>
68
+ `;
69
+ function h() {
70
+ return l.replace("{-{-TITLE-}-}", `<p path="1">${e.TITLE}</p>`).replace("{-{-DESCRIPTION-}-}", `<p path="1">${e.DESCRIPTION}</p>`);
71
+ }
72
+ export {
73
+ m as default,
74
+ h as getDefaultTemplate
75
+ };
@@ -0,0 +1,30 @@
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
+ getId(): string;
9
+ getIcon(): string;
10
+ getBlockCompositionType(): BlockCompositionType;
11
+ getName(): string;
12
+ getDescription(): string;
13
+ getTemplate(): string;
14
+ onCreated(node: ImmutableHtmlNode): void;
15
+ onSelect(node: ImmutableHtmlNode): undefined;
16
+ onDelete(node: ImmutableHtmlNode): undefined;
17
+ private _setupSelectEventListener;
18
+ private _removeSelectEventListener;
19
+ private _setupCancelEventListener;
20
+ private _removeCancelEventListener;
21
+ private _handleCancel;
22
+ private _removeEventListeners;
23
+ private _updateBlock;
24
+ private _getMergeTag;
25
+ private _openDrawer;
26
+ private _checkExistingBlocks;
27
+ private _loadBlockState;
28
+ private _resetStoreState;
29
+ private _removeBlockTemplatesFromStore;
30
+ }