Browse Source

Add methods for moving layers

up-style-manager
Artur Arseniev 4 years ago
parent
commit
db021e7877
  1. 8
      src/style_manager/model/Layer.js
  2. 19
      src/style_manager/model/PropertyStack.js

8
src/style_manager/model/Layer.js

@ -93,6 +93,14 @@ export default class Layer extends Model {
return this.prop?.removeLayer(this);
}
/**
* Move layer to a new index.
* @param {Number} index New index
*/
move(index) {
return this.prop?.moveLayer(this, index);
}
upValues(props = {}) {
return this.set('values', {
...this.getValues(),

19
src/style_manager/model/PropertyStack.js

@ -1,4 +1,4 @@
import { keys, isUndefined, isArray, isString } from 'underscore';
import { keys, isUndefined, isArray, isString, isNumber } from 'underscore';
import PropertyComposite, { isNumberType } from './PropertyComposite';
import PropertyBase from './Property';
import Layers from './Layers';
@ -111,6 +111,23 @@ export default class PropertyStack extends PropertyComposite {
return layer && this.selectLayer(layer);
}
/**
* Move layer by index.
* @param {[Layer]} layer Layer to move.
* @param {Number} index New layer index.
* @example
* const layer = property.getLayer(1);
* property.moveLayer(layer, 0);
*/
moveLayer(layer, index = 0) {
const currIndex = layer ? layer.getIndex() : -1;
if (currIndex >= 0 && isNumber(index) && index >= 0 && index < this.getLayers().length && currIndex !== index) {
this.removeLayer(layer);
this.__getLayers().add(layer, { at: index });
}
}
/**
* Add new layer to the stack.
* @param {Object} [props={}] Custom property values to use in a new layer.

Loading…
Cancel
Save