@useinsider/guido 1.0.3-beta.b722a77 → 1.0.3-beta.b8dcb37
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.
- package/dist/{src/@types → @types}/generic.d.ts +4 -0
- package/dist/components/Guido.vue.js +7 -7
- package/dist/components/Guido.vue2.js +36 -35
- package/dist/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +19 -0
- package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +28 -0
- package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +38 -0
- package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +17 -0
- package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +37 -0
- package/dist/components/organisms/extensions/recommendation/Filters.vue.js +20 -0
- package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +44 -0
- package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue.d.ts +16 -0
- package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue.js +17 -0
- package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +27 -0
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts +2 -0
- package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts +2 -0
- package/dist/composables/useStripo.js +37 -36
- package/dist/config/migrator/index.js +7 -6
- package/dist/config/migrator/recommendationMigrator.d.ts +1 -0
- package/dist/config/migrator/recommendationMigrator.js +203 -0
- package/dist/enums/extensions/recommendationBlock.d.ts +16 -0
- package/dist/enums/extensions/recommendationBlock.js +80 -0
- package/dist/extensions/Blocks/RadioButton/template.js +6 -6
- package/dist/extensions/Blocks/Recommendation/block.d.ts +11 -0
- package/dist/extensions/Blocks/Recommendation/block.js +30 -0
- package/dist/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +65 -0
- package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +335 -0
- package/dist/extensions/Blocks/Recommendation/control.d.ts +35 -0
- package/dist/extensions/Blocks/Recommendation/control.js +305 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/align.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/border.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/color.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/text.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/align.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/background.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/color.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/size.js +12 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/style.js +12 -0
- package/dist/extensions/Blocks/Recommendation/extension.js +29 -0
- package/dist/extensions/Blocks/Recommendation/iconsRegistry.d.ts +4 -0
- package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +51 -0
- package/dist/extensions/Blocks/Recommendation/recommendation.css.js +19 -0
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +72 -0
- package/dist/extensions/Blocks/Recommendation/store/recommendation.d.ts +555 -0
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +266 -0
- package/dist/extensions/Blocks/Recommendation/template.d.ts +43 -0
- package/dist/extensions/Blocks/Recommendation/template.js +314 -0
- package/dist/extensions/Blocks/Recommendation/utils/filterUtil.d.ts +7 -0
- package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +28 -0
- package/dist/extensions/Blocks/_Boilerplate/settingsPanel.d.ts +4 -0
- package/dist/extensions/Blocks/common-control.d.ts +87 -0
- package/dist/extensions/Blocks/common-control.js +184 -0
- package/dist/extensions/DynamicContent/extension.d.ts +2 -0
- package/dist/guido.css +1 -1
- package/dist/mock/api/validator.d.ts +2 -0
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +293 -97
- package/dist/services/recommendationApi.d.ts +6 -0
- package/dist/services/recommendationApi.js +43 -0
- package/dist/{src/stores → stores}/editor.d.ts +21 -0
- package/dist/stores/editor.js +2 -1
- package/dist/{src/utils → utils}/genericUtil.d.ts +1 -0
- package/dist/utils/genericUtil.js +8 -7
- package/package.json +3 -8
- package/dist/package.json.js +0 -7
- /package/dist/{src/@types → @types}/events.d.ts +0 -0
- /package/dist/{src/@types → @types}/save-as-template.d.ts +0 -0
- /package/dist/{src/App.vue.d.ts → App.vue.d.ts} +0 -0
- /package/dist/{src/components → components}/Guido.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/LoadingWrapper.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/base/Toaster.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/PreviewContainer.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/amp/AmpToggle.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +0 -0
- /package/dist/{src/components/organisms/header/LeftSlot.vue.d.ts → components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/header/MiddleSlot.vue.d.ts → components/organisms/extensions/recommendation/Filters.vue.d.ts} +0 -0
- /package/dist/{src/components → components}/organisms/header/HeaderWrapper.vue.d.ts +0 -0
- /package/dist/{src/components/organisms/header/ViewOptions.vue.d.ts → components/organisms/header/LeftSlot.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/header/version-history/RestoreButton.vue.d.ts → components/organisms/header/MiddleSlot.vue.d.ts} +0 -0
- /package/dist/{src/components → components}/organisms/header/RightSlot.vue.d.ts +0 -0
- /package/dist/{src/components/organisms/header/version-history → components/organisms/header}/ViewOptions.vue.d.ts +0 -0
- /package/dist/{src/components/organisms/onboarding/AMPOnboarding.vue.d.ts → components/organisms/header/version-history/RestoreButton.vue.d.ts} +0 -0
- /package/dist/{src/components → components}/organisms/header/version-history/VersionHistory.vue.d.ts +0 -0
- /package/dist/{src/components → components}/organisms/header/version-history/VersionHistoryItem.vue.d.ts +0 -0
- /package/dist/{src/components/organisms/onboarding/GenericOnboarding.vue.d.ts → components/organisms/header/version-history/ViewOptions.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/onboarding/NewVersionPopup.vue.d.ts → components/organisms/onboarding/AMPOnboarding.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts → components/organisms/onboarding/GenericOnboarding.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/onboarding/TextBlockOnboarding.vue.d.ts → components/organisms/onboarding/NewVersionPopup.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts → components/organisms/onboarding/OnboardingWrapper.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts → components/organisms/onboarding/TextBlockOnboarding.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts → components/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts → components/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts → components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts} +0 -0
- /package/dist/{src/components/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts → components/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts} +0 -0
- /package/dist/{src/components → components}/wrappers/WpDrawer.vue.d.ts +0 -0
- /package/dist/{src/components → components}/wrappers/WpModal.vue.d.ts +0 -0
- /package/dist/{src/composables → composables}/useActionsApi.d.ts +0 -0
- /package/dist/{src/composables → composables}/useApiExample.d.ts +0 -0
- /package/dist/{src/composables → composables}/useCodeEditorApi.d.ts +0 -0
- /package/dist/{src/composables → composables}/useConfig.d.ts +0 -0
- /package/dist/{src/composables → composables}/useCustomInterfaceAppearance.d.ts +0 -0
- /package/dist/{src/composables → composables}/useDebounce.d.ts +0 -0
- /package/dist/{src/composables → composables}/useExport.d.ts +0 -0
- /package/dist/{src/composables → composables}/useGuidoActions.d.ts +0 -0
- /package/dist/{src/composables → composables}/useHtmlCompiler.d.ts +0 -0
- /package/dist/{src/composables → composables}/useHtmlValidator.d.ts +0 -0
- /package/dist/{src/composables → composables}/useHttp.d.ts +0 -0
- /package/dist/{src/composables → composables}/usePartner.d.ts +0 -0
- /package/dist/{src/composables → composables}/usePreviewMode.d.ts +0 -0
- /package/dist/{src/composables → composables}/useProvideInject.d.ts +0 -0
- /package/dist/{src/composables → composables}/useRecommendation.d.ts +0 -0
- /package/dist/{src/composables → composables}/useResponsivePreview.d.ts +0 -0
- /package/dist/{src/composables → composables}/useSave.d.ts +0 -0
- /package/dist/{src/composables → composables}/useStripo.d.ts +0 -0
- /package/dist/{src/composables → composables}/useStripoEventHandler.d.ts +0 -0
- /package/dist/{src/composables → composables}/useToaster.d.ts +0 -0
- /package/dist/{src/composables → composables}/useTranslations.d.ts +0 -0
- /package/dist/{src/composables → composables}/useValidation.d.ts +0 -0
- /package/dist/{src/composables → composables}/useVersionHistoryApi.d.ts +0 -0
- /package/dist/{src/composables → composables}/validators/saveAsTemplate.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/htmlCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/outlookCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/recommendationCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/socialCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/unsubscribeCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/checkboxMigrator.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/couponBlockMigrator.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/index.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/radioButtonMigrator.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/unsubscribeMigrator.d.ts +0 -0
- /package/dist/{src/enums → enums}/defaults.d.ts +0 -0
- /package/dist/{src/enums → enums}/displayConditions.d.ts +0 -0
- /package/dist/{src/enums → enums}/html-validator.d.ts +0 -0
- /package/dist/{src/enums → enums}/onboarding.d.ts +0 -0
- /package/dist/{src/enums → enums}/preview.d.ts +0 -0
- /package/dist/{src/enums → enums}/recommendation.d.ts +0 -0
- /package/dist/{src/enums → enums}/toaster.d.ts +0 -0
- /package/dist/{src/enums → enums}/unsubscribe.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/control.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/control.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/template.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Unsubscribe → extensions/Blocks/Recommendation}/extension.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Unsubscribe → extensions/Blocks/Recommendation}/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/control.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/elements/preview.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/_Boilerplate → extensions/Blocks/Unsubscribe}/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/_Boilerplate → extensions/Blocks/Unsubscribe}/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/tagRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/utils/constants.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/utils/utils.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/control.d.ts +0 -0
- /package/dist/{src/extensions/DynamicContent → extensions/Blocks/_Boilerplate}/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/DynamicContent/dynamic-content-modal.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/DynamicContent/dynamic-content.d.ts +0 -0
- /package/dist/{src/library.d.ts → library.d.ts} +0 -0
- /package/dist/{src/main.d.ts → main.d.ts} +0 -0
- /package/dist/{src/mock → mock}/api/auth.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/custom-fonts.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/default-template.d.ts +0 -0
- /package/dist/{src/mock/api/template-library.d.ts → mock/api/recommendation.d.ts} +0 -0
- /package/dist/{src/mock/api/unsubscribe.d.ts → mock/api/template-library.d.ts} +0 -0
- /package/dist/{src/mock/api/user-modal-state.d.ts → mock/api/unsubscribe.d.ts} +0 -0
- /package/dist/{src/mock/api/validator.d.ts → mock/api/user-modal-state.d.ts} +0 -0
- /package/dist/{src/mock → mock}/browser.d.ts +0 -0
- /package/dist/{src/mock → mock}/handlers.d.ts +0 -0
- /package/dist/{src/services → services}/onboardingApi.d.ts +0 -0
- /package/dist/{src/services → services}/stripoApi.d.ts +0 -0
- /package/dist/{src/services → services}/templateLibraryApi.d.ts +0 -0
- /package/dist/{src/services → services}/unsubscribeApi.d.ts +0 -0
- /package/dist/{src/stores → stores}/config.d.ts +0 -0
- /package/dist/{src/stores → stores}/dynamic-content.d.ts +0 -0
- /package/dist/{src/stores → stores}/onboarding.d.ts +0 -0
- /package/dist/{src/stores → stores}/preview.d.ts +0 -0
- /package/dist/{src/stores → stores}/recommendation.d.ts +0 -0
- /package/dist/{src/stores → stores}/save-as-template.d.ts +0 -0
- /package/dist/{src/stores → stores}/toaster.d.ts +0 -0
- /package/dist/{src/stores → stores}/unsubscribe.d.ts +0 -0
- /package/dist/{src/stores → stores}/version-history.d.ts +0 -0
- /package/dist/{src/utils → utils}/arrayUtil.d.ts +0 -0
- /package/dist/{src/utils → utils}/base64.d.ts +0 -0
- /package/dist/{src/utils → utils}/dateUtil.d.ts +0 -0
- /package/dist/{src/utils → utils}/htmlCompiler.d.ts +0 -0
- /package/dist/{src/utils → utils}/templatePreparation.d.ts +0 -0
- /package/dist/{src/utils → utils}/tooltipUtils.d.ts +0 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
var b = Object.defineProperty;
|
|
2
|
+
var y = (i, e, t) => e in i ? b(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
|
|
3
|
+
var p = (i, e, t) => y(i, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
import h, { getDefaultProducts as x, prepareProductRows as C } from "../../extensions/Blocks/Recommendation/template.js";
|
|
5
|
+
class w {
|
|
6
|
+
constructor() {
|
|
7
|
+
p(this, "parser");
|
|
8
|
+
this.parser = new DOMParser();
|
|
9
|
+
}
|
|
10
|
+
migrate(e) {
|
|
11
|
+
try {
|
|
12
|
+
const t = this.parser.parseFromString(e, "text/html"), r = t.querySelectorAll(
|
|
13
|
+
'td.ins-recommendation-v3-block-1, td.product-block[esd-handler-name*="EmailRecommendationV3"]'
|
|
14
|
+
);
|
|
15
|
+
return r.length === 0 ? e : (r.forEach((o) => {
|
|
16
|
+
const n = o.getAttribute("id"), s = this.extractBgColor(o), c = this.extractTitle(o), a = this.extractProductRows(o), u = h.replace("{-{-TITLE-}-}", c).replace("{-{-PRODUCT_ROWS-}-}", a), l = this.parser.parseFromString(
|
|
17
|
+
`<table id="tempDoc"><tbody><tr>${u}</tr></tbody></table>`,
|
|
18
|
+
"text/html"
|
|
19
|
+
).querySelector(".ins-recommendation-v3-block-v2");
|
|
20
|
+
l && o.parentNode && (n && l.setAttribute("id", n), console.debug("BG Color", s), s && l.setAttribute("bgcolor", s), o.parentNode.replaceChild(l, o));
|
|
21
|
+
}), t.documentElement.outerHTML);
|
|
22
|
+
} catch (t) {
|
|
23
|
+
return console.error("RecommendationMigrator failed:", t), e;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extracts background color from old block
|
|
28
|
+
*
|
|
29
|
+
* Checks for background color in the following priority order:
|
|
30
|
+
* 1. bgcolor attribute: `<td bgcolor="#f9f9f9">`
|
|
31
|
+
* 2. style attribute: `<td style="background-color: #f9f9f9;">`
|
|
32
|
+
* @example
|
|
33
|
+
* // From bgcolor attribute
|
|
34
|
+
* <td bgcolor="#ffffff"> → "#ffffff"
|
|
35
|
+
*
|
|
36
|
+
* // From style attribute
|
|
37
|
+
* <td style="background-color: rgb(255, 255, 255);"> → "rgb(255, 255, 255)"
|
|
38
|
+
*
|
|
39
|
+
* // No background color
|
|
40
|
+
* <td> → ""
|
|
41
|
+
* @param block - The old recommendation block element
|
|
42
|
+
* @returns The background color value (hex, rgb, rgba, named color) or empty string
|
|
43
|
+
*/
|
|
44
|
+
extractBgColor(e) {
|
|
45
|
+
const t = e.getAttribute("bgcolor");
|
|
46
|
+
if (console.debug("bg block", e), console.debug("bg attr", t), t)
|
|
47
|
+
return t.trim();
|
|
48
|
+
const r = e.getAttribute("style");
|
|
49
|
+
if (console.debug("bg style", r), r) {
|
|
50
|
+
const o = r.match(/background-color\s*:\s*([^;]+)/i);
|
|
51
|
+
if (o && o[1])
|
|
52
|
+
return o[1].trim();
|
|
53
|
+
}
|
|
54
|
+
return "";
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Extracts title from old block
|
|
58
|
+
*
|
|
59
|
+
* Old structure:
|
|
60
|
+
* <td class="ext-recommendation-title" align="right">
|
|
61
|
+
* <p style="color: #93c47d; font-weight: bold; font-style: italic; font-size: 28px;">
|
|
62
|
+
* This is amazing recommendation
|
|
63
|
+
* </p>
|
|
64
|
+
* </td>
|
|
65
|
+
*
|
|
66
|
+
* New structure (output):
|
|
67
|
+
* <td class="esd-block-text es-p10t es-p10b es-p20l es-p20r" align="center">
|
|
68
|
+
* <p path="1" style="font-size: 28px; color: #333333;">
|
|
69
|
+
* <strong path="1,0">Title Text</strong>
|
|
70
|
+
* </p>
|
|
71
|
+
* </td>
|
|
72
|
+
*/
|
|
73
|
+
extractTitle(e) {
|
|
74
|
+
var l, d;
|
|
75
|
+
const t = e.querySelector(".ext-recommendation-title");
|
|
76
|
+
if (!t)
|
|
77
|
+
return this.buildTitleBlock({
|
|
78
|
+
text: "You May Also Like!",
|
|
79
|
+
isBold: !0,
|
|
80
|
+
isItalic: !1,
|
|
81
|
+
align: "center",
|
|
82
|
+
styles: "font-size: 28px; color: #333333;"
|
|
83
|
+
});
|
|
84
|
+
const r = t.querySelector("p");
|
|
85
|
+
if (!r) {
|
|
86
|
+
const m = ((l = t.textContent) == null ? void 0 : l.trim()) || "You May Also Like!", f = t.getAttribute("align") || "center";
|
|
87
|
+
return this.buildTitleBlock({
|
|
88
|
+
text: m,
|
|
89
|
+
isBold: !0,
|
|
90
|
+
isItalic: !1,
|
|
91
|
+
align: f,
|
|
92
|
+
styles: "font-size: 28px; color: #333333;"
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const o = ((d = r.textContent) == null ? void 0 : d.trim()) || "You May Also Like!", n = t.getAttribute("align") || r.getAttribute("align") || "center", s = r.getAttribute("style") || "", c = /font-weight\s*:\s*bold/i.test(s) || !!r.querySelector("b, strong"), a = /font-style\s*:\s*italic/i.test(s) || !!r.querySelector("i, em"), u = this.removeStyleProperties(s, ["font-weight", "font-style"]), g = this.convertInlineToBlock(u);
|
|
96
|
+
return this.buildTitleBlock({
|
|
97
|
+
text: o,
|
|
98
|
+
isBold: c,
|
|
99
|
+
isItalic: a,
|
|
100
|
+
align: n,
|
|
101
|
+
styles: g
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Extracts product configuration from old block and generates new product rows
|
|
106
|
+
*
|
|
107
|
+
* Strategy:
|
|
108
|
+
* 1. Extract product count and layout configuration from old block
|
|
109
|
+
* 2. Use prepareProductRows() to generate new HTML structure with default product data
|
|
110
|
+
*
|
|
111
|
+
* The migrator uses default/placeholder product data from getDefaultProducts()
|
|
112
|
+
* to populate the new block structure.
|
|
113
|
+
*/
|
|
114
|
+
extractProductRows(e) {
|
|
115
|
+
const t = this.extractProductConfig(e);
|
|
116
|
+
if (!t)
|
|
117
|
+
return console.warn("[RecommendationMigrator] No product config found, using defaults"), this.generateProductRows(6, 3);
|
|
118
|
+
const { totalCount: r, rowCount: o } = t;
|
|
119
|
+
return this.generateProductRows(r, o);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Extracts product configuration from old block
|
|
123
|
+
*
|
|
124
|
+
* Parses esd-dev-product-config attribute:
|
|
125
|
+
* {"rowCount":3,"totalCount":6,"orientation":"vertical",...}
|
|
126
|
+
*/
|
|
127
|
+
extractProductConfig(e) {
|
|
128
|
+
const t = e.getAttribute("esd-dev-product-config");
|
|
129
|
+
if (!t)
|
|
130
|
+
return null;
|
|
131
|
+
try {
|
|
132
|
+
const r = t.replace(/"/g, '"').replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"), o = JSON.parse(r);
|
|
133
|
+
return {
|
|
134
|
+
totalCount: o.totalCount ?? 6,
|
|
135
|
+
rowCount: o.rowCount ?? 3
|
|
136
|
+
};
|
|
137
|
+
} catch (r) {
|
|
138
|
+
return console.error("[RecommendationMigrator] Failed to parse product config:", r), null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Generates product rows using prepareProductRows with default product data
|
|
143
|
+
*
|
|
144
|
+
* Process:
|
|
145
|
+
* 1. Get default products from getDefaultProducts()
|
|
146
|
+
* 2. Create array of products (repeat defaults if needed to reach totalCount)
|
|
147
|
+
* 3. Call prepareProductRows() to generate HTML structure
|
|
148
|
+
*
|
|
149
|
+
* The generated HTML will contain placeholder/default product data
|
|
150
|
+
* which can be replaced with real data at runtime.
|
|
151
|
+
* @param totalCount - Total number of products (e.g., 6)
|
|
152
|
+
* @param productsPerRow - Products per row (e.g., 3)
|
|
153
|
+
*/
|
|
154
|
+
generateProductRows(e, t) {
|
|
155
|
+
const r = x(), o = [];
|
|
156
|
+
for (let n = 0; n < e; n++) {
|
|
157
|
+
const s = r[n % r.length];
|
|
158
|
+
o.push({ ...s });
|
|
159
|
+
}
|
|
160
|
+
return C(o, t);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Builds title block with proper structure
|
|
164
|
+
*/
|
|
165
|
+
buildTitleBlock(e) {
|
|
166
|
+
let t = e.text;
|
|
167
|
+
e.isBold && e.isItalic ? t = `<strong path="1,0"><em path="1,0,0">${t}</em></strong>` : e.isBold ? t = `<strong path="1,0">${t}</strong>` : e.isItalic && (t = `<em path="1,0">${t}</em>`);
|
|
168
|
+
const r = e.align ? ` align="${e.align}"` : "", o = e.styles ? ` style="${e.styles}"` : "";
|
|
169
|
+
return `
|
|
170
|
+
<td class="esd-block-text es-p10t es-p10b es-p20l es-p20r"${r}>
|
|
171
|
+
<p path="1"${o}>
|
|
172
|
+
${t}
|
|
173
|
+
</p>
|
|
174
|
+
</td>
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Removes specified style properties from a style string
|
|
179
|
+
* Helper from CheckboxMigrator
|
|
180
|
+
*/
|
|
181
|
+
removeStyleProperties(e, t) {
|
|
182
|
+
return e ? t.reduce((o, n) => {
|
|
183
|
+
const s = new RegExp(`${n}\\s*:\\s*[^;]*;?`, "gi");
|
|
184
|
+
return o.replace(s, "");
|
|
185
|
+
}, e).replace(/;\s*;/g, ";").replace(/^;|;$/g, "").trim() : "";
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Converts inline display to block display
|
|
189
|
+
* Helper from CheckboxMigrator
|
|
190
|
+
*/
|
|
191
|
+
convertInlineToBlock(e) {
|
|
192
|
+
if (!e)
|
|
193
|
+
return "";
|
|
194
|
+
let t = e.replace(/display\s*:\s*inline/gi, "display: block");
|
|
195
|
+
return /display\s*:/i.test(t) || (t = t ? `${t}; display: block` : "display: block"), t.replace(/;\s*;/g, ";").replace(/^;|;$/g, "").trim();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function P(i) {
|
|
199
|
+
return new w().migrate(i);
|
|
200
|
+
}
|
|
201
|
+
export {
|
|
202
|
+
P as migrateRecommendation
|
|
203
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TextValueObject } from '@@/Types/generic';
|
|
2
|
+
import type { RecommendationFeedItem } from '@@/Types/recommendation';
|
|
3
|
+
export declare const URLS: {
|
|
4
|
+
RECOMMENDATION_API_URL: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const RecommendationFeedSourceMaps: RecommendationFeedItem[];
|
|
7
|
+
export declare const PriceAttributes: string[];
|
|
8
|
+
export declare const currencyLocationMaps: TextValueObject[];
|
|
9
|
+
export declare const currencyOperators: TextValueObject[];
|
|
10
|
+
export declare const currencyDecimalCounts: TextValueObject[];
|
|
11
|
+
export declare const operatorOptionsForStrings: TextValueObject[];
|
|
12
|
+
export declare const operatorOptionsForArrayOfStrings: TextValueObject[];
|
|
13
|
+
export declare const operatorOptionsForNumbers: TextValueObject[];
|
|
14
|
+
export declare const operatorOptionsForDates: TextValueObject[];
|
|
15
|
+
export declare const operatorOptionsForBooleans: TextValueObject[];
|
|
16
|
+
export declare const getOperatorOptions: (type?: string) => TextValueObject[];
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const s = {
|
|
2
|
+
RECOMMENDATION_API_URL: "http://recommendationv2.api.useinsider.com"
|
|
3
|
+
}, i = [
|
|
4
|
+
{ id: 11, key: "similarViewed", name: "Viewed Together", path: "viewed-together" },
|
|
5
|
+
{ id: 12, key: "similarBought", name: "Purchased Together", path: "purchased-together" },
|
|
6
|
+
{ id: 13, key: "userBased", name: "User Based", path: "user-based" },
|
|
7
|
+
{ id: 36, key: "highestDiscounted", name: "Highest Discounted Items", path: "highest-discounted" },
|
|
8
|
+
{ id: 38, key: "manualMerchandising", name: "Manual Merchandising", path: "manual-merchandising" },
|
|
9
|
+
{ id: 39, key: "newArrivals", name: "New Arrivals", path: "new-arrivals" },
|
|
10
|
+
{ id: 40, key: "trendingProducts", name: "Trending Products", path: "trending" },
|
|
11
|
+
{ id: 46, key: "mostValuableOfPartner", name: "Most Valuable Products", path: "most-valuable" },
|
|
12
|
+
{ id: 61, key: "mostPopular", name: "Most Popular Items", path: "most-popular" },
|
|
13
|
+
{ id: 62, key: "mostPurchased", name: "Top Sellers", path: "top-sellers" }
|
|
14
|
+
], u = ["discount", "omnibus_price", "omnibus_discount", "price", "original_price"], l = [
|
|
15
|
+
{ text: "after the amount", value: "1" },
|
|
16
|
+
{ text: "before the amount", value: "0" }
|
|
17
|
+
], c = [
|
|
18
|
+
{ text: "dot(.)", value: "." },
|
|
19
|
+
{ text: "comma(,)", value: "," }
|
|
20
|
+
], d = [
|
|
21
|
+
{ text: "0", value: "0" },
|
|
22
|
+
{ text: "1", value: "1" },
|
|
23
|
+
{ text: "2", value: "2" },
|
|
24
|
+
{ text: "3", value: "3" },
|
|
25
|
+
{ text: "4", value: "4" },
|
|
26
|
+
{ text: "5", value: "5" }
|
|
27
|
+
], e = [
|
|
28
|
+
{ text: "is exactly", value: "=" },
|
|
29
|
+
{ text: "contains", value: "~" },
|
|
30
|
+
{ text: "does not contain", value: "!~" },
|
|
31
|
+
{ text: "any of", value: "||" }
|
|
32
|
+
], a = [
|
|
33
|
+
{ text: "is exactly", value: "=" },
|
|
34
|
+
{ text: "is not exactly", value: "!==" },
|
|
35
|
+
{ text: "contains", value: "~" },
|
|
36
|
+
{ text: "does not contain", value: "!~" },
|
|
37
|
+
{ text: "any of", value: "||" }
|
|
38
|
+
], r = [
|
|
39
|
+
{ text: "is equal to", value: "=" },
|
|
40
|
+
{ text: "is greater than", value: ">" },
|
|
41
|
+
{ text: "is less than", value: "<" }
|
|
42
|
+
], o = [
|
|
43
|
+
{ text: "is equal to", value: "=" },
|
|
44
|
+
{ text: "after", value: ">" },
|
|
45
|
+
{ text: "before", value: "<" }
|
|
46
|
+
], n = [
|
|
47
|
+
{ text: "true", value: "==" },
|
|
48
|
+
{ text: "false", value: "!=" }
|
|
49
|
+
], p = (t) => {
|
|
50
|
+
if (!t)
|
|
51
|
+
return e;
|
|
52
|
+
switch (t) {
|
|
53
|
+
case "Boolean":
|
|
54
|
+
return n;
|
|
55
|
+
case "Date":
|
|
56
|
+
return o;
|
|
57
|
+
case "Number":
|
|
58
|
+
return r;
|
|
59
|
+
case "String":
|
|
60
|
+
return e;
|
|
61
|
+
case "Strings":
|
|
62
|
+
return a;
|
|
63
|
+
default:
|
|
64
|
+
return e;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
u as PriceAttributes,
|
|
69
|
+
i as RecommendationFeedSourceMaps,
|
|
70
|
+
s as URLS,
|
|
71
|
+
d as currencyDecimalCounts,
|
|
72
|
+
l as currencyLocationMaps,
|
|
73
|
+
c as currencyOperators,
|
|
74
|
+
p as getOperatorOptions,
|
|
75
|
+
a as operatorOptionsForArrayOfStrings,
|
|
76
|
+
n as operatorOptionsForBooleans,
|
|
77
|
+
o as operatorOptionsForDates,
|
|
78
|
+
r as operatorOptionsForNumbers,
|
|
79
|
+
e as operatorOptionsForStrings
|
|
80
|
+
};
|
|
@@ -12,12 +12,12 @@ const e = {
|
|
|
12
12
|
<td align="left" width="70%" style="vertical-align: top;">
|
|
13
13
|
<table cellpadding="0" cellspacing="0" role="presentation" width="100%">
|
|
14
14
|
<tbody>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
<${t.BLOCK_TEXT}>
|
|
16
|
+
{-{-TITLE-}-}
|
|
17
|
+
</${t.BLOCK_TEXT}>
|
|
18
|
+
<${t.BLOCK_TEXT}>
|
|
19
|
+
{-{-DESCRIPTION-}-}
|
|
20
|
+
</${t.BLOCK_TEXT}>
|
|
21
21
|
</tbody>
|
|
22
22
|
</table>
|
|
23
23
|
</td>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Block, BlockCompositionType } from '@stripoinc/ui-editor-extensions';
|
|
2
|
+
export declare const BLOCK_ID = "recommendation-block";
|
|
3
|
+
export declare class RecommendationBlock extends Block {
|
|
4
|
+
constructor();
|
|
5
|
+
getId(): string;
|
|
6
|
+
getIcon(): string;
|
|
7
|
+
getBlockCompositionType(): BlockCompositionType;
|
|
8
|
+
getName(): string;
|
|
9
|
+
getDescription(): string;
|
|
10
|
+
getTemplate(): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Block as e, BlockCompositionType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
2
|
+
import { getDefaultTemplate as o } from "./template.js";
|
|
3
|
+
const n = "recommendation-block";
|
|
4
|
+
class m extends e {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
}
|
|
8
|
+
getId() {
|
|
9
|
+
return n;
|
|
10
|
+
}
|
|
11
|
+
getIcon() {
|
|
12
|
+
return "recommendation-icon";
|
|
13
|
+
}
|
|
14
|
+
getBlockCompositionType() {
|
|
15
|
+
return t.CONTAINER;
|
|
16
|
+
}
|
|
17
|
+
getName() {
|
|
18
|
+
return this.api.translate("Recommendation Block");
|
|
19
|
+
}
|
|
20
|
+
getDescription() {
|
|
21
|
+
return this.api.translate("Recommendation Block Title Description");
|
|
22
|
+
}
|
|
23
|
+
getTemplate() {
|
|
24
|
+
return o();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
n as BLOCK_ID,
|
|
29
|
+
m as RecommendationBlock
|
|
30
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
2
|
+
import { CommonControl } from '../common-control';
|
|
3
|
+
export declare const COMPOSITION_CONTROL_BLOCK_ID = "ui-elements-recommendation-card-composition";
|
|
4
|
+
export interface CardCompositionItem {
|
|
5
|
+
key: string;
|
|
6
|
+
label: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class RecommendationCardCompositionControl extends CommonControl {
|
|
9
|
+
private currentComposition;
|
|
10
|
+
private currentStyling;
|
|
11
|
+
getId(): string;
|
|
12
|
+
getTemplate(): string;
|
|
13
|
+
_getTextColor(label: string, name: string): string;
|
|
14
|
+
_getFontFamily(label: string, name: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Generate styling controls for Product Name element
|
|
17
|
+
*/
|
|
18
|
+
private _getProductNameStylingControls;
|
|
19
|
+
/**
|
|
20
|
+
* Generate styling controls for Product Price element
|
|
21
|
+
*/
|
|
22
|
+
private _getProductPriceStylingControls;
|
|
23
|
+
/**
|
|
24
|
+
* Generate styling controls for Product Original Price element
|
|
25
|
+
*/
|
|
26
|
+
private _getProductOriginalPriceStylingControls;
|
|
27
|
+
/**
|
|
28
|
+
* Generate styling controls for Product Button element
|
|
29
|
+
*/
|
|
30
|
+
private _getProductButtonStylingControls;
|
|
31
|
+
onRender(): void;
|
|
32
|
+
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
33
|
+
/**
|
|
34
|
+
* Initialize the composition order from the block or use defaults
|
|
35
|
+
*/
|
|
36
|
+
private _initializeComposition;
|
|
37
|
+
/**
|
|
38
|
+
* Apply the reordered composition to the block's HTML structure
|
|
39
|
+
*/
|
|
40
|
+
private _applyCompositionToBlock;
|
|
41
|
+
/**
|
|
42
|
+
* Initialize styling from stored block attributes
|
|
43
|
+
*/
|
|
44
|
+
private _initializeStyling;
|
|
45
|
+
/**
|
|
46
|
+
* Load default styling values and populate controls
|
|
47
|
+
*/
|
|
48
|
+
private _loadDefaultStyling;
|
|
49
|
+
/**
|
|
50
|
+
* Populate control values with current styling
|
|
51
|
+
*/
|
|
52
|
+
private _populateControlsWithStyling;
|
|
53
|
+
/**
|
|
54
|
+
* Update styling object for a specific element and property
|
|
55
|
+
*/
|
|
56
|
+
private _updateElementStyling;
|
|
57
|
+
/**
|
|
58
|
+
* Persist current styling to block attributes
|
|
59
|
+
*/
|
|
60
|
+
private _persistStyling;
|
|
61
|
+
/**
|
|
62
|
+
* Apply styling to a specific element in the DOM
|
|
63
|
+
*/
|
|
64
|
+
private _applyStylingToElement;
|
|
65
|
+
}
|