UNPKG

phaser3-rex-plugins

Version:
136 lines (110 loc) 4.58 kB
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;