52 lines
1.5 KiB
JavaScript

module.exports = function (RED) {
/**
*
* @param {*} config
*/
function UIThemeNode (config) {
function hasProperty (obj, prop) {
return !!Object.prototype.hasOwnProperty.call(obj, prop)
}
RED.nodes.createNode(this, config)
const node = this
const { id, name, type, _users, ...rest } = config
const sizes = { ...rest.sizes }
if (!hasProperty(sizes, 'pagePadding')) {
// set defaults at runtime if not set - for backward compatability
sizes.pagePadding = '12px'
}
if (!hasProperty(sizes, 'groupGap')) {
// set defaults at runtime if not set - for backward compatability
sizes.groupGap = '12px'
}
if (!hasProperty(sizes, 'groupBorderRadius')) {
// set defaults at runtime if not set - for backward compatability
sizes.groupBorderRadius = '4px'
}
if (!hasProperty(sizes, 'widgetGap')) {
// set defaults at runtime if not set - for backward compatability
sizes.widgetGap = '12px'
}
node.colors = { ...rest.colors }
node.sizes = sizes
let uiBase = null
RED.nodes.eachNode(n => {
if (n.type === 'ui-base' && !uiBase) {
uiBase = n
}
})
if (uiBase) {
config.ui = uiBase.id
uiBase = RED.nodes.getNode(config.ui)
}
uiBase?.registerTheme(node)
}
RED.nodes.registerType('ui-theme', UIThemeNode)
}