@retailrocketgroup/retailrocket-edit.abandoned-category-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 (40) 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/editAbandonedCategoryEmailTemplate.d.ts +0 -0
  6. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/abandonedCategoryComponentSectionItemFactory.d.ts +4 -0
  7. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/abandonedCategoryEmailComponentFactory.d.ts +4 -0
  8. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/abandonedCategoryComponentLibraryFactory.d.ts +4 -0
  9. package/dist/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/abandonedCategorySectionFactory.d.ts +4 -0
  10. package/dist/implementation/DataSources/ListDataExpressionSource/abandonedCategoryEvaluateListExpressionDataSourceFactory.d.ts +8 -0
  11. package/dist/implementation/DataSources/NumberExpressionDataSource/abandonedCategoryEvaluateNumberExpressionDataSourceFactory.d.ts +2 -0
  12. package/dist/implementation/DataSources/StringExpressionDataSource/abandonedCategoryEvaluateStringExpressionDataSource.d.ts +9 -0
  13. package/dist/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/AbandonedCategoryProductShelfDataSourceExpressionBuilderModal/ShelfBuilders/popularProductsForAbandonedCategoriesShelfBuilderDepsFactory.d.ts +8 -0
  14. package/dist/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/AbandonedCategoryProductShelfDataSourceExpressionBuilderModal/abandonedCategoryProductShelfDataSourceExpressionBuilderModalDepsFactory.d.ts +11 -0
  15. package/dist/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/abandonedCategoryProductShelfDataSourceExpressionBuilderDepsFactory.d.ts +11 -0
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.html +34 -0
  18. package/env.d.ts +1 -0
  19. package/index.html +1 -2
  20. package/package.json +1 -1
  21. package/src/editAbandonedCategoryEmailTemplate.ts +407 -0
  22. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/abandonedCategoryComponentSectionItemFactory.ts +30 -0
  23. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/abandonedCategoryEmailComponentFactory.ts +26 -0
  24. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/abandonedCategoryComponentLibraryFactory.ts +29 -0
  25. package/src/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/abandonedCategorySectionFactory.ts +32 -0
  26. package/src/implementation/DataSources/ListDataExpressionSource/abandonedCategoryEvaluateListExpressionDataSourceFactory.ts +116 -0
  27. package/src/implementation/DataSources/NumberExpressionDataSource/abandonedCategoryEvaluateNumberExpressionDataSourceFactory.ts +10 -0
  28. package/src/implementation/DataSources/StringExpressionDataSource/abandonedCategoryEvaluateStringExpressionDataSource.ts +56 -0
  29. package/src/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/AbandonedCategoryProductShelfDataSourceExpressionBuilderModal/ShelfBuilders/popularProductsForAbandonedCategoriesShelfBuilderDepsFactory.ts +33 -0
  30. package/src/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/AbandonedCategoryProductShelfDataSourceExpressionBuilderModal/abandonedCategoryProductShelfDataSourceExpressionBuilderModalDepsFactory.ts +135 -0
  31. package/src/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/abandonedCategoryProductShelfDataSourceExpressionBuilderDepsFactory.ts +33 -0
  32. package/src/index.ts +0 -0
  33. package/tsconfig.app.json +19 -0
  34. package/tsconfig.json +14 -0
  35. package/tsconfig.node.json +11 -0
  36. package/tsconfig.test.json +11 -0
  37. package/vite.config.ts +36 -0
  38. package/assets/main.css +0 -1
  39. package/assets/main.js +0 -211
  40. package/favicon.ico +0 -0
File without changes
@@ -0,0 +1,4 @@
1
+ import { ComponentLibrarySectionItem } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
2
+ import { CustomComponentSectionItemType } from '@easy-wizzy/core';
3
+ import { AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const abandonedCategoryComponentSectionItemFactory: (componentLibrarySectionItem: ComponentLibrarySectionItem) => CustomComponentSectionItemType<AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { EmailComponentType } from '@easy-wizzy/core';
2
+ import { Component } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionitemmodalwindow/main';
3
+ import { AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const abandonedCategoryEmailComponentFactory: (component: Component) => EmailComponentType<AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { ComponentLibrarySection } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
2
+ import { CustomComponentLibraryType } from '@easy-wizzy/core';
3
+ import { AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const abandonedCategoryComponentLibraryFactory: (componentLibrary: Array<ComponentLibrarySection>) => CustomComponentLibraryType<AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource>;
@@ -0,0 +1,4 @@
1
+ import { ComponentLibrarySection } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
2
+ import { CustomComponentSectionType } from '@easy-wizzy/core';
3
+ import { AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const abandonedCategorySectionFactory: (section: ComponentLibrarySection) => CustomComponentSectionType<AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource>;
@@ -0,0 +1,8 @@
1
+ import { ListExpressionDataSourceBffClient } from '@easy-wizzy/common-app';
2
+ import { ListExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
3
+ import { AbandonedCategoryListExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const abandonedCategoryEvaluateListExpressionDataSourceFactory: (arg: {
5
+ partnerId: string;
6
+ listExpressionDataSourceBffClient: ListExpressionDataSourceBffClient;
7
+ customerStockId: string | undefined;
8
+ }) => ListExpressionDataSourceEvaluatorDelegate<AbandonedCategoryListExpressionDataSource>;
@@ -0,0 +1,2 @@
1
+ import { NumberExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
2
+ export declare const abandonedCategoryEvaluateNumberExpressionDataSourceFactory: <TNumberExpressionDataSource>() => NumberExpressionDataSourceEvaluatorDelegate<TNumberExpressionDataSource>;
@@ -0,0 +1,9 @@
1
+ import { StringExpressionDataSourceEvaluatorDelegate } from '@easy-wizzy/core';
2
+ import { ContactCustomData, NextCouponFromBatchType } from '@easy-wizzy/retailrocket-common';
3
+ import { ProductImageUrlBuilderExpressionEvaluatorDelegate } from '@easy-wizzy/common-app';
4
+ import { AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource, AbandonedCategoryStringExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
5
+ export declare const abandonedCategoryStringExpressionDataSourceEvaluatorFactory: (arg: {
6
+ productImageUrlBuilderExpressionEvaluator: ProductImageUrlBuilderExpressionEvaluatorDelegate<AbandonedCategoryListExpressionDataSource, AbandonedCategoryNumberExpressionDataSource>;
7
+ contactCustomData: ContactCustomData;
8
+ nextCouponFromBatch: NextCouponFromBatchType;
9
+ }) => StringExpressionDataSourceEvaluatorDelegate<AbandonedCategoryStringExpressionDataSource>;
@@ -0,0 +1,8 @@
1
+ import { LocaleKey } from '@easy-wizzy/core';
2
+ import { ProductShelfBuilderModalWindowBffClient } from '@easy-wizzy/common-app';
3
+ import { PopularProductsForAbandonedCategoriesShelfBuilderDeps } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const popularProductsForAbandonedCategoriesShelfBuilderDepsFactory: (arg: {
5
+ localeKey: LocaleKey;
6
+ partnerId: string;
7
+ getAllStockIdsHttpClient: ProductShelfBuilderModalWindowBffClient["postGetAllStockIds"];
8
+ }) => PopularProductsForAbandonedCategoriesShelfBuilderDeps;
@@ -0,0 +1,11 @@
1
+ import { LocaleKey } from '@easy-wizzy/core';
2
+ import { ProductShelfBuilderModalWindowBffClient, ProductPickerModalWindowBffClient, ProductCategoryPickerModalWindowBffClient } from '@easy-wizzy/common-app';
3
+ import { AbandonedCategoryProductShelfDataSourceExpressionBuilderModalDeps } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const abandonedCategoryProductShelfDataSourceExpressionBuilderModalDepsFactory: (arg: {
5
+ localeKey: LocaleKey;
6
+ partnerId: string;
7
+ customerStockId: string | undefined;
8
+ productShelfBuilderModalWindowBffClient: ProductShelfBuilderModalWindowBffClient;
9
+ productCategoryPickerModalWindowBffClient: ProductCategoryPickerModalWindowBffClient;
10
+ productPickerModalWindowBffClient: ProductPickerModalWindowBffClient;
11
+ }) => AbandonedCategoryProductShelfDataSourceExpressionBuilderModalDeps;
@@ -0,0 +1,11 @@
1
+ import { LocaleKey } from '@easy-wizzy/core';
2
+ import { ProductShelfBuilderModalWindowBffClient, ProductPickerModalWindowBffClient, ProductCategoryPickerModalWindowBffClient } from '@easy-wizzy/common-app';
3
+ import { AbandonedCategoryProductShelfDataSourceExpressionBuilderDeps } from '@easy-wizzy/retailrocket-abandoned-category';
4
+ export declare const abandonedCategoryProductShelfDataSourceExpressionBuilderDepsFactory: (arg: {
5
+ localeKey: LocaleKey;
6
+ partnerId: string;
7
+ customerStockId: string | undefined;
8
+ productShelfBuilderModalWindowBffClient: ProductShelfBuilderModalWindowBffClient;
9
+ productCategoryPickerModalWindowBffClient: ProductCategoryPickerModalWindowBffClient;
10
+ productPickerModalWindowBffClient: ProductPickerModalWindowBffClient;
11
+ }) => AbandonedCategoryProductShelfDataSourceExpressionBuilderDeps;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
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-email-template-json='{"Subject": "","Preheader": "","Theme": {"BodyWidth": 600,"IsResponsiveWidth": true,"FontFamily": "Arial","Colors": {"EmailBackgroundColor": "#EEEEEE","BodyColor": "#FFFFFF","PrimaryColor": "#557aff","PrimaryTextColor": "#ffffff","SecondaryColor": "#E4EAFF","SecondaryTextColor": "#557aff","CardBackgroundColor": "#F6F6F6","HeadingColor": "#2F2F2F","TitleColor": "#2F2F2F","SubHeadingColor": "#2F2F2F","LargeTextColor": "#2F2F2F","NormalTextColor": "#2F2F2F","DescriptionTextColor": "#999999","LinkColor": "#65A0FA","ButtonTextColor": "#ffffff"},"BorderRadius": {"TopLeft": 20,"TopRight": 20,"BottomLeft": 20,"BottomRight": 20},"BorderRadiusCard": {"TopLeft": 16,"TopRight": 16,"BottomLeft": 16,"BottomRight": 16},"BorderRadiusButton": {"TopLeft": 6,"TopRight": 6,"BottomLeft": 6,"BottomRight": 6},"BorderRadiusBanner": {"TopLeft": 0,"TopRight": 0,"BottomLeft": 0,"BottomRight": 0},"BodyPaddings": {"Left": 20,"Right": 20,"Top": 10,"Bottom": 10},"ComponentPaddings": {"Small": 8,"Medium": 16,"Large": 24,"Huge": 24},"ButtonPaddings": {"TopBottom": 12,"LeftRight": 14},"FontSettingsPresets": {"Title": {"FontSize": 24,"LineHeight": 28,"IsBold": true,"IsItalic": false,"Decoration": "None"},"Heading": {"FontSize": 20,"LineHeight": 24,"IsBold": true,"IsItalic": false,"Decoration": "None"},"SubHeading": {"FontSize": 14,"LineHeight": 16,"IsBold": true,"IsItalic": false,"Decoration": "None"},"LargeText": {"FontSize": 14,"LineHeight": 18,"IsBold": false,"IsItalic": false,"Decoration": "None"},"NormalText": {"FontSize": 12,"LineHeight": 15,"IsBold": false,"IsItalic": false,"Decoration": "None"},"DescriptionText": {"FontSize": 10,"LineHeight": 13,"IsBold": false,"IsItalic": false,"Decoration": "None"},"Button": {"FontSize": 12,"LineHeight": 14,"IsBold": true,"IsItalic": false,"Decoration": "None"},"Link": {"FontSize": 12,"LineHeight": 14,"IsBold": false,"IsItalic": false,"Decoration": "None"}}},"Components": [{"IsRequired": false,"BorderRadius": {"TopLeft": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"TopRight": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"BottomRight": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"BottomLeft": {"Discriminator": "CustomBorderRadius","CustomValue": 0}},"InnerBgColor": {"Discriminator": "BodyColor","CustomValue": "#000000"},"Paddings": {"Top": {"ThemePadding": "ThemePaddingsLarge"},"Bottom": {"ThemePadding": "ThemePaddingsLarge"}},"FullWidth": false,"BodyRowList": [{"MultipleColumnBodyRow": {"ColumnSpacerSize": {"CustomValue": 0},"DirectionRtl": false,"Paddings": {"Left": {"CustomValue": 0},"Top": {"CustomValue": 0},"Right": {"CustomValue": 0},"Bottom": {"CustomValue": 0}},"Border": {"Left": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}},"Top": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}},"Right": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}},"Bottom": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}}},"BorderRadius": {"TopLeft": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"TopRight": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"BottomRight": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"BottomLeft": {"Discriminator": "CustomBorderRadius","CustomValue": 0}},"BgColor": {"Discriminator": "None","CustomValue": "#ffffff"},"ContainerAlign": "Center","Columns": [{"VerticalAlign": "Top","BgColor": {"Discriminator": "None","CustomValue": "#ffffff"},"Paddings": {"Top": {"CustomValue": 0},"Right": {"CustomValue": 0},"Bottom": {"CustomValue": 0},"Left": {"CustomValue": 0}},"Border": {"Left": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}},"Top": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}},"Right": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}},"Bottom": {"Width": 0,"Style": "None","Color": {"Discriminator": "Custom","CustomValue": "#FFFFFF"}}},"BorderRadius": {"TopLeft": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"TopRight": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"BottomRight": {"Discriminator": "CustomBorderRadius","CustomValue": 0},"BottomLeft": {"Discriminator": "CustomBorderRadius","CustomValue": 0}},"ContainerAlign": "Center","Elements": [{"RichText": {"ImageVerticalAlign": "Baseline","MinHeight": 1,"ContentAlign": "Center","Text": {"Content": [{"ParagraphNode": {"Content": [{"TextNode": {"Text": "Сервис создания электронных писем","TextStyle": {"ThemeName": "Heading","Style": {}}}}]}}]}}},{"Spacer": {"Height": {"ThemePadding": "ThemePaddingsLarge"},"Weight": 0,"Color": {"Discriminator": "None","CustomValue": "#FFFFFF"}}},{"RichText": {"ImageVerticalAlign": "Baseline","MinHeight": 1,"ContentAlign": "Center","Text": {"Content": [{"ParagraphNode": {"Content": [{"TextNode": {"Text": "Мы рады представить вам наш новый продукт - сервис создания электронных писем. С помощью этого удобного и интуитивно понятного инструмента, вы сможете легко создавать красивые и профессиональные письма всего в несколько простых шагов.","TextStyle": {"ThemeName": "LargeText","Style": {}}}}]}}]}}}],"Width": {"JustifyWidth": {"WidthInPixels": 560}}}]}}]}]}'
25
+ data-create-email-template-submit-url="data-create-email-template-submit-url"
26
+ data-anti-forgery-header-token-name="data-anti-forgery-header-token-name"
27
+ data-anti-forgery-header-token-value="data-anti-forgery-header-token-value"
28
+ data-anti-forgery-form-token-name="data-anti-forgery-form-token-name"
29
+ data-anti-forgery-form-token-value="data-anti-forgery-form-token-value"
30
+ data-reset-template-form-url="https://webhook.site/a85a171c-bb86-4693-9552-d209a59a7e6a"
31
+ data-exit-link="ya.ru"
32
+ ></div>
33
+ </body>
34
+ </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
@@ -30,5 +28,6 @@
30
28
  data-reset-template-form-url="https://webhook.site/a85a171c-bb86-4693-9552-d209a59a7e6a"
31
29
  data-exit-link="ya.ru"
32
30
  ></div>
31
+ <script type="module" src="/src/editAbandonedCategoryEmailTemplate.ts"></script>
33
32
  </body>
34
33
  </html>
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@retailrocketgroup/retailrocket-edit.abandoned-category-vue-email-template-render",
3
- "version": "3.0.377566",
3
+ "version": "5.0.384530",
4
4
  "private": false
5
5
  }
@@ -0,0 +1,407 @@
1
+ import 'bootstrap';
2
+ import '@easy-wizzy/retailrocket-common/index.css';
3
+ import '@easy-wizzy/core/index.css';
4
+
5
+ import { createApp } from 'vue';
6
+ import { createVuetify } from 'vuetify';
7
+ import { ClickOutside } from 'vuetify/directives';
8
+
9
+ import { createSimpleDataForm, matcherFactory } from '@easy-wizzy/core';
10
+ import { EditEmailTemplateApp } from '@easy-wizzy/core';
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 { LocaleKey } from '@easy-wizzy/core';
18
+ import type { StringExpressionEvaluatorDelegate } from '@easy-wizzy/core';
19
+
20
+ import { defaultThemeLibraryFactory } from '@easy-wizzy/theme-library';
21
+ import { defaultComponentLibraryFactory } from '@easy-wizzy/component-library';
22
+
23
+ import type { ApiMachineFetchDelegate } from '@easy-wizzy/common-app';
24
+
25
+ import { apiMachineFetchFactory } from '@easy-wizzy/common-app';
26
+ import { editEmailTemplateAppDepsFactory } from '@easy-wizzy/common-app';
27
+ import { productImageUrlBuilderExpressionEvaluatorFactory } from '@easy-wizzy/common-app';
28
+ import { wysiwygTemplateEditorBffClientFactory } from '@easy-wizzy/common-app';
29
+ import { variableSelectorDepsFactory } from '@easy-wizzy/common-app';
30
+
31
+ import { productShelfDataSourceExpressionBuilderPluginFactory } from '@easy-wizzy/retailrocket-common';
32
+ import { stringExpressionBuilderPluginFactory, richTextToolbarPluginFactory, VariableSelector } from '@easy-wizzy/retailrocket-common';
33
+
34
+ import type { ContactCustomData, GeneralStringExpressionDataSource, NextCouponFromBatchType } from '@easy-wizzy/retailrocket-common';
35
+
36
+ import type { AbandonedCategoryListExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
37
+ import type { AbandonedCategoryNumberExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
38
+ import type { AbandonedCategoryStringExpressionDataSource } from '@easy-wizzy/retailrocket-abandoned-category';
39
+
40
+ import { AbandonedCategoryProductShelfDataSourceExpressionBuilder } from '@easy-wizzy/retailrocket-abandoned-category';
41
+
42
+ import { abandonedCategoryEvaluateListExpressionDataSourceFactory } from '@/implementation/DataSources/ListDataExpressionSource/abandonedCategoryEvaluateListExpressionDataSourceFactory';
43
+ import { abandonedCategoryEvaluateNumberExpressionDataSourceFactory } from '@/implementation/DataSources/NumberExpressionDataSource/abandonedCategoryEvaluateNumberExpressionDataSourceFactory';
44
+ import { abandonedCategoryStringExpressionDataSourceEvaluatorFactory } from '@/implementation/DataSources/StringExpressionDataSource/abandonedCategoryEvaluateStringExpressionDataSource';
45
+ import { abandonedCategoryComponentLibraryFactory } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CustomComponentLibrary/abandonedCategoryComponentLibraryFactory';
46
+ import { abandonedCategoryProductShelfDataSourceExpressionBuilderDepsFactory } from '@/implementation/EmailComponentSettingsModifierPlugin/ProductShelfDataSourceExpressionBuilder/abandonedCategoryProductShelfDataSourceExpressionBuilderDepsFactory';
47
+
48
+ import { createApi as createTriggerAbandonedCategoryWysiwygTemplateEditorClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.triggerabandonedcategorywysiwygtemplateeditor';
49
+ import {
50
+ type Component,
51
+ createApi as createAddComponentLibrarySectionItemModalWindowBffClient
52
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionitemmodalwindow';
53
+ import { createApi as listExpressionDataSourceBffClientFactory } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.listexpressiondatasource';
54
+ import { createApi as createProductShelfBuilderModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.productshelfmodalwindow';
55
+ import { createApi as createThemeLibraryBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.themelibrary';
56
+ import { createApi as createComponentLibraryBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary';
57
+ import { createApi as createAddThemeLibrarySectionItemModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addthemelibrarysectionitemmodalwindow';
58
+ import { createApi as createDeleteThemeLibrarySectionItemModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.deletethemelibrarysectionitemmodalwindow';
59
+ import { createApi as createDeleteThemeLibrarySectionModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.deletethemelibrarysectionmodalwindow';
60
+ import { createApi as createEditThemeLibrarySectionItemModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.editthemelibrarysectionitemmodalwindow';
61
+ import { createApi as createAddComponentLibrarySectionModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionmodalwindow';
62
+ import { createApi as createEditComponentLibrarySectionItemModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.editcomponentlibrarysectionitemmodalwindow';
63
+ import { createApi as createDeleteComponentLibrarySectionItemModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.deletecomponentlibrarysectionitemmodalwindow';
64
+ import { createApi as createThemeLibrarySectionModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addthemelibrarysectionmodalwindow';
65
+ import { createApi as createDeleteComponentLibrarySectionModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.deletecomponentlibrarysectionmodalwindow';
66
+ import { createApi as createProductCategoryPickerModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.productcategorypickermodalwindow';
67
+ import { createApi as createProductPickerModalWindowBffClient } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.productpickermodalwindow';
68
+ import { createApi as saveFavoriteTemplate } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.savefavoritetemplatemodalwindow';
69
+
70
+ const appTagId = '#app';
71
+ const appTag = document.querySelector(appTagId);
72
+
73
+ const params = {
74
+ partnerId: appTag!.getAttribute('data-partner-id')!,
75
+ wysiwygBffProxyBaseUrl: appTag!.getAttribute('data-wysiwyg-bff-proxy-base-url')!,
76
+ wysiwygTemplateEditorBffBaseUrl: appTag!.getAttribute('data-wysiwyg-template-editor-bff-base-url')!,
77
+ antiForgeryHeaderTokenName: appTag!.getAttribute('data-anti-forgery-header-token-name')!,
78
+ antiForgeryHeaderTokenValue: appTag!.getAttribute('data-anti-forgery-header-token-value')!,
79
+ antiForgeryFormTokenName: appTag!.getAttribute('data-anti-forgery-form-token-name')!,
80
+ antiForgeryFormTokenValue: appTag!.getAttribute('data-anti-forgery-form-token-value')!,
81
+ emailTemplateJson: appTag!.getAttribute('data-email-template-json')!,
82
+ previewTemplateDataJson: appTag!.getAttribute('data-preview-template-data-json')!,
83
+ resetTemplateFormUrl: appTag!.getAttribute('data-reset-template-form-url')!,
84
+ exitLink: appTag!.getAttribute('data-exit-link')!,
85
+ localeKey: appTag!.getAttribute('data-locale-key') as LocaleKey || 'en'
86
+ };
87
+
88
+ const _apiMachineFetchFactory = (arg: {
89
+ baseUrl: string
90
+ }): ApiMachineFetchDelegate => apiMachineFetchFactory({
91
+ baseUrl: arg.baseUrl,
92
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
93
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
94
+ });
95
+
96
+ const abandonedCategoryMainPageBffClient = createTriggerAbandonedCategoryWysiwygTemplateEditorClient(
97
+ apiMachineFetchFactory({
98
+ baseUrl: params.wysiwygTemplateEditorBffBaseUrl,
99
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
100
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
101
+ })
102
+ );
103
+
104
+ const createFavoriteTemplateBffClient = saveFavoriteTemplate(
105
+ _apiMachineFetchFactory({
106
+ baseUrl: params.wysiwygBffProxyBaseUrl
107
+ })
108
+ );
109
+
110
+ const resetTemplate = (): void => {
111
+ const formData = new FormData();
112
+ formData.append(
113
+ params.antiForgeryFormTokenName,
114
+ params.antiForgeryFormTokenValue);
115
+
116
+ const form = createSimpleDataForm({
117
+ method: 'POST',
118
+ action: params.resetTemplateFormUrl,
119
+ formData: formData
120
+ });
121
+
122
+ document.body.appendChild(form);
123
+ form.submit();
124
+ };
125
+
126
+ let contactCustomData: ContactCustomData = {};
127
+ let nextCouponFromBatch: NextCouponFromBatchType = {
128
+ BatchId: ''
129
+ };
130
+
131
+ const listExpressionDataSourceBffClient = listExpressionDataSourceBffClientFactory(
132
+ _apiMachineFetchFactory({
133
+ baseUrl: params.wysiwygBffProxyBaseUrl
134
+ })
135
+ );
136
+
137
+ const listExpressionDataSourceEvaluator = abandonedCategoryEvaluateListExpressionDataSourceFactory({
138
+ partnerId: params.partnerId,
139
+ listExpressionDataSourceBffClient: listExpressionDataSourceBffClient,
140
+ customerStockId: undefined
141
+ });
142
+
143
+ const listExpressionEvaluator = listExpressionEvaluatorFactory({
144
+ listExpressionDataSourceEvaluator: listExpressionDataSourceEvaluator
145
+ });
146
+
147
+ const numberExpressionDataSourceEvaluator = abandonedCategoryEvaluateNumberExpressionDataSourceFactory();
148
+
149
+ const numberExpressionEvaluator = numberExpressionEvaluatorDelegate({
150
+ listExpressionEvaluator: listExpressionEvaluator,
151
+ numberExpressionDataSourceEvaluator: numberExpressionDataSourceEvaluator
152
+ })
153
+
154
+ const stringExpressionEvaluator: StringExpressionEvaluatorDelegate<
155
+ AbandonedCategoryListExpressionDataSource,
156
+ AbandonedCategoryNumberExpressionDataSource,
157
+ AbandonedCategoryStringExpressionDataSource
158
+ > = stringExpressionEvaluatorFactory({
159
+ listExpressionEvaluator: listExpressionEvaluator,
160
+ numberExpressionEvaluator: numberExpressionEvaluator,
161
+ stringExpressionDataSourceEvaluatorFactory: () => abandonedCategoryStringExpressionDataSourceEvaluatorFactory({
162
+ productImageUrlBuilderExpressionEvaluator: productImageUrlBuilderExpressionEvaluatorFactory({
163
+ partnerId: params.partnerId,
164
+ numberExpressionEvaluator: numberExpressionEvaluator
165
+ }),
166
+ contactCustomData: contactCustomData,
167
+ nextCouponFromBatch: nextCouponFromBatch
168
+ })
169
+ });
170
+
171
+ const expressionEvaluator = expressionEvaluatorFactory({
172
+ listExpressionEvaluator: listExpressionEvaluator,
173
+ numberExpressionEvaluator: numberExpressionEvaluator,
174
+ stringExpressionEvaluator: stringExpressionEvaluator,
175
+ dataStructBuilderExpressionEvaluatorFactory: expressionEvaluator => dataStructBuilderExpressionEvaluatorFactory({
176
+ expressionEvaluator: expressionEvaluator
177
+ })
178
+ });
179
+
180
+ const dataStructExpressionEvaluator = dataStructBuilderExpressionEvaluatorFactory({
181
+ expressionEvaluator: expressionEvaluator
182
+ });
183
+
184
+ const app = createApp(
185
+ EditEmailTemplateApp,
186
+ {
187
+ onTemplateReset: () => {
188
+ resetTemplate();
189
+ },
190
+ deps:
191
+ editEmailTemplateAppDepsFactory<
192
+ AbandonedCategoryListExpressionDataSource,
193
+ AbandonedCategoryNumberExpressionDataSource,
194
+ AbandonedCategoryStringExpressionDataSource
195
+ >({
196
+ partnerId: params.partnerId,
197
+ localeKey: params.localeKey,
198
+ exitLink: params.exitLink,
199
+ dataSourceFieldNameDelegate: ({ dataSource }) => {
200
+ return matcherFactory(dataSource as GeneralStringExpressionDataSource).Match({
201
+ StringFromContactCustomData: (customData) => customData.FieldName,
202
+ StringFromContactCustomDataWithFallback: (customDataWithFallback) => customDataWithFallback.FallbackValue,
203
+ ProductImageUrlBuilderExpression: () => 'ImageResizer',
204
+ NextCouponFromBatch: () => 'Coupon'
205
+ });
206
+ },
207
+ richTextToolbarPlugins: [
208
+ richTextToolbarPluginFactory({
209
+ richTextToolbarPluginComponent: VariableSelector,
210
+ deps: variableSelectorDepsFactory({
211
+ localeKey: params.localeKey,
212
+ stringExpressionBuilderPlugin: stringExpressionBuilderPluginFactory({
213
+ localeKey: params.localeKey
214
+ })
215
+ })
216
+ })
217
+ ],
218
+ defaultThemeLibrary: defaultThemeLibraryFactory({
219
+ localeKey: params.localeKey
220
+ }),
221
+ defaultComponentLibrary: defaultComponentLibraryFactory({
222
+ localeKey: params.localeKey
223
+ }),
224
+ saveEmailTemplate: async arg => {
225
+ const result = await abandonedCategoryMainPageBffClient
226
+ .postSaveTemplate({
227
+ body: {
228
+ partnerId: params.partnerId,
229
+ templateJson: JSON.stringify(arg.emailTemplate)
230
+ }
231
+ })
232
+
233
+ return result.status === 200
234
+ ? 'Success'
235
+ : 'Fail'
236
+ },
237
+ createFavoriteTemplate: async arg => {
238
+ const result = await createFavoriteTemplateBffClient
239
+ .postCreateFavoriteTriggerAbandonedCategoryTemplate({
240
+ body: {
241
+ partnerId: params.partnerId,
242
+ templateJson: JSON.stringify(arg.emailTemplate),
243
+ favoriteTemplateName: 'Favorite template'
244
+ }
245
+ });
246
+
247
+ return result.status === 200
248
+ ? 'Success'
249
+ : 'Fail';
250
+ },
251
+ listExpressionEvaluator: listExpressionEvaluator,
252
+ numberExpressionEvaluator: numberExpressionEvaluator,
253
+ stringExpressionEvaluator: stringExpressionEvaluator,
254
+ dataStructExpressionEvaluator: dataStructExpressionEvaluator,
255
+ expressionEvaluator: expressionEvaluator,
256
+ getComponentLibraryFactory: x => () =>
257
+ x.getComponentLibraryHttpClient(
258
+ {
259
+ body: {
260
+ partnerId: x.partnerId,
261
+ componentTypes: [
262
+ { triggerAbandonedCategory: {} },
263
+ { common: {} }
264
+ ]
265
+ }
266
+ }
267
+ )
268
+ .then(x => abandonedCategoryComponentLibraryFactory(x.body.sections)),
269
+ canProductShelfDataSourceBeConverted: () => false,
270
+ httpClientComponentFactoryDelegate: (emailComponent): Component => {
271
+ return {
272
+ triggerAbandonedCategory: {
273
+ componentJson: JSON.stringify(emailComponent)
274
+ }
275
+ }
276
+ },
277
+ stringExpressionBuilderPlugin: stringExpressionBuilderPluginFactory({
278
+ localeKey: params.localeKey
279
+ }),
280
+ emailComponentSettingsModifierPlugin: productShelfDataSourceExpressionBuilderPluginFactory({
281
+ productShelfDataSourceExpressionBuilderComponent: AbandonedCategoryProductShelfDataSourceExpressionBuilder,
282
+ deps: abandonedCategoryProductShelfDataSourceExpressionBuilderDepsFactory({
283
+ localeKey: params.localeKey,
284
+ partnerId: params.partnerId,
285
+ customerStockId: 'customerStockId',
286
+ productShelfBuilderModalWindowBffClient: createProductShelfBuilderModalWindowBffClient(
287
+ apiMachineFetchFactory({
288
+ baseUrl: params.wysiwygBffProxyBaseUrl,
289
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
290
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
291
+ })
292
+ ),
293
+ productCategoryPickerModalWindowBffClient: createProductCategoryPickerModalWindowBffClient(
294
+ apiMachineFetchFactory({
295
+ baseUrl: params.wysiwygBffProxyBaseUrl,
296
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
297
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
298
+ })
299
+ ),
300
+ productPickerModalWindowBffClient: createProductPickerModalWindowBffClient(
301
+ apiMachineFetchFactory({
302
+ baseUrl: params.wysiwygBffProxyBaseUrl,
303
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
304
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
305
+ })
306
+ )
307
+ })
308
+ }),
309
+ initialEmailTemplate: JSON.parse(params.emailTemplateJson),
310
+ wysiwygTemplateEditorBffClient: wysiwygTemplateEditorBffClientFactory({
311
+ themeLibraryBffClient: createThemeLibraryBffClient(
312
+ apiMachineFetchFactory({
313
+ baseUrl: params.wysiwygBffProxyBaseUrl,
314
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
315
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
316
+ })
317
+ ),
318
+ componentLibraryBffClient: createComponentLibraryBffClient(
319
+ apiMachineFetchFactory({
320
+ baseUrl: params.wysiwygBffProxyBaseUrl,
321
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
322
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
323
+ })
324
+ )
325
+ }),
326
+ addThemeLibrarySectionItemModalWindowBffClient: createAddThemeLibrarySectionItemModalWindowBffClient(
327
+ apiMachineFetchFactory({
328
+ baseUrl: params.wysiwygBffProxyBaseUrl,
329
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
330
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
331
+ })
332
+ ),
333
+ addComponentLibrarySectionItemModalWindowBffClient: createAddComponentLibrarySectionItemModalWindowBffClient(
334
+ apiMachineFetchFactory({
335
+ baseUrl: params.wysiwygBffProxyBaseUrl,
336
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
337
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
338
+ })
339
+ ),
340
+ deleteThemeLibrarySectionItemModalWindowBffClient: createDeleteThemeLibrarySectionItemModalWindowBffClient(
341
+ apiMachineFetchFactory({
342
+ baseUrl: params.wysiwygBffProxyBaseUrl,
343
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
344
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
345
+ })
346
+ ),
347
+ deleteThemeLibrarySectionModalWindowBffClient: createDeleteThemeLibrarySectionModalWindowBffClient(
348
+ apiMachineFetchFactory({
349
+ baseUrl: params.wysiwygBffProxyBaseUrl,
350
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
351
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
352
+ })
353
+ ),
354
+ editThemeLibrarySectionItemModalWindowBffClient: createEditThemeLibrarySectionItemModalWindowBffClient(
355
+ apiMachineFetchFactory({
356
+ baseUrl: params.wysiwygBffProxyBaseUrl,
357
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
358
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
359
+ })
360
+ ),
361
+ createComponentLibrarySectionModalWindowBffClient: createAddComponentLibrarySectionModalWindowBffClient(
362
+ apiMachineFetchFactory({
363
+ baseUrl: params.wysiwygBffProxyBaseUrl,
364
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
365
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
366
+ })
367
+ ),
368
+ editComponentLibrarySectionItemModalWindowBffClient: createEditComponentLibrarySectionItemModalWindowBffClient(
369
+ apiMachineFetchFactory({
370
+ baseUrl: params.wysiwygBffProxyBaseUrl,
371
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
372
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
373
+ })
374
+ ),
375
+ deleteComponentLibrarySectionItemModalWindowBffClient: createDeleteComponentLibrarySectionItemModalWindowBffClient(
376
+ apiMachineFetchFactory({
377
+ baseUrl: params.wysiwygBffProxyBaseUrl,
378
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
379
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
380
+ })
381
+ ),
382
+ createThemeLibrarySectionModalWindowBffClient: createThemeLibrarySectionModalWindowBffClient(
383
+ apiMachineFetchFactory({
384
+ baseUrl: params.wysiwygBffProxyBaseUrl,
385
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
386
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
387
+ })
388
+ ),
389
+ deleteComponentLibrarySectionModalWindowBffClient: createDeleteComponentLibrarySectionModalWindowBffClient(
390
+ apiMachineFetchFactory({
391
+ baseUrl: params.wysiwygBffProxyBaseUrl,
392
+ antiForgeryTokenHeaderName: params.antiForgeryHeaderTokenName,
393
+ antiForgeryTokenValue: params.antiForgeryHeaderTokenValue
394
+ })
395
+ )
396
+ })
397
+ }
398
+ );
399
+
400
+ app.use(createVuetify({
401
+ theme: false,
402
+ directives: {
403
+ ClickOutside
404
+ }
405
+ }));
406
+
407
+ app.mount(appTagId);
@@ -0,0 +1,30 @@
1
+ import type {
2
+ ComponentLibrarySectionItem,
3
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.componentlibrary/main';
4
+ import type { CustomComponentSectionItemType } from '@easy-wizzy/core';
5
+ import type {
6
+ AbandonedCategoryListExpressionDataSource
7
+ } from '@easy-wizzy/retailrocket-abandoned-category';
8
+ import type {
9
+ AbandonedCategoryNumberExpressionDataSource
10
+ } from '@easy-wizzy/retailrocket-abandoned-category';
11
+ import type {
12
+ AbandonedCategoryStringExpressionDataSource
13
+ } from '@easy-wizzy/retailrocket-abandoned-category';
14
+ import {
15
+ abandonedCategoryEmailComponentFactory
16
+ } from '@/implementation/Apps/components/WysiwygTemplateEditor/AsideMenu/ComponentLibrary/CreateComponentLibrarySectionModalWindow/abandonedCategoryEmailComponentFactory';
17
+
18
+ export const abandonedCategoryComponentSectionItemFactory = (
19
+ componentLibrarySectionItem: ComponentLibrarySectionItem,
20
+ ): CustomComponentSectionItemType<
21
+ AbandonedCategoryListExpressionDataSource,
22
+ AbandonedCategoryNumberExpressionDataSource,
23
+ AbandonedCategoryStringExpressionDataSource
24
+ > => {
25
+ return {
26
+ sectionItemId: componentLibrarySectionItem.sectionItemId,
27
+ sectionItemName: componentLibrarySectionItem.sectionItemName,
28
+ componentTemplate: abandonedCategoryEmailComponentFactory(componentLibrarySectionItem.component),
29
+ };
30
+ };
@@ -0,0 +1,26 @@
1
+ import type { EmailComponentType } from '@easy-wizzy/core';
2
+ import type {
3
+ Component,
4
+ } from '@retailrocket/retailrocket.wysiwyg.bff.v2.apiclients.addcomponentlibrarysectionitemmodalwindow/main';
5
+ import type {
6
+ AbandonedCategoryListExpressionDataSource
7
+ } from '@easy-wizzy/retailrocket-abandoned-category';
8
+ import type {
9
+ AbandonedCategoryNumberExpressionDataSource
10
+ } from '@easy-wizzy/retailrocket-abandoned-category';
11
+ import type {
12
+ AbandonedCategoryStringExpressionDataSource
13
+ } from '@easy-wizzy/retailrocket-abandoned-category';
14
+
15
+ export const abandonedCategoryEmailComponentFactory = (
16
+ component: Component
17
+ ): EmailComponentType<
18
+ AbandonedCategoryListExpressionDataSource,
19
+ AbandonedCategoryNumberExpressionDataSource,
20
+ AbandonedCategoryStringExpressionDataSource
21
+ > =>
22
+ {
23
+ return component.triggerAbandonedCategory
24
+ ? JSON.parse(component.triggerAbandonedCategory.componentJson)
25
+ : JSON.parse(component.common!.componentJson)
26
+ }