Skip to content

Commit 1b6fde1

Browse files
committed
MC-18601: Page Builder Render
1 parent eebd847 commit 1b6fde1

File tree

5 files changed

+48
-18
lines changed

5 files changed

+48
-18
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/observable-updater.js

Lines changed: 21 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/master.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import ContentTypeInterface from "../content-type.types";
88
import {DataObject} from "../data-store";
99
import {get} from "../utils/object";
1010
import appearanceConfig from "./appearance-config";
11-
import ObservableUpdater, {GeneratedElementsData} from "./observable-updater";
12-
import ObservableObject from "./observable-updater.types";
11+
import ObservableUpdater from "./observable-updater";
12+
import ObservableObject, {GeneratedElementsData} from "./observable-updater.types";
1313

1414
/**
1515
* @api

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/observable-updater.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ import {get} from "../utils/object";
1717
import {fromSnakeToCamelCase} from "../utils/string";
1818
import appearanceConfig from "./appearance-config";
1919
import Master from "./master";
20+
import {GeneratedElementsData} from "./observable-updater.types";
2021
import Preview from "./preview";
2122

2223
export default class ObservableUpdater {
2324
private converterPool: typeof ConverterPool;
2425
private massConverterPool: typeof MassConverterPool;
2526
private converterResolver: (config: object) => string;
27+
private previousData: GeneratedElementsData = {};
2628

2729
/**
2830
* @param {typeof ConverterPool} converterPool
@@ -82,6 +84,9 @@ export default class ObservableUpdater {
8284

8385
for (const elementName of Object.keys(elements)) {
8486
const elementConfig = elements[elementName];
87+
if (this.previousData[elementName] === undefined) {
88+
this.previousData[elementName] = {};
89+
}
8590
if (generatedData[elementName] === undefined) {
8691
generatedData[elementName] = {
8792
attributes: {},
@@ -92,8 +97,12 @@ export default class ObservableUpdater {
9297
}
9398

9499
if (elementConfig.style !== undefined) {
95-
// @todo retrieve previous styles
96-
generatedData[elementName].style = this.generateStyles({}, elementConfig, convertedData);
100+
let previousStyles = {};
101+
if (typeof this.previousData[elementName].style !== "undefined") {
102+
previousStyles = this.previousData[elementName].style;
103+
}
104+
generatedData[elementName].style = this.generateStyles(previousStyles, elementConfig, convertedData);
105+
this.previousData[elementName].style = generatedData[elementName].style;
97106
}
98107

99108
if (elementConfig.attributes !== undefined) {
@@ -109,8 +118,12 @@ export default class ObservableUpdater {
109118
}
110119

111120
if (elementConfig.css !== undefined && elementConfig.css.var in convertedData) {
112-
// @todo retrieve previous CSS classes
113-
generatedData[elementName].css = this.generateCss({}, elementConfig, convertedData);
121+
let previousCss = {};
122+
if (typeof this.previousData[elementName].css !== "undefined") {
123+
previousCss = this.previousData[elementName].css;
124+
}
125+
generatedData[elementName].css = this.generateCss(previousCss, elementConfig, convertedData);
126+
this.previousData[elementName].css = generatedData[elementName].css;
114127
}
115128

116129
if (elementConfig.tag !== undefined && elementConfig.tag.var !== undefined) {
@@ -300,10 +313,3 @@ export default class ObservableUpdater {
300313
return value;
301314
}
302315
}
303-
304-
export interface GeneratedElementsData {
305-
[key: string]: {
306-
[key: string]: {};
307-
};
308-
appearance?: any;
309-
}

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/observable-updater.types.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,10 @@ export default interface ObservableObject {
99
[key: string]: KnockoutObservable<any>;
1010
};
1111
}
12+
13+
export interface GeneratedElementsData {
14+
[key: string]: {
15+
[key: string]: {};
16+
};
17+
appearance?: any;
18+
}

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/master-format/render/serialize.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import ContentTypeCollection from "../../content-type-collection";
77
import ContentTypeInterface from "../../content-type.types";
8-
import {GeneratedElementsData} from "../../content-type/observable-updater";
8+
import {GeneratedElementsData} from "../../content-type/observable-updater.types";
99
import { DataObject } from "../../data-store";
1010

1111
export interface TreeItem {

0 commit comments

Comments
 (0)