UNPKG

phaser4-rex-plugins

Version:
108 lines (84 loc) 3.4 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 'scrollable': var scrollable = tweaker.addScrollable(property); AddProperties(scrollable, property.$properties, target, monitor); 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; if (key.indexOf('.') === -1) { property.bindingTarget = target; property.bindingKey = key; } else { var keys = key.split('.'); property.bindingKey = keys.pop(); var bindingTarget = target; for (var k = 0, kcnt = keys.length; k < kcnt; k++) { bindingTarget = bindingTarget[keys[k]]; if (!target) { console.warn(`[Monitor] Key path '${key}' is invalid`) continue; } } property.bindingTarget = bindingTarget; } if (!property.hasOwnProperty('monitor')) { property.monitor = monitor; } tweaker.addInput(property); break; } } } export default AddRows;