@difizen/mana-app
Version:
45 lines • 1.81 kB
JavaScript
import { notEmpty } from '@difizen/mana-common';
import { ViewInstance } from '@difizen/mana-core';
import { useInject } from '@difizen/mana-observable';
import * as React from 'react';
import { IconOverlayPosition, TreeViewDecorationStyles } from "../tree-view-decoration";
import { TreeViewDecorator } from "../view/tree-view-decorator";
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
export var TreeNodeIconDecorator = function TreeNodeIconDecorator(props) {
var treeViewDecorator = useInject(TreeViewDecorator);
var treeView = useInject(ViewInstance);
var icon = props.icon,
node = props.node;
if (icon === null) {
return null;
}
var overlayIcons = [];
new Map(treeViewDecorator.getDecorationData(node, 'iconOverlay').reverse().filter(notEmpty).map(function (overlay) {
return [overlay.position, overlay];
})).forEach(function (overlay, position) {
var iconClasses = [TreeViewDecorationStyles.DECORATOR_SIZE_CLASS, IconOverlayPosition.getStyle(position)];
var style = function style(color) {
return color === undefined ? {} : {
color: color
};
};
if (overlay.background) {
overlayIcons.push( /*#__PURE__*/_jsx("span", {
className: treeView.getIconClass(overlay.background.shape, iconClasses),
style: style(overlay.background.color)
}, "".concat(node.id, "bg")));
}
var overlayIcon = overlay.icon || overlay.iconClass;
overlayIcons.push( /*#__PURE__*/_jsx("span", {
className: treeView.getIconClass(overlayIcon, iconClasses),
style: style(overlay.color)
}, node.id));
});
if (overlayIcons.length > 0) {
return /*#__PURE__*/_jsxs("div", {
className: TreeViewDecorationStyles.ICON_WRAPPER_CLASS,
children: [icon, overlayIcons]
});
}
return icon;
};