@retailrocketgroup/retailrocket-create.welcome-sequence-vue-email-template-render 3.0.377566 → 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/createWelcomeSequenceEmailTemplateApp.d.ts +0 -0
  6. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/welcomeSequenceComponentSectionItemFactory.d.ts +4 -0
  7. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/welcomeSequenceEmailComponentFactory.d.ts +4 -0
  8. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/welcomeSequenceComponentLibraryFactory.d.ts +4 -0
  9. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/welcomeSequenceSectionFactory.d.ts +4 -0
  10. package/dist/implementation/DataSources/ListDataExpressionSource/welcomeSequenceEvaluateListExpressionDataSourceFactory.d.ts +8 -0
  11. package/dist/implementation/DataSources/NumberExpressionDataSource/welcomeSequenceEvaluateNumberExpressionDataSourceFactory.d.ts +2 -0
  12. package/dist/implementation/DataSources/StringExpressionDataSource/welcomeSequenceEvaluateStringExpressionDataSource.d.ts +9 -0
  13. package/dist/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/WelcomeSequenceProductShelfDataSourceExpressionBuilderModal/welcomeSequenceProductShelfDataSourceExpressionBuilderModalDepsFactory.d.ts +11 -0
  14. package/dist/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/welcomeSequenceProductShelfDataSourceExpressionBuilderDepsFactory.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/createWelcomeSequenceEmailTemplateApp.ts +297 -0
  21. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/welcomeSequenceComponentSectionItemFactory.ts +30 -0
  22. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/welcomeSequenceEmailComponentFactory.ts +26 -0
  23. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/welcomeSequenceComponentLibraryFactory.ts +29 -0
  24. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/welcomeSequenceSectionFactory.ts +34 -0
  25. package/src/implementation/DataSources/ListDataExpressionSource/welcomeSequenceEvaluateListExpressionDataSourceFactory.ts +106 -0
  26. package/src/implementation/DataSources/NumberExpressionDataSource/welcomeSequenceEvaluateNumberExpressionDataSourceFactory.ts +10 -0
  27. package/src/implementation/DataSources/StringExpressionDataSource/welcomeSequenceEvaluateStringExpressionDataSource.ts +56 -0
  28. package/src/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/WelcomeSequenceProductShelfDataSourceExpressionBuilderModal/welcomeSequenceProductShelfDataSourceExpressionBuilderModalDepsFactory.ts +125 -0
  29. package/src/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/welcomeSequenceProductShelfDataSourceExpressionBuilderDepsFactory.ts +33 -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 -179
  38. package/favicon.ico +0 -0
@@ -0,0 +1,4 @@
1
+ import { WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
2
+ import { ComponentLibrarySectionItem } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
3
+ import { CustomComponentSectionItemType } from '@easy-wizzy/core';
4
+ export declare const welcomeSequenceComponentSectionItemFactory: (componentLibrarySectionItem: ComponentLibrarySectionItem) => CustomComponentSectionItemType<WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { EmailComponentType } from '@easy-wizzy/core';
2
+ import { WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
3
+ import { Component } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionitemmodalwindow/main';
4
+ export declare const welcomeSequenceEmailComponentFactory: (component: Component) => EmailComponentType<WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
2
+ import { ComponentLibrarySection } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
3
+ import { CustomComponentLibraryType } from '@easy-wizzy/core';
4
+ export declare const welcomeSequenceComponentLibraryFactory: (componentLibrary: Array<ComponentLibrarySection>) => CustomComponentLibraryType<WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
2
+ import { ComponentLibrarySection } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
3
+ import { CustomComponentSectionType } from '@easy-wizzy/core';
4
+ export declare const welcomeSequenceSectionFactory: (section: ComponentLibrarySection) => CustomComponentSectionType<WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource, WelcomeSequenceStringExpressionDataSource>;
@@ -0,0 +1,8 @@
1
+ import { WelcomeSequenceListExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
2
+ import { ListExpressionDataSourceBffClient } from '@easy-wizzy/common-app';
3
+ import { ListExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
4
+ export declare const welcomeSequenceEvaluateListExpressionDataSourceFactory: (arg: {
5
+ partnerId: string;
6
+ listExpressionDataSourceBffClient: ListExpressionDataSourceBffClient;
7
+ customerStockId: string | undefined;
8
+ }) => ListExpressionDataSourceEvaluatorDelegate<WelcomeSequenceListExpressionDataSource>;
@@ -0,0 +1,2 @@
1
+ import { NumberExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
2
+ export declare const welcomeSequenceEvaluateNumberExpressionDataSourceFactory: <TNumberExpressionDataSource>() => NumberExpressionDataSourceEvaluatorDelegate<TNumberExpressionDataSource>;
@@ -0,0 +1,9 @@
1
+ import { WelcomeSequenceStringExpressionDataSource, WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
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 welcomeSequenceStringExpressionDataSourceEvaluatorFactory: (arg: {
6
+ productImageUrlBuilderExpressionEvaluator: ProductImageUrlBuilderExpressionEvaluatorDelegate<WelcomeSequenceListExpressionDataSource, WelcomeSequenceNumberExpressionDataSource>;
7
+ contactCustomData: ContactCustomData;
8
+ nextCouponFromBatch: NextCouponFromBatchType;
9
+ }) => StringExpressionDataSourceEvaluatorDelegate<WelcomeSequenceStringExpressionDataSource>;
@@ -0,0 +1,11 @@
1
+ import { LocaleKey } from '@easy-wizzy/core';
2
+ import { WelcomeSequenceProductShelfDataSourceExpressionBuilderModalDeps } from '@easy-wizzy/retailrocket-welcome-sequence';
3
+ import { ProductShelfBuilderModalWindowBffClient, ProductPickerModalWindowBffClient, ProductCategoryPickerModalWindowBffClient } from '@easy-wizzy/common-app';
4
+ export declare const welcomeSequenceProductShelfDataSourceExpressionBuilderModalDepsFactory: (arg: {
5
+ localeKey: LocaleKey;
6
+ partnerId: string;
7
+ customerStockId: string | undefined;
8
+ productShelfBuilderModalWindowBffClient: ProductShelfBuilderModalWindowBffClient;
9
+ productCategoryPickerModalWindowBffClient: ProductCategoryPickerModalWindowBffClient;
10
+ productPickerModalWindowBffClient: ProductPickerModalWindowBffClient;
11
+ }) => WelcomeSequenceProductShelfDataSourceExpressionBuilderModalDeps;
@@ -0,0 +1,11 @@
1
+ import { LocaleKey } from '@easy-wizzy/core';
2
+ import { WelcomeSequenceProductShelfDataSourceExpressionBuilderDeps } from '@easy-wizzy/retailrocket-welcome-sequence';
3
+ import { ProductShelfBuilderModalWindowBffClient, ProductPickerModalWindowBffClient, ProductCategoryPickerModalWindowBffClient } from '@easy-wizzy/common-app';
4
+ export declare const welcomeSequenceProductShelfDataSourceExpressionBuilderDepsFactory: (arg: {
5
+ localeKey: LocaleKey;
6
+ partnerId: string;
7
+ customerStockId: string | undefined;
8
+ productShelfBuilderModalWindowBffClient: ProductShelfBuilderModalWindowBffClient;
9
+ productCategoryPickerModalWindowBffClient: ProductCategoryPickerModalWindowBffClient;
10
+ productPickerModalWindowBffClient: ProductPickerModalWindowBffClient;
11
+ }) => WelcomeSequenceProductShelfDataSourceExpressionBuilderDeps;
@@ -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-welcome-sequence-template=""
29
+ data-welcome-sequence-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/createWelcomeSequenceEmailTemplateApp.ts"></script>
35
34
  </body>
36
35
  </html>
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@retailrocketgroup/retailrocket-create.welcome-sequence-vue-email-template-render",
3
- "version": "3.0.377566",
3
+ "version": "5.0.384530",
4
4
  "private": false
5
5
  }
@@ -0,0 +1,297 @@
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 { WelcomeSequenceListExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
38
+ import type { WelcomeSequenceNumberExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
39
+ import type { WelcomeSequenceStringExpressionDataSource } from '@easy-wizzy/retailrocket-welcome-sequence';
40
+
41
+ import { initialEmailTemplateRu } from '@easy-wizzy/template-library';
42
+ import { initialEmailTemplateEn } from '@easy-wizzy/template-library';
43
+
44
+ import { welcomeSequenceEvaluateListExpressionDataSourceFactory } from '@/implementation/DataSources/ListDataExpressionSource/welcomeSequenceEvaluateListExpressionDataSourceFactory';
45
+ import { welcomeSequenceEvaluateNumberExpressionDataSourceFactory } from '@/implementation/DataSources/NumberExpressionDataSource/welcomeSequenceEvaluateNumberExpressionDataSourceFactory';
46
+ import { welcomeSequenceStringExpressionDataSourceEvaluatorFactory } from '@/implementation/DataSources/StringExpressionDataSource/welcomeSequenceEvaluateStringExpressionDataSource';
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-welcome-sequence-template')!,
63
+ welcomeSequenceFavoritesTemplates: JSON.parse(appTag!.getAttribute('data-welcome-sequence-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
+ WelcomeSequenceListExpressionDataSource,
118
+ WelcomeSequenceNumberExpressionDataSource,
119
+ WelcomeSequenceStringExpressionDataSource
120
+ >;
121
+ templateName: string;
122
+ }): EmailTemplatePreviewTileComponent => {
123
+
124
+ const listExpressionDataSourceEvaluator = welcomeSequenceEvaluateListExpressionDataSourceFactory({
125
+ partnerId: params.partnerId,
126
+ listExpressionDataSourceBffClient: listExpressionDataSourceBffClient,
127
+ customerStockId: undefined
128
+ });
129
+
130
+ const listExpressionEvaluator = listExpressionEvaluatorFactory({
131
+ listExpressionDataSourceEvaluator: listExpressionDataSourceEvaluator
132
+ });
133
+
134
+ const numberExpressionDataSourceEvaluator = welcomeSequenceEvaluateNumberExpressionDataSourceFactory();
135
+
136
+ const numberExpressionEvaluator = numberExpressionEvaluatorDelegate({
137
+ listExpressionEvaluator: listExpressionEvaluator,
138
+ numberExpressionDataSourceEvaluator: numberExpressionDataSourceEvaluator
139
+ })
140
+
141
+ const stringExpressionEvaluator: StringExpressionEvaluatorDelegate<
142
+ WelcomeSequenceListExpressionDataSource,
143
+ WelcomeSequenceNumberExpressionDataSource,
144
+ WelcomeSequenceStringExpressionDataSource
145
+ > = stringExpressionEvaluatorFactory({
146
+ listExpressionEvaluator: listExpressionEvaluator,
147
+ numberExpressionEvaluator: numberExpressionEvaluator,
148
+ stringExpressionDataSourceEvaluatorFactory: () => welcomeSequenceStringExpressionDataSourceEvaluatorFactory({
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
+ WelcomeSequenceListExpressionDataSource,
177
+ WelcomeSequenceNumberExpressionDataSource,
178
+ WelcomeSequenceStringExpressionDataSource
179
+ >({
180
+ template: arg.template,
181
+ templateName: arg.templateName,
182
+ emailTemplatePreviewTileDeps: emailTemplatePreviewTileDepsFactory<
183
+ WelcomeSequenceListExpressionDataSource,
184
+ WelcomeSequenceNumberExpressionDataSource,
185
+ WelcomeSequenceStringExpressionDataSource
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
+ createTemplate({
214
+ template: arg.template
215
+ });
216
+ },
217
+ });
218
+ };
219
+
220
+ const initialEmailTemplate = params.localeKey === 'ru'
221
+ ? initialEmailTemplateRu
222
+ : initialEmailTemplateEn;
223
+
224
+ const app = createApp(
225
+ CreateEmailTemplateApp,
226
+ {
227
+ onInitialTemplateSelected: () => {
228
+ //eslint-disable-next-line no-console
229
+ console.log('onInitialTemplateSelected');
230
+ createTemplate({
231
+ template: params.initialEmailTemplateJson.length
232
+ ? JSON.parse(params.initialEmailTemplateJson)
233
+ : initialEmailTemplate,
234
+ });
235
+ },
236
+ deps:
237
+ createEmailTemplateAppDepsFactory<
238
+ WelcomeSequenceListExpressionDataSource,
239
+ WelcomeSequenceNumberExpressionDataSource,
240
+ WelcomeSequenceStringExpressionDataSource
241
+ >({
242
+ partnerId: params.partnerId,
243
+ localeKey: params.localeKey,
244
+ emailTemplatePreviews:
245
+ {
246
+ custom: [
247
+ ...params
248
+ .commonFavoritesTemplates
249
+ .map(o => ({
250
+ templateName: o.favoriteTemplateName,
251
+ previewTileComponent: createEmailTemplatePreviewTile({
252
+ template: JSON.parse(o.templateJson),
253
+ templateName: o.favoriteTemplateName
254
+ })
255
+ })),
256
+ ...params
257
+ .welcomeSequenceFavoritesTemplates
258
+ .map(o => ({
259
+ templateName: o.favoriteTemplateName,
260
+ previewTileComponent: createEmailTemplatePreviewTile({
261
+ template: JSON.parse(o.templateJson),
262
+ templateName: o.favoriteTemplateName
263
+ })
264
+ }))
265
+ ],
266
+ default: [
267
+ ...defaultTemplateLibraryFactory(params.localeKey)
268
+ .map(o => ({
269
+ templateName: o.favoriteTemplateName,
270
+ previewTileComponent: createEmailTemplatePreviewTile({
271
+ template: o.defaultTemplate as EmailTemplateType<
272
+ WelcomeSequenceListExpressionDataSource,
273
+ WelcomeSequenceNumberExpressionDataSource,
274
+ WelcomeSequenceStringExpressionDataSource
275
+ >,
276
+ templateName: o.favoriteTemplateName
277
+ })
278
+ }))
279
+ ]
280
+ },
281
+ initialEmailTemplate: params.initialEmailTemplateJson.length
282
+ ? JSON.parse(params.initialEmailTemplateJson)
283
+ : initialEmailTemplate,
284
+ exitLink: params.exitLink
285
+ }
286
+ )
287
+ }
288
+ );
289
+
290
+ app.use(createVuetify({
291
+ theme: false,
292
+ directives: {
293
+ ClickOutside
294
+ }
295
+ }));
296
+
297
+ app.mount(appTagId);
@@ -0,0 +1,30 @@
1
+ import type {
2
+ WelcomeSequenceListExpressionDataSource,
3
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
4
+ import type {
5
+ WelcomeSequenceNumberExpressionDataSource,
6
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
7
+ import type {
8
+ WelcomeSequenceStringExpressionDataSource,
9
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
10
+ import {
11
+ welcomeSequenceEmailComponentFactory,
12
+ } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/welcomeSequenceEmailComponentFactory';
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 welcomeSequenceComponentSectionItemFactory = (
19
+ componentLibrarySectionItem: ComponentLibrarySectionItem,
20
+ ): CustomComponentSectionItemType<
21
+ WelcomeSequenceListExpressionDataSource,
22
+ WelcomeSequenceNumberExpressionDataSource,
23
+ WelcomeSequenceStringExpressionDataSource
24
+ > => {
25
+ return {
26
+ sectionItemId: componentLibrarySectionItem.sectionItemId,
27
+ sectionItemName: componentLibrarySectionItem.sectionItemName,
28
+ componentTemplate: welcomeSequenceEmailComponentFactory(componentLibrarySectionItem.component),
29
+ };
30
+ };
@@ -0,0 +1,26 @@
1
+ import type { EmailComponentType } from '@easy-wizzy/core';
2
+ import type {
3
+ WelcomeSequenceListExpressionDataSource,
4
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
5
+ import type {
6
+ WelcomeSequenceNumberExpressionDataSource,
7
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
8
+ import type {
9
+ WelcomeSequenceStringExpressionDataSource,
10
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
11
+ import type {
12
+ Component,
13
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionitemmodalwindow/main';
14
+
15
+ export const welcomeSequenceEmailComponentFactory = (
16
+ component: Component
17
+ ): EmailComponentType<
18
+ WelcomeSequenceListExpressionDataSource,
19
+ WelcomeSequenceNumberExpressionDataSource,
20
+ WelcomeSequenceStringExpressionDataSource
21
+ > =>
22
+ {
23
+ return component.triggerWelcomeSequence
24
+ ? JSON.parse(component.triggerWelcomeSequence.componentJson)
25
+ : JSON.parse(component.common!.componentJson)
26
+ }
@@ -0,0 +1,29 @@
1
+ import type {
2
+ WelcomeSequenceListExpressionDataSource,
3
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
4
+ import type {
5
+ WelcomeSequenceNumberExpressionDataSource,
6
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
7
+ import type {
8
+ WelcomeSequenceStringExpressionDataSource,
9
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
10
+ import {
11
+ welcomeSequenceSectionFactory,
12
+ } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/welcomeSequenceSectionFactory';
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 welcomeSequenceComponentLibraryFactory = (
21
+ componentLibrary: Array<ComponentLibrarySection>
22
+ ): CustomComponentLibraryType<
23
+ WelcomeSequenceListExpressionDataSource,
24
+ WelcomeSequenceNumberExpressionDataSource,
25
+ WelcomeSequenceStringExpressionDataSource
26
+ > => {
27
+ return componentLibrary
28
+ .map(section => welcomeSequenceSectionFactory(section))
29
+ }
@@ -0,0 +1,34 @@
1
+ import type {
2
+ WelcomeSequenceListExpressionDataSource,
3
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
4
+ import type {
5
+ WelcomeSequenceNumberExpressionDataSource,
6
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
7
+ import type {
8
+ WelcomeSequenceStringExpressionDataSource,
9
+ } from '@easy-wizzy/retailrocket-welcome-sequence';
10
+
11
+
12
+ import type {
13
+ ComponentLibrarySection,
14
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
15
+ import {
16
+ welcomeSequenceComponentSectionItemFactory,
17
+ } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/welcomeSequenceComponentSectionItemFactory';
18
+ import type { CustomComponentSectionType } from '@easy-wizzy/core';
19
+
20
+ export const welcomeSequenceSectionFactory = (
21
+ section: ComponentLibrarySection,
22
+ ): CustomComponentSectionType<
23
+ WelcomeSequenceListExpressionDataSource,
24
+ WelcomeSequenceNumberExpressionDataSource,
25
+ WelcomeSequenceStringExpressionDataSource
26
+ > => {
27
+ return {
28
+ sectionId: section.sectionId,
29
+ sectionName: section.sectionName,
30
+ componentList: section
31
+ .sectionItems
32
+ .map(component => welcomeSequenceComponentSectionItemFactory(component)),
33
+ };
34
+ };