Browse Source

Update stack layers

up-style-manager
Artur Arseniev 4 years ago
parent
commit
0ee09e756d
  1. 21
      src/style_manager/index.js
  2. 11
      src/style_manager/model/PropertyStack.js
  3. 2
      test/specs/style_manager/model/Properties.js

21
src/style_manager/index.js

@ -568,15 +568,18 @@ export default () => {
sector.getProperties().map(prop => {
this.__upProp(prop, style, parentStyles, opts);
const props = prop.getProperties?.();
const isStack = prop.getType() === 'stack';
if (props && !isStack) {
const newStyle = prop.__getFromStyle(style);
const newParentStyles = parentStyles.map(p => ({
...p,
style: prop.__getFromStyle(p.style),
}));
props.forEach(prop => this.__upProp(prop, newStyle, newParentStyles, opts));
if (props) {
if (prop.getType() === 'stack') {
prop.__setLayers(prop.__getLayersFromStyle(style));
} else {
const newStyle = prop.__getFromStyle(style);
const newParentStyles = parentStyles.map(p => ({
...p,
style: prop.__getFromStyle(p.style),
}));
props.forEach(prop => this.__upProp(prop, newStyle, newParentStyles, opts));
}
}
});
});

11
src/style_manager/model/PropertyStack.js

@ -105,6 +105,17 @@ export default Property.extend({
return Property.prototype._up.call(this, rest, opts);
},
__setLayers(newLayers = []) {
const layers = this.getLayers();
const layersNew = newLayers.map(values => ({ values }));
if (layers.length === layersNew.length) {
layersNew.map((layer, n) => layers.at(n)?.upValues(layer.values));
} else {
this.getLayers().reset(layersNew);
}
},
__parseValue(value) {
const result = this.parseValue(value);
result.__layers = value

2
test/specs/style_manager/model/Properties.js

@ -183,7 +183,7 @@ describe('StyleManager properties logic', () => {
compTypeProp.getProperty(propCTest).upValue('valueC-2-mod');
expect(rule1.getStyle()).toEqual({
__p: false,
[propTest]: 'valueA-1 valueB-1-mod valueC-1, valueA-2 valueB-2 valueC-2-mod',
[propTest]: 'valueA-1 valueB-1-mod valueC-1-ext, valueA-2 valueB-2 valueC-2-mod',
});
});

Loading…
Cancel
Save