@useinsider/guido 3.18.1 → 3.18.2-beta.32d291d

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 (56) hide show
  1. package/README.md +21 -3
  2. package/dist/@types/config/schemas.js +59 -51
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +55 -53
  5. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +7 -7
  6. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +82 -57
  7. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js +18 -0
  8. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue2.js +25 -0
  9. package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +24 -22
  10. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +28 -24
  11. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.js +21 -0
  12. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue2.js +46 -0
  13. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +21 -0
  14. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +46 -0
  15. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +34 -34
  16. package/dist/composables/useCustomInterfaceAppearance.js +46 -42
  17. package/dist/composables/useHttp.js +24 -22
  18. package/dist/composables/useLegacyStrategyConversion.js +61 -0
  19. package/dist/enums/extensions/recommendationBlock.js +40 -31
  20. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +91 -84
  21. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +72 -28
  22. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +45 -44
  23. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +123 -58
  24. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.js +42 -0
  25. package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +7 -7
  26. package/dist/guido.css +1 -1
  27. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +29 -28
  28. package/dist/package.json.js +1 -1
  29. package/dist/services/recommendationApi.js +46 -37
  30. package/dist/services/templateLibraryApi.js +17 -14
  31. package/dist/src/@types/config/schemas.d.ts +16 -0
  32. package/dist/src/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.d.ts +2 -0
  33. package/dist/src/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.d.ts +2 -0
  34. package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +2 -0
  35. package/dist/src/composables/useConfig.d.ts +4 -0
  36. package/dist/src/composables/useLegacyStrategyConversion.d.ts +3 -0
  37. package/dist/src/enums/extensions/recommendationBlock.d.ts +5 -1
  38. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +5 -1
  39. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +2 -0
  40. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +4 -0
  41. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +82 -1
  42. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.d.ts +32 -0
  43. package/dist/src/services/recommendationApi.d.ts +2 -1
  44. package/dist/src/stores/config.d.ts +322 -0
  45. package/dist/src/stores/onboarding.d.ts +808 -10
  46. package/dist/src/utils/genericUtil.d.ts +6 -0
  47. package/dist/src/utils/liquidDynamicContent.d.ts +20 -0
  48. package/dist/static/assets/icons/filled-arrow-rising.svg.js +5 -0
  49. package/dist/static/assets/icons/line-info.svg.js +5 -0
  50. package/dist/static/styles/components/recommendation-strategy.css.js +70 -5
  51. package/dist/stores/config.js +74 -60
  52. package/dist/stores/onboarding.js +46 -36
  53. package/dist/utils/genericUtil.js +63 -54
  54. package/dist/utils/liquidDynamicContent.js +15 -0
  55. package/dist/utils/templatePreparation.js +54 -52
  56. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- import type { Orientation, Languages, Currency, NumericSeparator, FiltersResponse, Filter, RecommendationCampaignUrlValue, RecommendationProduct, RrsStrategy } from '@@/Types/recommendation';
1
+ import type { Orientation, Languages, Currency, NumericSeparator, FiltersResponse, Filter, RecommendationCampaignUrlValue, RecommendationProduct, RrsMigrationPayload, RrsMigrationTarget, RrsStrategy } from '@@/Types/recommendation';
2
2
  export interface PerBlockConfigs {
3
3
  cardsInRow: number;
4
4
  currencySettings: {
@@ -22,6 +22,7 @@ export interface PerBlockConfigs {
22
22
  shuffleProducts: boolean;
23
23
  strategy: string;
24
24
  strategyId: string;
25
+ nodeConfigVersion: number;
25
26
  textTrimming: boolean;
26
27
  unresponsive: boolean;
27
28
  size: string;
@@ -36,11 +37,23 @@ interface PerBlockState {
36
37
  filterSelectionDrawerStatus: boolean;
37
38
  assignStrategyDrawerStatus: boolean;
38
39
  removeStrategyModalStatus: boolean;
40
+ legacyStrategyUpdatedModalStatus: boolean;
39
41
  filterGroup: number;
40
42
  /** Whether initial API data (filters, algorithms, products) has been fetched for this block */
41
43
  isInitialized: boolean;
42
44
  /** Snapshot of filters taken when the drawer opens, used to revert on cancel */
43
45
  filterSnapshot: Filter[] | null;
46
+ /**
47
+ * Fingerprint of the node config as this block's state last adopted it.
48
+ *
49
+ * Lives here, not on the control, because it is a claim ABOUT this state —
50
+ * "the store already holds that node config". Held on the control it
51
+ * outlived the state it described: `removeBlockState` tore the state down
52
+ * while the fingerprint survived, so re-dropping a saved module under the
53
+ * same id skipped the re-sync and kept the defaults (SD-150347).
54
+ */
55
+ syncedConfigFingerprint: string | null;
56
+ legacyConversionLoading: boolean;
44
57
  }
45
58
  /**
46
59
  * Persisted-config subset used by `seedBlockUrlConfig` to reconstruct
@@ -57,6 +70,8 @@ export interface PerBlockUrlConfig {
57
70
  filters: Filter[];
58
71
  shuffleProducts: boolean;
59
72
  currencyCode: string;
73
+ /** The displayed symbol, which is not the code — a TRY block shows `₺`. */
74
+ currencySymbol: string;
60
75
  currencyAlignment: 'before' | 'after';
61
76
  currencyDecimalCount: number;
62
77
  currencyDecimalSeparator: string;
@@ -201,6 +216,53 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
201
216
  currentRecommendationId: number | null;
202
217
  configVersion: number;
203
218
  } & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
219
+ isLegacyStrategyBlock(): boolean;
220
+ legacyConversionLoading(state: {
221
+ recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
222
+ activePredictiveAlgorithms: number[];
223
+ languages: Languages;
224
+ currencyList: {
225
+ text: string;
226
+ value: string;
227
+ }[];
228
+ filterList: FiltersResponse;
229
+ strategies: {
230
+ [x: string]: unknown;
231
+ strategy_id: number;
232
+ name: string;
233
+ status: string;
234
+ suitable_channels: string;
235
+ size?: (number | string) | undefined;
236
+ }[];
237
+ strategiesLoading: boolean;
238
+ strategyUrlTemplates: Record<string, string>;
239
+ blockStates: Record<number, PerBlockState>;
240
+ currentRecommendationId: number | null;
241
+ configVersion: number;
242
+ } & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
243
+ legacyStrategyUpdatedModalStatus(state: {
244
+ recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
245
+ activePredictiveAlgorithms: number[];
246
+ languages: Languages;
247
+ currencyList: {
248
+ text: string;
249
+ value: string;
250
+ }[];
251
+ filterList: FiltersResponse;
252
+ strategies: {
253
+ [x: string]: unknown;
254
+ strategy_id: number;
255
+ name: string;
256
+ status: string;
257
+ suitable_channels: string;
258
+ size?: (number | string) | undefined;
259
+ }[];
260
+ strategiesLoading: boolean;
261
+ strategyUrlTemplates: Record<string, string>;
262
+ blockStates: Record<number, PerBlockState>;
263
+ currentRecommendationId: number | null;
264
+ configVersion: number;
265
+ } & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
204
266
  assignedStrategy(state: {
205
267
  recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
206
268
  activePredictiveAlgorithms: number[];
@@ -430,11 +492,24 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
430
492
  cancelFilterDrawer(): void;
431
493
  openAssignStrategyDrawer(): void;
432
494
  closeAssignStrategyDrawer(): void;
495
+ openLegacyStrategyUpdatedModal(): void;
496
+ closeLegacyStrategyUpdatedModal(): void;
433
497
  openRemoveStrategyModal(): void;
434
498
  closeRemoveStrategyModal(): void;
435
499
  fetchStrategies(): Promise<void>;
436
500
  resolveStrategyUrlTemplate(strategy: RrsStrategy, currency: string): Promise<string>;
437
501
  assignStrategy(strategy: RrsStrategy): void;
502
+ convertLegacyStrategy(payload: RrsMigrationPayload, target?: RrsMigrationTarget): Promise<string>;
503
+ /**
504
+ * Undoes the config half of a conversion whose document write never landed, so the
505
+ * panel and the drawer fall back to "Legacy Strategy" instead of showing an assignment
506
+ * the document never received.
507
+ */
508
+ revertLegacyConversion(blockId: number, previous: {
509
+ strategyId: string;
510
+ size: string;
511
+ nodeConfigVersion: number;
512
+ }): void;
438
513
  removeStrategy(): void;
439
514
  fetchRecommendationCreateData(): Promise<void>;
440
515
  fetchRecommendationFilters(): Promise<void>;
@@ -452,6 +527,12 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
452
527
  hasInvalidBlock(): boolean;
453
528
  fetchRecommendationProducts(): Promise<void>;
454
529
  _doFetchProducts(): Promise<void>;
530
+ /**
531
+ * Block-scoped counterpart of `fetchRecommendationProducts`, which only ever serves the
532
+ * selected block. The legacy conversion must refresh the products of the block that
533
+ * started it even after the user selected another one.
534
+ */
535
+ fetchStrategyProductsForBlock(blockId: number): Promise<void>;
455
536
  _doFetchStrategyProducts(blockId: number): Promise<void>;
456
537
  _setBlockProducts(blockId: number, products: RecommendationProduct[], size: number): void;
457
538
  }>;
@@ -0,0 +1,32 @@
1
+ import type { RrsMigrationPayload, RrsMigrationTarget } from '@@/Types/recommendation';
2
+ /**
3
+ * A block authored before reusable strategies: it still carries a plain feed
4
+ * configuration (compiled into a feed URL string) instead of a strategy id.
5
+ * Blocks created under RRS stamp `CURRENT_CONFIG_VERSION`, so the version is
6
+ * what separates "never converted" from "not assigned yet".
7
+ */
8
+ export declare function isLegacyStrategyConfig({ strategyId, nodeConfigVersion }: {
9
+ strategyId: string;
10
+ nodeConfigVersion: number;
11
+ }): boolean;
12
+ export declare function resolveMigrationTarget({ campaignId, templateLibraryId }: {
13
+ campaignId?: string;
14
+ templateLibraryId?: string;
15
+ }): RrsMigrationTarget;
16
+ interface MigrationInputs {
17
+ blockId: number;
18
+ url: string;
19
+ campaignId: string;
20
+ variationId: string;
21
+ strategy: string;
22
+ productIds: string[];
23
+ target: RrsMigrationTarget;
24
+ }
25
+ /**
26
+ * The server names and de-duplicates the strategy, so nothing here derives a name, and the
27
+ * filters travel inside `url` — the endpoint parses the feed URL's filter DSL itself. The two
28
+ * routes take different identity fields — the campaign one names from `campaignId`/`variationId`
29
+ * (0 for modules, which carry no numeric campaign), the template one from `templateId`.
30
+ */
31
+ export declare function buildLegacyMigrationPayload({ blockId, url, campaignId, variationId, strategy, productIds, target, }: MigrationInputs): RrsMigrationPayload;
32
+ export {};
@@ -1,4 +1,4 @@
1
- import type { InitialResponse, FiltersResponse, RecommendationProduct, RecommendationProductsParams, RrsEndpointGenerateResponse, RrsStrategy } from '@@/Types/recommendation';
1
+ import type { InitialResponse, FiltersResponse, RecommendationProduct, RecommendationProductsParams, RrsEndpointGenerateResponse, RrsMigrationPayload, RrsMigrationTarget, RrsStrategy } from '@@/Types/recommendation';
2
2
  export declare const useRecommendationApi: () => {
3
3
  fetchRecommendationCreateData: () => Promise<InitialResponse>;
4
4
  fetchRecommendationFilters: () => Promise<FiltersResponse>;
@@ -6,4 +6,5 @@ export declare const useRecommendationApi: () => {
6
6
  fetchRecommendationProductsByUrl: (url: string) => Promise<RecommendationProduct[]>;
7
7
  fetchRecommendationStrategies: () => Promise<RrsStrategy[]>;
8
8
  generateStrategyEndpoint: (strategy: RrsStrategy, currency: string) => Promise<RrsEndpointGenerateResponse | null>;
9
+ migrateLegacyStrategy: (payload: RrsMigrationPayload, target?: RrsMigrationTarget) => Promise<string>;
9
10
  };
@@ -16,6 +16,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
16
16
  templateId: string;
17
17
  userId: string;
18
18
  variationId?: string | undefined;
19
+ campaignId?: string | undefined;
20
+ templateLibraryId?: string | undefined;
19
21
  };
20
22
  partner: {
21
23
  name: string;
@@ -157,6 +159,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
157
159
  templateId: string;
158
160
  userId: string;
159
161
  variationId?: string | undefined;
162
+ campaignId?: string | undefined;
163
+ templateLibraryId?: string | undefined;
160
164
  };
161
165
  partner: {
162
166
  name: string;
@@ -298,6 +302,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
298
302
  templateId: string;
299
303
  userId: string;
300
304
  variationId?: string | undefined;
305
+ campaignId?: string | undefined;
306
+ templateLibraryId?: string | undefined;
301
307
  };
302
308
  partner: {
303
309
  name: string;
@@ -439,6 +445,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
439
445
  templateId: string;
440
446
  userId: string;
441
447
  variationId?: string | undefined;
448
+ campaignId?: string | undefined;
449
+ templateLibraryId?: string | undefined;
442
450
  };
443
451
  partner: {
444
452
  name: string;
@@ -580,6 +588,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
580
588
  templateId: string;
581
589
  userId: string;
582
590
  variationId?: string | undefined;
591
+ campaignId?: string | undefined;
592
+ templateLibraryId?: string | undefined;
583
593
  };
584
594
  partner: {
585
595
  name: string;
@@ -721,6 +731,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
721
731
  templateId: string;
722
732
  userId: string;
723
733
  variationId?: string | undefined;
734
+ campaignId?: string | undefined;
735
+ templateLibraryId?: string | undefined;
724
736
  };
725
737
  partner: {
726
738
  name: string;
@@ -862,6 +874,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
862
874
  templateId: string;
863
875
  userId: string;
864
876
  variationId?: string | undefined;
877
+ campaignId?: string | undefined;
878
+ templateLibraryId?: string | undefined;
865
879
  };
866
880
  partner: {
867
881
  name: string;
@@ -1003,6 +1017,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1003
1017
  templateId: string;
1004
1018
  userId: string;
1005
1019
  variationId?: string | undefined;
1020
+ campaignId?: string | undefined;
1021
+ templateLibraryId?: string | undefined;
1006
1022
  };
1007
1023
  partner: {
1008
1024
  name: string;
@@ -1144,6 +1160,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1144
1160
  templateId: string;
1145
1161
  userId: string;
1146
1162
  variationId?: string | undefined;
1163
+ campaignId?: string | undefined;
1164
+ templateLibraryId?: string | undefined;
1147
1165
  };
1148
1166
  partner: {
1149
1167
  name: string;
@@ -1285,6 +1303,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1285
1303
  templateId: string;
1286
1304
  userId: string;
1287
1305
  variationId?: string | undefined;
1306
+ campaignId?: string | undefined;
1307
+ templateLibraryId?: string | undefined;
1288
1308
  };
1289
1309
  partner: {
1290
1310
  name: string;
@@ -1426,6 +1446,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1426
1446
  templateId: string;
1427
1447
  userId: string;
1428
1448
  variationId?: string | undefined;
1449
+ campaignId?: string | undefined;
1450
+ templateLibraryId?: string | undefined;
1429
1451
  };
1430
1452
  partner: {
1431
1453
  name: string;
@@ -1567,6 +1589,294 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1567
1589
  templateId: string;
1568
1590
  userId: string;
1569
1591
  variationId?: string | undefined;
1592
+ campaignId?: string | undefined;
1593
+ templateLibraryId?: string | undefined;
1594
+ };
1595
+ partner: {
1596
+ name: string;
1597
+ productType: 60 | 49 | 97;
1598
+ messageType: 1 | 2;
1599
+ username: string;
1600
+ fallbackFont?: {
1601
+ name: string;
1602
+ family: string;
1603
+ } | undefined;
1604
+ };
1605
+ template: {
1606
+ html: string;
1607
+ css: string;
1608
+ preselectedDynamicContent: {
1609
+ text: string;
1610
+ value: string;
1611
+ fallback?: string | undefined;
1612
+ format?: {
1613
+ key: string;
1614
+ value: string;
1615
+ } | undefined;
1616
+ }[];
1617
+ dynamicContentList: {
1618
+ [x: string]: import("../library").DynamicContentNode[];
1619
+ };
1620
+ customFieldAttributes: string[];
1621
+ selectedUnsubscribePages: number[];
1622
+ forceRecreate: boolean;
1623
+ trackIdCounter: number;
1624
+ migration: {
1625
+ recommendationConfigs: {
1626
+ [x: string]: {
1627
+ id?: number | undefined;
1628
+ decimalCount?: string | number | undefined;
1629
+ productIds?: unknown[] | undefined;
1630
+ sendProductRequestFlag?: boolean | undefined;
1631
+ shuffleProducts?: boolean | undefined;
1632
+ filters?: unknown[] | undefined;
1633
+ currency?: string | undefined;
1634
+ currencySettings?: unknown;
1635
+ language?: string | undefined;
1636
+ strategy?: string | undefined;
1637
+ recommendedProducts?: unknown[] | undefined;
1638
+ cardsInRow?: number | undefined;
1639
+ mobileRightPadding?: number | undefined;
1640
+ mobileLeftPadding?: number | undefined;
1641
+ unresponsive?: boolean | undefined;
1642
+ orientation?: string | undefined;
1643
+ textTrimming?: boolean | undefined;
1644
+ blockType?: string | undefined;
1645
+ size?: string | number | undefined;
1646
+ verticalResponsiveness?: boolean | undefined;
1647
+ isPriceMovedToNextLine?: boolean | undefined;
1648
+ isPriceDeletedForZeroSale?: boolean | undefined;
1649
+ } & {
1650
+ [key: string]: unknown;
1651
+ };
1652
+ };
1653
+ };
1654
+ };
1655
+ editor: {
1656
+ locale: string;
1657
+ translationsPath: string;
1658
+ migrationDate: number;
1659
+ emailHeader: {
1660
+ senderName: string;
1661
+ subject: string;
1662
+ };
1663
+ savedModulesFolderName: string;
1664
+ defaultModulesFolderName: string;
1665
+ };
1666
+ ui: {
1667
+ showHeader: boolean;
1668
+ backButtonLabel?: string | undefined;
1669
+ };
1670
+ features: {
1671
+ dynamicContent: boolean;
1672
+ saveAsTemplate: boolean;
1673
+ versionHistory: boolean;
1674
+ testMessage: boolean;
1675
+ displayConditions: boolean;
1676
+ unsubscribe: boolean;
1677
+ modulesDisabled: boolean;
1678
+ liquidSyntax: boolean;
1679
+ autosave: boolean;
1680
+ allowlistEnabled: boolean;
1681
+ linkTrackingIds: boolean;
1682
+ reusableRecommendationStrategy: boolean;
1683
+ };
1684
+ blocks: {
1685
+ 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")[];
1686
+ includeCustoms: ("dynamic-content" | "checkbox-block" | "radio-button-block" | "recommendation-block" | "unsubscribe-block" | "coupon-block" | "items-block")[];
1687
+ };
1688
+ compiler: {
1689
+ customRules: ({
1690
+ type: "replace";
1691
+ search: string;
1692
+ replacement: string;
1693
+ replaceAll?: boolean | undefined;
1694
+ id: string;
1695
+ description?: string | undefined;
1696
+ priority: number;
1697
+ } | {
1698
+ type: "regex";
1699
+ pattern: string;
1700
+ replacement: string;
1701
+ flags?: string | undefined;
1702
+ id: string;
1703
+ description?: string | undefined;
1704
+ priority: number;
1705
+ } | {
1706
+ type: "remove";
1707
+ targets: string[];
1708
+ id: string;
1709
+ description?: string | undefined;
1710
+ priority: number;
1711
+ } | {
1712
+ type: "custom";
1713
+ processor: (html: string) => string;
1714
+ id: string;
1715
+ description?: string | undefined;
1716
+ priority: number;
1717
+ })[];
1718
+ ignoreDefaultRules: boolean;
1719
+ };
1720
+ callbacks: {
1721
+ externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
1722
+ };
1723
+ } | null;
1724
+ } & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
1725
+ /**
1726
+ * Get the campaign ID
1727
+ */
1728
+ campaignId: (state: {
1729
+ initialized: boolean;
1730
+ config: {
1731
+ identity: {
1732
+ templateId: string;
1733
+ userId: string;
1734
+ variationId?: string | undefined;
1735
+ campaignId?: string | undefined;
1736
+ templateLibraryId?: string | undefined;
1737
+ };
1738
+ partner: {
1739
+ name: string;
1740
+ productType: 60 | 49 | 97;
1741
+ messageType: 1 | 2;
1742
+ username: string;
1743
+ fallbackFont?: {
1744
+ name: string;
1745
+ family: string;
1746
+ } | undefined;
1747
+ };
1748
+ template: {
1749
+ html: string;
1750
+ css: string;
1751
+ preselectedDynamicContent: {
1752
+ text: string;
1753
+ value: string;
1754
+ fallback?: string | undefined;
1755
+ format?: {
1756
+ key: string;
1757
+ value: string;
1758
+ } | undefined;
1759
+ }[];
1760
+ dynamicContentList: {
1761
+ [x: string]: import("../library").DynamicContentNode[];
1762
+ };
1763
+ customFieldAttributes: string[];
1764
+ selectedUnsubscribePages: number[];
1765
+ forceRecreate: boolean;
1766
+ trackIdCounter: number;
1767
+ migration: {
1768
+ recommendationConfigs: {
1769
+ [x: string]: {
1770
+ id?: number | undefined;
1771
+ decimalCount?: string | number | undefined;
1772
+ productIds?: unknown[] | undefined;
1773
+ sendProductRequestFlag?: boolean | undefined;
1774
+ shuffleProducts?: boolean | undefined;
1775
+ filters?: unknown[] | undefined;
1776
+ currency?: string | undefined;
1777
+ currencySettings?: unknown;
1778
+ language?: string | undefined;
1779
+ strategy?: string | undefined;
1780
+ recommendedProducts?: unknown[] | undefined;
1781
+ cardsInRow?: number | undefined;
1782
+ mobileRightPadding?: number | undefined;
1783
+ mobileLeftPadding?: number | undefined;
1784
+ unresponsive?: boolean | undefined;
1785
+ orientation?: string | undefined;
1786
+ textTrimming?: boolean | undefined;
1787
+ blockType?: string | undefined;
1788
+ size?: string | number | undefined;
1789
+ verticalResponsiveness?: boolean | undefined;
1790
+ isPriceMovedToNextLine?: boolean | undefined;
1791
+ isPriceDeletedForZeroSale?: boolean | undefined;
1792
+ } & {
1793
+ [key: string]: unknown;
1794
+ };
1795
+ };
1796
+ };
1797
+ };
1798
+ editor: {
1799
+ locale: string;
1800
+ translationsPath: string;
1801
+ migrationDate: number;
1802
+ emailHeader: {
1803
+ senderName: string;
1804
+ subject: string;
1805
+ };
1806
+ savedModulesFolderName: string;
1807
+ defaultModulesFolderName: string;
1808
+ };
1809
+ ui: {
1810
+ showHeader: boolean;
1811
+ backButtonLabel?: string | undefined;
1812
+ };
1813
+ features: {
1814
+ dynamicContent: boolean;
1815
+ saveAsTemplate: boolean;
1816
+ versionHistory: boolean;
1817
+ testMessage: boolean;
1818
+ displayConditions: boolean;
1819
+ unsubscribe: boolean;
1820
+ modulesDisabled: boolean;
1821
+ liquidSyntax: boolean;
1822
+ autosave: boolean;
1823
+ allowlistEnabled: boolean;
1824
+ linkTrackingIds: boolean;
1825
+ reusableRecommendationStrategy: boolean;
1826
+ };
1827
+ blocks: {
1828
+ 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")[];
1829
+ includeCustoms: ("dynamic-content" | "checkbox-block" | "radio-button-block" | "recommendation-block" | "unsubscribe-block" | "coupon-block" | "items-block")[];
1830
+ };
1831
+ compiler: {
1832
+ customRules: ({
1833
+ type: "replace";
1834
+ search: string;
1835
+ replacement: string;
1836
+ replaceAll?: boolean | undefined;
1837
+ id: string;
1838
+ description?: string | undefined;
1839
+ priority: number;
1840
+ } | {
1841
+ type: "regex";
1842
+ pattern: string;
1843
+ replacement: string;
1844
+ flags?: string | undefined;
1845
+ id: string;
1846
+ description?: string | undefined;
1847
+ priority: number;
1848
+ } | {
1849
+ type: "remove";
1850
+ targets: string[];
1851
+ id: string;
1852
+ description?: string | undefined;
1853
+ priority: number;
1854
+ } | {
1855
+ type: "custom";
1856
+ processor: (html: string) => string;
1857
+ id: string;
1858
+ description?: string | undefined;
1859
+ priority: number;
1860
+ })[];
1861
+ ignoreDefaultRules: boolean;
1862
+ };
1863
+ callbacks: {
1864
+ externalValidation?: import("@@/Types/config").ExternalValidationHandler | undefined;
1865
+ };
1866
+ } | null;
1867
+ } & import("pinia").PiniaCustomStateProperties<ConfigStoreState>) => string;
1868
+ /**
1869
+ * Get the template-library ID of the host template
1870
+ */
1871
+ templateLibraryId: (state: {
1872
+ initialized: boolean;
1873
+ config: {
1874
+ identity: {
1875
+ templateId: string;
1876
+ userId: string;
1877
+ variationId?: string | undefined;
1878
+ campaignId?: string | undefined;
1879
+ templateLibraryId?: string | undefined;
1570
1880
  };
1571
1881
  partner: {
1572
1882
  name: string;
@@ -1708,6 +2018,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1708
2018
  templateId: string;
1709
2019
  userId: string;
1710
2020
  variationId?: string | undefined;
2021
+ campaignId?: string | undefined;
2022
+ templateLibraryId?: string | undefined;
1711
2023
  };
1712
2024
  partner: {
1713
2025
  name: string;
@@ -1849,6 +2161,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1849
2161
  templateId: string;
1850
2162
  userId: string;
1851
2163
  variationId?: string | undefined;
2164
+ campaignId?: string | undefined;
2165
+ templateLibraryId?: string | undefined;
1852
2166
  };
1853
2167
  partner: {
1854
2168
  name: string;
@@ -1990,6 +2304,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1990
2304
  templateId: string;
1991
2305
  userId: string;
1992
2306
  variationId?: string | undefined;
2307
+ campaignId?: string | undefined;
2308
+ templateLibraryId?: string | undefined;
1993
2309
  };
1994
2310
  partner: {
1995
2311
  name: string;
@@ -2131,6 +2447,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2131
2447
  templateId: string;
2132
2448
  userId: string;
2133
2449
  variationId?: string | undefined;
2450
+ campaignId?: string | undefined;
2451
+ templateLibraryId?: string | undefined;
2134
2452
  };
2135
2453
  partner: {
2136
2454
  name: string;
@@ -2272,6 +2590,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2272
2590
  templateId: string;
2273
2591
  userId: string;
2274
2592
  variationId?: string | undefined;
2593
+ campaignId?: string | undefined;
2594
+ templateLibraryId?: string | undefined;
2275
2595
  };
2276
2596
  partner: {
2277
2597
  name: string;
@@ -2415,6 +2735,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
2415
2735
  templateId: string;
2416
2736
  userId: string;
2417
2737
  variationId?: string | undefined;
2738
+ campaignId?: string | undefined;
2739
+ templateLibraryId?: string | undefined;
2418
2740
  };
2419
2741
  partner: {
2420
2742
  name: string;