UNPKG

@difizen/mana-app

Version:

45 lines 1.81 kB
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; };