@useinsider/guido 2.1.0-beta.bc18abc → 2.1.0-beta.bf5c6f2

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 (65) hide show
  1. package/README.md +36 -0
  2. package/dist/@types/config/schemas.js +70 -65
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +69 -58
  5. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  6. package/dist/composables/useActionsApi.js +15 -13
  7. package/dist/composables/useBlocksConfig.js +26 -16
  8. package/dist/composables/useStripo.js +25 -23
  9. package/dist/composables/useVersionHistoryApi.js +1 -1
  10. package/dist/config/localePatch/index.js +13 -0
  11. package/dist/config/localePatch/labels.json.js +7 -0
  12. package/dist/config/localePatch/toasters.json.js +56 -0
  13. package/dist/config/localePatch/tooltips.json.js +82 -0
  14. package/dist/config/migrator/itemsBlockMigrator.js +140 -123
  15. package/dist/enums/defaults.js +8 -4
  16. package/dist/extensions/Blocks/Items/block.js +19 -28
  17. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  18. package/dist/extensions/Blocks/Items/controls/cardComposition.js +124 -85
  19. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  20. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  21. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  22. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  23. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  24. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  25. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  26. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  27. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  28. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  29. package/dist/extensions/Blocks/Items/extension.js +8 -9
  30. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  31. package/dist/extensions/Blocks/Items/template.js +181 -175
  32. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  33. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +3 -3
  34. package/dist/extensions/Blocks/common-control.js +91 -92
  35. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  36. package/dist/guido.css +1 -1
  37. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +163 -95
  38. package/dist/src/@types/config/schemas.d.ts +8 -0
  39. package/dist/src/composables/useConfig.d.ts +4 -0
  40. package/dist/src/config/localePatch/index.d.ts +144 -0
  41. package/dist/src/enums/defaults.d.ts +4 -0
  42. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  43. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  44. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  45. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  46. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  47. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  48. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  49. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  50. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  51. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  52. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  53. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  54. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  55. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  56. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  57. package/dist/src/stores/config.d.ts +36 -0
  58. package/dist/static/styles/components/notification.css.js +19 -0
  59. package/dist/static/styles/components/tools.css.js +6 -2
  60. package/dist/static/styles/components/version-history.css.js +10 -2
  61. package/dist/static/styles/components/wide-panel.css.js +18 -2
  62. package/dist/static/styles/variables.css.js +1 -0
  63. package/package.json +1 -1
  64. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  65. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Stripo Editor Translation Overrides
3
+ *
4
+ * Custom translations for Stripo editor UI elements.
5
+ * Translations are stored in JSON files for easier maintenance.
6
+ *
7
+ * Reference: https://email-static.useinsider.com/guido/{version}/assets/i18n/en.json
8
+ * @module config/localePatch
9
+ */
10
+ /**
11
+ * Combined locale patch for Stripo editor initialization.
12
+ * Merges labels, tooltips, and toasters into a single object.
13
+ */
14
+ export declare const localePatch: {
15
+ en: {
16
+ "The image has been deleted.": string;
17
+ "Aim for the drop zone!": string;
18
+ "Image processing": string;
19
+ "Can not get image from an external source.": string;
20
+ "The selected basic color cannot be added to My Palette. Please choose a different one from the color picker.": string;
21
+ "Copied to clipboard": string;
22
+ "The file {fileName} has wrong format {fileFormat}": string;
23
+ "The file {fileName} size exceeds the allowed size {maxFileSize}": string;
24
+ "Image link invalid": string;
25
+ "Image upload failed": string;
26
+ "Image upload error": string;
27
+ "Error message from video service": string;
28
+ "Error message from image processing": string;
29
+ "The AI is fine-tuning your result... Please wait! This may take up to 1 minute.": string;
30
+ "Can not complete AI request. Try again later": string;
31
+ "Http failure response for https://plugins.stripo.email/api/v1/documents/v3/documents/link: 400 OK": string;
32
+ "Http failure response for https://plugins.stripo.email/api/v1/documents/v3/documents/base64: 400 OK": string;
33
+ "AI is processing your request": string;
34
+ "Whoops, something went wrong. Our experts are working to resolve this issue. Try again later please": string;
35
+ "Unable to paste text. Limit is 256kB. Please trim it down.": string;
36
+ "Banner src included merge tag": string;
37
+ "Module deletion error": string;
38
+ "Can`t delete the module": string;
39
+ "Block action error": string;
40
+ history_revert_to_patch: string;
41
+ "There is no connection to the server. Please reload the page or click 'Reconnect' to continue.": string;
42
+ "Reconnecting...": string;
43
+ "Failed to load version history. Contact support for assistance.": string;
44
+ "Connection restored": string;
45
+ "Invalid base64 image format. Please replace the image link.": string;
46
+ "Timer update error": string;
47
+ "Cannot edit base64 images": string;
48
+ "Failed to copy URL": string;
49
+ "Error message from image service": string;
50
+ "Error message from image preload": string;
51
+ "An error has occurred. Please report the error code to support: {trace_id} and reload the editor. Also, send a bug report with email logs to the development team.": string;
52
+ "The number of requests within your session has been exceeded. Please wait.": string;
53
+ "An error has occurred. Please report the error code to support.": string;
54
+ "Warning: custom fonts": string;
55
+ "Image recovery error": string;
56
+ "Image moved to trash": string;
57
+ Recover: string;
58
+ Stop: string;
59
+ "Can`t delete the image": string;
60
+ "Can`t restore the image": string;
61
+ "Image delete error": string;
62
+ "The maximum number of users who can simultaneously work with the sheet has been exceeded. Maximum allowed number: {{max_users_per_model}}": string;
63
+ "The monthly limit of Timer basic block is reached. Please change the subscription pricing plan to activate new quotas": string;
64
+ "Add template/pre-built modules, or structures with containers": string;
65
+ "Allows uploading and editing images": string;
66
+ "Allows working on text styles, adding merge tags and lists": string;
67
+ "Allows designing buttons of any shape, size, and color": string;
68
+ "Meant to visually separate elements with a horizontal line": string;
69
+ "Offers 70+ social media icons and chats of different design styles": string;
70
+ "Helps taking users from emails to necessary pages on your site": string;
71
+ "Allows adding elements with custom code in emails": string;
72
+ "Allows applying filters to images and placing text over them": string;
73
+ "Allows setting thumbnail images & play buttons for videos": string;
74
+ "Adds a countdown to a specific date. Use the timer in emails for promotions, launches, and events": string;
75
+ "The \"AMP Carousel\" block is currently being developed. Switch to the Old version of the Editor to access the full functionality needed to continue working on this email. Please note, that all changes you have already made to this email will be saved and available in the Old version": string;
76
+ "The \"AMP Accordion\" block is currently being development. Switch to the Old version of the Editor to access the full functionality needed to continue working on this email. Please note, that all changes you have already made to this email will be saved and available in the Old version": string;
77
+ "An AMP Form block lets users collect feedback or run surveys directly in an email. It includes input fields and can be added in the Editor, allowing recipients to respond right from their inbox": string;
78
+ "Will be applied to the entire email": string;
79
+ "Background image for the entire email. Some email clients (Windows 10 Mail, Android 4.4, the Gmail app for iOS, and Android for non-Gmail accounts) do not support background images. Thus, we recommend choosing a background color for the entire email similar to the selected image as a fallback.": string;
80
+ "Repetition of the email background image. In Outlook for Windows, the image will be repeated in any case, regardless of whether this option is enabled or not. To bypass the Outlook limitation, you need to create an image in a third-party editor of the needed color and size so that it fits the entire background size, apply the required graphics to it, upload it, and center-align it in the email. The dimensions of such a background image should be at least 1,920 pixels in width, and the height should be equal to the height of the email.": string;
81
+ "The standard width of the email varies between 540-700 pixels. <a href=\"https://stripo.email/blog/email-template-size-width-height/\" target=\"_blank\" aria-label=\"Read more about the message width in our blog.\">Read more here</a>": string;
82
+ "Alignment of the email content area ": string;
83
+ "Your email will automatically adjust for smaller screens by displaying content in a single column. Side-by-side blocks will be stacked vertically": string;
84
+ "Your email will display the desktop version on mobile devices. Mobile-specific settings will be turned off in the Editor": string;
85
+ "Enable the right-to-left (RTL) text direction to build emails easily without coding for recipients using RTL scripts, such as Arabic, Hebrew, Persian, Urdu, etc.": string;
86
+ "Margins around the email message area": string;
87
+ "The background image of the stripe. The image will not be displayed in an Outlook app on Windows email clients. We recommend choosing a stripe background color similar to the selected image as a fallback": string;
88
+ "We automatically calculate the optimal indentation for your text. It depends on font size and line spacing <a href=\"https://en.wikipedia.org/wiki/Leading\" target=\"_blank\">leading<a/>": string;
89
+ "Padding in the \"Text\" block makes space around the added text.": string;
90
+ "If an email client doesn't support the non-standard font, a similar standard font will be used instead.": string;
91
+ "This option ensures the most accurate display of your buttons in MS Outlook email clients by inserting a special VML-code. When this option is activated, the email message size can be increased up to kilobyte for each added button.": string;
92
+ "Outlook for Windows does not have support for a separate button border width setting": string;
93
+ "Outlook for Windows does not have a support for the border radius property. We recommend enabling the Outlook support option.": string;
94
+ "The option \"hover button styles\" (changing colors upon a mouseover) is supported by a limited number of email clients. <a href=\"{link}\" target=\"_blank\">Learn more</a>": string;
95
+ "Button padding that makes the space around the button text": string;
96
+ "The icon inside the button will not show in Outlook 2002, 2007, 2010, 2013, 2016, 2019 on Windows.": string;
97
+ "Margins around the button": string;
98
+ "It only works with CSS styles, so it is not supported by Outlook on Windows. We recommend enabling the Support for Outlook option.": string;
99
+ "Not supported by Outlook on Windows, so we recommend enabling the Support for Outlook option in the General Settings tab.": string;
100
+ "Add content to the email, click it, and choose \u201CSave as a module\u201D. Stripes, Structures, and Containers can be saved as a module.": string;
101
+ "This feature is only supported by Yahoo! Mail, Ukr.net, AOL, Gmail, iCloud Mail, Outlook 2003, Outlook for Mac and macOS Apple Mail": string;
102
+ "The aspect ratio of the added image does not match the others. Please replace it to match the {ratio} format": string;
103
+ "Margins around the image": string;
104
+ "The image will automatically adjust to the width of the screen on mobile devices that support it": string;
105
+ "Images won't be adjusted to the width of the screen on mobile devices, which may lead to poor display of images and content": string;
106
+ "Make the image to fit to the width of a mobile screen. Please note: It only works on devices that have support for media queries.": string;
107
+ "You have the option of displaying a different image when your countdown timer expires.": string;
108
+ "Margins around the timer": string;
109
+ "Not all email clients support the selected link protocol. Check the <a href=\"https://support.stripo.email/en/articles/5332466-what-are-link-protocols-compatible-with-emails\" target=\"_blank\">compatibility guide</a> to learn more about supported clients.": string;
110
+ "This forces the accordion to only allow one expanded section at any given time. Expanding one section will cause any other open sections to close.": string;
111
+ "Outlook for Windows does not have support for dashed and dotted borders": string;
112
+ "Internal padding creates space around containers and blocks": string;
113
+ "Margins around the separator line": string;
114
+ "Use your own title and alternative text to each icon": string;
115
+ "Margins around social network icons": string;
116
+ "Makes the menu fit to the container width": string;
117
+ "Margins around elements formed by custom code": string;
118
+ "Margins around the banner": string;
119
+ "Creates an anchor for this element. Anchor links in emails are designed to make navigation easier. They help take readers to specific places in the email without the need to scroll. <a href=\"https://support.stripo.email/en/articles/3174098-how-to-apply-anchor-hyperlinks\" target=\"_blank\">Learn more</a> about how it works and how to create one with Stripo.": string;
120
+ "Include the element in the necessary version of the email, or in both. <a target=\"_blank\" href=\"https://stripo.email/blog/how-to-build-amp-emails-with-stripo/\">Learn more about \u26A1 HTML (AMP HTML).</a>": string;
121
+ "The element will be included in both MIME versions of the email: classic HTML and AMP HTML": string;
122
+ "The element will be included only in the HTML MIME version of the email message. The item will be hidden in the AMP HTML version": string;
123
+ "The element will be included only in the AMP HTML MIME version of the email message. The item will be hidden in the HTML version": string;
124
+ "This element will not be hidden in email clients which do not support media queries.": string;
125
+ "The element will be hidden on Yahoo mobile App, as well as in mobile email client which do not support media queries.": string;
126
+ "The element already hidden on Desktop. Activating this option you turning off hidden state for Desktop.": string;
127
+ "The element already hidden on Mobile. Activating this option you turning off hidden state for Mobile.": string;
128
+ "An anchor link should not exceed more than 150 characters": string;
129
+ "An alternate text should not exceed more than 255 characters": string;
130
+ "A HEX color value should not exceed more than 8 symbols": string;
131
+ "A keyword must have at least 2 characters": string;
132
+ "Button label should not exceed more than 255 characters": string;
133
+ "Link Name should not exceed more than 500 characters": string;
134
+ "Menu Item Name should not exceed more than 255 characters": string;
135
+ "It is not possible to upload more than 50 files simultaneously. If possible, please try to complete this over a few iterations.": string;
136
+ "Please enter a valid link": string;
137
+ "The image with the invalid link cannot be saved to the image gallery": string;
138
+ "The data source link is unavailable. Please, make sure there is an access to the data source.": string;
139
+ "The file should not exceed the maximum resolution of {maxImageResolution}px.": string;
140
+ "The option is disabled because was overridden in the Code editor": string;
141
+ "Global Styles & Layout": string;
142
+ "Structures & Modules": string;
143
+ };
144
+ };
@@ -9,3 +9,7 @@ export declare const TemplateTypes: {
9
9
  export declare const EditorType: number;
10
10
  export declare const MAX_DEFAULT_TEMPLATE_ID = 13;
11
11
  export declare const ProductIds: Record<string, number>;
12
+ export declare const ModuleFolderDefaults: {
13
+ readonly SAVED_MODULES: "savedModules";
14
+ readonly DEFAULT_MODULES: "defaultModules";
15
+ };
@@ -23,5 +23,4 @@ export declare class ItemsBlock extends Block {
23
23
  getTemplate(): string;
24
24
  allowInnerBlocksDND(): boolean;
25
25
  onCreated(node: ImmutableHtmlNode): void;
26
- onSelect(node: ImmutableHtmlNode): void;
27
26
  }
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.BUTTON_LINK;
5
5
  export declare class ButtonLinkControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -2,7 +2,6 @@ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
2
  import { CommonControl } from '../../common-control';
3
3
  export declare const COMPOSITION_CONTROL_BLOCK_ID = "ui-elements-items-card-composition-block";
4
4
  export declare class ItemsBlockCardCompositionControl extends CommonControl {
5
- private store;
6
5
  private visibilityState;
7
6
  getId(): string;
8
7
  getTemplate(): string;
@@ -19,10 +18,11 @@ export declare class ItemsBlockCardCompositionControl extends CommonControl {
19
18
  * If itemsType is not BROWSED_ITEMS, show quantity
20
19
  * If itemsType is BROWSED_ITEMS, hide quantity
21
20
  * and mark it as '0'
21
+ * @param syncOnly - If true, only sync local state and UI without modifying the document
22
22
  */
23
- _handleBrowsedItemsQuantity(): void;
24
- _applyVisibilityStyles(): void;
25
- _updateVisibilityAttribute(elementName: string, isVisible: boolean): void;
23
+ _handleBrowsedItemsQuantity(syncOnly?: boolean): void;
24
+ _applyVisibilityStyles(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
25
+ _updateVisibilityAttribute(elementName: string, isVisible: boolean, modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
26
26
  _listenToFormUpdates(): void;
27
27
  _onProductImageChange(value: boolean): void;
28
28
  _onProductNameChange(value: boolean): void;
@@ -37,6 +37,6 @@ export declare class ItemsBlockCardCompositionControl extends CommonControl {
37
37
  * - When price is hidden, original price cell expands to 100%
38
38
  * - When both are visible, they share 50% each
39
39
  */
40
- _updatePriceCellWidthsForVerticalLayout(): void;
40
+ _updatePriceCellWidthsForVerticalLayout(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
41
41
  _onProductButtonChange(value: boolean): void;
42
42
  }
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.IMAGE_LINK;
5
5
  export declare class ImageLinkControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.NAME_TRIMMING;
5
5
  export declare class NameTrimmingControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_CURRENCY_LOCATION;
5
5
  export declare class PriceCurrencyLocationControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_CURRENCY_SYMBOL;
5
5
  export declare class PriceCurrencySymbolControl extends CommonControl {
6
- private store;
7
6
  private originalPriceContents;
8
7
  getId(): string;
9
8
  getTemplate(): string;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_FORMATTED_PRICE;
5
5
  export declare class PriceFormattedPriceControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_HIDE_DISCOUNT;
5
5
  export declare class PriceHideDiscountControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_ORIENTATION;
5
5
  export declare class PriceOrientationControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,15 +3,10 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_SINGLE_PRICE;
5
5
  export declare class PriceSinglePriceControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
10
9
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
- /**
12
- * Syncs single price state from nodeConfig.
13
- */
14
- private _syncSinglePriceFromNodeConfig;
15
10
  _onSinglePriceChange(value: boolean): void;
16
11
  private _updatePriceBlock;
17
12
  _getSinglePrice(): string;
@@ -3,12 +3,10 @@ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
3
3
  import { CommonControl } from '../../common-control';
4
4
  export declare const CONTROL_BLOCK_ID = "ui-elements-items-block";
5
5
  export declare class ItemsBlockControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
10
9
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
- onDestroy(): void;
12
10
  _getItemsType(): string;
13
11
  _getOrientation(): string;
14
12
  _getItemInCart(): string;
@@ -18,7 +16,7 @@ export declare class ItemsBlockControl extends CommonControl {
18
16
  _initializeSelectItems(): void;
19
17
  _listenToFormUpdates(): void;
20
18
  _renderTemplate(): void;
21
- _getTemplateData(): {
19
+ _getTemplateData(itemsTypeOverride?: ProductType, itemIdOverride?: string): {
22
20
  imageSrc: string;
23
21
  name: string;
24
22
  price: string;
@@ -26,15 +24,15 @@ export declare class ItemsBlockControl extends CommonControl {
26
24
  quantity: string;
27
25
  button: string;
28
26
  };
29
- _updateImageSrc(imageSrc: string): void;
30
- _updateName(name: string): void;
31
- _updatePrice(price: string): void;
32
- _updateOriginalPrice(originalPrice: string): void;
33
- _updateQuantity(quantity: string): void;
34
- _reOrderTemplate(): void;
35
- _updateDataTypeAttributes(itemsType: ProductType): void;
36
- _updateDataNumberAttributes(itemId: string): void;
37
- _reFillTemplate(): void;
27
+ _updateImageSrc(imageSrc: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
28
+ _updateName(name: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
29
+ _updatePrice(price: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
30
+ _updateOriginalPrice(originalPrice: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
31
+ _updateQuantity(quantity: string, itemsTypeOverride: ProductType | undefined, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
32
+ _reOrderTemplate(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
33
+ _updateDataTypeAttributes(itemsType: ProductType, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
34
+ _updateDataNumberAttributes(itemId: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
35
+ _reFillTemplate(itemsType?: ProductType): void;
38
36
  _recalculateTrimming(): void;
39
37
  private _getParagraphFromBlock;
40
38
  private _escapeRegex;
@@ -66,8 +66,9 @@ export declare function getItemsBlockConfig(currentNode: ImmutableHtmlNode | und
66
66
  * @param currentNode - The current node from the control
67
67
  * @param api - The API object (ControlApi or BlockApi)
68
68
  * @param config - The configuration to set (partial update supported)
69
+ * @param modifier - Optional document modifier for batching updates
69
70
  */
70
- export declare function setItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined, api: ControlApi | BlockApi, config: Partial<ItemsBlockConfig>): void;
71
+ export declare function setItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined, api: ControlApi | BlockApi, config: Partial<ItemsBlockConfig>, modifier?: ReturnType<typeof api.getDocumentModifier>): void;
71
72
  /**
72
73
  * Gets the block instance ID from the node config.
73
74
  * @param currentNode - The current node from the control
@@ -66,14 +66,13 @@ export declare abstract class CommonControl extends Control {
66
66
  */
67
67
  protected getBlockInstanceId(): string | null;
68
68
  /**
69
- * Handles block instance change detection and syncing.
70
- * This is a helper method for controls that need to sync config when switching between block instances.
69
+ * Handles block instance change detection and UI updates.
70
+ * This is a helper method for controls that need to update UI when switching between block instances.
71
71
  * Uses Stripo V2 nodeConfig API for block instance tracking.
72
- * @param syncFunction - Function to call when block instance changes (to sync from node config)
73
- * @param updateUI - Function to call to update the UI (called both on change and when same block)
72
+ * @param updateUI - Function to call to update the UI (called on every update)
74
73
  * @returns true if block instance changed, false otherwise
75
74
  */
76
- protected handleBlockInstanceChange(syncFunction: (node: ImmutableHtmlNode) => void, updateUI: () => void): boolean;
75
+ protected handleBlockInstanceChange(updateUI: () => void): boolean;
77
76
  _GuLabel({ text, name }: LabelProps): string;
78
77
  _GuToggle(name: string): string;
79
78
  _GuSelectItem({ text, value }: {
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@stripoinc/ui-editor-extensions").Extension;
2
+ export default _default;
@@ -46,6 +46,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
46
46
  senderName: string;
47
47
  subject: string;
48
48
  };
49
+ savedModulesFolderName: string;
50
+ defaultModulesFolderName: string;
49
51
  };
50
52
  ui: {
51
53
  showHeader: boolean;
@@ -141,6 +143,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
141
143
  senderName: string;
142
144
  subject: string;
143
145
  };
146
+ savedModulesFolderName: string;
147
+ defaultModulesFolderName: string;
144
148
  };
145
149
  ui: {
146
150
  showHeader: boolean;
@@ -236,6 +240,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
236
240
  senderName: string;
237
241
  subject: string;
238
242
  };
243
+ savedModulesFolderName: string;
244
+ defaultModulesFolderName: string;
239
245
  };
240
246
  ui: {
241
247
  showHeader: boolean;
@@ -331,6 +337,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
331
337
  senderName: string;
332
338
  subject: string;
333
339
  };
340
+ savedModulesFolderName: string;
341
+ defaultModulesFolderName: string;
334
342
  };
335
343
  ui: {
336
344
  showHeader: boolean;
@@ -426,6 +434,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
426
434
  senderName: string;
427
435
  subject: string;
428
436
  };
437
+ savedModulesFolderName: string;
438
+ defaultModulesFolderName: string;
429
439
  };
430
440
  ui: {
431
441
  showHeader: boolean;
@@ -521,6 +531,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
521
531
  senderName: string;
522
532
  subject: string;
523
533
  };
534
+ savedModulesFolderName: string;
535
+ defaultModulesFolderName: string;
524
536
  };
525
537
  ui: {
526
538
  showHeader: boolean;
@@ -616,6 +628,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
616
628
  senderName: string;
617
629
  subject: string;
618
630
  };
631
+ savedModulesFolderName: string;
632
+ defaultModulesFolderName: string;
619
633
  };
620
634
  ui: {
621
635
  showHeader: boolean;
@@ -711,6 +725,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
711
725
  senderName: string;
712
726
  subject: string;
713
727
  };
728
+ savedModulesFolderName: string;
729
+ defaultModulesFolderName: string;
714
730
  };
715
731
  ui: {
716
732
  showHeader: boolean;
@@ -806,6 +822,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
806
822
  senderName: string;
807
823
  subject: string;
808
824
  };
825
+ savedModulesFolderName: string;
826
+ defaultModulesFolderName: string;
809
827
  };
810
828
  ui: {
811
829
  showHeader: boolean;
@@ -901,6 +919,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
901
919
  senderName: string;
902
920
  subject: string;
903
921
  };
922
+ savedModulesFolderName: string;
923
+ defaultModulesFolderName: string;
904
924
  };
905
925
  ui: {
906
926
  showHeader: boolean;
@@ -996,6 +1016,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
996
1016
  senderName: string;
997
1017
  subject: string;
998
1018
  };
1019
+ savedModulesFolderName: string;
1020
+ defaultModulesFolderName: string;
999
1021
  };
1000
1022
  ui: {
1001
1023
  showHeader: boolean;
@@ -1091,6 +1113,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1091
1113
  senderName: string;
1092
1114
  subject: string;
1093
1115
  };
1116
+ savedModulesFolderName: string;
1117
+ defaultModulesFolderName: string;
1094
1118
  };
1095
1119
  ui: {
1096
1120
  showHeader: boolean;
@@ -1186,6 +1210,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1186
1210
  senderName: string;
1187
1211
  subject: string;
1188
1212
  };
1213
+ savedModulesFolderName: string;
1214
+ defaultModulesFolderName: string;
1189
1215
  };
1190
1216
  ui: {
1191
1217
  showHeader: boolean;
@@ -1281,6 +1307,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1281
1307
  senderName: string;
1282
1308
  subject: string;
1283
1309
  };
1310
+ savedModulesFolderName: string;
1311
+ defaultModulesFolderName: string;
1284
1312
  };
1285
1313
  ui: {
1286
1314
  showHeader: boolean;
@@ -1376,6 +1404,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1376
1404
  senderName: string;
1377
1405
  subject: string;
1378
1406
  };
1407
+ savedModulesFolderName: string;
1408
+ defaultModulesFolderName: string;
1379
1409
  };
1380
1410
  ui: {
1381
1411
  showHeader: boolean;
@@ -1471,6 +1501,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1471
1501
  senderName: string;
1472
1502
  subject: string;
1473
1503
  };
1504
+ savedModulesFolderName: string;
1505
+ defaultModulesFolderName: string;
1474
1506
  };
1475
1507
  ui: {
1476
1508
  showHeader: boolean;
@@ -1566,6 +1598,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1566
1598
  senderName: string;
1567
1599
  subject: string;
1568
1600
  };
1601
+ savedModulesFolderName: string;
1602
+ defaultModulesFolderName: string;
1569
1603
  };
1570
1604
  ui: {
1571
1605
  showHeader: boolean;
@@ -1661,6 +1695,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1661
1695
  senderName: string;
1662
1696
  subject: string;
1663
1697
  };
1698
+ savedModulesFolderName: string;
1699
+ defaultModulesFolderName: string;
1664
1700
  };
1665
1701
  ui: {
1666
1702
  showHeader: boolean;
@@ -4,6 +4,7 @@ const n = `ue-notifications-container {
4
4
  bottom: 32px;
5
5
  top: unset;
6
6
  width: unset;
7
+ position: fixed;
7
8
  }
8
9
 
9
10
  ue-notifications-container ue-message + ue-message {
@@ -16,6 +17,24 @@ ue-notifications-container .alert-message-wrapper {
16
17
  padding: 16px 24px;
17
18
  }
18
19
 
20
+ ue-notifications-container .alert-message-wrapper.info,
21
+ ue-notifications-container .alert-message-wrapper.loader {
22
+ background-color: var(--guido-color-background-toaster-info) !important;
23
+ color: inherit;
24
+ }
25
+
26
+ .alert-message-wrapper .alert-message-main {
27
+ align-items: center;
28
+ }
29
+
30
+ ue-notifications-container ue-caption .caption {
31
+ color: var(--guido-color-white) !important;
32
+ }
33
+
34
+ ue-block-thumb-hint {
35
+ text-align: left;
36
+ }
37
+
19
38
  ue-notifications-container .alert-message-wrapper .alert-message-main .alert-message-content {
20
39
  width: calc(100% - 64px);
21
40
  }
@@ -1,4 +1,4 @@
1
- const o = `ue-emoji .emoji-tabs .active-smile-tab {
1
+ const e = `ue-emoji .emoji-tabs .active-smile-tab {
2
2
  border-color: var(--guido-color-primary-500);
3
3
  }
4
4
 
@@ -17,7 +17,11 @@ ue-insert-table .template-cell {
17
17
  border: 1px solid var(--guido-color-gray-300);
18
18
  box-shadow: var(--guido-box-shadow);
19
19
  }
20
+
21
+ .ue-popover.dark-tiny {
22
+ text-align: left !important;
23
+ }
20
24
  `;
21
25
  export {
22
- o as default
26
+ e as default
23
27
  };
@@ -1,4 +1,4 @@
1
- const o = `.patch-session-container {
1
+ const n = `.patch-session-container {
2
2
  row-gap: 16px;
3
3
  }
4
4
 
@@ -24,7 +24,15 @@ ue-vh-patch.selected .patch-wrapper {
24
24
  background-color: var(--guido-color-primary-100);
25
25
  box-shadow: 0 0 0 1px var(--guido-color-primary-500);
26
26
  }
27
+
28
+ .change-history-panel-wrapper .control-panel-header {
29
+ padding: 16px 0 16px 16px;
30
+ }
31
+
32
+ .change-history-panel-wrapper .header-control-panel-label {
33
+ grid-area: 1 / 1 / 2 / 12;
34
+ }
27
35
  `;
28
36
  export {
29
- o as default
37
+ n as default
30
38
  };
@@ -60,7 +60,6 @@ ue-control-panel,
60
60
 
61
61
  .control-panel-header {
62
62
  grid-template-columns: repeat(12, 1fr);
63
- padding: 16px 0px 16px 16px;
64
63
  }
65
64
 
66
65
  .control-panel-header > * {
@@ -94,7 +93,9 @@ ue-control-panel,
94
93
  .container.droppable-header-container ue-button:last-child {
95
94
  margin-right: 0;
96
95
  }
97
-
96
+ .container.droppable-header-container {
97
+ margin-top: 13px;
98
+ }
98
99
  .secondary-control-group {
99
100
  gap: 16px;
100
101
  }
@@ -133,6 +134,21 @@ ue-label.accent-dot:after {
133
134
  font-size: 13px;
134
135
  }
135
136
 
137
+ .e2e-container-video-size {
138
+ grid-template-columns: 1fr !important;
139
+ }
140
+
141
+ .e2e-container-video-size .control-shadow-wrapper:not(ue-button) {
142
+ display: flex;
143
+ width: 100%;
144
+ justify-content: flex-end;
145
+ background-color: transparent !important;
146
+ }
147
+
148
+ .e2e-container-video-size .control-shadow-wrapper input {
149
+ background-color: var(--guido-color-gray-0);
150
+ }
151
+
136
152
  .e2e-size,
137
153
  .e2e-timer-size {
138
154
  grid-auto-flow: row;