@useinsider/guido 2.0.0-beta.dbde199 → 2.0.0-beta.e66a90a
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/@types/config/schemas.js +53 -39
- package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +2 -2
- package/dist/components/organisms/header/RightSlot.vue2.js +10 -10
- package/dist/composables/useConfig.js +29 -27
- package/dist/composables/useSave.js +13 -11
- package/dist/config/migrator/recommendationMigrator.js +2 -2
- package/dist/extensions/Blocks/Recommendation/block.js +1 -1
- package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
- package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
- package/dist/extensions/Blocks/Recommendation/constants/selectors.js +11 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
- package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +100 -0
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +243 -0
- package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
- package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +104 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +86 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +134 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +54 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +106 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +64 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +123 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +60 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +112 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +76 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
- package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextAfterControl.js → omnibusDiscount/textAfter.js} +15 -13
- package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextBeforeControl.js → omnibusDiscount/textBefore.js} +15 -13
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
- package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextAfterControl.js → omnibusPrice/textAfter.js} +16 -14
- package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextBeforeControl.js → omnibusPrice/textBefore.js} +14 -12
- package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
- package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +224 -0
- package/dist/extensions/Blocks/Recommendation/extension.js +40 -19
- package/dist/extensions/Blocks/Recommendation/recommendation.css.js +5 -0
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +46 -43
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +20 -20
- package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +157 -0
- package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +72 -0
- package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +173 -0
- package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +186 -0
- package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +251 -0
- package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +61 -0
- package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
- package/dist/extensions/Blocks/common-control.js +6 -7
- package/dist/extensions/Blocks/controlFactories.js +156 -122
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +110 -113
- package/dist/src/@types/config/index.d.ts +2 -2
- package/dist/src/@types/config/schemas.d.ts +26 -0
- package/dist/src/@types/config/types.d.ts +7 -1
- package/dist/src/composables/useConfig.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
- package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +1 -33
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +11 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +19 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/{cardBackgroundColorControl.d.ts → cardBackground/index.d.ts} +19 -3
- package/dist/src/extensions/Blocks/Recommendation/{cardCompositionControl.d.ts → controls/cardComposition/index.d.ts} +23 -7
- package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +21 -651
- package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +34 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +17 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +16 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +54 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +40 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +81 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/{nameTextTrimControl.d.ts → name/textTrim.d.ts} +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextAfterControl.d.ts → omnibusDiscount/textAfter.d.ts} +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextBeforeControl.d.ts → omnibusDiscount/textBefore.d.ts} +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusPriceTextAfterControl.d.ts → omnibusPrice/textAfter.d.ts} +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusPriceTextBeforeControl.d.ts → omnibusPrice/textBefore.d.ts} +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/{spacingControl.d.ts → spacing/index.d.ts} +26 -9
- package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -16
- package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +8 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +25 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +18 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +39 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +45 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +7 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/vertical/migration.d.ts +23 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +33 -0
- package/dist/src/extensions/Blocks/common-control.d.ts +1 -1
- package/dist/src/stores/config.d.ts +147 -1
- package/dist/static/styles/components/button.css.js +1 -1
- package/dist/static/styles/customEditorStyle.css.js +25 -2
- package/dist/stores/config.js +7 -0
- package/package.json +1 -1
- package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -193
- package/dist/extensions/Blocks/Recommendation/constants.js +0 -14
- package/dist/extensions/Blocks/Recommendation/control.js +0 -336
- package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
- package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -272
- package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
- package/dist/extensions/Blocks/Recommendation/controls/priceHideControl.js +0 -60
- package/dist/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.js +0 -160
- package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
- package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -184
- package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -189
- package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -209
- package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -38
- package/dist/src/extensions/Blocks/Recommendation/controls/priceHideControl.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.d.ts +0 -50
- package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -52
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GuidoConfig, GuidoConfigInput, IdentityConfig, PartnerConfig, TemplateConfig, EditorConfig, UIConfig, FeaturesConfig, BlocksConfig, CompilerConfig } from '@@/Types/config';
|
|
1
|
+
import type { GuidoConfig, GuidoConfigInput, IdentityConfig, PartnerConfig, TemplateConfig, EditorConfig, UIConfig, FeaturesConfig, BlocksConfig, CompilerConfig, CallbacksConfig } from '@@/Types/config';
|
|
2
2
|
interface ConfigStoreState {
|
|
3
3
|
/** Whether the config has been initialized */
|
|
4
4
|
initialized: boolean;
|
|
@@ -96,6 +96,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
96
96
|
})[];
|
|
97
97
|
ignoreDefaultRules: boolean;
|
|
98
98
|
};
|
|
99
|
+
callbacks: {
|
|
100
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
101
|
+
};
|
|
99
102
|
} | null;
|
|
100
103
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => IdentityConfig | null;
|
|
101
104
|
/**
|
|
@@ -188,6 +191,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
188
191
|
})[];
|
|
189
192
|
ignoreDefaultRules: boolean;
|
|
190
193
|
};
|
|
194
|
+
callbacks: {
|
|
195
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
196
|
+
};
|
|
191
197
|
} | null;
|
|
192
198
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => PartnerConfig | null;
|
|
193
199
|
/**
|
|
@@ -280,6 +286,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
280
286
|
})[];
|
|
281
287
|
ignoreDefaultRules: boolean;
|
|
282
288
|
};
|
|
289
|
+
callbacks: {
|
|
290
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
291
|
+
};
|
|
283
292
|
} | null;
|
|
284
293
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => TemplateConfig | null;
|
|
285
294
|
/**
|
|
@@ -372,6 +381,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
372
381
|
})[];
|
|
373
382
|
ignoreDefaultRules: boolean;
|
|
374
383
|
};
|
|
384
|
+
callbacks: {
|
|
385
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
386
|
+
};
|
|
375
387
|
} | null;
|
|
376
388
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => EditorConfig | null;
|
|
377
389
|
/**
|
|
@@ -464,6 +476,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
464
476
|
})[];
|
|
465
477
|
ignoreDefaultRules: boolean;
|
|
466
478
|
};
|
|
479
|
+
callbacks: {
|
|
480
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
481
|
+
};
|
|
467
482
|
} | null;
|
|
468
483
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => UIConfig | null;
|
|
469
484
|
/**
|
|
@@ -556,6 +571,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
556
571
|
})[];
|
|
557
572
|
ignoreDefaultRules: boolean;
|
|
558
573
|
};
|
|
574
|
+
callbacks: {
|
|
575
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
576
|
+
};
|
|
559
577
|
} | null;
|
|
560
578
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => FeaturesConfig | null;
|
|
561
579
|
/**
|
|
@@ -648,6 +666,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
648
666
|
})[];
|
|
649
667
|
ignoreDefaultRules: boolean;
|
|
650
668
|
};
|
|
669
|
+
callbacks: {
|
|
670
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
671
|
+
};
|
|
651
672
|
} | null;
|
|
652
673
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => BlocksConfig | null;
|
|
653
674
|
/**
|
|
@@ -740,8 +761,106 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
740
761
|
})[];
|
|
741
762
|
ignoreDefaultRules: boolean;
|
|
742
763
|
};
|
|
764
|
+
callbacks: {
|
|
765
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
766
|
+
};
|
|
743
767
|
} | null;
|
|
744
768
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => CompilerConfig | null;
|
|
769
|
+
/**
|
|
770
|
+
* Get the callbacks configuration
|
|
771
|
+
*/
|
|
772
|
+
callbacks: (state: {
|
|
773
|
+
initialized: boolean;
|
|
774
|
+
config: {
|
|
775
|
+
identity: {
|
|
776
|
+
templateId: string;
|
|
777
|
+
userId: string;
|
|
778
|
+
variationId?: string | undefined;
|
|
779
|
+
};
|
|
780
|
+
partner: {
|
|
781
|
+
name: string;
|
|
782
|
+
productType: 60 | 49 | 97;
|
|
783
|
+
messageType: 1 | 2;
|
|
784
|
+
username: string;
|
|
785
|
+
};
|
|
786
|
+
template: {
|
|
787
|
+
html: string;
|
|
788
|
+
css: string;
|
|
789
|
+
preselectedDynamicContent: {
|
|
790
|
+
text: string;
|
|
791
|
+
value: string;
|
|
792
|
+
fallback?: string | undefined;
|
|
793
|
+
format?: {
|
|
794
|
+
key: string;
|
|
795
|
+
value: string;
|
|
796
|
+
} | undefined;
|
|
797
|
+
}[];
|
|
798
|
+
selectedUnsubscribePages: number[];
|
|
799
|
+
forceRecreate: boolean;
|
|
800
|
+
};
|
|
801
|
+
editor: {
|
|
802
|
+
locale: string;
|
|
803
|
+
translationsPath: string;
|
|
804
|
+
migrationDate: number;
|
|
805
|
+
emailHeader: {
|
|
806
|
+
senderName: string;
|
|
807
|
+
subject: string;
|
|
808
|
+
};
|
|
809
|
+
};
|
|
810
|
+
ui: {
|
|
811
|
+
showHeader: boolean;
|
|
812
|
+
backButtonLabel?: string | undefined;
|
|
813
|
+
};
|
|
814
|
+
features: {
|
|
815
|
+
dynamicContent: boolean;
|
|
816
|
+
saveAsTemplate: boolean;
|
|
817
|
+
versionHistory: boolean;
|
|
818
|
+
testMessage: boolean;
|
|
819
|
+
displayConditions: boolean;
|
|
820
|
+
unsubscribe: boolean;
|
|
821
|
+
modulesDisabled: boolean;
|
|
822
|
+
};
|
|
823
|
+
blocks: {
|
|
824
|
+
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
825
|
+
includeCustoms: ("dynamic-content" | "checkbox-block" | "radio-button-block" | "recommendation-block" | "unsubscribe-block" | "coupon-block" | "items-block")[];
|
|
826
|
+
};
|
|
827
|
+
compiler: {
|
|
828
|
+
customRules: ({
|
|
829
|
+
type: "replace";
|
|
830
|
+
search: string;
|
|
831
|
+
replacement: string;
|
|
832
|
+
replaceAll?: boolean | undefined;
|
|
833
|
+
id: string;
|
|
834
|
+
description?: string | undefined;
|
|
835
|
+
priority: number;
|
|
836
|
+
} | {
|
|
837
|
+
type: "regex";
|
|
838
|
+
pattern: string;
|
|
839
|
+
replacement: string;
|
|
840
|
+
flags?: string | undefined;
|
|
841
|
+
id: string;
|
|
842
|
+
description?: string | undefined;
|
|
843
|
+
priority: number;
|
|
844
|
+
} | {
|
|
845
|
+
type: "remove";
|
|
846
|
+
targets: string[];
|
|
847
|
+
id: string;
|
|
848
|
+
description?: string | undefined;
|
|
849
|
+
priority: number;
|
|
850
|
+
} | {
|
|
851
|
+
type: "custom";
|
|
852
|
+
processor: (html: string) => string;
|
|
853
|
+
id: string;
|
|
854
|
+
description?: string | undefined;
|
|
855
|
+
priority: number;
|
|
856
|
+
})[];
|
|
857
|
+
ignoreDefaultRules: boolean;
|
|
858
|
+
};
|
|
859
|
+
callbacks: {
|
|
860
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
861
|
+
};
|
|
862
|
+
} | null;
|
|
863
|
+
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => CallbacksConfig | null;
|
|
745
864
|
/**
|
|
746
865
|
* Get the template ID
|
|
747
866
|
*/
|
|
@@ -832,6 +951,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
832
951
|
})[];
|
|
833
952
|
ignoreDefaultRules: boolean;
|
|
834
953
|
};
|
|
954
|
+
callbacks: {
|
|
955
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
956
|
+
};
|
|
835
957
|
} | null;
|
|
836
958
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
|
|
837
959
|
/**
|
|
@@ -924,6 +1046,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
924
1046
|
})[];
|
|
925
1047
|
ignoreDefaultRules: boolean;
|
|
926
1048
|
};
|
|
1049
|
+
callbacks: {
|
|
1050
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1051
|
+
};
|
|
927
1052
|
} | null;
|
|
928
1053
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
|
|
929
1054
|
/**
|
|
@@ -1016,6 +1141,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1016
1141
|
})[];
|
|
1017
1142
|
ignoreDefaultRules: boolean;
|
|
1018
1143
|
};
|
|
1144
|
+
callbacks: {
|
|
1145
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1146
|
+
};
|
|
1019
1147
|
} | null;
|
|
1020
1148
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
|
|
1021
1149
|
/**
|
|
@@ -1108,6 +1236,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1108
1236
|
})[];
|
|
1109
1237
|
ignoreDefaultRules: boolean;
|
|
1110
1238
|
};
|
|
1239
|
+
callbacks: {
|
|
1240
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1241
|
+
};
|
|
1111
1242
|
} | null;
|
|
1112
1243
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
|
|
1113
1244
|
/**
|
|
@@ -1200,6 +1331,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1200
1331
|
})[];
|
|
1201
1332
|
ignoreDefaultRules: boolean;
|
|
1202
1333
|
};
|
|
1334
|
+
callbacks: {
|
|
1335
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1336
|
+
};
|
|
1203
1337
|
} | null;
|
|
1204
1338
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => number;
|
|
1205
1339
|
/**
|
|
@@ -1292,6 +1426,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1292
1426
|
})[];
|
|
1293
1427
|
ignoreDefaultRules: boolean;
|
|
1294
1428
|
};
|
|
1429
|
+
callbacks: {
|
|
1430
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1431
|
+
};
|
|
1295
1432
|
} | null;
|
|
1296
1433
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => number;
|
|
1297
1434
|
/**
|
|
@@ -1384,6 +1521,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1384
1521
|
})[];
|
|
1385
1522
|
ignoreDefaultRules: boolean;
|
|
1386
1523
|
};
|
|
1524
|
+
callbacks: {
|
|
1525
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1526
|
+
};
|
|
1387
1527
|
} | null;
|
|
1388
1528
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
|
|
1389
1529
|
/**
|
|
@@ -1476,6 +1616,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1476
1616
|
})[];
|
|
1477
1617
|
ignoreDefaultRules: boolean;
|
|
1478
1618
|
};
|
|
1619
|
+
callbacks: {
|
|
1620
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1621
|
+
};
|
|
1479
1622
|
} | null;
|
|
1480
1623
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => boolean;
|
|
1481
1624
|
/**
|
|
@@ -1568,6 +1711,9 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1568
1711
|
})[];
|
|
1569
1712
|
ignoreDefaultRules: boolean;
|
|
1570
1713
|
};
|
|
1714
|
+
callbacks: {
|
|
1715
|
+
externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
|
|
1716
|
+
};
|
|
1571
1717
|
} | null;
|
|
1572
1718
|
} & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => (feature: keyof FeaturesConfig) => boolean;
|
|
1573
1719
|
}, {
|
|
@@ -19,8 +19,31 @@ const n = `.esd-x,
|
|
|
19
19
|
box-shadow: none;
|
|
20
20
|
}
|
|
21
21
|
.ins-product-cart ue-node-actions,
|
|
22
|
-
|
|
23
|
-
.ins-recommendation-v3-block-v2 .product-
|
|
22
|
+
/* Horizontal layout - hide for info, image, and button cells */
|
|
23
|
+
.ins-recommendation-v3-block-v2 .product-info-cell ue-node-actions,
|
|
24
|
+
.ins-recommendation-v3-block-v2 .product-info-cell ue-node-panel,
|
|
25
|
+
.ins-recommendation-v3-block-v2 .product-image-cell ue-node-actions,
|
|
26
|
+
.ins-recommendation-v3-block-v2 .product-image-cell ue-node-panel,
|
|
27
|
+
.ins-recommendation-v3-block-v2 .button-cell ue-node-actions,
|
|
28
|
+
.ins-recommendation-v3-block-v2 .button-cell ue-node-panel,
|
|
29
|
+
/* Vertical layout - hide for product-card-segment inner cells */
|
|
30
|
+
.ins-recommendation-v3-block-v2 .product-card-segment ue-node-actions,
|
|
31
|
+
.ins-recommendation-v3-block-v2 .product-card-segment ue-node-panel,
|
|
32
|
+
/* Hide for specific product attribute cells in both layouts */
|
|
33
|
+
.ins-recommendation-v3-block-v2 .product-image ue-node-actions,
|
|
34
|
+
.ins-recommendation-v3-block-v2 .product-image ue-node-panel,
|
|
35
|
+
.ins-recommendation-v3-block-v2 .product-name ue-node-actions,
|
|
36
|
+
.ins-recommendation-v3-block-v2 .product-name ue-node-panel,
|
|
37
|
+
.ins-recommendation-v3-block-v2 .product-price ue-node-actions,
|
|
38
|
+
.ins-recommendation-v3-block-v2 .product-price ue-node-panel,
|
|
39
|
+
.ins-recommendation-v3-block-v2 .product-old-price ue-node-actions,
|
|
40
|
+
.ins-recommendation-v3-block-v2 .product-old-price ue-node-panel,
|
|
41
|
+
.ins-recommendation-v3-block-v2 .product-omnibus-price ue-node-actions,
|
|
42
|
+
.ins-recommendation-v3-block-v2 .product-omnibus-price ue-node-panel,
|
|
43
|
+
.ins-recommendation-v3-block-v2 .product-omnibus-discount ue-node-actions,
|
|
44
|
+
.ins-recommendation-v3-block-v2 .product-omnibus-discount ue-node-panel,
|
|
45
|
+
.ins-recommendation-v3-block-v2 .product-button ue-node-actions,
|
|
46
|
+
.ins-recommendation-v3-block-v2 .product-button ue-node-panel {
|
|
24
47
|
display: none !important;
|
|
25
48
|
}
|
|
26
49
|
|
package/dist/stores/config.js
CHANGED
|
@@ -64,6 +64,13 @@ const s = o("guido-config", {
|
|
|
64
64
|
var e;
|
|
65
65
|
return ((e = i.config) == null ? void 0 : e.compiler) ?? null;
|
|
66
66
|
},
|
|
67
|
+
/**
|
|
68
|
+
* Get the callbacks configuration
|
|
69
|
+
*/
|
|
70
|
+
callbacks: (i) => {
|
|
71
|
+
var e;
|
|
72
|
+
return ((e = i.config) == null ? void 0 : e.callbacks) ?? null;
|
|
73
|
+
},
|
|
67
74
|
/**
|
|
68
75
|
* Get the template ID
|
|
69
76
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@useinsider/guido",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.e66a90a",
|
|
4
4
|
"description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
|
|
5
5
|
"main": "./dist/guido.umd.cjs",
|
|
6
6
|
"module": "./dist/library.js",
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import { ModificationDescription as n } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
2
|
-
import { CommonControl as b } from "../common-control.js";
|
|
3
|
-
import { ATTR_PRODUCT_IMAGE as m, ATTR_PRODUCT_NAME as y, ATTR_PRODUCT_PRICE as T, ATTR_PRODUCT_OLD_PRICE as h, ATTR_PRODUCT_OMNIBUS_PRICE as C, ATTR_PRODUCT_OMNIBUS_DISCOUNT as f, ATTR_PRODUCT_BUTTON as g } from "./constants.js";
|
|
4
|
-
const R = "ui-elements-recommendation-card-composition", l = ".recommendation-attribute-row", A = "tr.recommendation-product-row", c = "data-card-composition", a = "data-attribute-type", d = "data-visibility", s = [
|
|
5
|
-
{ key: m, label: "Product Image", visible: !0 },
|
|
6
|
-
{ key: y, label: "Product Name", visible: !0 },
|
|
7
|
-
{ key: T, label: "Product Price", visible: !0 },
|
|
8
|
-
{ key: h, label: "Product Original Price", visible: !0 },
|
|
9
|
-
{ key: C, label: "Omnibus Price", visible: !1 },
|
|
10
|
-
{ key: f, label: "Omnibus Discount", visible: !1 },
|
|
11
|
-
{ key: g, label: "Product Button", visible: !0 }
|
|
12
|
-
];
|
|
13
|
-
class N extends b {
|
|
14
|
-
getId() {
|
|
15
|
-
return R;
|
|
16
|
-
}
|
|
17
|
-
getTemplate() {
|
|
18
|
-
const t = s.map((i) => ({
|
|
19
|
-
key: i.key,
|
|
20
|
-
label: i.label,
|
|
21
|
-
content: this._createItemContent(i.label, i.key)
|
|
22
|
-
}));
|
|
23
|
-
return `
|
|
24
|
-
<div class="container">
|
|
25
|
-
${this._GuLabel({ text: "Card Element Order & Visibility" })}
|
|
26
|
-
${this._GuOrderable("cardComposition", t)}
|
|
27
|
-
</div>
|
|
28
|
-
`;
|
|
29
|
-
}
|
|
30
|
-
onRender() {
|
|
31
|
-
this._initializeComposition(), this._registerValueChangeListeners();
|
|
32
|
-
}
|
|
33
|
-
onTemplateNodeUpdated(t) {
|
|
34
|
-
super.onTemplateNodeUpdated(t), this._initializeComposition();
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Creates the HTML content for an orderable item with label and toggle
|
|
38
|
-
*/
|
|
39
|
-
_createItemContent(t, i) {
|
|
40
|
-
return `
|
|
41
|
-
<div style="display: flex; align-items: center; justify-content: space-between;
|
|
42
|
-
padding: 8px; gap: 8px;">
|
|
43
|
-
<span style="flex: 1;">${t}</span>
|
|
44
|
-
${this._GuToggle(`visibility_${i}`)}
|
|
45
|
-
</div>
|
|
46
|
-
`;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Registers event listeners for composition and visibility changes
|
|
50
|
-
*/
|
|
51
|
-
_registerValueChangeListeners() {
|
|
52
|
-
this.api.onValueChanged("cardComposition", (t) => {
|
|
53
|
-
this._applyCompositionToBlock(t);
|
|
54
|
-
}), s.forEach((t) => {
|
|
55
|
-
this.api.onValueChanged(`visibility_${t.key}`, (i) => {
|
|
56
|
-
this._applyVisibilityToBlock(t.key, i);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Initializes composition order and visibility state from the current node
|
|
62
|
-
*/
|
|
63
|
-
_initializeComposition() {
|
|
64
|
-
const t = this._readCompositionFromNode(), i = this._readVisibilityFromRows(), e = {
|
|
65
|
-
cardComposition: t,
|
|
66
|
-
...this._buildVisibilityValues(i)
|
|
67
|
-
};
|
|
68
|
-
this.api.updateValues(e);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Reads composition order from node's data-card-composition attribute
|
|
72
|
-
* Falls back to default order if attribute is not present
|
|
73
|
-
*/
|
|
74
|
-
_readCompositionFromNode() {
|
|
75
|
-
if (!this.currentNode || !("getAttribute" in this.currentNode))
|
|
76
|
-
return this._getDefaultComposition();
|
|
77
|
-
const t = this.currentNode.getAttribute(c);
|
|
78
|
-
return t ? t.split(",").filter(Boolean) : this._getDefaultComposition();
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Gets default composition order
|
|
82
|
-
*/
|
|
83
|
-
_getDefaultComposition() {
|
|
84
|
-
return s.map((t) => t.key);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Builds visibility values object from the visibility map
|
|
88
|
-
*/
|
|
89
|
-
_buildVisibilityValues(t) {
|
|
90
|
-
return s.reduce((i, e) => (i[`visibility_${e.key}`] = t[e.key] ?? !0, i), {});
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Read visibility state from individual row elements' data-visibility attributes
|
|
94
|
-
* This ensures toggles reflect the actual DOM state
|
|
95
|
-
*/
|
|
96
|
-
_readVisibilityFromRows() {
|
|
97
|
-
if (!this.currentNode)
|
|
98
|
-
return this._getDefaultVisibilities();
|
|
99
|
-
const t = Array.from(this.currentNode.querySelectorAll(l));
|
|
100
|
-
console.debug("_readVisibilityFromRows - found attribute rows:", t.length);
|
|
101
|
-
const i = this._extractVisibilityFromRows(t);
|
|
102
|
-
return this._mergeWithDefaults(i);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Returns default visibility values for all items
|
|
106
|
-
*/
|
|
107
|
-
_getDefaultVisibilities() {
|
|
108
|
-
return s.reduce((t, i) => (t[i.key] = i.visible, t), {});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Extracts visibility values from DOM nodes
|
|
112
|
-
*/
|
|
113
|
-
_extractVisibilityFromRows(t) {
|
|
114
|
-
const i = {};
|
|
115
|
-
return t.forEach((e) => {
|
|
116
|
-
if (!("getAttribute" in e))
|
|
117
|
-
return;
|
|
118
|
-
const o = e.getAttribute(a), r = e.getAttribute(d);
|
|
119
|
-
o && r !== null && (i[o] = this._parseVisibilityValue(r), console.debug(
|
|
120
|
-
`_readVisibilityFromRows - ${o}: ${i[o]} (raw: ${r})`
|
|
121
|
-
));
|
|
122
|
-
}), i;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Parses visibility value from string to boolean
|
|
126
|
-
* Accepts "1", "true" as true, everything else as false
|
|
127
|
-
*/
|
|
128
|
-
_parseVisibilityValue(t) {
|
|
129
|
-
return t === "1" || t === "true";
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Merges extracted visibilities with default values for missing keys
|
|
133
|
-
*/
|
|
134
|
-
_mergeWithDefaults(t) {
|
|
135
|
-
return s.forEach((i) => {
|
|
136
|
-
i.key in t || (t[i.key] = i.visible, console.debug(`_readVisibilityFromRows - ${i.key}: using default ${i.visible}`));
|
|
137
|
-
}), t;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Apply the reordered composition to the block's HTML structure
|
|
141
|
-
* Updates the data-card-composition attribute and reorders product attributes
|
|
142
|
-
*/
|
|
143
|
-
_applyCompositionToBlock(t) {
|
|
144
|
-
if (console.debug("_applyCompositionToBlock - composition:", t), !this.currentNode) {
|
|
145
|
-
console.debug("_applyCompositionToBlock - no current node");
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(c, t.join(",")).apply(new n("Update card composition")), this._reorderProductAttributes(t);
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Reorders attribute rows within each product row based on composition order
|
|
152
|
-
*/
|
|
153
|
-
_reorderProductAttributes(t) {
|
|
154
|
-
if (!this.currentNode)
|
|
155
|
-
return;
|
|
156
|
-
const i = this.currentNode.querySelectorAll(A);
|
|
157
|
-
if (!(i != null && i.length))
|
|
158
|
-
return;
|
|
159
|
-
const e = this.api.getDocumentModifier();
|
|
160
|
-
i.forEach((o) => {
|
|
161
|
-
const r = this._buildCompositionHtml(o, t);
|
|
162
|
-
e.modifyHtml(o).setInnerHtml(r);
|
|
163
|
-
}), e.apply(new n("Reorder product attributes"));
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Builds HTML string with attributes ordered according to composition
|
|
167
|
-
*/
|
|
168
|
-
_buildCompositionHtml(t, i) {
|
|
169
|
-
return i.reduce((e, o) => {
|
|
170
|
-
const r = t.querySelector(`${l}[${a}="${o}"]`);
|
|
171
|
-
return r && "getOuterHTML" in r ? e + r.getOuterHTML() : e;
|
|
172
|
-
}, "");
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Apply visibility changes to the block's HTML structure
|
|
176
|
-
* Updates display style and data-visibility attribute for all matching rows
|
|
177
|
-
*/
|
|
178
|
-
_applyVisibilityToBlock(t, i) {
|
|
179
|
-
if (console.debug("_applyVisibilityToBlock", t, i), !this.currentNode)
|
|
180
|
-
return;
|
|
181
|
-
const e = this.currentNode.querySelectorAll(`${l}[${a}="${t}"]`);
|
|
182
|
-
if (!(e != null && e.length))
|
|
183
|
-
return;
|
|
184
|
-
const o = i ? "table-row" : "none", r = i ? "1" : "0", p = `Set ${t} visibility to ${i ? "visible" : "hidden"}`, u = this.api.getDocumentModifier();
|
|
185
|
-
e.forEach((_) => {
|
|
186
|
-
u.modifyHtml(_).setStyle("display", o).setAttribute(d, r);
|
|
187
|
-
}), u.apply(new n(p));
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
export {
|
|
191
|
-
R as COMPOSITION_CONTROL_BLOCK_ID,
|
|
192
|
-
N as RecommendationCardCompositionControl
|
|
193
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const _ = "productImage", i = "productName", n = "productPrice", b = "productOldPrice", l = "productOmnibusPrice", N = "productOmnibusDiscount", O = "productButton", T = "data-price-inline";
|
|
2
|
-
var o = /* @__PURE__ */ ((c) => (c.BUTTON = "recommendation-block-button", c.NAME = "recommendation-block-name", c.PRICE = "recommendation-block-price", c.OLD_PRICE = "recommendation-block-old-price", c.OMNIBUS_PRICE = "recommendation-block-omnibus-price", c.OMNIBUS_DISCOUNT = "recommendation-block-omnibus-discount", c.IMAGE = "recommendation-block-image", c))(o || {}), r = /* @__PURE__ */ ((c) => (c.BUTTON_ALIGN = "recommendation-block-button-align-control", c.BUTTON_BORDER = "recommendation-block-button-border-control", c.BUTTON_BORDER_RADIUS = "recommendation-block-button-border-radius-control", c.BUTTON_COLOR = "recommendation-block-button-color-control", c.BUTTON_FIT_TO_CONTENT = "recommendation-block-button-fit-to-content-control", c.BUTTON_FONT_FAMILY = "recommendation-block-button-font-family-control", c.BUTTON_MARGINS = "recommendation-block-button-margins-control", c.BUTTON_PADDINGS = "recommendation-block-button-paddings-control", c.BUTTON_TEXT = "recommendation-block-button-text-control", c.BUTTON_TEXT_SIZE = "recommendation-block-button-text-size-control", c.BUTTON_TEXT_STYLE_AND_FONT_COLOR = "recommendation-block-button-text-style-and-font-color-control", c.NAME_ALIGN = "recommendation-block-name-align-control", c.NAME_BACKGROUND = "recommendation-block-name-background-control", c.NAME_COLOR = "recommendation-block-name-color-control", c.NAME_FONT_FAMILY = "recommendation-block-name-font-family-control", c.NAME_LINE_SPACING = "recommendation-block-name-line-spacing-control", c.NAME_PADDINGS = "recommendation-block-name-paddings-control", c.NAME_SIZE = "recommendation-block-name-size-control", c.NAME_STYLE = "recommendation-block-name-style-control", c.NAME_TEXT_TRIM = "recommendation-block-name-text-trim-control", c.PRICE_ALIGN = "recommendation-block-price-align-control", c.PRICE_BACKGROUND = "recommendation-block-price-background-control", c.PRICE_COLOR = "recommendation-block-price-color-control", c.PRICE_FONT_FAMILY = "recommendation-block-price-font-family-control", c.PRICE_HIDE_IF_SAME = "recommendation-block-price-hide-if-same-control", c.PRICE_LINE_SPACING = "recommendation-block-price-line-spacing-control", c.PRICE_PADDINGS = "recommendation-block-price-paddings-control", c.PRICE_SIZE = "recommendation-block-price-size-control", c.PRICE_STYLE = "recommendation-block-price-style-control", c.OLD_PRICE_ALIGN = "recommendation-block-old-price-align-control", c.OLD_PRICE_BACKGROUND = "recommendation-block-old-price-background-control", c.OLD_PRICE_COLOR = "recommendation-block-old-price-color-control", c.OLD_PRICE_FONT_FAMILY = "recommendation-block-old-price-font-family-control", c.OLD_PRICE_LINE_SPACING = "recommendation-block-old-price-line-spacing-control", c.OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control", c.OLD_PRICE_SIZE = "recommendation-block-old-price-size-control", c.OLD_PRICE_STYLE = "recommendation-block-old-price-style-control", c.OMNIBUS_PRICE_ALIGN = "recommendation-block-omnibus-price-align-control", c.OMNIBUS_PRICE_BACKGROUND = "recommendation-block-omnibus-price-background-control", c.OMNIBUS_PRICE_COLOR = "recommendation-block-omnibus-price-color-control", c.OMNIBUS_PRICE_FONT_FAMILY = "recommendation-block-omnibus-price-font-family-control", c.OMNIBUS_PRICE_LINE_SPACING = "recommendation-block-omnibus-price-line-spacing-control", c.OMNIBUS_PRICE_PADDINGS = "recommendation-block-omnibus-price-paddings-control", c.OMNIBUS_PRICE_SIZE = "recommendation-block-omnibus-price-size-control", c.OMNIBUS_PRICE_STYLE = "recommendation-block-omnibus-price-style-control", c.OMNIBUS_PRICE_TEXT_BEFORE = "recommendation-block-omnibus-price-text-before-control", c.OMNIBUS_PRICE_TEXT_AFTER = "recommendation-block-omnibus-price-text-after-control", c.OMNIBUS_DISCOUNT_ALIGN = "recommendation-block-omnibus-discount-align-control", c.OMNIBUS_DISCOUNT_BACKGROUND = "recommendation-block-omnibus-discount-background-control", c.OMNIBUS_DISCOUNT_COLOR = "recommendation-block-omnibus-discount-color-control", c.OMNIBUS_DISCOUNT_FONT_FAMILY = "recommendation-block-omnibus-discount-font-family-control", c.OMNIBUS_DISCOUNT_LINE_SPACING = "recommendation-block-omnibus-discount-line-spacing-control", c.OMNIBUS_DISCOUNT_PADDINGS = "recommendation-block-omnibus-discount-paddings-control", c.OMNIBUS_DISCOUNT_SIZE = "recommendation-block-omnibus-discount-size-control", c.OMNIBUS_DISCOUNT_STYLE = "recommendation-block-omnibus-discount-style-control", c.OMNIBUS_DISCOUNT_TEXT_BEFORE = "recommendation-block-omnibus-discount-text-before-control", c.OMNIBUS_DISCOUNT_TEXT_AFTER = "recommendation-block-omnibus-discount-text-after-control", c.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c.PRICE_INLINE_LAYOUT = "recommendation-block-price-inline-layout-control", c))(r || {});
|
|
3
|
-
export {
|
|
4
|
-
T as ATTR_DATA_PRICE_INLINE,
|
|
5
|
-
O as ATTR_PRODUCT_BUTTON,
|
|
6
|
-
_ as ATTR_PRODUCT_IMAGE,
|
|
7
|
-
i as ATTR_PRODUCT_NAME,
|
|
8
|
-
b as ATTR_PRODUCT_OLD_PRICE,
|
|
9
|
-
N as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
|
|
10
|
-
l as ATTR_PRODUCT_OMNIBUS_PRICE,
|
|
11
|
-
n as ATTR_PRODUCT_PRICE,
|
|
12
|
-
o as RecommendationBlockId,
|
|
13
|
-
r as RecommendationControlId
|
|
14
|
-
};
|