@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.
Files changed (117) hide show
  1. package/dist/@types/config/schemas.js +53 -39
  2. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +2 -2
  3. package/dist/components/organisms/header/RightSlot.vue2.js +10 -10
  4. package/dist/composables/useConfig.js +29 -27
  5. package/dist/composables/useSave.js +13 -11
  6. package/dist/config/migrator/recommendationMigrator.js +2 -2
  7. package/dist/extensions/Blocks/Recommendation/block.js +1 -1
  8. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  9. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  10. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +11 -0
  11. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  12. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +100 -0
  13. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +243 -0
  14. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  15. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +104 -0
  16. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +86 -0
  17. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +134 -0
  18. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +54 -0
  19. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +106 -0
  20. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +64 -0
  21. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +123 -0
  22. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +60 -0
  23. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +112 -0
  24. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +76 -0
  26. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  27. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  28. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextAfterControl.js → omnibusDiscount/textAfter.js} +15 -13
  29. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextBeforeControl.js → omnibusDiscount/textBefore.js} +15 -13
  30. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  31. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextAfterControl.js → omnibusPrice/textAfter.js} +16 -14
  32. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextBeforeControl.js → omnibusPrice/textBefore.js} +14 -12
  33. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +224 -0
  35. package/dist/extensions/Blocks/Recommendation/extension.js +40 -19
  36. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +5 -0
  37. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +46 -43
  38. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +20 -20
  39. package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +157 -0
  40. package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +72 -0
  41. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  42. package/dist/extensions/Blocks/Recommendation/templates/utils.js +173 -0
  43. package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +186 -0
  44. package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +251 -0
  45. package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +61 -0
  46. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  47. package/dist/extensions/Blocks/common-control.js +6 -7
  48. package/dist/extensions/Blocks/controlFactories.js +156 -122
  49. package/dist/guido.css +1 -1
  50. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +110 -113
  51. package/dist/src/@types/config/index.d.ts +2 -2
  52. package/dist/src/@types/config/schemas.d.ts +26 -0
  53. package/dist/src/@types/config/types.d.ts +7 -1
  54. package/dist/src/composables/useConfig.d.ts +6 -0
  55. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  56. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +1 -33
  57. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +11 -0
  58. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +19 -0
  59. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  60. package/dist/src/extensions/Blocks/Recommendation/controls/{cardBackgroundColorControl.d.ts → cardBackground/index.d.ts} +19 -3
  61. package/dist/src/extensions/Blocks/Recommendation/{cardCompositionControl.d.ts → controls/cardComposition/index.d.ts} +23 -7
  62. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  63. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +21 -651
  64. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +34 -0
  65. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +17 -0
  66. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +16 -0
  67. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  68. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +54 -0
  69. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +15 -0
  70. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +40 -0
  71. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +15 -0
  72. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +81 -0
  73. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  74. package/dist/src/extensions/Blocks/Recommendation/controls/{nameTextTrimControl.d.ts → name/textTrim.d.ts} +1 -1
  75. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  76. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  77. package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextAfterControl.d.ts → omnibusDiscount/textAfter.d.ts} +1 -1
  78. package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextBeforeControl.d.ts → omnibusDiscount/textBefore.d.ts} +1 -1
  79. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  80. package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusPriceTextAfterControl.d.ts → omnibusPrice/textAfter.d.ts} +1 -1
  81. package/dist/src/extensions/Blocks/Recommendation/controls/{omnibusPriceTextBeforeControl.d.ts → omnibusPrice/textBefore.d.ts} +1 -1
  82. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  83. package/dist/src/extensions/Blocks/Recommendation/controls/{spacingControl.d.ts → spacing/index.d.ts} +26 -9
  84. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  85. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -16
  86. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +8 -0
  87. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +25 -0
  88. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +18 -0
  89. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +39 -0
  90. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +45 -0
  91. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +7 -0
  92. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/migration.d.ts +23 -0
  93. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +33 -0
  94. package/dist/src/extensions/Blocks/common-control.d.ts +1 -1
  95. package/dist/src/stores/config.d.ts +147 -1
  96. package/dist/static/styles/components/button.css.js +1 -1
  97. package/dist/static/styles/customEditorStyle.css.js +25 -2
  98. package/dist/stores/config.js +7 -0
  99. package/package.json +1 -1
  100. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -193
  101. package/dist/extensions/Blocks/Recommendation/constants.js +0 -14
  102. package/dist/extensions/Blocks/Recommendation/control.js +0 -336
  103. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
  104. package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -272
  105. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
  106. package/dist/extensions/Blocks/Recommendation/controls/priceHideControl.js +0 -60
  107. package/dist/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.js +0 -160
  108. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
  109. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -184
  110. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -189
  111. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -209
  112. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -38
  113. package/dist/src/extensions/Blocks/Recommendation/controls/priceHideControl.d.ts +0 -16
  114. package/dist/src/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.d.ts +0 -50
  115. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  116. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +0 -16
  117. 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
  }, {
@@ -48,7 +48,7 @@ const o = `.control-shadow-wrapper:has(.button) {
48
48
  }
49
49
 
50
50
  .e2e-text-insert-controls .control-shadow-wrapper:not(:last-of-type) {
51
- margin-right: 16px;
51
+ margin-right: 6px;
52
52
  }
53
53
 
54
54
  .flat-white > .button {
@@ -19,8 +19,31 @@ const n = `.esd-x,
19
19
  box-shadow: none;
20
20
  }
21
21
  .ins-product-cart ue-node-actions,
22
- .ins-recommendation-v3-block-v2 .product-attribute-cell ue-node-actions,
23
- .ins-recommendation-v3-block-v2 .product-attribute-cell ue-node-panel {
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
 
@@ -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.dbde199",
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
- };