import { liftColor } from '../tool/color.js'; import { getClassId } from './cssClassId.js'; export function createCSSEmphasis(el, attrs, scope) { if (!el.ignore) { if (el.isSilent()) { var style = { 'pointer-events': 'none' }; setClassAttribute(style, attrs, scope, true); } else { var emphasisStyle = el.states.emphasis && el.states.emphasis.style ? el.states.emphasis.style : {}; var fill = emphasisStyle.fill; if (!fill) { var normalFill = el.style && el.style.fill; var selectFill = el.states.select && el.states.select.style && el.states.select.style.fill; var fromFill = el.currentStates.indexOf('select') >= 0 ? (selectFill || normalFill) : normalFill; if (fromFill) { fill = liftColor(fromFill); } } var lineWidth = emphasisStyle.lineWidth; if (lineWidth) { var scaleX = (!emphasisStyle.strokeNoScale && el.transform) ? el.transform[0] : 1; lineWidth = lineWidth / scaleX; } var style = { cursor: 'pointer' }; if (fill) { style.fill = fill; } if (emphasisStyle.stroke) { style.stroke = emphasisStyle.stroke; } if (lineWidth) { style['stroke-width'] = lineWidth; } setClassAttribute(style, attrs, scope, true); } } } function setClassAttribute(style, attrs, scope, withHover) { var styleKey = JSON.stringify(style); var className = scope.cssStyleCache[styleKey]; if (!className) { className = scope.zrId + '-cls-' + getClassId(); scope.cssStyleCache[styleKey] = className; scope.cssNodes['.' + className + (withHover ? ':hover' : '')] = style; } attrs["class"] = attrs["class"] ? (attrs["class"] + ' ' + className) : className; }