import { isArray, isNumber, map } from '../core/util'; 
 | 
import Path from '../graphic/Path'; 
 | 
import TSpan from '../graphic/TSpan'; 
 | 
  
 | 
export function normalizeLineDash(lineType: any, lineWidth?: number): number[] | false { 
 | 
    if (!lineType || lineType === 'solid' || !(lineWidth > 0)) { 
 | 
        return null; 
 | 
    } 
 | 
    return lineType === 'dashed' 
 | 
        ? [4 * lineWidth, 2 * lineWidth] 
 | 
        : lineType === 'dotted' 
 | 
            ? [lineWidth] 
 | 
            : isNumber(lineType) 
 | 
                ? [lineType] : isArray(lineType) ? lineType : null; 
 | 
} 
 | 
export function getLineDash(el: Path | TSpan): [number[] | false, number] { 
 | 
    const style = el.style; 
 | 
  
 | 
    let lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth); 
 | 
    let lineDashOffset = style.lineDashOffset; 
 | 
  
 | 
    if (lineDash) { 
 | 
        const lineScale = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1; 
 | 
        if (lineScale && lineScale !== 1) { 
 | 
            lineDash = map(lineDash, function (rawVal) { 
 | 
                return rawVal / lineScale; 
 | 
            }); 
 | 
            lineDashOffset /= lineScale; 
 | 
        } 
 | 
    } 
 | 
    return [lineDash, lineDashOffset]; 
 | 
} 
 |