{"version":3,"file":"parser.mjs","sources":["../../../node_modules/d-path-parser/parser.js"],"sourcesContent":["/*!\n * d-path-parser - v1.0.0\n * by Massimo Artizzu (MaxArt2501)\n *\n * https://github.com/MaxArt2501/d-path-parser\n *\n * Licensed under the MIT License\n * See LICENSE for details\n */\n\n(function (root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        // AMD. Register as an anonymous module.\n        define([], factory);\n    } else if (typeof exports === \"object\") {\n        // Node. Does not work with strict CommonJS, but\n        // only CommonJS-like environments that support module.exports,\n        // like Node.\n        module.exports = factory();\n    } else {\n        // Browser globals (root is window)\n        root.dPathParse = factory();\n    }\n})(this, function() {\n\"use strict\";\n\nreturn function parse(d) {\n    var re = {\n        command: /\\s*([achlmqstvz])/gi,\n        number: /\\s*([+-]?\\d*\\.?\\d+(?:e[+-]?\\d+)?)/gi,\n        comma: /\\s*(?:(,)|\\s)/g,\n        flag: /\\s*([01])/g\n    };\n    var matchers = {\n        \"number\": function(must) {\n            return +get(\"number\", must);\n        },\n        \"coordinate pair\": function(must) {\n            var x = get(\"number\", must);\n            if (x === null && !must) return null;\n            get(\"comma\");\n            var y = get(\"number\", true);\n            return { x: +x, y: +y };\n        },\n        \"arc definition\": function(must) {\n            var radii = matchers[\"coordinate pair\"](must);\n            if (!radii && !must) return null;\n            get(\"comma\");\n            var rotation = +get(\"number\", true);\n            get(\"comma\", true);\n            var large = !!+get(\"flag\", true);\n            get(\"comma\");\n            var clockwise = !!+get(\"flag\", true);\n            get(\"comma\");\n            var end = matchers[\"coordinate pair\"](true);\n            return {\n                radii: radii,\n                rotation: rotation,\n                large: large,\n                clockwise: clockwise,\n                end: end\n            };\n        }\n    }\n    var index = 0;\n    var commands = [];\n\n    while (index < d.length) {\n        var cmd = get(\"command\");\n        var upcmd = cmd.toUpperCase();\n        var relative = cmd !== upcmd;\n        var sequence;\n        switch (upcmd) {\n            case \"M\":\n                sequence = getSequence(\"coordinate pair\").map(function(coords, i) {\n                    if (i === 1) cmd = relative ? \"l\" : \"L\";\n                    return makeCommand({ end: coords });\n                });\n                break;\n            case \"L\":\n            case \"T\":\n                sequence = getSequence(\"coordinate pair\").map(function(coords) {\n                    return makeCommand({ end: coords });\n                });\n                break;\n            case \"C\":\n                sequence = getSequence(\"coordinate pair\");\n                if (sequence.length % 3)\n                    throw Error(\"Expected coordinate pair triplet at position \" + index);\n\n                sequence = sequence.reduce(function(seq, coords, i) {\n                    var rest = i % 3;\n                    if (!rest) {\n                        seq.push(makeCommand({ cp1: coords }));\n                    } else {\n                        var last = seq[seq.length - 1];\n                        last[rest === 1 ? \"cp2\" : \"end\"] = coords;\n                    }\n                    return seq;\n                }, []);\n\n                break;\n            case \"Q\":\n            case \"S\":\n                sequence = getSequence(\"coordinate pair\");\n                if (sequence.length & 1)\n                    throw Error(\"Expected coordinate pair couple at position \" + index);\n\n                sequence = sequence.reduce(function(seq, coords, i) {\n                    var odd = i & 1;\n                    if (!odd) {\n                        seq.push(makeCommand({ cp: coords }));\n                    } else {\n                        var last = seq[seq.length - 1];\n                        last.end = coords;\n                    }\n                    return seq;\n                }, []);\n\n                break;\n            case \"H\":\n            case \"V\":\n                sequence = getSequence(\"number\").map(function(value) {\n                    return makeCommand({ value: value });\n                });\n                break;\n            case \"A\":\n                sequence = getSequence(\"arc definition\").map(makeCommand);\n                break;\n            case \"Z\":\n                sequence = [ { code: \"Z\" } ];\n                break;\n        }\n        commands.push.apply(commands, sequence);\n    }\n\n    return commands;\n\n    function makeCommand(obj) {\n        obj.code = cmd;\n        obj.relative = relative;\n\n        return obj;\n    }\n    function get(what, must) {\n        re[what].lastIndex = index;\n        var res = re[what].exec(d);\n        if (!res || res.index !== index) {\n            if (!must) return null;\n            throw Error(\"Expected \" + what + \" at position \" + index);\n        }\n\n        index = re[what].lastIndex;\n\n        return res[1];\n    }\n    function getSequence(what) {\n        var sequence = [];\n        var matched;\n        var must = true;\n        while (matched = matchers[what](must)) {\n            sequence.push(matched);\n            must = !!get(\"comma\");\n        }\n\n        return sequence;\n    }\n};\n});\n"],"names":["this"],"mappings":"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"}