All files / src/render/dom/utils is-svg-component.ts

100% Statements 7/7
100% Branches 8/8
100% Functions 1/1
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  34x   34x 2146x                     27x 2119x                   39x     2080x    
import { ComponentType } from "react"
import { lowercaseSVGElements } from "../../svg/lowercase-elements"
 
export function isSVGComponent(Component: string | ComponentType) {
    if (
        /**
         * If it's not a string, it's a custom React component. Currently we only support
         * HTML custom React components.
         */
        typeof Component !== "string" ||
        /**
         * If it contains a dash, the element is a custom HTML webcomponent.
         */
        Component.includes("-")
    ) {
        return false
    } else if (
        /**
         * If it's in our list of lowercase SVG tags, it's an SVG component
         */
        lowercaseSVGElements.indexOf(Component) > -1 ||
        /**
         * If it contains a capital letter, it's an SVG component
         */
        /[A-Z]/.test(Component)
    ) {
        return true
    }
 
    return false
}