52 lines
1.5 KiB
JavaScript
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)
|
|
}
|