"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ColorUtils_1 = require("./../../helpers/ColorUtils");
var SVGPoints_1 = require("./../../helpers/SVGPoints");
var has_1 = require("./has");
function parseD(value) {
    if (!value) {
        return [];
    }
    if (Array.isArray(value)) {
        return value;
    }
    return SVGPoints_1.default.pathToPoints(value);
}
function generateD(value) {
    if (typeof value === 'string') {
        return value;
    }
    return SVGPoints_1.default.pointsToPath(value);
}
function parseColor(value) {
    return ColorUtils_1.default.parseString(value);
}
function generateColor(value) {
    return ColorUtils_1.default.generateString(value);
}
function parsePoints(value) {
    if (Array.isArray(value)) {
        return value;
    }
    return SVGPoints_1.default.polyPointsStringToPoints(value);
}
function generatePoints(value) {
    if (typeof value === 'string') {
        return value;
    }
    return SVGPoints_1.default.pointsToPolyString(value);
}
var STYLE_COLOR_PARSERS = {
    'style.stroke': { parse: parseColor, generate: generateColor },
    'style.fill': { parse: parseColor, generate: generateColor },
    'style.backgroundColor': { parse: parseColor, generate: generateColor },
    'style.borderBottomColor': { parse: parseColor, generate: generateColor },
    'style.borderColor': { parse: parseColor, generate: generateColor },
    'style.borderLeftColor': { parse: parseColor, generate: generateColor },
    'style.borderRightColor': { parse: parseColor, generate: generateColor },
    'style.borderTopColor': { parse: parseColor, generate: generateColor },
    'style.floodColor': { parse: parseColor, generate: generateColor },
    'style.lightingColor': { parse: parseColor, generate: generateColor },
    'style.stopColor': { parse: parseColor, generate: generateColor },
};
var SVG_COLOR_PARSERS = {
    stroke: { parse: parseColor, generate: generateColor },
    fill: { parse: parseColor, generate: generateColor },
    floodColor: { parse: parseColor, generate: generateColor },
    lightingColor: { parse: parseColor, generate: generateColor },
    stopColor: { parse: parseColor, generate: generateColor },
    backgroundColor: { parse: parseColor, generate: generateColor },
    animateColor: { parse: parseColor, generate: generateColor },
    feColor: { parse: parseColor, generate: generateColor },
    'flood-color': { parse: parseColor, generate: generateColor },
    'lighting-color': { parse: parseColor, generate: generateColor },
    'stop-color': { parse: parseColor, generate: generateColor },
    'background-color': { parse: parseColor, generate: generateColor },
    'animate-color': { parse: parseColor, generate: generateColor },
    'fe-color': { parse: parseColor, generate: generateColor },
};
var SVG_PATH_PARSERS = {
    d: { parse: parseD, generate: generateD },
};
var SVG_POINT_PARSERS = {
    points: { parse: parsePoints, generate: generatePoints },
};
exports.default = {
    'missing-glyph': has_1.default(STYLE_COLOR_PARSERS),
    a: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    abbr: has_1.default(STYLE_COLOR_PARSERS),
    acronym: has_1.default(STYLE_COLOR_PARSERS),
    address: has_1.default(STYLE_COLOR_PARSERS),
    altGlyph: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    altGlyphDef: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    altGlyphItem: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    animate: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    animateColor: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    animateMotion: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    animateTransform: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    applet: has_1.default(STYLE_COLOR_PARSERS),
    area: has_1.default(STYLE_COLOR_PARSERS),
    article: has_1.default(STYLE_COLOR_PARSERS),
    aside: has_1.default(STYLE_COLOR_PARSERS),
    audio: has_1.default(STYLE_COLOR_PARSERS),
    b: has_1.default(STYLE_COLOR_PARSERS),
    base: has_1.default(STYLE_COLOR_PARSERS),
    basefont: has_1.default(STYLE_COLOR_PARSERS),
    bdi: has_1.default(STYLE_COLOR_PARSERS),
    bdo: has_1.default(STYLE_COLOR_PARSERS),
    big: has_1.default(STYLE_COLOR_PARSERS),
    blockquote: has_1.default(STYLE_COLOR_PARSERS),
    body: has_1.default(STYLE_COLOR_PARSERS),
    br: has_1.default(STYLE_COLOR_PARSERS),
    button: has_1.default(STYLE_COLOR_PARSERS),
    canvas: has_1.default(STYLE_COLOR_PARSERS),
    caption: has_1.default(STYLE_COLOR_PARSERS),
    center: has_1.default(STYLE_COLOR_PARSERS),
    circle: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    cite: has_1.default(STYLE_COLOR_PARSERS),
    clipPath: has_1.default(STYLE_COLOR_PARSERS),
    code: has_1.default(STYLE_COLOR_PARSERS),
    col: has_1.default(STYLE_COLOR_PARSERS),
    colgroup: has_1.default(STYLE_COLOR_PARSERS),
    'color-profile': has_1.default(STYLE_COLOR_PARSERS),
    command: has_1.default(STYLE_COLOR_PARSERS),
    cursor: has_1.default(STYLE_COLOR_PARSERS),
    datalist: has_1.default(STYLE_COLOR_PARSERS),
    dd: has_1.default(STYLE_COLOR_PARSERS),
    defs: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    del: has_1.default(STYLE_COLOR_PARSERS),
    desc: has_1.default(STYLE_COLOR_PARSERS),
    details: has_1.default(STYLE_COLOR_PARSERS),
    dfn: has_1.default(STYLE_COLOR_PARSERS),
    dir: has_1.default(STYLE_COLOR_PARSERS),
    discard: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    div: has_1.default(STYLE_COLOR_PARSERS),
    dl: has_1.default(STYLE_COLOR_PARSERS),
    dt: has_1.default(STYLE_COLOR_PARSERS),
    ellipse: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    em: has_1.default(STYLE_COLOR_PARSERS),
    embed: has_1.default(STYLE_COLOR_PARSERS),
    feBlend: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feColorMatrix: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feComponentTransfer: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feComposite: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feConvolveMatrix: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feDiffuseLighting: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feDisplacementMap: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feDistantLight: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feDropShadow: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feFlood: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feFuncA: has_1.default(STYLE_COLOR_PARSERS),
    feFuncB: has_1.default(STYLE_COLOR_PARSERS),
    feFuncG: has_1.default(STYLE_COLOR_PARSERS),
    feFuncR: has_1.default(STYLE_COLOR_PARSERS),
    feGaussianBlur: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feImage: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feMerge: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feMergeNode: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feMorphology: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feOffset: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    fePointLight: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feSpecularLighting: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feTile: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    feTurbulence: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    fieldset: has_1.default(STYLE_COLOR_PARSERS),
    figcaption: has_1.default(STYLE_COLOR_PARSERS),
    figure: has_1.default(STYLE_COLOR_PARSERS),
    filter: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    'font-face': has_1.default(STYLE_COLOR_PARSERS),
    'font-face-format': has_1.default(STYLE_COLOR_PARSERS),
    'font-face-name': has_1.default(STYLE_COLOR_PARSERS),
    'font-face-src': has_1.default(STYLE_COLOR_PARSERS),
    'font-face-uri': has_1.default(STYLE_COLOR_PARSERS),
    font: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    footer: has_1.default(STYLE_COLOR_PARSERS),
    foreignObject: has_1.default(STYLE_COLOR_PARSERS),
    form: has_1.default(STYLE_COLOR_PARSERS),
    frame: has_1.default(STYLE_COLOR_PARSERS),
    frameset: has_1.default(STYLE_COLOR_PARSERS),
    g: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    glyph: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    glyphRef: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    h1: has_1.default(STYLE_COLOR_PARSERS),
    h2: has_1.default(STYLE_COLOR_PARSERS),
    h3: has_1.default(STYLE_COLOR_PARSERS),
    h4: has_1.default(STYLE_COLOR_PARSERS),
    h5: has_1.default(STYLE_COLOR_PARSERS),
    h6: has_1.default(STYLE_COLOR_PARSERS),
    hatch: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    hatchpath: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    head: has_1.default(STYLE_COLOR_PARSERS),
    header: has_1.default(STYLE_COLOR_PARSERS),
    hgroup: has_1.default(STYLE_COLOR_PARSERS),
    hkern: has_1.default(STYLE_COLOR_PARSERS),
    hr: has_1.default(STYLE_COLOR_PARSERS),
    html: has_1.default(STYLE_COLOR_PARSERS),
    i: has_1.default(STYLE_COLOR_PARSERS),
    iframe: has_1.default(STYLE_COLOR_PARSERS),
    image: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    img: has_1.default(STYLE_COLOR_PARSERS),
    input: has_1.default(STYLE_COLOR_PARSERS),
    ins: has_1.default(STYLE_COLOR_PARSERS),
    kbd: has_1.default(STYLE_COLOR_PARSERS),
    keygen: has_1.default(STYLE_COLOR_PARSERS),
    label: has_1.default(STYLE_COLOR_PARSERS),
    legend: has_1.default(STYLE_COLOR_PARSERS),
    li: has_1.default(STYLE_COLOR_PARSERS),
    line: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    linearGradient: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    link: has_1.default(STYLE_COLOR_PARSERS),
    map: has_1.default(STYLE_COLOR_PARSERS),
    mark: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    marker: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    mask: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    menu: has_1.default(STYLE_COLOR_PARSERS),
    mesh: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    meshgradient: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    meshpatch: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    meshrow: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    meta: has_1.default(STYLE_COLOR_PARSERS),
    metadata: has_1.default(STYLE_COLOR_PARSERS),
    meter: has_1.default(STYLE_COLOR_PARSERS),
    mpath: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    nav: has_1.default(STYLE_COLOR_PARSERS),
    noframes: has_1.default(STYLE_COLOR_PARSERS),
    noscript: has_1.default(STYLE_COLOR_PARSERS),
    object: has_1.default(STYLE_COLOR_PARSERS),
    ol: has_1.default(STYLE_COLOR_PARSERS),
    optgroup: has_1.default(STYLE_COLOR_PARSERS),
    option: has_1.default(STYLE_COLOR_PARSERS),
    output: has_1.default(STYLE_COLOR_PARSERS),
    p: has_1.default(STYLE_COLOR_PARSERS),
    param: has_1.default(STYLE_COLOR_PARSERS),
    path: has_1.default(SVG_PATH_PARSERS, SVG_COLOR_PARSERS, STYLE_COLOR_PARSERS),
    pattern: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    polygon: has_1.default(SVG_POINT_PARSERS, SVG_COLOR_PARSERS, STYLE_COLOR_PARSERS),
    polyline: has_1.default(SVG_POINT_PARSERS, SVG_COLOR_PARSERS, STYLE_COLOR_PARSERS),
    pre: has_1.default(STYLE_COLOR_PARSERS),
    progress: has_1.default(STYLE_COLOR_PARSERS),
    q: has_1.default(STYLE_COLOR_PARSERS),
    radialGradient: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    rect: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    rp: has_1.default(STYLE_COLOR_PARSERS),
    rt: has_1.default(STYLE_COLOR_PARSERS),
    ruby: has_1.default(STYLE_COLOR_PARSERS),
    s: has_1.default(STYLE_COLOR_PARSERS),
    samp: has_1.default(STYLE_COLOR_PARSERS),
    script: has_1.default(STYLE_COLOR_PARSERS),
    section: has_1.default(STYLE_COLOR_PARSERS),
    select: has_1.default(STYLE_COLOR_PARSERS),
    set: has_1.default(STYLE_COLOR_PARSERS),
    small: has_1.default(STYLE_COLOR_PARSERS),
    solidcolor: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    source: has_1.default(STYLE_COLOR_PARSERS),
    span: has_1.default(STYLE_COLOR_PARSERS),
    stop: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    strike: has_1.default(STYLE_COLOR_PARSERS),
    strong: has_1.default(STYLE_COLOR_PARSERS),
    style: has_1.default(STYLE_COLOR_PARSERS),
    sub: has_1.default(STYLE_COLOR_PARSERS),
    summary: has_1.default(STYLE_COLOR_PARSERS),
    sup: has_1.default(STYLE_COLOR_PARSERS),
    svg: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    switch: has_1.default(STYLE_COLOR_PARSERS),
    symbol: has_1.default(STYLE_COLOR_PARSERS),
    table: has_1.default(STYLE_COLOR_PARSERS),
    tbody: has_1.default(STYLE_COLOR_PARSERS),
    td: has_1.default(STYLE_COLOR_PARSERS),
    text: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    textarea: has_1.default(STYLE_COLOR_PARSERS),
    textPath: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    tfoot: has_1.default(STYLE_COLOR_PARSERS),
    th: has_1.default(STYLE_COLOR_PARSERS),
    thead: has_1.default(STYLE_COLOR_PARSERS),
    time: has_1.default(STYLE_COLOR_PARSERS),
    title: has_1.default(STYLE_COLOR_PARSERS),
    tr: has_1.default(STYLE_COLOR_PARSERS),
    track: has_1.default(STYLE_COLOR_PARSERS),
    tref: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    tspan: has_1.default(STYLE_COLOR_PARSERS, SVG_COLOR_PARSERS),
    tt: has_1.default(STYLE_COLOR_PARSERS),
    u: has_1.default(STYLE_COLOR_PARSERS),
    ul: has_1.default(STYLE_COLOR_PARSERS),
    unknown: has_1.default(STYLE_COLOR_PARSERS),
    us: has_1.default(STYLE_COLOR_PARSERS),
    use: has_1.default(STYLE_COLOR_PARSERS),
    var: has_1.default(STYLE_COLOR_PARSERS),
    video: has_1.default(STYLE_COLOR_PARSERS),
    view: has_1.default(STYLE_COLOR_PARSERS),
    vkern: has_1.default(STYLE_COLOR_PARSERS),
    wb: has_1.default(STYLE_COLOR_PARSERS),
};
//# sourceMappingURL=parsers.js.map