{"version":3,"sources":["replacement/1","src/common/parseHex.js","src/renderer/color.js","src/common/global.js","src/common/configuration.js","src/renderer/point.js","src/renderer/transform.js","src/renderer/graphics.js","src/renderer/shapes.js","src/renderer/colorTheme.js","src/renderer/iconGenerator.js","src/common/sha1.js","src/common/hashUtils.js","src/renderer/canvas/canvasRenderer.js","src/common/dom.js","src/apis/drawIcon.js","src/apis/toPng.js","src/renderer/svg/svgPath.js","src/renderer/svg/svgRenderer.js","src/renderer/svg/constants.js","src/renderer/svg/svgWriter.js","src/apis/toSvg.js","src/node-esm.js","replacement/2"],"names":[],"mappings":"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","file":"jdenticon-node.mjs","sourcesContent":["/**\r\n * Jdenticon 3.3.0\r\n * http://jdenticon.com\r\n *\r\n * Built: 2024-05-10T09:48:41.921Z\r\n * \r\n * MIT License\r\n * \r\n * Copyright (c) 2014-2024 Daniel Mester Pirttijärvi\r\n * \r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\n\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\n/**\r\n * Parses a substring of the hash as a number.\r\n * @param {number} startPosition \r\n * @param {number=} octets\r\n */\r\nexport function parseHex(hash, startPosition, octets) {\r\n    return parseInt(hash.substr(startPosition, octets), 16);\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { parseHex } from \"../common/parseHex\";\r\n\r\nfunction decToHex(v) {\r\n    v |= 0; // Ensure integer value\r\n    return v < 0 ? \"00\" :\r\n        v < 16 ? \"0\" + v.toString(16) :\r\n        v < 256 ? v.toString(16) :\r\n        \"ff\";\r\n}\r\n\r\nfunction hueToRgb(m1, m2, h) {\r\n    h = h < 0 ? h + 6 : h > 6 ? h - 6 : h;\r\n    return decToHex(255 * (\r\n        h < 1 ? m1 + (m2 - m1) * h :\r\n        h < 3 ? m2 :\r\n        h < 4 ? m1 + (m2 - m1) * (4 - h) :\r\n        m1));\r\n}\r\n\r\n/**\r\n * @param {number} r Red channel [0, 255]\r\n * @param {number} g Green channel [0, 255]\r\n * @param {number} b Blue channel [0, 255]\r\n */\r\nexport function rgb(r, g, b) {\r\n    return \"#\" + decToHex(r) + decToHex(g) + decToHex(b);\r\n}\r\n\r\n/**\r\n * @param {string} color  Color value to parse. Currently hexadecimal strings on the format #rgb[a] and #rrggbb[aa] are supported.\r\n * @returns {string}\r\n */\r\nexport function parseColor(color) {\r\n    if (/^#[0-9a-f]{3,8}$/i.test(color)) {\r\n        let result;\r\n        const colorLength = color.length;\r\n\r\n        if (colorLength < 6) {\r\n            const r = color[1],\r\n                  g = color[2],\r\n                  b = color[3],\r\n                  a = color[4] || \"\";\r\n            result = \"#\" + r + r + g + g + b + b + a + a;\r\n        }\r\n        if (colorLength == 7 || colorLength > 8) {\r\n            result = color;\r\n        }\r\n        \r\n        return result;\r\n    }\r\n}\r\n\r\n/**\r\n * Converts a hexadecimal color to a CSS3 compatible color.\r\n * @param {string} hexColor  Color on the format \"#RRGGBB\" or \"#RRGGBBAA\"\r\n * @returns {string}\r\n */\r\nexport function toCss3Color(hexColor) {\r\n    const a = parseHex(hexColor, 7, 2);\r\n    let result;\r\n\r\n    if (isNaN(a)) {\r\n        result = hexColor;\r\n    } else {\r\n        const r = parseHex(hexColor, 1, 2),\r\n            g = parseHex(hexColor, 3, 2),\r\n            b = parseHex(hexColor, 5, 2);\r\n        result = \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + (a / 255).toFixed(2) + \")\";\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color.\r\n * @param {number} hue  Hue in range [0, 1]\r\n * @param {number} saturation  Saturation in range [0, 1]\r\n * @param {number} lightness  Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nexport function hsl(hue, saturation, lightness) {\r\n    // Based on http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color\r\n    let result;\r\n\r\n    if (saturation == 0) {\r\n        const partialHex = decToHex(lightness * 255);\r\n        result = partialHex + partialHex + partialHex;\r\n    }\r\n    else {\r\n        const m2 = lightness <= 0.5 ? lightness * (saturation + 1) : lightness + saturation - lightness * saturation,\r\n              m1 = lightness * 2 - m2;\r\n        result =\r\n            hueToRgb(m1, m2, hue * 6 + 2) +\r\n            hueToRgb(m1, m2, hue * 6) +\r\n            hueToRgb(m1, m2, hue * 6 - 2);\r\n    }\r\n\r\n    return \"#\" + result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color. This function will correct the lightness for the \"dark\" hues\r\n * @param {number} hue  Hue in range [0, 1]\r\n * @param {number} saturation  Saturation in range [0, 1]\r\n * @param {number} lightness  Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nexport function correctedHsl(hue, saturation, lightness) {\r\n    // The corrector specifies the perceived middle lightness for each hue\r\n    const correctors = [ 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55 ],\r\n          corrector = correctors[(hue * 6 + 0.5) | 0];\r\n    \r\n    // Adjust the input lightness relative to the corrector\r\n    lightness = lightness < 0.5 ? lightness * corrector * 2 : corrector + (lightness - 0.5) * (1 - corrector) * 2;\r\n    \r\n    return hsl(hue, saturation, lightness);\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\n// In the future we can replace `GLOBAL` with `globalThis`, but for now use the old school global detection for\r\n// backward compatibility.\r\n\r\nexport const GLOBAL = \r\n    typeof window !== \"undefined\" ? window :\r\n    typeof self !== \"undefined\" ? self :\r\n    typeof global !== \"undefined\" ? global :\r\n    {};\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { parseColor } from \"../renderer/color\";\r\nimport { GLOBAL } from \"./global\";\r\n\r\n/**\r\n * @typedef {Object} ParsedConfiguration\r\n * @property {number} colorSaturation\r\n * @property {number} grayscaleSaturation\r\n * @property {string} backColor\r\n * @property {number} iconPadding\r\n * @property {function(number):number} hue\r\n * @property {function(number):number} colorLightness\r\n * @property {function(number):number} grayscaleLightness\r\n */\r\n\r\nexport const CONFIG_PROPERTIES = {\r\n    GLOBAL: \"jdenticon_config\",\r\n    MODULE: \"config\",\r\n};\r\n\r\nvar rootConfigurationHolder = {};\r\n\r\n/**\r\n * Defines the deprecated `config` property on the root Jdenticon object. When the property is set a warning is \r\n * printed in the console. To minimize bundle size, this is only used in Node bundles.\r\n * @param {!Object} rootObject \r\n */\r\nexport function defineConfigPropertyWithWarn(rootObject) {\r\n    Object.defineProperty(rootObject, CONFIG_PROPERTIES.MODULE, {\r\n        configurable: true,\r\n        get: () => rootConfigurationHolder[CONFIG_PROPERTIES.MODULE],\r\n        set: newConfiguration => {\r\n            rootConfigurationHolder[CONFIG_PROPERTIES.MODULE] = newConfiguration;\r\n            console.warn(\"jdenticon.config is deprecated. Use jdenticon.configure() instead.\");\r\n        },\r\n    });\r\n}\r\n\r\n/**\r\n * Defines the deprecated `config` property on the root Jdenticon object without printing a warning in the console\r\n * when it is being used.\r\n * @param {!Object} rootObject \r\n */\r\nexport function defineConfigProperty(rootObject) {\r\n    rootConfigurationHolder = rootObject;\r\n}\r\n\r\n/**\r\n * Sets a new icon style configuration. The new configuration is not merged with the previous one. * \r\n * @param {Object} newConfiguration - New configuration object.\r\n */\r\nexport function configure(newConfiguration) {\r\n    if (arguments.length) {\r\n        rootConfigurationHolder[CONFIG_PROPERTIES.MODULE] = newConfiguration;\r\n    }\r\n    return rootConfigurationHolder[CONFIG_PROPERTIES.MODULE];\r\n}\r\n\r\n/**\r\n * Gets the normalized current Jdenticon color configuration. Missing fields have default values.\r\n * @param {Object|number|undefined} paddingOrLocalConfig - Configuration passed to the called API method. A\r\n *    local configuration overrides the global configuration in it entirety. This parameter can for backward\r\n *    compatibility also contain a padding value. A padding value only overrides the global padding, not the\r\n *    entire global configuration.\r\n * @param {number} defaultPadding - Padding used if no padding is specified in neither the configuration nor\r\n *    explicitly to the API method.\r\n * @returns {ParsedConfiguration}\r\n */\r\nexport function getConfiguration(paddingOrLocalConfig, defaultPadding) {\r\n    const configObject = \r\n            typeof paddingOrLocalConfig == \"object\" && paddingOrLocalConfig ||\r\n            rootConfigurationHolder[CONFIG_PROPERTIES.MODULE] ||\r\n            GLOBAL[CONFIG_PROPERTIES.GLOBAL] ||\r\n            { },\r\n\r\n        lightnessConfig = configObject[\"lightness\"] || { },\r\n        \r\n        // In versions < 2.1.0 there was no grayscale saturation -\r\n        // saturation was the color saturation.\r\n        saturation = configObject[\"saturation\"] || { },\r\n        colorSaturation = \"color\" in saturation ? saturation[\"color\"] : saturation,\r\n        grayscaleSaturation = saturation[\"grayscale\"],\r\n\r\n        backColor = configObject[\"backColor\"],\r\n        padding = configObject[\"padding\"];\r\n    \r\n    /**\r\n     * Creates a lightness range.\r\n     */\r\n    function lightness(configName, defaultRange) {\r\n        let range = lightnessConfig[configName];\r\n        \r\n        // Check if the lightness range is an array-like object. This way we ensure the\r\n        // array contain two values at the same time.\r\n        if (!(range && range.length > 1)) {\r\n            range = defaultRange;\r\n        }\r\n\r\n        /**\r\n         * Gets a lightness relative the specified value in the specified lightness range.\r\n         */\r\n        return function (value) {\r\n            value = range[0] + value * (range[1] - range[0]);\r\n            return value < 0 ? 0 : value > 1 ? 1 : value;\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Gets a hue allowed by the configured hue restriction,\r\n     * provided the originally computed hue.\r\n     */\r\n    function hueFunction(originalHue) {\r\n        const hueConfig = configObject[\"hues\"];\r\n        let hue;\r\n        \r\n        // Check if 'hues' is an array-like object. This way we also ensure that\r\n        // the array is not empty, which would mean no hue restriction.\r\n        if (hueConfig && hueConfig.length > 0) {\r\n            // originalHue is in the range [0, 1]\r\n            // Multiply with 0.999 to change the range to [0, 1) and then truncate the index.\r\n            hue = hueConfig[0 | (0.999 * originalHue * hueConfig.length)];\r\n        }\r\n\r\n        return typeof hue == \"number\" ?\r\n            \r\n            // A hue was specified. We need to convert the hue from\r\n            // degrees on any turn - e.g. 746° is a perfectly valid hue -\r\n            // to turns in the range [0, 1).\r\n            ((((hue / 360) % 1) + 1) % 1) :\r\n\r\n            // No hue configured => use original hue\r\n            originalHue;\r\n    }\r\n        \r\n    return {\r\n        hue: hueFunction,\r\n        colorSaturation: typeof colorSaturation == \"number\" ? colorSaturation : 0.5,\r\n        grayscaleSaturation: typeof grayscaleSaturation == \"number\" ? grayscaleSaturation : 0,\r\n        colorLightness: lightness(\"color\", [0.4, 0.8]),\r\n        grayscaleLightness: lightness(\"grayscale\", [0.3, 0.9]),\r\n        backColor: parseColor(backColor),\r\n        iconPadding: \r\n            typeof paddingOrLocalConfig == \"number\" ? paddingOrLocalConfig : \r\n            typeof padding == \"number\" ? padding : \r\n            defaultPadding\r\n    }\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\n/**\r\n * Represents a point.\r\n */\r\nexport class Point {\r\n    /**\r\n     * @param {number} x \r\n     * @param {number} y \r\n     */\r\n    constructor(x, y) {\r\n        this.x = x;\r\n        this.y = y;\r\n    }\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { Point } from \"./point\";\r\n\r\n/**\r\n * Translates and rotates a point before being passed on to the canvas context. This was previously done by the canvas context itself, \r\n * but this caused a rendering issue in Chrome on sizes > 256 where the rotation transformation of inverted paths was not done properly.\r\n */\r\nexport class Transform {\r\n    /**\r\n     * @param {number} x The x-coordinate of the upper left corner of the transformed rectangle.\r\n     * @param {number} y The y-coordinate of the upper left corner of the transformed rectangle.\r\n     * @param {number} size The size of the transformed rectangle.\r\n     * @param {number} rotation Rotation specified as 0 = 0 rad, 1 = 0.5π rad, 2 = π rad, 3 = 1.5π rad\r\n     */\r\n    constructor(x, y, size, rotation) {\r\n        this._x = x;\r\n        this._y = y;\r\n        this._size = size;\r\n        this._rotation = rotation;\r\n    }\r\n\r\n    /**\r\n     * Transforms the specified point based on the translation and rotation specification for this Transform.\r\n     * @param {number} x x-coordinate\r\n     * @param {number} y y-coordinate\r\n     * @param {number=} w The width of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n     * @param {number=} h The height of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n     */\r\n    transformIconPoint(x, y, w, h) {\r\n        const right = this._x + this._size,\r\n              bottom = this._y + this._size,\r\n              rotation = this._rotation;\r\n        return rotation === 1 ? new Point(right - y - (h || 0), this._y + x) :\r\n               rotation === 2 ? new Point(right - x - (w || 0), bottom - y - (h || 0)) :\r\n               rotation === 3 ? new Point(this._x + y, bottom - x - (w || 0)) :\r\n               new Point(this._x + x, this._y + y);\r\n    }\r\n}\r\n\r\nexport const NO_TRANSFORM = new Transform(0, 0, 0, 0);\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { NO_TRANSFORM } from \"./transform\";\r\n\r\n/**\r\n * @typedef {import(\"./renderer\").Renderer} Renderer\r\n * @typedef {import(\"./transform\").Transform} Transform\r\n */\r\n\r\n/**\r\n * Provides helper functions for rendering common basic shapes.\r\n */\r\nexport class Graphics {\r\n    /**\r\n     * @param {Renderer} renderer \r\n     */\r\n    constructor(renderer) {\r\n        /**\r\n         * @type {Renderer}\r\n         * @private\r\n         */\r\n        this._renderer = renderer;\r\n\r\n        /**\r\n         * @type {Transform}\r\n         */\r\n        this.currentTransform = NO_TRANSFORM;\r\n    }\r\n\r\n    /**\r\n     * Adds a polygon to the underlying renderer.\r\n     * @param {Array<number>} points The points of the polygon clockwise on the format [ x0, y0, x1, y1, ..., xn, yn ]\r\n     * @param {boolean=} invert Specifies if the polygon will be inverted.\r\n     */\r\n    addPolygon(points, invert) {\r\n        const di = invert ? -2 : 2,\r\n              transformedPoints = [];\r\n        \r\n        for (let i = invert ? points.length - 2 : 0; i < points.length && i >= 0; i += di) {\r\n            transformedPoints.push(this.currentTransform.transformIconPoint(points[i], points[i + 1]));\r\n        }\r\n        \r\n        this._renderer.addPolygon(transformedPoints);\r\n    }\r\n    \r\n    /**\r\n     * Adds a polygon to the underlying renderer.\r\n     * Source: http://stackoverflow.com/a/2173084\r\n     * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n     * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n     * @param {number} size The size of the ellipse.\r\n     * @param {boolean=} invert Specifies if the ellipse will be inverted.\r\n     */\r\n    addCircle(x, y, size, invert) {\r\n        const p = this.currentTransform.transformIconPoint(x, y, size, size);\r\n        this._renderer.addCircle(p, size, invert);\r\n    }\r\n\r\n    /**\r\n     * Adds a rectangle to the underlying renderer.\r\n     * @param {number} x The x-coordinate of the upper left corner of the rectangle.\r\n     * @param {number} y The y-coordinate of the upper left corner of the rectangle.\r\n     * @param {number} w The width of the rectangle.\r\n     * @param {number} h The height of the rectangle.\r\n     * @param {boolean=} invert Specifies if the rectangle will be inverted.\r\n     */\r\n    addRectangle(x, y, w, h, invert) {\r\n        this.addPolygon([\r\n            x, y, \r\n            x + w, y,\r\n            x + w, y + h,\r\n            x, y + h\r\n        ], invert);\r\n    }\r\n\r\n    /**\r\n     * Adds a right triangle to the underlying renderer.\r\n     * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the triangle.\r\n     * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the triangle.\r\n     * @param {number} w The width of the triangle.\r\n     * @param {number} h The height of the triangle.\r\n     * @param {number} r The rotation of the triangle (clockwise). 0 = right corner of the triangle in the lower left corner of the bounding rectangle.\r\n     * @param {boolean=} invert Specifies if the triangle will be inverted.\r\n     */\r\n    addTriangle(x, y, w, h, r, invert) {\r\n        const points = [\r\n            x + w, y, \r\n            x + w, y + h, \r\n            x, y + h,\r\n            x, y\r\n        ];\r\n        points.splice(((r || 0) % 4) * 2, 2);\r\n        this.addPolygon(points, invert);\r\n    }\r\n\r\n    /**\r\n     * Adds a rhombus to the underlying renderer.\r\n     * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n     * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n     * @param {number} w The width of the rhombus.\r\n     * @param {number} h The height of the rhombus.\r\n     * @param {boolean=} invert Specifies if the rhombus will be inverted.\r\n     */\r\n    addRhombus(x, y, w, h, invert) {\r\n        this.addPolygon([\r\n            x + w / 2, y,\r\n            x + w, y + h / 2,\r\n            x + w / 2, y + h,\r\n            x, y + h / 2\r\n        ], invert);\r\n    }\r\n}","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n * @param {number} positionIndex\r\n * @typedef {import('./graphics').Graphics} Graphics\r\n */\r\nexport function centerShape(index, g, cell, positionIndex) {\r\n    index = index % 14;\r\n\r\n    let k, m, w, h, inner, outer;\r\n\r\n    !index ? (\r\n        k = cell * 0.42,\r\n        g.addPolygon([\r\n            0, 0,\r\n            cell, 0,\r\n            cell, cell - k * 2,\r\n            cell - k, cell,\r\n            0, cell\r\n        ])) :\r\n\r\n    index == 1 ? (\r\n        w = 0 | (cell * 0.5), \r\n        h = 0 | (cell * 0.8),\r\n\r\n        g.addTriangle(cell - w, 0, w, h, 2)) :\r\n\r\n    index == 2 ? (\r\n        w = 0 | (cell / 3),\r\n        g.addRectangle(w, w, cell - w, cell - w)) :\r\n\r\n    index == 3 ? (\r\n        inner = cell * 0.1,\r\n        // Use fixed outer border widths in small icons to ensure the border is drawn\r\n        outer = \r\n            cell < 6 ? 1 :\r\n            cell < 8 ? 2 :\r\n            (0 | (cell * 0.25)),\r\n        \r\n        inner = \r\n            inner > 1 ? (0 | inner) : // large icon => truncate decimals\r\n            inner > 0.5 ? 1 :         // medium size icon => fixed width\r\n            inner,                    // small icon => anti-aliased border\r\n\r\n        g.addRectangle(outer, outer, cell - inner - outer, cell - inner - outer)) :\r\n\r\n    index == 4 ? (\r\n        m = 0 | (cell * 0.15),\r\n        w = 0 | (cell * 0.5),\r\n        g.addCircle(cell - w - m, cell - w - m, w)) :\r\n\r\n    index == 5 ? (\r\n        inner = cell * 0.1,\r\n        outer = inner * 4,\r\n\r\n        // Align edge to nearest pixel in large icons\r\n        outer > 3 && (outer = 0 | outer),\r\n        \r\n        g.addRectangle(0, 0, cell, cell),\r\n        g.addPolygon([\r\n            outer, outer,\r\n            cell - inner, outer,\r\n            outer + (cell - outer - inner) / 2, cell - inner\r\n        ], true)) :\r\n\r\n    index == 6 ? \r\n        g.addPolygon([\r\n            0, 0,\r\n            cell, 0,\r\n            cell, cell * 0.7,\r\n            cell * 0.4, cell * 0.4,\r\n            cell * 0.7, cell,\r\n            0, cell\r\n        ]) :\r\n\r\n    index == 7 ? \r\n        g.addTriangle(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n    index == 8 ? (\r\n        g.addRectangle(0, 0, cell, cell / 2),\r\n        g.addRectangle(0, cell / 2, cell / 2, cell / 2),\r\n        g.addTriangle(cell / 2, cell / 2, cell / 2, cell / 2, 1)) :\r\n\r\n    index == 9 ? (\r\n        inner = cell * 0.14,\r\n        // Use fixed outer border widths in small icons to ensure the border is drawn\r\n        outer = \r\n            cell < 4 ? 1 :\r\n            cell < 6 ? 2 :\r\n            (0 | (cell * 0.35)),\r\n\r\n        inner = \r\n            cell < 8 ? inner : // small icon => anti-aliased border\r\n            (0 | inner),       // large icon => truncate decimals\r\n\r\n        g.addRectangle(0, 0, cell, cell),\r\n        g.addRectangle(outer, outer, cell - outer - inner, cell - outer - inner, true)) :\r\n\r\n    index == 10 ? (\r\n        inner = cell * 0.12,\r\n        outer = inner * 3,\r\n\r\n        g.addRectangle(0, 0, cell, cell),\r\n        g.addCircle(outer, outer, cell - inner - outer, true)) :\r\n\r\n    index == 11 ? \r\n        g.addTriangle(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n    index == 12 ? (\r\n        m = cell * 0.25,\r\n        g.addRectangle(0, 0, cell, cell),\r\n        g.addRhombus(m, m, cell - m, cell - m, true)) :\r\n\r\n    // 13\r\n    (\r\n        !positionIndex && (\r\n            m = cell * 0.4, w = cell * 1.2,\r\n            g.addCircle(m, m, w)\r\n        )\r\n    );\r\n}\r\n\r\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n */\r\nexport function outerShape(index, g, cell) {\r\n    index = index % 4;\r\n\r\n    let m;\r\n\r\n    !index ?\r\n        g.addTriangle(0, 0, cell, cell, 0) :\r\n        \r\n    index == 1 ?\r\n        g.addTriangle(0, cell / 2, cell, cell / 2, 0) :\r\n\r\n    index == 2 ?\r\n        g.addRhombus(0, 0, cell, cell) :\r\n\r\n    // 3\r\n    (\r\n        m = cell / 6,\r\n        g.addCircle(m, m, cell - 2 * m)\r\n    );\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { correctedHsl } from \"./color\";\r\n\r\n/**\r\n * Gets a set of identicon color candidates for a specified hue and config.\r\n * @param {number} hue\r\n * @param {import(\"../common/configuration\").ParsedConfiguration} config\r\n */\r\nexport function colorTheme(hue, config) {\r\n    hue = config.hue(hue);\r\n    return [\r\n        // Dark gray\r\n        correctedHsl(hue, config.grayscaleSaturation, config.grayscaleLightness(0)),\r\n        // Mid color\r\n        correctedHsl(hue, config.colorSaturation, config.colorLightness(0.5)),\r\n        // Light gray\r\n        correctedHsl(hue, config.grayscaleSaturation, config.grayscaleLightness(1)),\r\n        // Light color\r\n        correctedHsl(hue, config.colorSaturation, config.colorLightness(1)),\r\n        // Dark color\r\n        correctedHsl(hue, config.colorSaturation, config.colorLightness(0))\r\n    ];\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { Transform } from \"./transform\";\r\nimport { Graphics } from \"./graphics\";\r\nimport { centerShape, outerShape } from \"./shapes\";\r\nimport { colorTheme } from \"./colorTheme\";\r\nimport { parseHex } from \"../common/parseHex\";\r\nimport { getConfiguration } from \"../common/configuration\";\r\n     \r\n/**\r\n * Draws an identicon to a specified renderer.\r\n * @param {import('./renderer').Renderer} renderer\r\n * @param {string} hash\r\n * @param {Object|number=} config\r\n */\r\nexport function iconGenerator(renderer, hash, config) {\r\n    const parsedConfig = getConfiguration(config, 0.08);\r\n\r\n    // Set background color\r\n    if (parsedConfig.backColor) {\r\n        renderer.setBackground(parsedConfig.backColor);\r\n    }\r\n    \r\n    // Calculate padding and round to nearest integer\r\n    let size = renderer.iconSize;\r\n    const padding = (0.5 + size * parsedConfig.iconPadding) | 0;\r\n    size -= padding * 2;\r\n    \r\n    const graphics = new Graphics(renderer);\r\n    \r\n    // Calculate cell size and ensure it is an integer\r\n    const cell = 0 | (size / 4);\r\n    \r\n    // Since the cell size is integer based, the actual icon will be slightly smaller than specified => center icon\r\n    const x = 0 | (padding + size / 2 - cell * 2);\r\n    const y = 0 | (padding + size / 2 - cell * 2);\r\n\r\n    function renderShape(colorIndex, shapes, index, rotationIndex, positions) {\r\n        const shapeIndex = parseHex(hash, index, 1);\r\n        let r = rotationIndex ? parseHex(hash, rotationIndex, 1) : 0;\r\n        \r\n        renderer.beginShape(availableColors[selectedColorIndexes[colorIndex]]);\r\n        \r\n        for (let i = 0; i < positions.length; i++) {\r\n            graphics.currentTransform = new Transform(x + positions[i][0] * cell, y + positions[i][1] * cell, cell, r++ % 4);\r\n            shapes(shapeIndex, graphics, cell, i);\r\n        }\r\n        \r\n        renderer.endShape();\r\n    }\r\n\r\n    // AVAILABLE COLORS\r\n    const hue = parseHex(hash, -7) / 0xfffffff,\r\n    \r\n          // Available colors for this icon\r\n          availableColors = colorTheme(hue, parsedConfig),\r\n\r\n          // The index of the selected colors\r\n          selectedColorIndexes = [];\r\n\r\n    let index;\r\n\r\n    function isDuplicate(values) {\r\n        if (values.indexOf(index) >= 0) {\r\n            for (let i = 0; i < values.length; i++) {\r\n                if (selectedColorIndexes.indexOf(values[i]) >= 0) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    for (let i = 0; i < 3; i++) {\r\n        index = parseHex(hash, 8 + i, 1) % availableColors.length;\r\n        if (isDuplicate([0, 4]) || // Disallow dark gray and dark color combo\r\n            isDuplicate([2, 3])) { // Disallow light gray and light color combo\r\n            index = 1;\r\n        }\r\n        selectedColorIndexes.push(index);\r\n    }\r\n\r\n    // ACTUAL RENDERING\r\n    // Sides\r\n    renderShape(0, outerShape, 2, 3, [[1, 0], [2, 0], [2, 3], [1, 3], [0, 1], [3, 1], [3, 2], [0, 2]]);\r\n    // Corners\r\n    renderShape(1, outerShape, 4, 5, [[0, 0], [3, 0], [3, 3], [0, 3]]);\r\n    // Center\r\n    renderShape(2, centerShape, 1, null, [[1, 1], [2, 1], [2, 2], [1, 2]]);\r\n    \r\n    renderer.finish();\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\n/**\r\n * Computes a SHA1 hash for any value and returns it as a hexadecimal string.\r\n * \r\n * This function is optimized for minimal code size and rather short messages.\r\n * \r\n * @param {string} message \r\n */\r\nexport function sha1(message) {\r\n    const HASH_SIZE_HALF_BYTES = 40;\r\n    const BLOCK_SIZE_WORDS = 16;\r\n\r\n    // Variables\r\n    // `var` is used to be able to minimize the number of `var` keywords.\r\n    var i = 0,\r\n        f = 0,\r\n    \r\n        // Use `encodeURI` to UTF8 encode the message without any additional libraries\r\n        // We could use `unescape` + `encodeURI` to minimize the code, but that would be slightly risky\r\n        // since `unescape` is deprecated.\r\n        urlEncodedMessage = encodeURI(message) + \"%80\", // trailing '1' bit padding\r\n        \r\n        // This can be changed to a preallocated Uint32Array array for greater performance and larger code size\r\n        data = [],\r\n        dataSize,\r\n        \r\n        hashBuffer = [],\r\n\r\n        a = 0x67452301,\r\n        b = 0xefcdab89,\r\n        c = ~a,\r\n        d = ~b,\r\n        e = 0xc3d2e1f0,\r\n        hash = [a, b, c, d, e],\r\n\r\n        blockStartIndex = 0,\r\n        hexHash = \"\";\r\n\r\n    /**\r\n     * Rotates the value a specified number of bits to the left.\r\n     * @param {number} value  Value to rotate\r\n     * @param {number} shift  Bit count to shift.\r\n     */\r\n    function rotl(value, shift) {\r\n        return (value << shift) | (value >>> (32 - shift));\r\n    }\r\n\r\n    // Message data\r\n    for ( ; i < urlEncodedMessage.length; f++) {\r\n        data[f >> 2] = data[f >> 2] |\r\n            (\r\n                (\r\n                    urlEncodedMessage[i] == \"%\"\r\n                        // Percent encoded byte\r\n                        ? parseInt(urlEncodedMessage.substring(i + 1, i += 3), 16)\r\n                        // Unencoded byte\r\n                        : urlEncodedMessage.charCodeAt(i++)\r\n                )\r\n\r\n                // Read bytes in reverse order (big endian words)\r\n                << ((3 - (f & 3)) * 8)\r\n            );\r\n    }\r\n\r\n    // f is now the length of the utf8 encoded message\r\n    // 7 = 8 bytes (64 bit) for message size, -1 to round down\r\n    // >> 6 = integer division with block size\r\n    dataSize = (((f + 7) >> 6) + 1) * BLOCK_SIZE_WORDS;\r\n\r\n    // Message size in bits.\r\n    // SHA1 uses a 64 bit integer to represent the size, but since we only support short messages only the least\r\n    // significant 32 bits are set. -8 is for the '1' bit padding byte.\r\n    data[dataSize - 1] = f * 8 - 8;\r\n    \r\n    // Compute hash\r\n    for ( ; blockStartIndex < dataSize; blockStartIndex += BLOCK_SIZE_WORDS) {\r\n        for (i = 0; i < 80; i++) {\r\n            f = rotl(a, 5) + e + (\r\n                    // Ch\r\n                    i < 20 ? ((b & c) ^ ((~b) & d)) + 0x5a827999 :\r\n                    \r\n                    // Parity\r\n                    i < 40 ? (b ^ c ^ d) + 0x6ed9eba1 :\r\n                    \r\n                    // Maj\r\n                    i < 60 ? ((b & c) ^ (b & d) ^ (c & d)) + 0x8f1bbcdc :\r\n                    \r\n                    // Parity\r\n                    (b ^ c ^ d) + 0xca62c1d6\r\n                ) + ( \r\n                    hashBuffer[i] = i < BLOCK_SIZE_WORDS\r\n                        // Bitwise OR is used to coerse `undefined` to 0\r\n                        ? (data[blockStartIndex + i] | 0)\r\n                        : rotl(hashBuffer[i - 3] ^ hashBuffer[i - 8] ^ hashBuffer[i - 14] ^ hashBuffer[i - 16], 1)\r\n                );\r\n\r\n            e = d;\r\n            d = c;\r\n            c = rotl(b, 30);\r\n            b = a;\r\n            a = f;\r\n        }\r\n\r\n        hash[0] = a = ((hash[0] + a) | 0);\r\n        hash[1] = b = ((hash[1] + b) | 0);\r\n        hash[2] = c = ((hash[2] + c) | 0);\r\n        hash[3] = d = ((hash[3] + d) | 0);\r\n        hash[4] = e = ((hash[4] + e) | 0);\r\n    }\r\n\r\n    // Format hex hash\r\n    for (i = 0; i < HASH_SIZE_HALF_BYTES; i++) {\r\n        hexHash += (\r\n            (\r\n                // Get word (2^3 half-bytes per word)\r\n                hash[i >> 3] >>>\r\n\r\n                // Append half-bytes in reverse order\r\n                ((7 - (i & 7)) * 4)\r\n            ) \r\n            // Clamp to half-byte\r\n            & 0xf\r\n        ).toString(16);\r\n    }\r\n\r\n    return hexHash;\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { sha1 } from \"./sha1\";\r\n\r\n/**\r\n * Inputs a value that might be a valid hash string for Jdenticon and returns it \r\n * if it is determined valid, otherwise a falsy value is returned.\r\n */\r\nexport function isValidHash(hashCandidate) {\r\n    return /^[0-9a-f]{11,}$/i.test(hashCandidate) && hashCandidate;\r\n}\r\n\r\n/**\r\n * Computes a hash for the specified value. Currently SHA1 is used. This function\r\n * always returns a valid hash.\r\n */\r\nexport function computeHash(value) {\r\n    return sha1(value == null ? \"\" : \"\" + value);\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { toCss3Color } from \"../color\";\r\n\r\n/**\r\n * @typedef {import(\"../renderer\").Renderer} Renderer\r\n * @typedef {import('../point').Point} Point\r\n */\r\n\r\n/**\r\n * Renderer redirecting drawing commands to a canvas context.\r\n * @implements {Renderer}\r\n */\r\nexport class CanvasRenderer {\r\n    /**\r\n     * @param {number=} iconSize\r\n     */\r\n    constructor(ctx, iconSize) {\r\n        const canvas = ctx.canvas; \r\n        const width = canvas.width;\r\n        const height = canvas.height;\r\n        \r\n        ctx.save();\r\n        \r\n        if (!iconSize) {\r\n            iconSize = Math.min(width, height);\r\n            \r\n            ctx.translate(\r\n                ((width - iconSize) / 2) | 0,\r\n                ((height - iconSize) / 2) | 0);\r\n        }\r\n\r\n        /**\r\n         * @private\r\n         */\r\n        this._ctx = ctx;\r\n        this.iconSize = iconSize;\r\n        \r\n        ctx.clearRect(0, 0, iconSize, iconSize);\r\n    }\r\n\r\n    /**\r\n     * Fills the background with the specified color.\r\n     * @param {string} fillColor  Fill color on the format #rrggbb[aa].\r\n     */\r\n    setBackground(fillColor) {\r\n        const ctx = this._ctx;\r\n        const iconSize = this.iconSize;\r\n\r\n        ctx.fillStyle = toCss3Color(fillColor);\r\n        ctx.fillRect(0, 0, iconSize, iconSize);\r\n    }\r\n\r\n    /**\r\n     * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n     * @param {string} fillColor Fill color on format #rrggbb[aa].\r\n     */\r\n    beginShape(fillColor) {\r\n        const ctx = this._ctx;\r\n        ctx.fillStyle = toCss3Color(fillColor);\r\n        ctx.beginPath();\r\n    }\r\n\r\n    /**\r\n     * Marks the end of the currently drawn shape. This causes the queued paths to be rendered on the canvas.\r\n     */\r\n    endShape() {\r\n        this._ctx.fill();\r\n    }\r\n\r\n    /**\r\n     * Adds a polygon to the rendering queue.\r\n     * @param points An array of Point objects.\r\n     */\r\n    addPolygon(points) {\r\n        const ctx = this._ctx;\r\n        ctx.moveTo(points[0].x, points[0].y);\r\n        for (let i = 1; i < points.length; i++) {\r\n            ctx.lineTo(points[i].x, points[i].y);\r\n        }\r\n        ctx.closePath();\r\n    }\r\n\r\n    /**\r\n     * Adds a circle to the rendering queue.\r\n     * @param {Point} point The upper left corner of the circle bounding box.\r\n     * @param {number} diameter The diameter of the circle.\r\n     * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n     */\r\n    addCircle(point, diameter, counterClockwise) {\r\n        const ctx = this._ctx,\r\n              radius = diameter / 2;\r\n        ctx.moveTo(point.x + radius, point.y + radius);\r\n        ctx.arc(point.x + radius, point.y + radius, radius, 0, Math.PI * 2, counterClockwise);\r\n        ctx.closePath();\r\n    }\r\n\r\n    /**\r\n     * Called when the icon has been completely drawn.\r\n     */\r\n    finish() {\r\n        this._ctx.restore();\r\n    }\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nexport const ICON_TYPE_SVG = 1;\r\n\r\nexport const ICON_TYPE_CANVAS = 2;\r\n\r\nexport const ATTRIBUTES = {\r\n    HASH: \"data-jdenticon-hash\",\r\n    VALUE: \"data-jdenticon-value\"\r\n};\r\n\r\nexport const IS_RENDERED_PROPERTY = \"jdenticonRendered\";\r\n\r\nexport const ICON_SELECTOR = \"[\" + ATTRIBUTES.HASH +\"],[\" + ATTRIBUTES.VALUE +\"]\";\r\n\r\nexport const documentQuerySelectorAll = /** @type {!Function} */ (\r\n    typeof document !== \"undefined\" && document.querySelectorAll.bind(document));\r\n\r\nexport function getIdenticonType(el) {\r\n    if (el) {\r\n        const tagName = el[\"tagName\"];\r\n\r\n        if (/^svg$/i.test(tagName)) {\r\n            return ICON_TYPE_SVG;\r\n        }\r\n\r\n        if (/^canvas$/i.test(tagName) && \"getContext\" in el) {\r\n            return ICON_TYPE_CANVAS;\r\n        }\r\n    }\r\n}\r\n\r\nexport function whenDocumentIsReady(/** @type {Function} */ callback) {\r\n    function loadedHandler() {\r\n        document.removeEventListener(\"DOMContentLoaded\", loadedHandler);\r\n        window.removeEventListener(\"load\", loadedHandler);\r\n        setTimeout(callback, 0); // Give scripts a chance to run\r\n    }\r\n    \r\n    if (typeof document !== \"undefined\" &&\r\n        typeof window !== \"undefined\" &&\r\n        typeof setTimeout !== \"undefined\"\r\n    ) {\r\n        if (document.readyState === \"loading\") {\r\n            document.addEventListener(\"DOMContentLoaded\", loadedHandler);\r\n            window.addEventListener(\"load\", loadedHandler);\r\n        } else {\r\n            // Document already loaded. The load events above likely won't be raised\r\n            setTimeout(callback, 0);\r\n        }\r\n    }\r\n}\r\n","import { iconGenerator } from \"../renderer/iconGenerator\";\r\nimport { isValidHash, computeHash } from \"../common/hashUtils\";\r\nimport { CanvasRenderer } from \"../renderer/canvas/canvasRenderer\";\r\nimport { IS_RENDERED_PROPERTY } from \"../common/dom\";\r\n\r\n/**\r\n * Draws an identicon to a context.\r\n * @param {CanvasRenderingContext2D} ctx - Canvas context on which the icon will be drawn at location (0, 0).\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n *    global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n *    specified in place of a configuration object.\r\n */\r\nexport function drawIcon(ctx, hashOrValue, size, config) {\r\n    if (!ctx) {\r\n        throw new Error(\"No canvas specified.\");\r\n    }\r\n    \r\n    iconGenerator(new CanvasRenderer(ctx, size), \r\n        isValidHash(hashOrValue) || computeHash(hashOrValue), \r\n        config);\r\n\r\n    const canvas = ctx.canvas;\r\n    if (canvas) {\r\n        canvas[IS_RENDERED_PROPERTY] = true;\r\n    }\r\n}\r\n","import canvasRenderer from \"canvas-renderer\";\r\nimport { iconGenerator } from \"../renderer/iconGenerator\";\r\nimport { isValidHash, computeHash } from \"../common/hashUtils\";\r\nimport { CanvasRenderer } from \"../renderer/canvas/canvasRenderer\";\r\n\r\n/**\r\n * Draws an identicon as PNG.\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n *    global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n *    specified in place of a configuration object.\r\n * @returns {Buffer} PNG data\r\n */\r\nexport function toPng(hashOrValue, size, config) {\r\n    const canvas = canvasRenderer.createCanvas(size, size);\r\n    const ctx = canvas.getContext(\"2d\");\r\n    \r\n    iconGenerator(new CanvasRenderer(ctx, size), \r\n        isValidHash(hashOrValue) || computeHash(hashOrValue), \r\n        config);\r\n    \r\n    return canvas.toPng({ \"Software\": \"Jdenticon\" });\r\n}","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\n/**\r\n * Prepares a measure to be used as a measure in an SVG path, by\r\n * rounding the measure to a single decimal. This reduces the file\r\n * size of the generated SVG with more than 50% in some cases.\r\n */\r\nfunction svgValue(value) {\r\n    return ((value * 10 + 0.5) | 0) / 10;\r\n}\r\n\r\n/**\r\n * Represents an SVG path element.\r\n */\r\nexport class SvgPath {\r\n    constructor() {\r\n        /**\r\n         * This property holds the data string (path.d) of the SVG path.\r\n         * @type {string}\r\n         */\r\n        this.dataString = \"\";\r\n    }\r\n\r\n    /**\r\n     * Adds a polygon with the current fill color to the SVG path.\r\n     * @param points An array of Point objects.\r\n     */\r\n    addPolygon(points) {\r\n        let dataString = \"\";\r\n        for (let i = 0; i < points.length; i++) {\r\n            dataString += (i ? \"L\" : \"M\") + svgValue(points[i].x) + \" \" + svgValue(points[i].y);\r\n        }\r\n        this.dataString += dataString + \"Z\";\r\n    }\r\n\r\n    /**\r\n     * Adds a circle with the current fill color to the SVG path.\r\n     * @param {import('../point').Point} point The upper left corner of the circle bounding box.\r\n     * @param {number} diameter The diameter of the circle.\r\n     * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n     */\r\n    addCircle(point, diameter, counterClockwise) {\r\n        const sweepFlag = counterClockwise ? 0 : 1,\r\n              svgRadius = svgValue(diameter / 2),\r\n              svgDiameter = svgValue(diameter),\r\n              svgArc = \"a\" + svgRadius + \",\" + svgRadius + \" 0 1,\" + sweepFlag + \" \";\r\n            \r\n        this.dataString += \r\n            \"M\" + svgValue(point.x) + \" \" + svgValue(point.y + diameter / 2) +\r\n            svgArc + svgDiameter + \",0\" + \r\n            svgArc + (-svgDiameter) + \",0\";\r\n    }\r\n}\r\n\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { SvgPath } from \"./svgPath\";\r\nimport { parseHex } from \"../../common/parseHex\";\r\n\r\n/**\r\n * @typedef {import(\"../point\").Point} Point\r\n * @typedef {import(\"../renderer\").Renderer} Renderer\r\n * @typedef {import(\"./svgElement\").SvgElement} SvgElement\r\n * @typedef {import(\"./svgWriter\").SvgWriter} SvgWriter\r\n */\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n * @implements {Renderer}\r\n */\r\nexport class SvgRenderer {\r\n    /**\r\n     * @param {SvgElement|SvgWriter} target \r\n     */\r\n    constructor(target) {\r\n        /**\r\n         * @type {SvgPath}\r\n         * @private\r\n         */\r\n        this._path;\r\n\r\n        /**\r\n         * @type {Object.<string,SvgPath>}\r\n         * @private\r\n         */\r\n        this._pathsByColor = { };\r\n\r\n        /**\r\n         * @type {SvgElement|SvgWriter}\r\n         * @private\r\n         */\r\n        this._target = target;\r\n\r\n        /**\r\n         * @type {number}\r\n         */\r\n        this.iconSize = target.iconSize;\r\n    }\r\n\r\n    /**\r\n     * Fills the background with the specified color.\r\n     * @param {string} fillColor  Fill color on the format #rrggbb[aa].\r\n     */\r\n    setBackground(fillColor) {\r\n        const match = /^(#......)(..)?/.exec(fillColor),\r\n              opacity = match[2] ? parseHex(match[2], 0) / 255 : 1;\r\n        this._target.setBackground(match[1], opacity);\r\n    }\r\n\r\n    /**\r\n     * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n     * @param {string} color Fill color on format #xxxxxx.\r\n     */\r\n    beginShape(color) {\r\n        this._path = this._pathsByColor[color] || (this._pathsByColor[color] = new SvgPath());\r\n    }\r\n\r\n    /**\r\n     * Marks the end of the currently drawn shape.\r\n     */\r\n    endShape() { }\r\n\r\n    /**\r\n     * Adds a polygon with the current fill color to the SVG.\r\n     * @param points An array of Point objects.\r\n     */\r\n    addPolygon(points) {\r\n        this._path.addPolygon(points);\r\n    }\r\n\r\n    /**\r\n     * Adds a circle with the current fill color to the SVG.\r\n     * @param {Point} point The upper left corner of the circle bounding box.\r\n     * @param {number} diameter The diameter of the circle.\r\n     * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n     */\r\n    addCircle(point, diameter, counterClockwise) {\r\n        this._path.addCircle(point, diameter, counterClockwise);\r\n    }\r\n\r\n    /**\r\n     * Called when the icon has been completely drawn.\r\n     */\r\n    finish() { \r\n        const pathsByColor = this._pathsByColor;\r\n        for (let color in pathsByColor) {\r\n            // hasOwnProperty cannot be shadowed in pathsByColor\r\n            // eslint-disable-next-line no-prototype-builtins\r\n            if (pathsByColor.hasOwnProperty(color)) {\r\n                this._target.appendPath(color, pathsByColor[color].dataString);\r\n            }\r\n        }\r\n    }\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nexport const SVG_CONSTANTS = {\r\n    XMLNS: \"http://www.w3.org/2000/svg\",\r\n    WIDTH: \"width\",\r\n    HEIGHT: \"height\",\r\n}","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\nimport { SVG_CONSTANTS } from \"./constants\";\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n */\r\nexport class SvgWriter {\r\n    /**\r\n     * @param {number} iconSize - Icon width and height in pixels.\r\n     */\r\n    constructor(iconSize) {\r\n        /**\r\n         * @type {number}\r\n         */\r\n        this.iconSize = iconSize;\r\n\r\n        /**\r\n         * @type {string}\r\n         * @private\r\n         */\r\n        this._s =\r\n            '<svg xmlns=\"' + SVG_CONSTANTS.XMLNS + '\" width=\"' + \r\n            iconSize + '\" height=\"' + iconSize + '\" viewBox=\"0 0 ' + \r\n            iconSize + ' ' + iconSize + '\">';\r\n    }\r\n\r\n    /**\r\n     * Fills the background with the specified color.\r\n     * @param {string} fillColor  Fill color on the format #rrggbb.\r\n     * @param {number} opacity  Opacity in the range [0.0, 1.0].\r\n     */\r\n    setBackground(fillColor, opacity) {\r\n        if (opacity) {\r\n            this._s += '<rect width=\"100%\" height=\"100%\" fill=\"' + \r\n                fillColor + '\" opacity=\"' + opacity.toFixed(2) + '\"/>';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Writes a path to the SVG string.\r\n     * @param {string} color Fill color on format #rrggbb.\r\n     * @param {string} dataString The SVG path data string.\r\n     */\r\n    appendPath(color, dataString) {\r\n        this._s += '<path fill=\"' + color + '\" d=\"' + dataString + '\"/>';\r\n    }\r\n\r\n    /**\r\n     * Gets the rendered image as an SVG string.\r\n     */\r\n    toString() {\r\n        return this._s + \"</svg>\";\r\n    }\r\n}\r\n","import { iconGenerator } from \"../renderer/iconGenerator\";\r\nimport { isValidHash, computeHash } from \"../common/hashUtils\";\r\nimport { SvgRenderer } from \"../renderer/svg/svgRenderer\";\r\nimport { SvgWriter } from \"../renderer/svg/svgWriter\";\r\n\r\n/**\r\n * Draws an identicon as an SVG string.\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n *    global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n *    specified in place of a configuration object.\r\n * @returns {string} SVG string\r\n */\r\nexport function toSvg(hashOrValue, size, config) {\r\n    const writer = new SvgWriter(size);\r\n    iconGenerator(new SvgRenderer(writer), \r\n        isValidHash(hashOrValue) || computeHash(hashOrValue),\r\n        config);\r\n    return writer.toString();\r\n}\r\n","﻿/**\r\n * Jdenticon\r\n * https://github.com/dmester/jdenticon\r\n * Copyright © Daniel Mester Pirttijärvi\r\n */\r\n\r\n// This file is compiled to dist/jdenticon-node.mjs\r\n\r\nif (typeof process === \"undefined\" &&\r\n    typeof window !== \"undefined\" &&\r\n    typeof document !== \"undefined\"\r\n) {\r\n    console.warn(\r\n        \"Jdenticon: 'dist/jdenticon-node.mjs' is only intended for Node.js environments and will increase your \" +\r\n        \"bundle size when included in browser bundles. If you want to run Jdenticon in the browser, please add a \" +\r\n        \"reference to 'dist/jdenticon.js' or 'dist/jdenticon.min.js' instead.\");\r\n}\r\n\r\nexport { configure } from \"./apis/configure\";\r\nexport { drawIcon } from \"./apis/drawIcon\";\r\nexport { toPng } from \"./apis/toPng\";\r\nexport { toSvg } from \"./apis/toSvg\";\r\n\r\n/**\r\n * Specifies the version of the Jdenticon package in use.\r\n * @type {string}\r\n */\r\nexport const version = \"#version#\";\r\n\r\n/**\r\n * Specifies which bundle of Jdenticon that is used.\r\n * @type {string}\r\n */\r\nexport const bundle = \"node-esm\";\r\n\r\n/**\r\n * @throws {Error}\r\n */\r\nexport function update() {\r\n    throw new Error(\"jdenticon.update() is not supported on Node.js.\");\r\n}\r\n\r\n/**\r\n * @throws {Error}\r\n */\r\nexport function updateCanvas() {\r\n    throw new Error(\"jdenticon.updateCanvas() is not supported on Node.js.\");\r\n}\r\n\r\n/**\r\n * @throws {Error}\r\n */\r\nexport function updateSvg() {\r\n    throw new Error(\"jdenticon.updateSvg() is not supported on Node.js.\");\r\n}\r\n","\n//# sourceMappingURL=jdenticon-node.mjs.map\n"]}