phaser3-rex-plugins
Version:
136 lines (110 loc) • 4.58 kB
JavaScript
import DeepClone from '../../../../plugins/utils/object/DeepClone.js';
var AddRows = function (properties, target, monitor) {
if (typeof (target) === 'boolean') {
monitor = target;
target = undefined;
}
if (monitor === undefined) {
monitor = true;
}
AddProperties(this, DeepClone(properties), target, monitor);
return this;
}
var AddProperties = function (tweaker, properties, target, monitor) {
if (!properties) {
return;
}
for (var i = 0, cnt = properties.length; i < cnt; i++) {
var property = properties[i];
if (property.hasOwnProperty('$target')) {
target = property.$target;
delete property.$target;
}
var type = property.$type;
delete property.$type;
switch (type) {
case 'folder':
var folder = tweaker.addFolder(property);
AddProperties(folder, property.$properties, target, monitor);
break;
case 'tab':
var pages = tweaker.addTab(property);
for (var pIdx = 0, pcnt = pages.length; pIdx < pcnt; pIdx++) {
AddProperties(pages[pIdx], property.pages[pIdx].$properties, target, monitor);
}
break;
case 'columns':
var columns = tweaker.addColumns(property);
for (var pIdx = 0, pcnt = columns.length; pIdx < pcnt; pIdx++) {
AddProperties(columns[pIdx], property.columns[pIdx].$properties, target, monitor);
}
break;
case '2columns':
var splitPanels = tweaker.add2Columns(property);
var leftProperties, rightProperties;
if (property.columns) {
var columns = property.columns;
if (columns[0] && columns[0].$properties) {
leftProperties = columns[0].$properties;
}
if (columns[1] && columns[1].$properties) {
rightProperties = columns[1].$properties;
}
} else {
if (property.left && property.left.$properties) {
leftProperties = property.left.$properties;
}
if (property.right && property.right.$properties) {
rightProperties = property.right.$properties;
}
}
if (leftProperties) {
AddProperties(splitPanels.left, leftProperties, target, monitor);
}
if (rightProperties) {
AddProperties(splitPanels.right, rightProperties, target, monitor);
}
break;
case 'wrap':
var wrap = tweaker.addWrap(property);
AddProperties(wrap, property.$properties, target, monitor);
break;
case 'scrollable':
var scrollable = tweaker.addScrollable(property);
AddProperties(scrollable, property.$properties, target, monitor);
break;
case 'arrayTable':
var key = property.$key;
delete property.$key;
property.bindingTarget = target;
property.bindingKey = key;
if (!property.hasOwnProperty('monitor')) {
property.monitor = monitor;
}
tweaker.addArrayTable(property);
break;
case 'separator':
tweaker.addSeparator();
break;
case 'button':
property.bindingTarget = target;
tweaker.addButton(property);
break;
case 'buttons':
property.bindingTarget = target;
tweaker.addButtons(property);
break;
default:
var key = property.$key;
delete property.$key;
property.bindingTarget = target;
property.bindingKey = key;
if (!property.hasOwnProperty('monitor')) {
property.monitor = monitor;
}
tweaker.addInput(property);
break;
}
}
}
export default AddRows;