@retailrocketgroup/retailrocket-create.reactivation-vue-email-template-render 3.0.381747 → 5.0.384530

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 (38) hide show
  1. package/.turbo/turbo-build.log +25 -0
  2. package/dist/assets/index.css +1 -0
  3. package/dist/assets/index.js +379 -0
  4. package/dist/assets/index.js.map +1 -0
  5. package/dist/createReactivationEmailTemplateApp.d.ts +0 -0
  6. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/reactivationComponentSectionItemFactory.d.ts +4 -0
  7. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/reactivationEmailComponentFactory.d.ts +4 -0
  8. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/reactivationComponentLibraryFactory.d.ts +4 -0
  9. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/reactivationSectionFactory.d.ts +4 -0
  10. package/dist/implementation/DataSources/ListDataExpressionSource/reactivationEvaluateListExpressionDataSourceFactory.d.ts +8 -0
  11. package/dist/implementation/DataSources/NumberExpressionDataSource/reactivationEvaluateNumberExpressionDataSourceFactory.d.ts +2 -0
  12. package/dist/implementation/DataSources/StringExpressionDataSource/reactivationEvaluateStringExpressionDataSource.d.ts +9 -0
  13. package/dist/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/ReactivationProductShelfDataSourceExpressionBuilderModal/reactivationProductShelfDataSourceExpressionBuilderModalDepsFactory.d.ts +11 -0
  14. package/dist/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/reactivationProductShelfDataSourceExpressionBuilderDepsFactory.d.ts +11 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.html +36 -0
  17. package/env.d.ts +1 -0
  18. package/index.html +1 -2
  19. package/package.json +1 -1
  20. package/src/createReactivationEmailTemplateApp.ts +301 -0
  21. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/reactivationComponentSectionItemFactory.ts +30 -0
  22. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/reactivationEmailComponentFactory.ts +26 -0
  23. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/reactivationComponentLibraryFactory.ts +29 -0
  24. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/reactivationSectionFactory.ts +34 -0
  25. package/src/implementation/DataSources/ListDataExpressionSource/reactivationEvaluateListExpressionDataSourceFactory.ts +106 -0
  26. package/src/implementation/DataSources/NumberExpressionDataSource/reactivationEvaluateNumberExpressionDataSourceFactory.ts +10 -0
  27. package/src/implementation/DataSources/StringExpressionDataSource/reactivationEvaluateStringExpressionDataSource.ts +56 -0
  28. package/src/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/ReactivationProductShelfDataSourceExpressionBuilderModal/reactivationProductShelfDataSourceExpressionBuilderModalDepsFactory.ts +127 -0
  29. package/src/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/reactivationProductShelfDataSourceExpressionBuilderDepsFactory.ts +35 -0
  30. package/src/index.ts +0 -0
  31. package/tsconfig.app.json +19 -0
  32. package/tsconfig.json +14 -0
  33. package/tsconfig.node.json +11 -0
  34. package/tsconfig.test.json +11 -0
  35. package/vite.config.ts +36 -0
  36. package/assets/main.css +0 -1
  37. package/assets/main.js +0 -185
  38. package/favicon.ico +0 -0
File without changes
@@ -0,0 +1,4 @@
1
+ import { ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
2
+ import { ComponentLibrarySectionItem } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
3
+ import { CustomComponentSectionItemType } from '@easy-wizzy/core';
4
+ export declare const reactivationComponentSectionItemFactory: (componentLibrarySectionItem: ComponentLibrarySectionItem) => CustomComponentSectionItemType<ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { EmailComponentType } from '@easy-wizzy/core';
2
+ import { ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
3
+ import { Component } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionitemmodalwindow/main';
4
+ export declare const reactivationEmailComponentFactory: (component: Component) => EmailComponentType<ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
2
+ import { ComponentLibrarySection } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
3
+ import { CustomComponentLibraryType } from '@easy-wizzy/core';
4
+ export declare const reactivationComponentLibraryFactory: (componentLibrary: Array<ComponentLibrarySection>) => CustomComponentLibraryType<ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
2
+ import { ComponentLibrarySection } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
3
+ import { CustomComponentSectionType } from '@easy-wizzy/core';
4
+ export declare const reactivationSectionFactory: (section: ComponentLibrarySection) => CustomComponentSectionType<ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource, ReactivationStringExpressionDataSource>;
@@ -0,0 +1,8 @@
1
+ import { ReactivationListExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
2
+ import { ListExpressionDataSourceBffClient } from '@easy-wizzy/common-app';
3
+ import { ListExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
4
+ export declare const reactivationEvaluateListExpressionDataSourceFactory: (arg: {
5
+ partnerId: string;
6
+ listExpressionDataSourceBffClient: ListExpressionDataSourceBffClient;
7
+ customerStockId: string | undefined;
8
+ }) => ListExpressionDataSourceEvaluatorDelegate<ReactivationListExpressionDataSource>;
@@ -0,0 +1,2 @@
1
+ import { NumberExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
2
+ export declare const reactivationEvaluateNumberExpressionDataSourceFactory: <TNumberExpressionDataSource>() => NumberExpressionDataSourceEvaluatorDelegate<TNumberExpressionDataSource>;
@@ -0,0 +1,9 @@
1
+ import { ReactivationStringExpressionDataSource, ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
2
+ import { StringExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
3
+ import { ContactCustomData, NextCouponFromBatchType } from '@easy-wizzy/retailrocket-common';
4
+ import { ProductImageUrlBuilderExpressionEvaluatorDelegate } from '@easy-wizzy/common-app';
5
+ export declare const reactivationStringExpressionDataSourceEvaluatorFactory: (arg: {
6
+ productImageUrlBuilderExpressionEvaluator: ProductImageUrlBuilderExpressionEvaluatorDelegate<ReactivationListExpressionDataSource, ReactivationNumberExpressionDataSource>;
7
+ contactCustomData: ContactCustomData;
8
+ nextCouponFromBatch: NextCouponFromBatchType;
9
+ }) => StringExpressionDataSourceEvaluatorDelegate<ReactivationStringExpressionDataSource>;
@@ -0,0 +1,11 @@
1
+ import { LocaleKey } from '@easy-wizzy/core';
2
+ import { ReactivationProductShelfDataSourceExpressionBuilderModalDeps } from '@easy-wizzy/retailrocket-reactivation';
3
+ import { ProductShelfBuilderModalWindowBffClient, ProductPickerModalWindowBffClient, ProductCategoryPickerModalWindowBffClient } from '@easy-wizzy/common-app';
4
+ export declare const reactivationProductShelfDataSourceExpressionBuilderModalDepsFactory: (arg: {
5
+ localeKey: LocaleKey;
6
+ partnerId: string;
7
+ customerStockId: string | undefined;
8
+ productShelfBuilderModalWindowBffClient: ProductShelfBuilderModalWindowBffClient;
9
+ productCategoryPickerModalWindowBffClient: ProductCategoryPickerModalWindowBffClient;
10
+ productPickerModalWindowBffClient: ProductPickerModalWindowBffClient;
11
+ }) => ReactivationProductShelfDataSourceExpressionBuilderModalDeps;
@@ -0,0 +1,11 @@
1
+ import { LocaleKey } from '@easy-wizzy/core';
2
+ import { ReactivationProductShelfDataSourceExpressionBuilderDeps } from '@easy-wizzy/retailrocket-reactivation';
3
+ import { ProductShelfBuilderModalWindowBffClient, ProductPickerModalWindowBffClient, ProductCategoryPickerModalWindowBffClient } from '@easy-wizzy/common-app';
4
+ export declare const reactivationProductShelfDataSourceExpressionBuilderDepsFactory: (arg: {
5
+ localeKey: LocaleKey;
6
+ partnerId: string;
7
+ customerStockId: string | undefined;
8
+ productShelfBuilderModalWindowBffClient: ProductShelfBuilderModalWindowBffClient;
9
+ productCategoryPickerModalWindowBffClient: ProductCategoryPickerModalWindowBffClient;
10
+ productPickerModalWindowBffClient: ProductPickerModalWindowBffClient;
11
+ }) => ReactivationProductShelfDataSourceExpressionBuilderDeps;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <link rel="icon" href="/favicon.ico">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link
10
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap"
11
+ rel="stylesheet"
12
+ />
13
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=Lato:wght@100;300;400;700;900&family=Roboto:wght@400;700&display=swap" rel="stylesheet">
14
+ <title>Vite App</title>
15
+ <script type="module" crossorigin src="/assets/index.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index.css">
17
+ </head>
18
+ <body>
19
+ <div
20
+ id="app"
21
+ data-partner-id="5df72bdc97a52507605e4cc1"
22
+ data-wysiwyg-template-editor-bff-base-url="https://my.retailrocket.ru/5db801c197a52821e86b0d45/TransactionalEmailCampaign/6757225a5520d1ae575e7f0e/CampaignWizard/Step2/WysiwygTemplateEditorBff"
23
+ data-wysiwyg-bff-proxy-base-url="https://k8s-b1.retailrocket.ru/"
24
+ data-anti-forgery-header-token-name="data-anti-forgery-header-token-name"
25
+ data-anti-forgery-header-token-value="data-anti-forgery-header-token-value"
26
+ data-anti-forgery-form-token-name="data-anti-forgery-form-token-name"
27
+ data-anti-forgery-form-token-value="data-anti-forgery-form-token-value"
28
+ data-initial-reactivation-template=""
29
+ data-reactivation-favorites-templates="[]"
30
+ data-create-email-template-submit-url="data-create-email-template-submit-url"
31
+ data-common-favorites-templates="[]"
32
+ data-exit-link="#"
33
+ data-locale-key="en"
34
+ ></div>
35
+ </body>
36
+ </html>
package/env.d.ts ADDED
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
package/index.html CHANGED
@@ -12,8 +12,6 @@
12
12
  />
13
13
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=Lato:wght@100;300;400;700;900&family=Roboto:wght@400;700&display=swap" rel="stylesheet">
14
14
  <title>Vite App</title>
15
- <script type="module" crossorigin src="/assets/main.js"></script>
16
- <link rel="stylesheet" crossorigin href="/assets/main.css">
17
15
  </head>
18
16
  <body>
19
17
  <div
@@ -32,5 +30,6 @@
32
30
  data-exit-link="#"
33
31
  data-locale-key="en"
34
32
  ></div>
33
+ <script type="module" src="/src/createReactivationEmailTemplateApp.ts"></script>
35
34
  </body>
36
35
  </html>
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@retailrocketgroup/retailrocket-create.reactivation-vue-email-template-render",
3
- "version": "3.0.381747",
3
+ "version": "5.0.384530",
4
4
  "private": false
5
5
  }
@@ -0,0 +1,301 @@
1
+ import 'bootstrap';
2
+ import '@easy-wizzy/core/index.css';
3
+
4
+ import { createApp } from 'vue';
5
+ import { createVuetify } from 'vuetify';
6
+ import { ClickOutside } from 'vuetify/directives';
7
+
8
+ import { CreateEmailTemplateApp } from '@easy-wizzy/core';
9
+ import { createSimpleDataForm, matcherFactory } from '@easy-wizzy/core';
10
+ import type { GeneralStringExpressionDataSource } from '@easy-wizzy/retailrocket-common';
11
+ import { expressionEvaluatorFactory } from '@easy-wizzy/core';
12
+ import { listExpressionEvaluatorFactory } from '@easy-wizzy/core';
13
+ import { numberExpressionEvaluatorDelegate } from '@easy-wizzy/core';
14
+ import { stringExpressionEvaluatorFactory } from '@easy-wizzy/core';
15
+ import { dataStructBuilderExpressionEvaluatorFactory } from '@easy-wizzy/core';
16
+
17
+ import type { EmailTemplateType } from '@easy-wizzy/core';
18
+ import type { EmailTemplatePreviewTileComponent } from '@easy-wizzy/core';
19
+ import type { LocaleKey } from '@easy-wizzy/core';
20
+ import type { StringExpressionEvaluatorDelegate } from '@easy-wizzy/core';
21
+
22
+ import { createEmailTemplateAppDepsFactory } from '@easy-wizzy/common-app';
23
+ import { emailTemplatePreviewTileComponentFactory } from '@easy-wizzy/common-app';
24
+ import { emailTemplatePreviewTileDepsFactory } from '@easy-wizzy/common-app';
25
+ import { productImageUrlBuilderExpressionEvaluatorFactory } from '@easy-wizzy/common-app';
26
+ import { defaultTemplateLibraryFactory } from '@easy-wizzy/common-app';
27
+ import { apiMachineFetchFactory } from '@easy-wizzy/common-app';
28
+ import { variableSelectorDepsFactory } from '@easy-wizzy/common-app';
29
+
30
+ import type { ApiMachineFetchDelegate } from '@easy-wizzy/common-app';
31
+
32
+ import { stringExpressionBuilderPluginFactory, richTextToolbarPluginFactory, VariableSelector } from '@easy-wizzy/retailrocket-common';
33
+
34
+ import type { ContactCustomData } from '@easy-wizzy/retailrocket-common';
35
+ import type { NextCouponFromBatchType } from '@easy-wizzy/retailrocket-common';
36
+
37
+ import type { ReactivationListExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
38
+ import type { ReactivationNumberExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
39
+ import type { ReactivationStringExpressionDataSource } from '@easy-wizzy/retailrocket-reactivation';
40
+
41
+ import { initialEmailTemplateRu } from '@easy-wizzy/template-library';
42
+ import { initialEmailTemplateEn } from '@easy-wizzy/template-library';
43
+
44
+ import { reactivationEvaluateListExpressionDataSourceFactory } from '@/implementation/DataSources/ListDataExpressionSource/reactivationEvaluateListExpressionDataSourceFactory';
45
+ import { reactivationEvaluateNumberExpressionDataSourceFactory } from '@/implementation/DataSources/NumberExpressionDataSource/reactivationEvaluateNumberExpressionDataSourceFactory';
46
+ import { reactivationStringExpressionDataSourceEvaluatorFactory } from '@/implementation/DataSources/StringExpressionDataSource/reactivationEvaluateStringExpressionDataSource';
47
+
48
+ import { createApi as listExpressionDataSourceBffClientFactory } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.listexpressiondatasource';
49
+
50
+ const appTagId = '#app';
51
+ const appTag = document.querySelector(appTagId);
52
+
53
+ const params = {
54
+ partnerId: appTag!.getAttribute('data-partner-id')!,
55
+ wysiwygTemplateEditorBffBaseUrl: appTag!.getAttribute('data-wysiwyg-template-editor-bff-base-url')!,
56
+ wysiwygBffProxyBaseUrl: appTag!.getAttribute('data-wysiwyg-bff-proxy-base-url')!,
57
+ antiForgeryHeaderTokenName: appTag!.getAttribute('data-anti-forgery-header-token-name')!,
58
+ antiForgeryHeaderTokenValue: appTag!.getAttribute('data-anti-forgery-header-token-value')!,
59
+ antiForgeryFormTokenName: appTag!.getAttribute('data-anti-forgery-form-token-name')!,
60
+ antiForgeryFormTokenValue: appTag!.getAttribute('data-anti-forgery-form-token-value')!,
61
+ createEmailTemplateSubmitUrl: appTag!.getAttribute('data-create-email-template-submit-url')!,
62
+ initialEmailTemplateJson: appTag!.getAttribute('data-initial-reactivation-template')!,
63
+ reactivationFavoritesTemplates: JSON.parse(appTag!.getAttribute('data-reactivation-favorites-templates')!) as [{ templateId: string, templateJson: string, favoriteTemplateName: string }],
64
+ commonFavoritesTemplates: JSON.parse(appTag!.getAttribute('data-common-favorites-templates')!) as [{ templateId: string, templateJson: string, favoriteTemplateName: string }],
65
+ exitLink: appTag!.getAttribute('data-exit-link')!,
66
+ localeKey: appTag!.getAttribute('data-locale-key') as LocaleKey || 'en'
67
+ };
68
+
69
+ const _apiMachineFetchFactory = (arg: {
70
+ baseUrl: string
71
+ }): ApiMachineFetchDelegate => apiMachineFetchFactory({
72
+ baseUrl: arg.baseUrl,
73
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
74
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
75
+ });
76
+
77
+ const listExpressionDataSourceBffClient = listExpressionDataSourceBffClientFactory(
78
+ _apiMachineFetchFactory({
79
+ baseUrl: params.wysiwygBffProxyBaseUrl
80
+ })
81
+ );
82
+
83
+ const createTemplate = <
84
+ TListExpressionDataSource,
85
+ TNumberExpressionDataSource,
86
+ TStringExpressionDataSource>(arg: {
87
+ template: EmailTemplateType<
88
+ TListExpressionDataSource,
89
+ TNumberExpressionDataSource,
90
+ TStringExpressionDataSource>
91
+ }): void => {
92
+ const formData = new FormData();
93
+ formData.append(
94
+ params.antiForgeryFormTokenName,
95
+ params.antiForgeryFormTokenValue);
96
+ formData.append(
97
+ 'template',
98
+ JSON.stringify(arg.template));
99
+
100
+ const form = createSimpleDataForm({
101
+ method: 'POST',
102
+ action: params.createEmailTemplateSubmitUrl,
103
+ formData: formData
104
+ });
105
+
106
+ document.body.appendChild(form);
107
+ form.submit();
108
+ };
109
+
110
+ const contactCustomData: ContactCustomData = {};
111
+ const nextCouponFromBatch: NextCouponFromBatchType = {
112
+ BatchId: ''
113
+ };
114
+
115
+ const createEmailTemplatePreviewTile = (arg: {
116
+ template: EmailTemplateType<
117
+ ReactivationListExpressionDataSource,
118
+ ReactivationNumberExpressionDataSource,
119
+ ReactivationStringExpressionDataSource
120
+ >;
121
+ templateName: string;
122
+ }): EmailTemplatePreviewTileComponent => {
123
+
124
+ const listExpressionDataSourceEvaluator = reactivationEvaluateListExpressionDataSourceFactory({
125
+ partnerId: params.partnerId,
126
+ listExpressionDataSourceBffClient: listExpressionDataSourceBffClient,
127
+ customerStockId: undefined
128
+ });
129
+
130
+ const listExpressionEvaluator = listExpressionEvaluatorFactory({
131
+ listExpressionDataSourceEvaluator: listExpressionDataSourceEvaluator
132
+ });
133
+
134
+ const numberExpressionDataSourceEvaluator = reactivationEvaluateNumberExpressionDataSourceFactory();
135
+
136
+ const numberExpressionEvaluator = numberExpressionEvaluatorDelegate({
137
+ listExpressionEvaluator: listExpressionEvaluator,
138
+ numberExpressionDataSourceEvaluator: numberExpressionDataSourceEvaluator
139
+ })
140
+
141
+ const stringExpressionEvaluator: StringExpressionEvaluatorDelegate<
142
+ ReactivationListExpressionDataSource,
143
+ ReactivationNumberExpressionDataSource,
144
+ ReactivationStringExpressionDataSource
145
+ > = stringExpressionEvaluatorFactory({
146
+ listExpressionEvaluator: listExpressionEvaluator,
147
+ numberExpressionEvaluator: numberExpressionEvaluator,
148
+ stringExpressionDataSourceEvaluatorFactory: () => reactivationStringExpressionDataSourceEvaluatorFactory({
149
+ productImageUrlBuilderExpressionEvaluator: productImageUrlBuilderExpressionEvaluatorFactory({
150
+ partnerId: params.partnerId,
151
+ numberExpressionEvaluator: numberExpressionEvaluator
152
+ }),
153
+ contactCustomData: contactCustomData,
154
+ nextCouponFromBatch: nextCouponFromBatch
155
+ })
156
+ });
157
+
158
+ const expressionEvaluator = expressionEvaluatorFactory({
159
+ listExpressionEvaluator: listExpressionEvaluator,
160
+ numberExpressionEvaluator: numberExpressionEvaluator,
161
+ stringExpressionEvaluator: stringExpressionEvaluator,
162
+ dataStructBuilderExpressionEvaluatorFactory: expressionEvaluator => dataStructBuilderExpressionEvaluatorFactory({
163
+ expressionEvaluator: expressionEvaluator
164
+ })
165
+ });
166
+
167
+ const dataStructExpressionEvaluator = dataStructBuilderExpressionEvaluatorFactory({
168
+ expressionEvaluator: expressionEvaluator
169
+ });
170
+
171
+ const stringExpressionBuilderPlugin = stringExpressionBuilderPluginFactory({
172
+ localeKey: params.localeKey
173
+ });
174
+
175
+ return emailTemplatePreviewTileComponentFactory<
176
+ ReactivationListExpressionDataSource,
177
+ ReactivationNumberExpressionDataSource,
178
+ ReactivationStringExpressionDataSource
179
+ >({
180
+ template: arg.template,
181
+ templateName: arg.templateName,
182
+ emailTemplatePreviewTileDeps: emailTemplatePreviewTileDepsFactory<
183
+ ReactivationListExpressionDataSource,
184
+ ReactivationNumberExpressionDataSource,
185
+ ReactivationStringExpressionDataSource
186
+ >({
187
+ localeKey: params.localeKey,
188
+ dataSourceFieldNameDelegate: ({ dataSource }) => {
189
+ return matcherFactory(dataSource as GeneralStringExpressionDataSource).Match({
190
+ StringFromContactCustomData: (customData) => customData.FieldName,
191
+ StringFromContactCustomDataWithFallback: (customDataWithFallback) => customDataWithFallback.FallbackValue,
192
+ ProductImageUrlBuilderExpression: () => 'ImageResizer',
193
+ NextCouponFromBatch: () => 'Coupon'
194
+ });
195
+ },
196
+ richTextToolbarPlugins: [
197
+ richTextToolbarPluginFactory({
198
+ richTextToolbarPluginComponent: VariableSelector,
199
+ deps: variableSelectorDepsFactory({
200
+ localeKey: params.localeKey,
201
+ stringExpressionBuilderPlugin: stringExpressionBuilderPlugin
202
+ })
203
+ })
204
+ ],
205
+ listExpressionEvaluator: listExpressionEvaluator,
206
+ numberExpressionEvaluator: numberExpressionEvaluator,
207
+ stringExpressionEvaluator: stringExpressionEvaluator,
208
+ dataStructExpressionEvaluator: dataStructExpressionEvaluator,
209
+ expressionEvaluator: expressionEvaluator,
210
+ stringExpressionBuilderPlugin: stringExpressionBuilderPlugin
211
+ }),
212
+ onFavoriteTemplateSelected: () => {
213
+ //eslint-disable-next-line no-console
214
+ console.log('onFavoriteTemplateSelected');
215
+ // create email template
216
+ createTemplate({
217
+ template: arg.template
218
+ });
219
+ // redirect
220
+ },
221
+ });
222
+ };
223
+
224
+ const initialEmailTemplate = params.localeKey === 'ru'
225
+ ? initialEmailTemplateRu
226
+ : initialEmailTemplateEn;
227
+
228
+ const app = createApp(
229
+ CreateEmailTemplateApp,
230
+ {
231
+ onInitialTemplateSelected: () => {
232
+ //eslint-disable-next-line no-console
233
+ console.log('onInitialTemplateSelected');
234
+ createTemplate({
235
+ template: params.initialEmailTemplateJson.length
236
+ ? JSON.parse(params.initialEmailTemplateJson)
237
+ : initialEmailTemplate,
238
+ });
239
+ },
240
+ deps:
241
+ createEmailTemplateAppDepsFactory<
242
+ ReactivationListExpressionDataSource,
243
+ ReactivationNumberExpressionDataSource,
244
+ ReactivationStringExpressionDataSource
245
+ >({
246
+ partnerId: params.partnerId,
247
+ localeKey: params.localeKey,
248
+ emailTemplatePreviews:
249
+ {
250
+ custom: [
251
+ ...params
252
+ .commonFavoritesTemplates
253
+ .map(o => ({
254
+ templateName: o.favoriteTemplateName,
255
+ previewTileComponent: createEmailTemplatePreviewTile({
256
+ template: JSON.parse(o.templateJson),
257
+ templateName: o.favoriteTemplateName
258
+ })
259
+ })),
260
+ ...params
261
+ .reactivationFavoritesTemplates
262
+ .map(o => ({
263
+ templateName: o.favoriteTemplateName,
264
+ previewTileComponent: createEmailTemplatePreviewTile({
265
+ template: JSON.parse(o.templateJson),
266
+ templateName: o.favoriteTemplateName
267
+ })
268
+ }))
269
+ ],
270
+ default: [
271
+ ...defaultTemplateLibraryFactory(params.localeKey)
272
+ .map(o => ({
273
+ templateName: o.favoriteTemplateName,
274
+ previewTileComponent: createEmailTemplatePreviewTile({
275
+ template: o.defaultTemplate as EmailTemplateType<
276
+ ReactivationListExpressionDataSource,
277
+ ReactivationNumberExpressionDataSource,
278
+ ReactivationStringExpressionDataSource
279
+ >,
280
+ templateName: o.favoriteTemplateName
281
+ })
282
+ }))
283
+ ]
284
+ },
285
+ initialEmailTemplate: params.initialEmailTemplateJson.length
286
+ ? JSON.parse(params.initialEmailTemplateJson)
287
+ : initialEmailTemplate,
288
+ exitLink: params.exitLink
289
+ }
290
+ )
291
+ }
292
+ );
293
+
294
+ app.use(createVuetify({
295
+ theme: false,
296
+ directives: {
297
+ ClickOutside
298
+ }
299
+ }));
300
+
301
+ app.mount(appTagId);
@@ -0,0 +1,30 @@
1
+ import type {
2
+ ReactivationListExpressionDataSource,
3
+ } from '@easy-wizzy/retailrocket-reactivation';
4
+ import type {
5
+ ReactivationNumberExpressionDataSource,
6
+ } from '@easy-wizzy/retailrocket-reactivation';
7
+ import type {
8
+ ReactivationStringExpressionDataSource,
9
+ } from '@easy-wizzy/retailrocket-reactivation';
10
+ import {
11
+ reactivationEmailComponentFactory,
12
+ } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/reactivationEmailComponentFactory';
13
+ import type {
14
+ ComponentLibrarySectionItem,
15
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
16
+ import type { CustomComponentSectionItemType } from '@easy-wizzy/core';
17
+
18
+ export const reactivationComponentSectionItemFactory = (
19
+ componentLibrarySectionItem: ComponentLibrarySectionItem,
20
+ ): CustomComponentSectionItemType<
21
+ ReactivationListExpressionDataSource,
22
+ ReactivationNumberExpressionDataSource,
23
+ ReactivationStringExpressionDataSource
24
+ > => {
25
+ return {
26
+ sectionItemId: componentLibrarySectionItem.sectionItemId,
27
+ sectionItemName: componentLibrarySectionItem.sectionItemName,
28
+ componentTemplate: reactivationEmailComponentFactory(componentLibrarySectionItem.component),
29
+ };
30
+ };
@@ -0,0 +1,26 @@
1
+ import type { EmailComponentType } from '@easy-wizzy/core';
2
+ import type {
3
+ ReactivationListExpressionDataSource,
4
+ } from '@easy-wizzy/retailrocket-reactivation';
5
+ import type {
6
+ ReactivationNumberExpressionDataSource,
7
+ } from '@easy-wizzy/retailrocket-reactivation';
8
+ import type {
9
+ ReactivationStringExpressionDataSource,
10
+ } from '@easy-wizzy/retailrocket-reactivation';
11
+ import type {
12
+ Component,
13
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionitemmodalwindow/main';
14
+
15
+ export const reactivationEmailComponentFactory = (
16
+ component: Component
17
+ ): EmailComponentType<
18
+ ReactivationListExpressionDataSource,
19
+ ReactivationNumberExpressionDataSource,
20
+ ReactivationStringExpressionDataSource
21
+ > =>
22
+ {
23
+ return component.triggerReactivation
24
+ ? JSON.parse(component.triggerReactivation.componentJson)
25
+ : JSON.parse(component.common!.componentJson)
26
+ }
@@ -0,0 +1,29 @@
1
+ import type {
2
+ ReactivationListExpressionDataSource,
3
+ } from '@easy-wizzy/retailrocket-reactivation';
4
+ import type {
5
+ ReactivationNumberExpressionDataSource,
6
+ } from '@easy-wizzy/retailrocket-reactivation';
7
+ import type {
8
+ ReactivationStringExpressionDataSource,
9
+ } from '@easy-wizzy/retailrocket-reactivation';
10
+ import {
11
+ reactivationSectionFactory,
12
+ } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/reactivationSectionFactory';
13
+ import type {
14
+ ComponentLibrarySection,
15
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
16
+ import type {
17
+ CustomComponentLibraryType
18
+ } from '@easy-wizzy/core';
19
+
20
+ export const reactivationComponentLibraryFactory = (
21
+ componentLibrary: Array<ComponentLibrarySection>
22
+ ): CustomComponentLibraryType<
23
+ ReactivationListExpressionDataSource,
24
+ ReactivationNumberExpressionDataSource,
25
+ ReactivationStringExpressionDataSource
26
+ > => {
27
+ return componentLibrary
28
+ .map(section => reactivationSectionFactory(section))
29
+ }
@@ -0,0 +1,34 @@
1
+ import type {
2
+ ReactivationListExpressionDataSource,
3
+ } from '@easy-wizzy/retailrocket-reactivation';
4
+ import type {
5
+ ReactivationNumberExpressionDataSource,
6
+ } from '@easy-wizzy/retailrocket-reactivation';
7
+ import type {
8
+ ReactivationStringExpressionDataSource,
9
+ } from '@easy-wizzy/retailrocket-reactivation';
10
+
11
+
12
+ import type {
13
+ ComponentLibrarySection,
14
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
15
+ import {
16
+ reactivationComponentSectionItemFactory,
17
+ } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/reactivationComponentSectionItemFactory';
18
+ import type { CustomComponentSectionType } from '@easy-wizzy/core';
19
+
20
+ export const reactivationSectionFactory = (
21
+ section: ComponentLibrarySection,
22
+ ): CustomComponentSectionType<
23
+ ReactivationListExpressionDataSource,
24
+ ReactivationNumberExpressionDataSource,
25
+ ReactivationStringExpressionDataSource
26
+ > => {
27
+ return {
28
+ sectionId: section.sectionId,
29
+ sectionName: section.sectionName,
30
+ componentList: section
31
+ .sectionItems
32
+ .map(component => reactivationComponentSectionItemFactory(component)),
33
+ };
34
+ };