{"version":3,"sources":["jsdelivr-header.js","/npm/@cfx-kit/wallet-avatar@0.0.5/wallet-avatar.bundle.js"],"names":[],"mappings":"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","file":"/npm/@cfx-kit/wallet-avatar@0.0.5/wallet-avatar.bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/@cfx-kit/wallet-avatar@0.0.5/wallet-avatar.bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('mersenne-twister')) :\n    typeof define === 'function' && define.amd ? define(['exports', 'mersenne-twister'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global[\"wallet-avatar\"] = {}, global.MersenneTwister));\n})(this, (function (exports, MersenneTwister) { 'use strict';\n\n    function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n    var MersenneTwister__default = /*#__PURE__*/_interopDefaultLegacy(MersenneTwister);\n\n    function escapeHTML(html) {\n        const map = {\n            '&': '&amp;',\n            '<': '&lt;',\n            '>': '&gt;',\n            '\"': '&quot;',\n            \"'\": '&#039;',\n        };\n        return `${html}`.replace(/[&<>\"']/g, (i) => {\n            return map[i] || i;\n        });\n    }\n    function valueToHTML(v) {\n        if (v instanceof HTMLTemplate) {\n            return v.toString();\n        }\n        if (Array.isArray(v)) {\n            return v.map((i) => valueToHTML(i)).join('');\n        }\n        if ((typeof v === 'boolean' && v === false) || v === undefined || v === null) {\n            return '';\n        }\n        return escapeHTML(v);\n    }\n    class HTMLTemplate {\n        constructor(strings, values) {\n            this.strings = strings;\n            this.values = values;\n        }\n        getHTML() {\n            const { strings, values } = this;\n            let str = strings[0];\n            for (let i = 1; i < strings.length; i++) {\n                const v = values[i - 1];\n                str += `${valueToHTML(v)}${strings[i]}`;\n            }\n            return str;\n        }\n        toString() {\n            return this.getHTML();\n        }\n    }\n    function html(strings, ...values) {\n        return new HTMLTemplate(strings, values);\n    }\n\n    const colors = [\n        '#01888C',\n        '#FC7500',\n        '#034F5D',\n        '#F73F01',\n        '#FC1960',\n        '#C7144C',\n        '#F3C100',\n        '#1598F2',\n        '#2465E1',\n        '#F19E02', // gold\n    ];\n    const shapeCount = 4;\n    const svgNamespaceURI = 'http://www.w3.org/2000/svg';\n    function HSLToHex(hsl) {\n        let { h, s, l } = hsl;\n        s /= 100;\n        l /= 100;\n        let c = (1 - Math.abs(2 * l - 1)) * s, x = c * (1 - Math.abs(((h / 60) % 2) - 1)), m = l - c / 2, _r = 0, _g = 0, _b = 0;\n        if (0 <= h && h < 60) {\n            _r = c;\n            _g = x;\n            _b = 0;\n        }\n        else if (60 <= h && h < 120) {\n            _r = x;\n            _g = c;\n            _b = 0;\n        }\n        else if (120 <= h && h < 180) {\n            _r = 0;\n            _g = c;\n            _b = x;\n        }\n        else if (180 <= h && h < 240) {\n            _r = 0;\n            _g = x;\n            _b = c;\n        }\n        else if (240 <= h && h < 300) {\n            _r = x;\n            _g = 0;\n            _b = c;\n        }\n        else if (300 <= h && h < 360) {\n            _r = c;\n            _g = 0;\n            _b = x;\n        }\n        // Having obtained RGB, convert channels to hex\n        let r = Math.round((_r + m) * 255).toString(16), g = Math.round((_g + m) * 255).toString(16), b = Math.round((_b + m) * 255).toString(16);\n        // Prepend 0s, if necessary\n        if (r.length == 1)\n            r = '0' + r;\n        if (g.length == 1)\n            g = '0' + g;\n        if (b.length == 1)\n            b = '0' + b;\n        return '#' + r + g + b;\n    }\n    function addressToNumber(address) {\n        const addr = address.slice(2, 10);\n        const seed = parseInt(addr, 16);\n        return seed;\n    }\n    class WalletAvatarGenerate {\n        constructor(mt) {\n            this.mt = mt;\n        }\n        generateAvatarSvg(address) {\n            const html = this.generateAvatarHTML(address);\n            const temp = document.createElement('template');\n            temp.innerHTML = html;\n            return temp.content.firstChild;\n        }\n        generateAvatarURL(address) {\n            const html = this.generateAvatarHTML(address);\n            return `data:image/svg+xml;base64,${btoa(html)}`;\n        }\n        canvasRender(address, size) {\n            const diameter = size;\n            const canvas = document.createElement('canvas');\n            const ctx = canvas.getContext('2d');\n            canvas.height = canvas.width = size;\n            this.mt.init_seed(addressToNumber(address));\n            const remainingColors = this.hueShift(colors.slice());\n            const bgColor = this.genColor(remainingColors);\n            ctx.fillStyle = bgColor;\n            ctx.fillRect(0, 0, diameter, diameter);\n            for (let i = 0; i < shapeCount - 1; i++) {\n                const total = shapeCount - 1;\n                const firstRot = this.mt.random();\n                const angle = Math.PI * 2 * firstRot;\n                const velocity = (diameter * this.mt.random()) / total + (diameter * i) / total;\n                const tx = Math.cos(angle) * velocity;\n                const ty = Math.sin(angle) * velocity;\n                const secondRot = this.mt.random();\n                const rot = firstRot * 360 + secondRot * 180;\n                const fill = this.genColor(remainingColors);\n                const p = new Path2D();\n                p.rect(0, 0, diameter, diameter);\n                ctx.fillStyle = fill;\n                const { x, y } = new DOMMatrix()\n                    .translate(0, 0)\n                    .rotate(rot)\n                    .transformPoint({ x: -diameter / 2, y: -diameter / 2 });\n                ctx.translate(x + diameter / 2 + tx, y + diameter / 2 + ty);\n                ctx.rotate((rot * Math.PI) / 180);\n                ctx.fill(p);\n                ctx.resetTransform();\n            }\n            return canvas;\n        }\n        generateAvatarPNG(address, quality = 2) {\n            const size = (quality > 1 ? Math.min(10, quality) : 1) * 100;\n            return this.canvasRender(address, size).toDataURL('image/png', 1);\n        }\n        generateAvatarHTML(address) {\n            this.mt.init_seed(addressToNumber(address));\n            const remainingColors = this.hueShift(colors.slice());\n            const bgColor = this.genColor(remainingColors);\n            const bgRectHTML = html `<rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" fill=\"${bgColor}\"></rect>`;\n            const items = Array(shapeCount - 1)\n                .fill('$')\n                .map((_, i) => {\n                return this.genShape(remainingColors, i, shapeCount - 1);\n            });\n            const svgHTML = html `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" xmlns=\"${svgNamespaceURI}\">${bgRectHTML}${items}</svg>`;\n            return svgHTML.getHTML();\n        }\n        genShape(remainingColors, i, total) {\n            const diameter = 100;\n            const center = diameter / 2;\n            const firstRot = this.mt.random();\n            const angle = Math.PI * 2 * firstRot;\n            const velocity = (diameter / total) * this.mt.random() + (i * diameter) / total;\n            const tx = Math.cos(angle) * velocity;\n            const ty = Math.sin(angle) * velocity;\n            const translate = 'translate(' + tx + ' ' + ty + ')';\n            const secondRot = this.mt.random();\n            const rot = firstRot * 360 + secondRot * 180;\n            const rotate = 'rotate(' + rot.toFixed(1) + ' ' + center + ' ' + center + ')';\n            const transform = translate + ' ' + rotate;\n            const fill = this.genColor(remainingColors);\n            const rectHTML = html `<rect x=\"0\" y=\"0\" width=\"${diameter}\" height=\"${diameter}\" transform=\"${transform}\" fill=\"${fill}\"></rect>`;\n            return rectHTML;\n        }\n        genColor(colors) {\n            // must call once\n            this.mt.random();\n            const idx = Math.floor(colors.length * this.mt.random());\n            const color = colors.splice(idx, 1)[0];\n            return color;\n        }\n        hueShift(colors) {\n            const wobble = 30;\n            const amount = this.mt.random() * 30 - wobble / 2;\n            const rotate = (hex) => this.colorRotate(hex, amount);\n            return colors.map(rotate);\n        }\n        colorRotate(hex, degrees) {\n            const hsl = this.hexToHSL(hex);\n            let hue = hsl.h;\n            hue = (hue + degrees) % 360;\n            hue = hue < 0 ? 360 + hue : hue;\n            hsl.h = hue;\n            return HSLToHex(hsl);\n        }\n        hexToHSL(hex) {\n            // Convert hex to RGB first\n            let r = parseInt('0x' + hex[1] + hex[2]);\n            let g = parseInt('0x' + hex[3] + hex[4]);\n            let b = parseInt('0x' + hex[5] + hex[6]);\n            // Then to HSL\n            r /= 255;\n            g /= 255;\n            b /= 255;\n            let cmin = Math.min(r, g, b), cmax = Math.max(r, g, b), delta = cmax - cmin, h = 0, s = 0, l = 0;\n            if (delta == 0)\n                h = 0;\n            else if (cmax == r)\n                h = ((g - b) / delta) % 6;\n            else if (cmax == g)\n                h = (b - r) / delta + 2;\n            else\n                h = (r - g) / delta + 4;\n            h = Math.round(h * 60);\n            if (h < 0)\n                h += 360;\n            l = (cmax + cmin) / 2;\n            s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\n            s = +(s * 100).toFixed(1);\n            l = +(l * 100).toFixed(1);\n            return { h, s, l };\n        }\n    }\n    function generateAvatarSVG(address) {\n        const wag = new WalletAvatarGenerate(new MersenneTwister__default[\"default\"]());\n        return wag.generateAvatarSvg(address);\n    }\n    function generateAvatarURL(address) {\n        const wag = new WalletAvatarGenerate(new MersenneTwister__default[\"default\"]());\n        return wag.generateAvatarURL(address);\n    }\n    function generateAvatarHTML(address) {\n        const wag = new WalletAvatarGenerate(new MersenneTwister__default[\"default\"]());\n        return wag.generateAvatarHTML(address);\n    }\n    function generateAvatarPNG(address, quality) {\n        const wag = new WalletAvatarGenerate(new MersenneTwister__default[\"default\"]());\n        return wag.generateAvatarPNG(address, quality);\n    }\n\n    exports.WalletAvatarGenerate = WalletAvatarGenerate;\n    exports[\"default\"] = generateAvatarSVG;\n    exports.generateAvatarHTML = generateAvatarHTML;\n    exports.generateAvatarPNG = generateAvatarPNG;\n    exports.generateAvatarSVG = generateAvatarSVG;\n    exports.generateAvatarURL = generateAvatarURL;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n"]}