{"_id":"@visa/visa-charts-utils","_rev":"35-d414d568ba976384d7b965092daa915e","name":"@visa/visa-charts-utils","dist-tags":{"latest":"5.5.0"},"versions":{"4.2.0":{"name":"@visa/visa-charts-utils","version":"4.2.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.2.0","maintainers":[{"name":"mnojima","email":"mnojima@visa.com"},{"name":"chris-demartini","email":"cdemarti@visa.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"865c595061daf6f114df127cde81a46c083869a3","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.2.0.tgz","fileCount":7,"integrity":"sha512-DcEwn0HdHunqDLYg60vsOzSnwjdLKwJjwzqGDWxVRDOGvNgkV8PsZTfAmEslhcWdd3Zock3HQeAxdRwPajKiGw==","signatures":[{"sig":"MEUCIQDf7i5Uabcg8+sE/Kq3cMS/RcAasyV8dOpg4m2HVbJqHQIgQwRK/AqpdRVuDlcvJdfGlq20veqIjOHVuWflF88U72E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3929333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJrT4CRA9TVsSAnZWagAAt5gP/1/hodDt9zV0rbdkHlVJ\nrHhZ0DO7UdzpVPrUfO+t8iqlzI1FlGi5iFk216yPuNiC3/cveZfC0Df7KOOE\nYGSXb9PyJqZrBYqjKrfaxAPrPZiy1UOpceVnndzCFzwoUup13qR0CuPCSuND\nNqwUyFD8B0aTeYQqderffqyyQS6wxZFmpn65YdXXcdQg8XXlX8AbI6ZbXXqM\nww4reBwVjAa953iOiQZmUo0uH6EMCBLeKmOV6Y3Kh8Vsq+0EA/VrgcOeG3Sd\nho4XlSpBrKHGEWV5kjenT6Xv/kmTMnndMtJYv15Imho9+igmjBwcakFZrbp0\nW9lE7suqfbgYcy0Q50RxG2PMHdhtnuA9RQEteyf6zRaCwPuJhfDOiTzoXmiM\nvLb5EtKrBgUWgJz2O+Ag3u6mL6ElqlF2pFHcmGMAIiY2ukfXvWrBDVgJULdF\nv5pE8VW3xfg8SUuJaYS6vPBjTNI16vpIDopkNqUiuPX+BiFHCJC+TdYn7De4\nrLuSMSu3cIJU6NYFf+SNR1H3DqaYUUTfbtj0rFy3QF4WUhWIgNZZqo+ZsGjE\nsZhSJ/YUfa/yA4cTB7XdEE71LFuBz+vTyWK30Kxff05GUG6gLGngf+NUxZ7T\naiojql/tnDIHev7Mm5CIoP68Y6cY0Fdy6ITKL2hHrrU5uOgKo2Dt2Xj0tQH3\n6igy\r\n=nZGk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"0bc4a64e8409fcb21b8d0cee46cada7624806ba6","scripts":{"build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.cjs.js' 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"cdemarti@visa.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"_nodeVersion":"12.16.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","ally.js":"^1.4.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","d3-selection":"^1.4.0","ua-parser-js":"^0.7.21","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^24.0.2","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.2.0_1613149431359_0.3841503470939214","host":"s3://npm-registry-packages"}},"4.3.0":{"name":"@visa/visa-charts-utils","version":"4.3.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.3.0","maintainers":[{"name":"bakabbure","email":"bakabbure@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"},{"name":"frank-elavsky","email":"frankelavsky@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"17f00ad35f3cb0d0816250b9d3b751f1dfb78ab6","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.3.0.tgz","fileCount":7,"integrity":"sha512-whg7LPMtvKE0/81tAz7TPI4LwSz7dWkOj11wbftq6474s3QIaDBmtVb0ANeX/IzwlBNxYUaBpC+Em1KFmEemzg==","signatures":[{"sig":"MEUCIQDt1n6o7JXF8wMsVXUOTg+5UtQVSfTDfXcxFgkF9QnPiQIgcrRunZO43Cs/7gVhCXeEqcCthKdNYa3PRVHeI21jlOg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3933916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZlTACRA9TVsSAnZWagAAcq0P/j5oMFeDEI+z46BAgYl7\n1ADyrdiBp9WVdnGVadVGgn5FqSBX917eWyuOPgoWCUxQx2ePLPDdzgAMUbzv\nWa5mHWMFMkByiDdYmIku7zy7zxzuqouCw/wPBva9mQyCP4d9raTVInmIBgy3\n77QI2l81AAKv8DqIFp+FkWE9nRHE3497Y2c5EprHFDBcTOboAN2ydABuVgW3\ngmeE4UTYQ66OjL0iZW1i/oAw/cVok87PpfUjgPnGSKsDWE2cUILWZTijO4GD\n5GJpcRHOjeNpVRCwssebm6LaMoWv2oehgKL1wVT0G47Ig9JjIcj3PnLm46Rf\nIit8b936IPzFt/mch/ma1B2vWfkT7WM9uZF3dQmQi3KxmjxZGPY2tmpFWiei\nVBrfasN4yjOdd/Z73xXDlugFkhS8DypuGiJDOtXkn0AIAfhmD5QnIdJqidqj\nNZVSAba18fnGE9VuUnKJcyG4p8LZyajxA8LopZm3YReQc/rvAWgJ+QXO/LNi\na5V/APThvUvLUzZz++UuLyLA2YIoPXpFIESPA0jvmA4JJs/ptZFAZc64jWn8\nXfGfNJdojncvNizEfAwi/0KtHp1TnurZm4h4/OTl5cdK6XZqluzle9kzluEI\nFAD71458W5VAOvEorxfOKJ13c6LisEzyxNGae5YWY2t0eetX0OD2Y73B5ok/\n7d3h\r\n=Ufs/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"18fea3cb967e0ee80767608e882cf37cdbf9a2fc","scripts":{"build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.cjs.js' 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"_nodeVersion":"12.16.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","ally.js":"^1.4.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","d3-selection":"^1.4.0","ua-parser-js":"^0.7.21","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^24.0.2","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.3.0_1617319103943_0.8224979470897396","host":"s3://npm-registry-packages"}},"4.4.0":{"name":"@visa/visa-charts-utils","version":"4.4.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.4.0","maintainers":[{"name":"bakabbure","email":"bakabbure@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"},{"name":"frank-elavsky","email":"frankelavsky@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"43716c6fc0b5c94c466098fc49556cdd683971c8","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.4.0.tgz","fileCount":7,"integrity":"sha512-SboKdZFh5rjIUi/QxJtlc4/nMUTcjvCbDVrhcWklLi2vm8ABaI1yjWQuZa/D4s1MHmFFeVDgmqdZiAx9noEecw==","signatures":[{"sig":"MEYCIQClLuk7+YfViuXvtwliYcdR9mxihB8WR2HIg6WK5v6lHAIhALs/5dsV0Zdl/1IunYKfXyA34rpLEHV9RTq6EYLHi5sl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3958814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ2LPCRA9TVsSAnZWagAAGM0P+wc9xK1U0AvhAEpbFug/\nTLhvmeurJi63HJcOg9adB9oynRRfui1fiiTMX/Z3IfANL9aoTQnbA7rGK2Ux\nMN5g9b8FF06UvE0lPui6PnxI04fjflLaMyhhxKH0ZblBz50Wl6o9fz7ydkx+\nbKxMwJGvcwTxsBUgC5AY1ZOGGeffQBH2dW/9EHZmF1LfeFA2tJfbS/NswGql\nL+8gSabJNqL4iLuhyUhYkwsMGC6XDVOnZJyp0Agyqc2WAMOv3IoW+FjUNZml\nXTB535PYWYuVfjIB2U4tNUS7vQ43GIZymNN/MqTk/t869FOsXQaNmVPuRsEO\ndpxzghI2Lr16kVHdHjdrRjXkS0d3rIW96S4kfygDIE4uMUWT+Mu7tFVkN2V7\nFx5+hxqHyn1TWD1yqTmBRD1h18U8lpHsLGZhejbcENLpdBovcu7GMW3QQxzj\nB++zFHDmbjOXv3oRGgWgjoMzHH6MEItbK7Ilv4CzZp5H6ObwxApsgP1R7n+k\niAdo+kosWUnO0ws7//tc5QDgFDvkN3iHQadmSLDRNIhRZZmgnzQL0Y5RXY3x\nrfKhBSlhYPxkDlAv8Wz94HNBKtS/K0ezFm/yimho8ammzmzBiAlHoTNjxq80\nIN3ncjrzgSO8f6Mm6Wx3J2BjAQOm3at6VEIoqWJ9gu3u17AHIK+FaqCIaLa7\nQQX/\r\n=DH7j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"8eab8d64a69f4e6181b98bd4db8dcaccdbd15181","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.cjs.js' 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"_nodeVersion":"12.16.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","d3-selection":"^1.4.0","ua-parser-js":"^0.7.21","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^26.5.4","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.4.0_1617388239206_0.23395480573287353","host":"s3://npm-registry-packages"}},"4.4.1":{"name":"@visa/visa-charts-utils","version":"4.4.1","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.4.1","maintainers":[{"name":"bakabbure","email":"bakabbure@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"},{"name":"frank-elavsky","email":"frankelavsky@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"827ceeb022baa55bb8c5ce55c87cf2249edac5ef","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.4.1.tgz","fileCount":7,"integrity":"sha512-JBSnEtfPxgY601FDaChfzdertPKpziAbRM61lA6iYj7dkxZqokWVpMuk8U5HSBYxm+iy4LMwClgS+swVW0OYaw==","signatures":[{"sig":"MEUCIQDkl+s8bCjTBT6sErt+bG05MVNGFiEgLUY7As/sZ2GXUAIgPqfela/P0B/cuBESDtHlun6RR5Avmt17Ez25bAfxy8A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3983993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdhAJCRA9TVsSAnZWagAAsSwP/12pdy7jQdkZFNvvR3L6\n29dlh90QMDNdvHl2IGRiEqWAZGzs7CYp76afXYlatZ556cJT0fPb/q0rzEth\nswytM3PkyJ72Xbx94zkbtPtduB5MaWXiz+g9+JnaROKWGEuHNC/Tgy1TKhAT\nFPgR5HTLW0rjVBxIcHA1dRb5cKeHaaEjuTXjmXekpyPjbTSTilq1OQJVngpN\nUfpuq+LeB3DdIFZPw6KYl0FjtA2rcdDbnbsXilJKlxBX16ggAc7wEb2Q2mZR\nqPA3Bt1sxY7igcBpvkNc0/l+4aqeOoamNcfLMpYMlUgayyvIaBAD6kLEmKwy\nssPTjPwxi1Z6dLQCXa5TRNSPzYVYHfv8ZgcrpjVx09tBg2fvvojm+oHc7kxG\nP09LfsheEshbivDqv9lKmS6LGvMhmi2z0cJ/zVny5HoTQX5Q6rBlrSR/T1XX\nFjyj4qT444Y7Qm9cSvJ3xA18/A/ebq48APg6GwkpVTaawCsRtjvx7A9tuitq\n/BVYekbEo9wNZdQsFkg8tIuGgfHQGsY51LEFBCPKqrxLhWwmkW3gkfn3eWT+\nAm68kCvCjI0gNPx/Pgph4hdO2rSl5NoQAJECDb8gGHmihm83u6iKk8F8qoKQ\n5g7bl7ETpC4FDq9l3aUSYUdHZiudoCnVhqVgg0Y8oGE1lhjzWih58Ki2CGH9\niu0e\r\n=Ikli\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"7fcbdf9140662aecd2597408c906374006a98652","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.cjs.js' 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"_nodeVersion":"12.16.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","d3-selection":"^1.4.0","ua-parser-js":"^0.7.21","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^26.5.4","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.4.1_1618350089012_0.04736497611902579","host":"s3://npm-registry-packages"}},"4.5.0":{"name":"@visa/visa-charts-utils","version":"4.5.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.5.0","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"},{"name":"bakabbure","email":"bakabbure@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"36cf8a365560f70af64f187b6ee18d03ba66f636","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.5.0.tgz","fileCount":7,"integrity":"sha512-qG8OnpTzFfPQNnOFLNlKak57ZQkCbClrNTCKuhVpTuq0lC4BfLD6XExjSzjNh99eDBv6zLI1LcLtdB/Ytt60Ww==","signatures":[{"sig":"MEUCICUzm57TFAJXuXQ1BfWQFcB7Qzfosof47pl31a7KVWb2AiEAvGiV2mkM3KTsa8j2iSUHCGJ2s2ob4RHyW4FYfcpEe2o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4381752,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEZc0CRA9TVsSAnZWagAAv3QP/0O7hGdr+8XSYG27g5t9\nBRUzcxN6hPsBbdCZzadv4t0Nd1/bPay8ChIexbwXkwISwEmWckh9ZaFCXJfM\n0AxfBrW6E0/noI6gnA60O0RFUV2kq8GgEmhJBeUTmmZm2lgGGlw1H4ZrdYuj\nKyzyqnCaHa/c90brV7NWKYCJf7uIh/nNRYSbGAo/pr0hln0E5+Zo1KeQPiyw\nDM+2Cat+8drfT8MA1mEhXToHKjlbSYF4aM2w2wGTeHsmapPz4VfP0WG18iZN\nNmg9Xalp2e7Fu9QKbE26nzWQ03Nq4m//sXCgcnnxrE6hMmmzwWzWoXHWYqui\nbu8pdo2cvpijT8H/WiAaysKql+bbqMx4r1nomHyIQvrXUSaMPdPGEQ8sTpWH\nBiwKY3xCAXPAi0JDNTtHpad2a+OCBzzfMLmrmIbS5A/RSg7nBzeqdhtS+yIV\n0fzWrkpf0K7OlBAWh+C6BRewsFM6LIu/myUM4YTksYuLMNx3c/GgEbp7+E6s\nck7EEGVOtL28BVi/b4KTR0U2T28eu9CvuSdXlYXRWynjXLzNoOWuTsM5SfSA\nz3eM7Olc5pXNBSbPxNHMGUH3e0XB1wGow6k/6mg/HumR1rpsZ07xVPzvxWZv\nJL3n7aTh3R9VAKaTNAGD86m76wyfeShIS04/ZMqj1WU5ZGJSjtRIvJFvqmZ2\nujS3\r\n=YWwm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"bcd04a03bb5146e83e218a402acdd2b9137cfdcb","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"_nodeVersion":"12.16.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","vega-canvas":"1.2.6","d3-selection":"^1.4.0","ua-parser-js":"^0.7.21","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^26.5.4","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.5.0_1628542772201_0.6741740354052714","host":"s3://npm-registry-packages"}},"4.5.1":{"name":"@visa/visa-charts-utils","version":"4.5.1","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.5.1","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"},{"name":"bakabbure","email":"bakabbure@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"9a9e821fa1355dfe50e5e9b094d1eb9ef3cbded2","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.5.1.tgz","fileCount":7,"integrity":"sha512-wVTBEGoxsye9oZ6gGZOKHhHXtfuZIOBz5YcOZNVgmyFRY6upPx9Gpm3HFWVgy4AcwIUYcbYx8I9rrbu64dBdUg==","signatures":[{"sig":"MEYCIQDL+3vin1j5E2ynRh/uZ1jXpK0U7rTR2DKp3IJa9sXWvgIhAKA3uRXBtkBBhIsbsF7yNAryE5fJcVjdiGUiLdoS9n57","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4399899},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"d746d555dbcd498d37b0c259a35e62ee1c22b304","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"_nodeVersion":"12.16.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","vega-canvas":"1.2.6","d3-selection":"^1.4.0","ua-parser-js":"^0.7.21","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^26.5.4","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.5.1_1635362819521_0.8233837142015097","host":"s3://npm-registry-packages"}},"4.5.2":{"name":"@visa/visa-charts-utils","version":"4.5.2","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.5.2","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"},{"name":"bakabbure","email":"bakabbure@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"390b0228bd8d2ffafb89484706f21fda7a1a38b5","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.5.2.tgz","fileCount":7,"integrity":"sha512-CZfv3UbR6e8Ofm7L3fPAe1tg67zoYT4DU6jmOZ1bNbVJj9s9QD/03bTUtJkQ5PdDKirHWphs/tkwwRbpp8lISQ==","signatures":[{"sig":"MEQCIE57eupCZkn2foai6nHC83xJM1mm93mPcqz2QlNPC2KoAiAEMcdKdaxMsFe3mzmqMihY/JB47S23PxImO9DzUXuY9g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4400495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhld7uCRA9TVsSAnZWagAAInAQAIR63bBaBHRgexOIJBsu\nKwjhDIlq5ykkjA5s2st+Fdt/hOwzjiy4oXAVPl6toQE5VBoRDd8BByxcA8O2\nmLOGDeeFjD/gT2Oe21MHqmxRA/vGrNzzmek6rEVWKmo+heHmYPJ+J/kOgO2m\nEzXH0XYMDbgPFZgT/MLamsW26Pg/XKqGRubECuv/kwuN9rIBakV7ZDjgWbJy\nwwSV8TJfh5fQYmGGQt+3OOU1GqAPGSk8IoZl3PP9x0tp6G9iCk/l1ghd9d4W\nvG9RCTbrvcLyE2O1eoZl17gapqSyUaTqzTQ/2eEeFMbyiT/i9j3QH/DXK0Zs\nt/PYkA2B/5EBIZBtSTrqnbPWckgum0cdC9HdAnxeAPsIVYWk5PGlSy3Zo/DR\nksN7CMOsWHcDL0cc51a2ZbGYr1+ddBDYee2R+Do3qBg3QDZQrM/wnFs1gOQp\nFtY/N93LSsfJPUkvDCfjkExjwI69Xa4PYQ7ZzPbX47I/j3c7HvTb6QkEaxMF\nrA/wwSnLL9+zxOq4tgIsokS7fLkIn2E3hBWLVI8PgQTwjAkcI3XnIBZM52iA\nScQgZTB22G7cpgl/6/N4n+jF4V18QoDzno0kKVVfKrpKWujkkBFmakoxNcDJ\nobo/W3YZz1jP31+u8FyHEsVkq6dZHBKYQkbjSjnHpKMB+fo4FgkTP8s+l+t4\nVRwV\r\n=Kwap\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"d1f2d59f0e1639a16af9841d692c5417e232b4d3","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"path-parse":"^1.0.7"},"_nodeVersion":"12.16.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","vega-canvas":"1.2.6","d3-selection":"^1.4.0","ua-parser-js":"^0.7.30","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^26.5.4","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.5.2_1637211886266_0.5267006533284755","host":"s3://npm-registry-packages"}},"4.6.0":{"name":"@visa/visa-charts-utils","version":"4.6.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.6.0","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"},{"name":"bakabbure","email":"bakabbure@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"a230650745bdc281e4ea2b4d8c1db9e46fad24ad","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.6.0.tgz","fileCount":7,"integrity":"sha512-iwZbriVxPn1XJpGkOPCbefSOhu+st7hqQF7TqcP1srvdnspGktw3CGf0ULIbO8xJMxwogc7FgQzLePm1/vMZOA==","signatures":[{"sig":"MEUCIBw1aEsp+/gZshjvo0xiBxTLSlmAvQCgvwEP5eCWK9flAiEAj1J/UveutVu5LQQHbvXf0CAMU01Kk6e46OkBfs3BRls=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4401514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/HEjCRA9TVsSAnZWagAA2osP/2G09yvRzE+vWAiSos1H\ndkJ6KyQMA5fnIJs36/GkjLMrG8bFZLWb2WVdZTWPMoTApyvrRoPtC/PfXRAr\nBB7cajqyzxiEeNSZ61MasGdtDKuCCxbMOp7FwQY8M3N/SYEtIpFHjnVtjO8G\n3JBleOvUiwe2YJgvH6LXV/56B/OJS5FNN2psrNhl1GUmr5W/ue16OJ14RC2Z\nrOMrx7xr6x8CohhI/RNsOvFPPVQSdDJfIqRbWDni41DOhrif9D2O3QcQYi+q\nPGWhcp9VtRjaq4JSthMNo4FLgvVZRdphjgEGPLhayp5qhJsvl+uxJDhiOxdx\n6rQZaBthCXmp+tJv31Jzwpaa49GfRYb7uUmsCaCKh6t+fmVsIzvCd93HSJ5e\ndG/j6kGv5KYP/rDb4r79G9AMqJYzgIKlG0AcS/6+x4E1b0nzvzD0Nl8Da6jc\nzpTCbs9ycHMldaHiQdEAi/P84pCdJkZthRVvZ5jrxQhsLRomZgpDug8h2cUd\nLySAwddYge2R9QFyBYiCPYBUr4x7s/iT9WkZju4IXtipF52Vm8vPmRYpOjGE\nYDAVQECQJRhXKQWmlPFpgMNmhmGQsfFdpcGFAZIuBxdIlvCwb5mVtjrkm1Te\nxvjjaYf/O3ERr6qG5tVIlqqCv9MpWUjXS1U9keGVKSs0u61tURtyWoeXcC5F\nTKPA\r\n=afmD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"a44280d6ded86a7032fb3db7f29e4911af4d42f7","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/3.22.1/node@v12.22.10+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"path-parse":"^1.0.7"},"_nodeVersion":"12.22.10","dependencies":{"d3":"^4.13.0","yup":"^0.28.1","d3-axis":"^1.0.12","d3-ease":"^1.0.5","d3-color":"1.3.0","d3-scale":"^2.2.2","d3-shape":"^1.3.4","d3-format":"^1.3.2","vega-canvas":"1.2.6","d3-selection":"^1.4.0","ua-parser-js":"^0.7.30","d3-transition":"1.1.3","d3-time-format":"^2.1.3","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-jest":"^26.5.4","ts-node":"^7.0.1","typescript":"^3.2.2","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.27.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.6.0_1643933987094_0.46317618707014474","host":"s3://npm-registry-packages"}},"4.6.1":{"name":"@visa/visa-charts-utils","version":"4.6.1","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.6.1","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"909cabe35e4d1f9e0330903f348f5746343b7a02","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.6.1.tgz","fileCount":6,"integrity":"sha512-exu2e1Z8eodBMJxcrqeXDfFDGQMvXckeLv+xCeQOn7d87ZpD/Z/weP3tzCkctzAJraVTYHXKc2gjqlpOGNu8iQ==","signatures":[{"sig":"MEYCIQCLftCbuHi21N5FYQMT4EcaO3Z0tH4aePFlinWw6JeagAIhAJV3Rd0IaA2yAV+M/qGMaOYqP90UFCtAGeZiHH34lixG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4320821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ57SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqwMw//UnhcsZU4YAgcuiDyrXLI41AWDT06SRw73UsoXWDeT2a05mHa\r\nfe7sqMY13VlYfo471zL+GUrqgzV0/h5mJXYmpbmRZVfKLjsOriNpqH1PkZFZ\r\nW97LI/JuYx3AaWwvw7xcXbxyU09SC1X6OhS8hWneB0vmZs66zYp4Py6Q7QNc\r\nIm4W8VAxi2olnM8YD3coPJ2FYOOnh5exYIS5WYs0QA/klMmQC9ZvzGj9V1s+\r\nFTAu2WpKu5vMZizpTz7T/G80FVQQxNGg8qC24LueqVczbvBnzWIqpkzs7AcL\r\n40Y4moRMNDu2qQAFzRjoaTw3AV6tNFSleQC4FZF48uh8jxkGZ0+N0+mAoMX5\r\ndQ+4Pi4FGZyxZOfLccDpnq1pDg+KTo9K8jH/efpg/A6FSDY2U5hUON41lllt\r\nkxaPawCStOKXwSLLYPJy4xwoo7aQBRyPrQGIFQOR7XpEiplcS5YEnwG8pGUk\r\nf3GAfGXa9/xWgR4RHvP046zWPBcv59AuOWo/ooatbATtOV8NoQ882j74DSNT\r\nexZORg6Lif0dJdy3h38NY3qJm8vnQc1cfAHdIX354HoML9dwjb/ePrMw7mJ9\r\nOwuYx0jy7wlN/mmJvLckN+yhPLqXUwUoDBfiPmWUtPlv1cTNAiYo+2A2ZVcz\r\nDKYyfVdpCkY1bTOELKu3CibTicE1nWjFsOM=\r\n=7MLV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"f58fe92b0a962e0256a2597f78585e0f61132891","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/4.0.0/node@v12.22.10+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"12.22.10","dependencies":{"d3":"^4.13.0","yup":"^0.28.5","d3-axis":"^1.0.12","d3-ease":"^1.0.7","d3-color":"^1.4.1","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","vega-canvas":"1.2.6","d3-selection":"^1.4.2","ua-parser-js":"^0.7.31","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.6.1_1648598737996_0.7918531009219258","host":"s3://npm-registry-packages"}},"4.7.0":{"name":"@visa/visa-charts-utils","version":"4.7.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.7.0","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"e339de4cc07cd5ca8c59f2e5962a3b4f0a6c65c3","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.7.0.tgz","fileCount":6,"integrity":"sha512-1Yea4SdEmD6Y4EqrM757x1Xb6P+pVRc/gkTx2xLRqsOTwRu/d5qQaKFfXxJqbhXNs7NASBYzqzw1208j2BQKag==","signatures":[{"sig":"MEYCIQCq8h6y0tGrvAX99SrrKhmbxWviVRetVzU4w2fyWvKy9AIhAMY589PMqdNpXEoHXlpXFkErZLR3eZk1Z2Vo3cxS83sk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5725473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiujBHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQ2A//d7FJxfBCvEzAjCCkZ2mjvhHfu6tukBSpWsfnpJdt0/2epD1R\r\nz1p4269D8ozZ4YSEWy5r2D9XCvHnjSEBg8+B14t5sHBRCdYUyNP0oFChzmv3\r\nGzk3+4Hrz2ymHtCeOToPwAkRatHz6z//r9QC6LqcR5sCuPKkI0B4vhDIGj9r\r\n6jlkg1nquCuSG2e7cz1va2HUZHu8gLVf0QeBGz3M70KmTigO23PR4i+vLd8I\r\nYi38ZFMjF2apEC4GvFhkp4d8TsNPkIkeiQQlS5kzdDI/m2h7IOPzAfqQzeiw\r\n+JdeGQImqncJ07tb63KtaeCY825G01BQb5Nxho4W1znjGkfG+FJCWoTt89gh\r\ni/HojXazPxlWeEWBc2C5eUkYncxrbnL0OtXG8+yPxfWFW8iVH3PUNmI+oATE\r\nN4PsUoObpRTOSowbRq9GU2C8DZ3dUwg/P9cFQX/FGepAq4hZwn2rN4g9ncw1\r\nTR1Md1rSBrkFWHTTO53nRQgRIWzsVEutUhYJ8AZxr8/bHUmPCqVoj0efim7H\r\nfbGv8J3RZ4EvcRedCA2UpIwRt3OjILnlRgVt2/Kaqp3B4yEpLYsOKlZ/KLj4\r\nklE9cGFHOKjjdgdFf+Tw88vPONCLIVOQ6IUo8Qb/cFNO+P4/2Xlwjylhkgq1\r\nVQ2SZCtkXn9YH7Agvr+oQZ0yHHS1ouLhaRk=\r\n=ABl/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"b6ec393e0a3c118e46a1670692e8c266824ef1ae","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/4.0.0/node@v14.19.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"14.19.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.5","d3-axis":"^1.0.12","d3-ease":"^1.0.7","d3-color":"^1.4.1","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","vega-canvas":"1.2.6","d3-selection":"^1.4.2","ua-parser-js":"^0.7.31","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.7.0_1656369223135_0.0753044795124771","host":"s3://npm-registry-packages"}},"4.7.1":{"name":"@visa/visa-charts-utils","version":"4.7.1","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.7.1","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},{"name":"jaime-tanner","email":"jaimeatanner@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"3fd811a4c257e7785ab3e2d26d5f17c9e2679e89","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.7.1.tgz","fileCount":6,"integrity":"sha512-d0OD+q78uUFgZZnZXYcehK5iRpTBMHmzOZmzKoDPS6RF8eDB/I9o0uA8iINOtehX89528YrymooDk7WC7S74BQ==","signatures":[{"sig":"MEUCIQDfE0kR5gJW6THVWZ402RD6MqydLP8RkshQpYq+HwVvIAIgERAZe6Gya74qCFD37hjKvFJsWx7iQrju4zO/EfpiY3g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5726014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4vygACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp29hAAg6Xt8pFBlk5maoXUuZs/xwSYNMh13J6+nnUrz6ZEPmIsI7xT\r\nlb+a8o7sk6UJpVRzgQsqGJtZvTlLSu3lqBXA5b3lYOw9Jf1DYISdud4aG8bj\r\nwhgiWglMnMc23+TGnUX1/ghepoDzGMELdSe1I4XdpdL90PuKqIzo7bQIHf/z\r\ng2UNsdRn3oaN2hF0UvjxGVFZm9vIT6kOFidYGCMwpLdu92OixmL/p+eUiSLr\r\n4Gurw9afEqAAsMJcus3sV70T1Zk3jlDrzV+GxQxGKavH53vszKTaKqlfB9X5\r\ni9jEYGUEKi2riTGrZ46DDM8xfZ1E5PLF5orNc99N7DG2JplCq/gZmLdFe1Tn\r\nvMjGvg6Zs1tlN7m1YdoLwo1566Xp1elJOwk5prfnps6HM0gWjKkuylZW8KTE\r\nlcAzyWpwafUhEW6/Me6TAFgwJlS6vlMQvLNZXTYIbo0vt+gQeOS2eP+5CsNV\r\nvJa9euHJmbT5+m51rnfeOwslYuEIH2g40cNXIolqr0/2UA55EBUVBpcNxK1G\r\n/lni+KvKpNPRN/DejLkbLwMCtmxDpf/0jByMNTbm0gemqKY5vJeYm3/vlZRX\r\nG8fglQDt5MjRDopJ3rtfv8PUlOSPsQfB4n3PAT/bpHVumMePIDKdE5NbeGKt\r\nGvnICD/RfhH53vNAFVtJruDWTHTYsiU29fo=\r\n=Qv+z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"f7893b5893b9d600e2c4b014ebcbd4c37a7170de","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/4.0.0/node@v14.19.1+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"14.19.1","dependencies":{"d3":"^4.13.0","yup":"^0.28.5","d3-axis":"^1.0.12","d3-ease":"^1.0.7","d3-color":"^1.4.1","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","vega-canvas":"1.2.6","d3-selection":"^1.4.2","ua-parser-js":"^0.7.31","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.7.1_1659042975823_0.26423069564926793","host":"s3://npm-registry-packages"}},"4.8.0":{"name":"@visa/visa-charts-utils","version":"4.8.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@4.8.0","maintainers":[{"name":"stephmod","email":"steph.modica.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"d737347a24e2e4651d5136b98898587dae43a127","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-4.8.0.tgz","fileCount":6,"integrity":"sha512-fm+YJ2n/qU4IshSZIjg82KcEwu7BHeelCU3EBg9uPxGglv4mtPxf+IqB+bPIQd+87gJ3rnaQTovKIk8Q+e0WCQ==","signatures":[{"sig":"MEUCIDo+z2mlK2NqyIuUsSA6bbOyilFoqEg9YW5oqCFWo8YdAiEA5Qx5eyFBOPMFkCjDI85x+RkHE6Gfd2c6rk50DHwOuOQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5753327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjwfOuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrVlQ//YEx1VheyAxDfRGdLD0fezePB/NEDLDQdTzsYl1IT3ruhk6gB\r\np5GyKcUmbb/y5brvFIqIC1m5JNdf8LlNBtDdziyH1DnHZKj0/ULRVtvOKBKL\r\nTUM69eNc0pDZ04nGSjNcDzliYmTQL2BPOn9YVUDB70/oat07OZS9ymDgyvpk\r\nizAvUMlHLwh/y4yYfVtU02Oxld7AE4mTDjGxL7oa8gMeGJIwKTqj8H9r/vt9\r\nypRFdXOuws/lstLXtMd5aYfo6nva8DTHG1jWuXGWflV6yNh+0lJf2gyQSv9H\r\nHLmL13G6M4Yz41n1ibk6nNldExZBVd+uGywV1x6ZtGhyy76tVZebCmqxl2hN\r\n/egG2l+lrl4lsYMiZfZBf0umxVKw4SN+/AtQ4F+XYPe0MxsEhbjmY5x/kCUR\r\nFuZOPbdGiO7giyhRYVjLSWWboG/kSrZFJp71s8PMKuMv+Bq5nII/0j5dQI1K\r\nU5/0ZtSigEliyjHw5CH39v+T4qxEZ3nVVljOjq+KWEKWh3wdMaGnVqRGiq29\r\nd1doCGU7zioLWVsN6+095LexIN2PBRyVj7hp3MIvTDTzOVsGsmThhHG6Um2J\r\nOqrcjx6rUsX0a9x8TuIsDh/eU7YauOf0NYm5lEeqeFxRl05KMMwVRrk5cG5v\r\nOU6V3+7ZiBovupuShEZUB278Yr5QyoFeUxI=\r\n=VttY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"7ac4a818cf4d9c5ef9dd87456248b751909c1b7f","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.4.1/node@v16.19.0+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"16.19.0","dependencies":{"d3":"^4.13.0","yup":"^0.28.5","d3-axis":"^1.0.12","d3-ease":"^1.0.7","d3-color":"^1.4.1","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","vega-canvas":"1.2.6","d3-selection":"^1.4.2","ua-parser-js":"^0.7.31","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_4.8.0_1673655213764_0.6638499331019556","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@visa/visa-charts-utils","version":"5.0.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@5.0.0","maintainers":[{"name":"stephmod","email":"steph.modica.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"352a78e96176d9f5192b64aa0b740789f683923a","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.0.0.tgz","fileCount":6,"integrity":"sha512-ZiWc8WsEgfxvP7y9LqPGuE7Oz94Wv/Za4reDraMLoPiS4xpZc48ITgHX1Of4Kn8Te9Du3prwt/iThkoG+ntB1Q==","signatures":[{"sig":"MEYCIQCYem2techm8RakZsc/eY9FA9qVnYyu6pSHRzOIUU/eNQIhAOvgo9fQbPJ7eRYK32cSTa+YbT/lTSxh2McUQn6HmBNL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5556078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2cghACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmomvA//aowppnOkmvZtimIi5XWp8pe5ouUHByVMo3HmLvkBYROi3Ajh\r\nbiCRh/5MlODGl/S6l3GwZ0qQsw8a2UzPPsDbmfaIoKDfvNydLyZuhnEPr4ZI\r\na3o7iwIPTvM52uP7Z/Tcj0LXNEyhI4E9vmJw38dGML4rdaptAT4MflFQ3PIm\r\nk7dPLOZAaCPYw6t6dh0PLwLEvegWQyUqkL7dY2nqWMuxghG1x3NtLxz6GRgt\r\nqUAYBNm+xR8CMATiIWc7mKKWLcj3ymgp447iAMzbTkrpLwalrod/7nSAV4XZ\r\njKotJrfEI/CFqdfm9ed0mVV7eWT271w8T5uvmGaGH5k1t/hqW1lMK0kPfJsP\r\nG5+K9igHg3b2OYEr5O7oZ2rQOMMAWNPQlMJwXkEz2BigM+Jib2oImYAT9rxE\r\naB2LotGoolyR2J2Rz04d2S5AZMqbZhvjL/biMC/LODGKno8HD40LjaU+rPZ0\r\nGUGpuAPpTg3hg9y6DE5Lz1twEUZGy1mE8WBQZ8HiB/K8IPuHuduJsntEBkCm\r\nFykKCiUhqBk9i7j3Z7xJvxeJldDGCThfDFTMC4EOvX7+Za2iVDNbwWBy3gQ1\r\nujqcoxYjxXhGl+WP994fizUHMQci3pXLHqhLUbVUKoh2W6fYwthUeJifQulF\r\nftdr7Ylqk19/0RX2M4onkKzOuJRxurMdVFI=\r\n=6LP6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"fb254e695416156feef8ead24c21c7f0b5cff4a9","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.4.1/node@v16.19.0+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"json5":"^2.2.2","d3-color":"^3.1.0","minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"16.19.0","dependencies":{"d3":"^4.13.0","yup":"^0.28.5","d3-axis":"^1.0.12","d3-ease":"^1.0.7","d3-color":"^3.1.0","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","vega-canvas":"1.2.6","d3-selection":"^1.4.2","ua-parser-js":"^0.7.33","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_5.0.0_1675216928992_0.6604286679230913","host":"s3://npm-registry-packages"}},"5.1.0":{"name":"@visa/visa-charts-utils","version":"5.1.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@5.1.0","maintainers":[{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},{"name":"stephmod","email":"steph.modica.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"a210464311855afbab0fa589678f5fc729a7ec46","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.1.0.tgz","fileCount":6,"integrity":"sha512-yI77owF/cmUgvDrPevn2B/B88vMyr0W4E1HTLi5M3vuAY9Rv407n4ucZ11cfhP4upGbK8zNk18LXLoJ+FO8MYw==","signatures":[{"sig":"MEYCIQCgzhQUZ2iSK97NQAohBBR14Qm3gPP188+6aMQwAr5STQIhAOVLZeCW6JVH2Y0duDc5njC7pO8nQmJ3yV+tK1XGeqrl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6062920},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"a9b9289778768b00850c9474196845594cb2062d","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.6.2/node@v18.15.0+x64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"json5":"^2.2.2","d3-color":"^3.1.0","minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"18.15.0","dependencies":{"d3":"^4.13.0","yup":"^0.28.5","d3-axis":"^1.0.12","d3-ease":"^1.0.7","i18next":"22.4.9","d3-color":"^3.1.0","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","deep-keys":"^0.5.0","vega-canvas":"1.2.6","d3-selection":"^1.4.2","ua-parser-js":"^0.7.33","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","@types/lodash":"4.14.74","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_5.1.0_1686952771638_0.9605418809500126","host":"s3://npm-registry-packages"}},"5.2.0":{"name":"@visa/visa-charts-utils","version":"5.2.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@5.2.0","maintainers":[{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},{"name":"stephmod","email":"steph.modica.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"2a404bc0a61393e70904c5cfbea1c61477e53bd4","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.2.0.tgz","fileCount":6,"integrity":"sha512-CJmpaUCbgs9/7aWPP+NNsxireDdX+OJNA8W2EXPs/wWp7GvZVD8NThkKLZczIPRc2r5qZFpUiUXvznNZQaPuKQ==","signatures":[{"sig":"MEYCIQCWWuO/jsL/TA+nVuoY78xeu8AN2R9l0rYudg54BVhi1QIhAPQSII1MahZWBEr7ZMetoSiHqSmvcwK1P5dbzYKhOLUY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5911805},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"de4a6f281586c94dd0e8806b10e04e3d7c7a6d60","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","yarn-install":"yarn","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.6.2/node@v16.19.0+arm64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"json5":"^2.2.2","d3-color":"^3.1.0","minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"16.19.0","dependencies":{"d3":"^4.13.0","yup":"^0.30.0","d3-axis":"^1.0.12","d3-ease":"^1.0.7","i18next":"22.4.9","d3-color":"^3.1.0","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","deep-keys":"^0.5.0","vega-canvas":"1.2.6","d3-selection":"^1.4.2","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_5.2.0_1695933929078_0.7180793601523532","host":"s3://npm-registry-packages"}},"5.2.1":{"name":"@visa/visa-charts-utils","version":"5.2.1","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@5.2.1","maintainers":[{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"5bd03b97c4c5756c9f94fc342079497b3f2e5844","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.2.1.tgz","fileCount":6,"integrity":"sha512-T+asi5vakSuvFHiEjbDZe6yFkM/pEe8B25KZYJQNJOsEkJO8kNVXfziWRffTyfjVYKxQH92Z56kfIFet6RrmSw==","signatures":[{"sig":"MEYCIQCIsjDtrutan71M82C3KoL25qYI5zN1MaMw6Z3thVtOJAIhAI0jHGgXtueXp+IYqELoCTl7L+DHErY1ZNnWBy4/cbrc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5911556},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"46d254fc5d585ac95ae3c0574afd818e220d044e","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","yarn-install":"yarn","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.6.2/node@v16.19.0+arm64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"json5":"^2.2.2","d3-color":"^3.1.0","minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"16.19.0","dependencies":{"d3":"^4.13.0","yup":"^0.30.0","d3-axis":"^1.0.12","d3-ease":"^1.0.7","i18next":"23.5.1","d3-color":"^3.1.0","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","deep-keys":"^0.5.0","vega-canvas":"1.2.6","d3-selection":"^1.4.2","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_5.2.1_1707516634959_0.2719666798012028","host":"s3://npm-registry-packages"}},"5.3.0":{"name":"@visa/visa-charts-utils","version":"5.3.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@5.3.0","maintainers":[{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"411e5b2c11e9562fab34794a5b938845f03c56d3","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.3.0.tgz","fileCount":6,"integrity":"sha512-cZtM3X3UGNrWyIPPsGJp+6Y0ZNkhM0jdyH/KoV3mAsQ2eBz/z4DSPrqS/j04YPuW+elQySdhXPHGkLc/mDwZhQ==","signatures":[{"sig":"MEYCIQDXZMLPXu32xHZpYOW7wM45GLP43fHMQC1TA4YVAwn/KQIhAKz6SnamCVuTJYHQ0yLHKijjrZ+CS2A4UTLsEimz0QpQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5888770},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"cb1b622f3362e08a6a0b8ce47ab6a4acf5bf69db","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","yarn-install":"yarn","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.6.2/node@v16.19.0+arm64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"json5":"^2.2.2","d3-color":"^3.1.0","minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"16.19.0","dependencies":{"d3":"^4.13.0","yup":"^0.30.0","d3-axis":"^1.0.12","d3-ease":"^1.0.7","i18next":"23.5.1","d3-color":"^3.1.0","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","deep-keys":"^0.5.0","vega-canvas":"1.2.6","d3-selection":"^1.4.2","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^1.32.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_5.3.0_1708115375681_0.9979209606302764","host":"s3://npm-registry-packages"}},"5.4.0":{"name":"@visa/visa-charts-utils","version":"5.4.0","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@5.4.0","maintainers":[{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"f8435300cdaaf0484ec7caa7d1a74e428032fff9","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.4.0.tgz","fileCount":6,"integrity":"sha512-m74MMV/ePQPMjW2ytvEl1F/pMF5T/1DmnzjHv7sfHCUHVzJEiYE0IrXmbG7uEOSZ4sva22uNvBoKX04UKo9c+g==","signatures":[{"sig":"MEQCIEYDYeC3o8QAROIjhotR24qeF+p5e97PQF1IhMkjLKLwAiAM3+nQWk8kDeGqpCf6t4bEsQ66U6MZFncAzIjUjrlVJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5603087},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"d4f0590acf94ea83f578b8ea26728c90f0957818","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","yarn-install":"yarn","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.6.2/node@v20.11.1+arm64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"json5":"^2.2.2","d3-color":"^3.1.0","minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"20.11.1","dependencies":{"d3":"^4.13.0","yup":"^0.30.0","d3-axis":"^1.0.12","d3-ease":"^1.0.7","i18next":"23.5.1","d3-color":"^3.1.0","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","deep-keys":"^0.5.0","vega-canvas":"1.2.6","d3-selection":"^1.4.2","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^2.79.0","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_5.4.0_1729883852864_0.31373768568465077","host":"s3://npm-registry-packages"}},"5.4.1":{"name":"@visa/visa-charts-utils","version":"5.4.1","author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","_id":"@visa/visa-charts-utils@5.4.1","maintainers":[{"name":"david.kutas.npm","email":"david.kutas.npm@gmail.com"},{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"homepage":"https://github.com/visa/visa-chart-components#readme","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"dist":{"shasum":"8020d50559bd36f462ea61ee09504cf7f4275064","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.4.1.tgz","fileCount":6,"integrity":"sha512-vX+F38erQ+fUsRsz7oHSDSq3BFrKtO7ab9NHvNrZv/RKaF1ggvzL3HIUgUKUZzZG1aqlGHj5VjnCdIKXif4RjA==","signatures":[{"sig":"MEUCIQCeRO9Mey8GfCM9QvT6f9CNg5fdZ5396Yk32Oza0TVqVwIgE5HNVaOlP2d6osVJ5iubL+TOcxCtKVO79dAAiRhq/Ys=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5973411},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","gitHead":"923e6c5e75fc06e2978628889234036cfbbb7032","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","build":"rollup -c","watch":"rollup -c -w","prepare":"npm run build","yarn-install":"yarn","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"repository":{"url":"git+https://github.com/visa/visa-chart-components.git","type":"git","directory":"/packages/utils"},"_npmVersion":"lerna/6.6.2/node@v18.20.4+arm64 (darwin)","description":"Utilities for charts lib","directories":{},"resolutions":{"json5":"^2.2.2","d3-color":"^3.1.0","minimist":"^1.2.6","path-parse":"^1.0.7"},"_nodeVersion":"18.20.4","dependencies":{"d3":"^4.13.0","yup":"^0.30.0","d3-axis":"^1.0.12","d3-ease":"^1.0.7","i18next":"23.5.1","d3-color":"^3.1.0","d3-scale":"^2.2.2","d3-shape":"^1.3.7","d3-format":"^1.4.5","deep-keys":"^0.5.0","vega-canvas":"1.2.6","d3-selection":"^1.4.2","d3-transition":"1.1.3","d3-time-format":"^2.3.0","d3-svg-annotation":"^2.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.14.1","rollup":"^2.79.0","ts-jest":"^27.1.3","ts-node":"^7.0.1","typescript":"^3.9.10","@types/node":"^11.13.5","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visa-charts-utils_5.4.1_1731643579032_0.7346694286338558","host":"s3://npm-registry-packages"}},"5.5.0":{"name":"@visa/visa-charts-utils","version":"5.5.0","description":"Utilities for charts lib","license":"SEE LICENCE IN LICENSE","author":{"name":"Visa Data Experience Team"},"main":"dist/visa-charts-utils.cjs.js","module":"dist/visa-charts-utils.esm.js","browser":"dist/visa-charts-utils.umd.js","scripts":{"audit":"yarn audit --json --level low > yarn-audit.json","yarn-install":"yarn","prepare":"npm run build","build":"rollup -c","watch":"rollup -c -w","test:es5-check":"es-check es5 'dist/visa-charts-utils.umd.js'"},"repository":{"type":"git","url":"git+https://github.com/visa/visa-chart-components.git","directory":"/packages/utils"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"dependencies":{"d3":"^4.13.0","d3-axis":"^1.0.12","d3-color":"^3.1.0","d3-ease":"^1.0.7","d3-format":"^1.4.5","d3-scale":"^2.2.2","d3-selection":"^1.4.2","d3-shape":"^1.3.7","d3-svg-annotation":"^2.5.1","d3-time-format":"^2.3.0","d3-transition":"1.1.3","deep-keys":"^0.5.0","i18next":"25.3.4","vega-canvas":"1.2.6","yup":"^0.30.0"},"devDependencies":{"@types/node":"^11.13.5","rollup":"^2.79.0","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-node-resolve":"^4.0.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-typescript2":"0.31.1","ts-jest":"^27.1.3","ts-node":"^7.0.1","tslib":"^1.14.1","typescript":"^3.9.10"},"resolutions":{"json5":"^2.2.2","minimist":"^1.2.6","path-parse":"^1.0.7","d3-color":"^3.1.0","@babel/runtime":"^7.26.10"},"gitHead":"4455f9df7415e70b1abcc0cbe3d3c5eb03c9d026","bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"homepage":"https://github.com/visa/visa-chart-components#readme","_id":"@visa/visa-charts-utils@5.5.0","_nodeVersion":"20.19.3","_npmVersion":"lerna/6.6.2/node@v20.19.3+arm64 (darwin)","dist":{"integrity":"sha512-6tVpSjVHY30QePk9llsVpVpnij1hxNqWpqpoxIQk/JdYlJKE0OR0pUeupMkhS/sChWkv6o+KvsI5ZEjla/1fog==","shasum":"2b785554e76cc3f7ad5b94f0fd508a5391869825","tarball":"https://registry.npmjs.org/@visa/visa-charts-utils/-/visa-charts-utils-5.5.0.tgz","fileCount":6,"unpackedSize":5966613,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD1iYy0ys3mD2qYxUpE/9URYwZDJv67BB/gjvnj0XjneQIhAObWn9WGdt7KotHErWpf0l9YM5CQtHrZEptdQmJOJHp7"}]},"_npmUser":{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"},"directories":{},"maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/visa-charts-utils_5.5.0_1774497654628_0.020032905898119013"},"_hasShrinkwrap":false}},"time":{"created":"2021-02-12T17:03:51.123Z","modified":"2026-03-26T04:00:54.973Z","4.2.0":"2021-02-12T17:03:51.652Z","4.3.0":"2021-04-01T23:18:24.149Z","4.4.0":"2021-04-02T18:30:39.406Z","4.4.1":"2021-04-13T21:41:29.204Z","4.5.0":"2021-08-09T20:59:32.436Z","4.5.1":"2021-10-27T19:26:59.767Z","4.5.2":"2021-11-18T05:04:46.426Z","4.6.0":"2022-02-04T00:19:47.305Z","4.6.1":"2022-03-30T00:05:38.239Z","4.7.0":"2022-06-27T22:33:43.327Z","4.7.1":"2022-07-28T21:16:16.187Z","4.8.0":"2023-01-14T00:13:33.960Z","5.0.0":"2023-02-01T02:02:09.232Z","5.1.0":"2023-06-16T21:59:31.919Z","5.2.0":"2023-09-28T20:45:29.374Z","5.2.1":"2024-02-09T22:10:35.274Z","5.3.0":"2024-02-16T20:29:35.919Z","5.4.0":"2024-10-25T19:17:33.307Z","5.4.1":"2024-11-15T04:06:19.280Z","5.5.0":"2026-03-26T04:00:54.861Z"},"bugs":{"url":"https://github.com/visa/visa-chart-components/issues"},"author":{"name":"Visa Data Experience Team"},"license":"SEE LICENCE IN LICENSE","homepage":"https://github.com/visa/visa-chart-components#readme","repository":{"type":"git","url":"git+https://github.com/visa/visa-chart-components.git","directory":"/packages/utils"},"description":"Utilities for charts lib","maintainers":[{"name":"chris-demartini","email":"chris.demartini.npm@gmail.com"}],"readme":"# Utils\n\n**Visa Charts Utils (utils)** are utility components and functions which are imported and leveraged by all **Visa Chart Components (VCC)**. Many utils are leveraged by VCC to help each chart with specific core functionalities, and can be used alongside VCC or independently (in some cases).\n\n## API Contents\n\n<details open=\"open\">\n  <summary>Jump To:</summary>\n  <ol>\n    <li>\n      <a href=\"#accessibility\">Accessibility Controller</a>\n      <ul>\n        <li><a href=\"#setAccessibilityController\">setAccessibilityController()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setElementFocusHandler\">setElementFocusHandler()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setElementInteractionAccessState\">setElementInteractionAccessState()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setElementAccessID\">setElementAccessID()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#checkAccessFocus\">checkAccessFocus()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#retainAccessFocus\">retainAccessFocus()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#getInteractionResult\">getInteractionResult()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#drawKeyboardFocusClone\">drawKeyboardFocusClone()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#accessibilityDescriptions\">Accessibility Descriptions</a>\n      <ul>\n        <li><a href=\"#initializeDescriptionRoot\">initializeDescriptionRoot()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessTitle\">setAccessTitle()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessSubtitle\">setAccessSubtitle()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessLongDescription\">setAccessLongDescription()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessContext\">setAccessContext()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessExecutiveSummary\">setAccessExecutiveSummary()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessPurpose\">setAccessPurpose()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessStatistics\">setAccessStatistics()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessChartCounts\">setAccessChartCounts()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessXAxis\">setAccessXAxis()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessYAxis\">setAccessYAxis()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessStructure\">setAccessStructure()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessAnnotation\">setAccessAnnotation()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setAccessibilityDescriptionWidth\">setAccessibilityDescriptionWidth()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#findTagLevel\">findTagLevel()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#accessibilityUtils\">Accessibility Utilities</a>\n      <ul>\n        <li><a href=\"#initializeElementAccess\">initializeElementAccess()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#hideNonessentialGroups\">hideNonessentialGroups()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setTooltipAccess\">setTooltipAccess()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setLegendAccess\">setLegendAccess()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#hideNode\">hideNode()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#create-url\">createUrl()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#setHighContrastListener\">setHighContrastListener()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#altTextGenerator\">Alt Text Generator</a>\n      <ul>\n        <li><a href=\"#createLabel\">createLabel()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#createGroupLabel\">createGroupLabel()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#annotations\">Annotations</a>\n      <ul>\n        <li><a href=\"#annotate\">annotate()</a></li>\n         <li><a href=\"#referenceLine\">setReferenceLine()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#axis\">Axes</a>\n    </li>\n    <li>\n      <a href=\"#browser-util\">Browser and OS Detection</a>\n      <ul>\n        <li><a href=\"#get-browser\">getBrowser()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#calculation\">Calculating Stats</a>\n      <ul>\n        <li><a href=\"#least-squares\">leastSquares()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#collision\">Collision Detection (leveraging vega-label)</a>\n      <ul>\n        <li><a href=\"#resolve-label-collision\">resolveLabelCollision()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#colors\">Colors</a>\n      <ul>\n        <li><a href=\"#auto-text-color\">autoTextColor()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#calculate-luminance\">calculateLuminance()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#calculate-relative-luminance\">calculateRelativeLuminance()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#convert-visa-color\">convertVisaColor()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#ensure-text-contrast\">ensureTextContrast()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#get-accessible-strokes\">getAccessibleStrokes()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#get-contrasting-stroke\">getContrastingStroke()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#visa-color-to-hex\">visaColorToHex()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#data-labels\">Data Labels</a>\n    </li>\n    <li>\n      <a href=\"#data-transformation\">Data Transformation</a>\n      <ul>\n        <li><a href=\"#fix-nested-sparseness\">fixNestedSparseness()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#formatting-dates\">Formatting Dates</a>\n    </li>\n    <li>\n      <a href=\"#formatting-numbers\">Formatting Numbers</a>\n      <ul>\n        <li><a href=\"#round-to\">roundTo()</a></li>\n        <li><a href=\"#format-stats\">formatStats()</a></li>\n        <li><a href=\"#get-numeral\">getNumeralInstance()</a></li>\n        <li><a href=\"#register-numeral-locale\">registerNumeralLocale()</a></li>\n        <li><a href=\"#set-numeral-locale\">setNumeralLocale()</a></li>\n        <li><a href=\"#register-numeral-format\">registerNumeralFormat()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#interactivity\">Interactivity</a>\n    </li>\n    <li>\n      <a href=\"#legends\">Legends</a>\n    </li>\n    <li>\n      <a href=\"#licensing-bundle\">License Bundle</a>\n    </li>\n    <li>\n      <a href=\"#localization\">Localization</a>\n      <ul>\n        <li><a href=\"#registerI18NextLanguage\">registerI18NextLanguage()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#registerNumeralLocale\">registerNumeralLocale()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#path-manipulations\">Path Manipulations</a>\n      <ul>\n        <li><a href=\"#equalize-path\">equalizePath()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#generalize-path\">generalizePath()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#reduce-geo-precision\">reduceGeoPathPrecision()</a></li>\n      </ul>\n      <ul>\n        <li><a href=\"#resolve-lines\">resolveLines()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#reference-line\">Reference Lines</a>\n      <ul>\n        <li><a href=\"#set-reference-line\">setReferenceLine()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#symbols\">Symbols</a>\n      <ul>\n        <li><a href=\"#symbols-export\">symbols()</a></li>\n      </ul>\n    </li>\n    <li>\n      <a href=\"#textures\">Textures</a>\n    </li>\n    <li>\n      <a href=\"#tooltips\">Tooltips</a>\n    </li>\n    <li>\n      <a href=\"#validations\">Validations (accessibility and localization)</a>\n    </li>\n  </ol>\n</details>\n<br>\n\n## <a name=\"installation-steps\">#</a> Installation Steps:\n\nTo use utils in your projects run `yarn add @visa/visa-charts-utils`. The utils export contains nearly 100 different functions across more than 2 dozen files. You can import only the utils you need into a specific file using a destructuring pattern, like so:\n\n```js\nimport Utils from '@visa/visa-charts-utils';\nconst { calculateLuminance, calculateRelativeLuminance } = Utils;\n\nconst greyLuminance = calculateLuminance('#767676');\nconst whiteLuminance = calculateLuminance('white');\nconst wcagContrastRatio = calculateRelativeLuminance(greyLuminance, whiteLuminance);\n```\n\n## Overview of the utils\n\nEach main util file is outlined below. Some of these utils are designed with environmental requirements (such as assuming an element uses d3's `__data__` DOM property), while others are made with a purely functional pattern and require no special setup to use right away. Purely functional exports are marked as `[ functional ]`.\n\n<hr>\n<br>\n\n## <a name=\"accessibility\" href=\"#accessibility\">#</a> **Accessibility Controller** [<>](./src/utils/accessibilityController.ts 'Source for Accessibility Controller')\n\nThe accessibility controller is an invisible, minimal HTML interface that sits on top of each chart area that greatly increases the accessibility of each chart. The controller sends keyboard input into the chart space to produce focus indication as well as simulate the chart's interactive features. Using HTML elements inside the controller interface allows for more robust semantic options for screen reader users, such as describing chart elements as images or buttons (when appropriate), which is currently not available to SVG elements. The controller is also in charge of how keyboard navigation patterns are handled, generally designed to mimic the information structure produced by the chart space.\n\nThe controller is a unique and powerful utility that comes with every Visa Chart Component.\n\nMany of the functions in this file interact closely with the [accessibility prop](../types/README.md#accessibility) that [each Visa Chart Component](../bar-chart/README.md#accessibility-props) ships with.\n\n![An image depicting a chart and a series of symbols that resemble controls, such as left, right, select, undo, etc.](./docs/accessibility.jpg 'Accessibility controls shown over a chart')\n\n### **Notable Exports:**\n\n#### <a name='setAccessibilityController' href='#setAccessibilityController'>#</a> `setAccessibilityController({...})`:\n\nThis function initializes and maintains the root-level controller node and is designed to hook into the VCC lifecycle (so that it stays up to date as a chart changes).\n\n#### <a name='setElementFocusHandler' href='#setElementFocusHandler'>#</a> `setElementFocusHandler({...})`:\n\nThis function adds a focus listener to each chart element (excluding group-level elements) that will move the user's keyboard focus into the chart's accessibility controller if activated. Normally, chart elements cannot be focused by keyboard interaction, so this generally will only move focus state if a user clicks a chart element (since clicking triggers a focus event as well). This allows users to click a chart element and then begin keyboard navigating from that point. Note that the initial focus indicator is only shown once keyboard navigation input is supplied after clicking.\n\n#### <a name='setElementInteractionAccessState' href='#setElementInteractionAccessState'>#</a> `setElementInteractionAccessState(node: any, selected: boolean, selectable: boolean)`:\n\nThis function ensures that if a chart is interactive and the developer has specified `accessibility.elementsAreInterface: true` that the element's corresponding controller node is rendered as a button, instead of a div with `role=img`.\n\n#### <a name='setElementAccessID' href='#setElementAccessID'>#</a> `setElementAccessID({ node: any; uniqueID?: string })`:\n\nThis function manages the unique ids of each chart element, which is how the controller interacts with the focus indicator and keyboard navigation within the chart space.\n\n#### <a name='checkAccessFocus' href='#checkAccessFocus'>#</a> `checkAccessFocus(parentGNode: any)`:\n\nThis function checks whether a focus indicator source exists. This is useful when used with <a href='#retainAccessFocus'>retainAccessFocus</a> during a chart's lifecycle (as focused elements may become deleted if the data changes).\n\n#### <a name='retainAccessFocus' href='#retainAccessFocus'>#</a> `retainAccessFocus({parentGNode: any; focusDidExist?: boolean; recursive?: boolean;})`:\n\nThis function ensures that keyboard focus which previously existed before a chart's state change is maintained. This also maintains the visual state of the focus indicator, if it exists.\n\n### **Notable Internal Functions:**\n\n#### <a name='getInteractionResult' href='#getInteractionResult'>#</a> `getInteractionResult({...})`:\n\nThis is the main engine that handles keyboard interaction and navigation on both child and group elements. It is used exclusively by the controller nodes. This function handles the different navigation styles of offset (EG <a href=\"../alluvial-diagram\">alluvial-diagram</a>), recursive (EG <a href=\"../circle-packing\">circle-packing</a>), grouped (EG <a href=\"../line-chart\">line-chart</a>, <a href=\"../stacked-bar-chart\">stacked-bar-chart</a>, etc), and non-grouped chart types (EG <a href=\"../bar-chart\">bar-chart</a>, <a href=\"../pie-chart\">pie-chart</a>, etc). It also handles the special cases where a user can navigate among cousin chart elements within the same semantic grouping (such as <a href=\"../bar-chart\">bar-chart</a> when `groupAccessor` is passed or in <a href=\"../world-map\">world-map</a>).\n\nThis function resolves with either:\n\n- A selection (if `SPACEBAR` is pressed) specifying the id of the selected element.\n- A new focus target, based on the given key pressed by the user.\n- No result, if the key pressed does not resolve in either a selection or a new focus target.\n\n#### <a name='drawKeyboardFocusClone' href='#drawKeyboardFocusClone'>#</a> `drawKeyboardFocusClone({...})`:\n\nThis important function handles the cloning, placement, and display of the keyboard focus indicator. All of these features may change slightly depending on the chart and element type that is being focused.\n\n<hr>\n<br>\n\n## <a name=\"accessibilityDescriptions\" href=\"#accessibilityDescriptions\">#</a> **Accessibility Descriptions** [<a>](./src/utils/accessibilityDescriptions.ts 'Source for Accessibility Descriptions')\n\nThis util handles the descriptive area that precedes a Visa Chart Component, which helps to explain the various features of the chart to a screen reader user. Most of the functions in this utility are a direct plug into a chart's lifecycle and based on developer declarations when using the [accessibility prop](../types/README.md#accessibility) that each Visa Chart Component ships with. For more in-depth descriptions of each of these description sections, see their corresponding props in [any component README](../bar-chart/README.md#accessibility-props) file under the Accessibility Props section.\n\nPreceding each chart we provide instructions to screen reader users on how to navigate the experience. This leverages our keyboard instructions menu (if the chart is interactive). See our [keyboard-instructions](../keyboard-instructions) component for more information about this menu and our keyboard instructions.\n\n```js\n// An example of accessibility descriptions provided by a developer. The exports in this util will apply these descriptions to the chart.\n\nconst accessibility = {\n  longDescription: 'An alluvial diagram which shows the movement of users to different groups between 2018 and 2019.',\n  executiveSummary: 'Group C is now the largest group in 2019.',\n  contextExplanation: 'This chart is standalone, and can be manipulated by the preceding buttons.',\n  purpose: 'This chart highlights that most users are now in the group C',\n  structureNotes:\n    'The groups are sorted from high to low, with the group C at the bottom. Links are used to visualize the population of the group moving between different groups year over year.',\n  statisticalNotes: 'Group C is visibly larger than all of the other groups combined in 2019'\n};\n```\n\n### **Notable Exports:**\n\n#### <a name='initializeDescriptionRoot' href='#initializeDescriptionRoot'>#</a> `initializeDescriptionRoot({...})`:\n\nThis function initializes and maintains the description root as well as keyboard interaction instruction sections of the description area. This function will redraw its contents if a Visa Chart Component receives a new `highestHeadingLevel` prop.\n\n#### <a name='setAccessTitle' href='#setAccessTitle'>#</a> `setAccessTitle(rootEle: any, title: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `accessibility.title` or `mainTitle` props as well as any updates made to either of those values. This information is added as a heading element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility), the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props), or the [mainTitle prop used within a component](../bar-chart/README.md#base-props) for more details.\n\n#### <a name='setAccessSubtitle' href='#setAccessSubtitle'>#</a> `setAccessSubtitle(rootEle: any, subtitle: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `subtitle` prop as well as any updates made to that value. This information is added as a heading element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility) or the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props) for more details.\n\n#### <a name='setAccessLongDescription' href='#setAccessLongDescription'>#</a> `setAccessLongDescription(rootEle: any, description: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `accessibility.longDescription` prop as well as any updates made to that value. This information is added as a text element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility) or the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props) for more details.\n\n#### <a name='setAccessContext' href='#setAccessContext'>#</a> `setAccessContext(rootEle: any, context: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `accessibility.contextExplanation` prop as well as any updates made to that value. This information is added as a text element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility) or the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props) for more details.\n\n#### <a name='setAccessExecutiveSummary' href='#setAccessExecutiveSummary'>#</a> `setAccessExecutiveSummary(rootEle: any, summary: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `accessibility.executiveSummary` prop as well as any updates made to that value. This information is added as a text element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility) or the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props) for more details.\n\n#### <a name='setAccessPurpose' href='#setAccessPurpose'>#</a> `setAccessPurpose(rootEle: any, purpose: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `accessibility.purpose` prop as well as any updates made to that value. This information is added as a text element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility) or the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props) for more details.\n\n#### <a name='setAccessStatistics' href='#setAccessStatistics'>#</a> `setAccessStatistics(rootEle: any, statistics: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `accessibility.statisticalNotes` prop as well as any updates made to that value. This information is added as a text element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility) or the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props) for more details.\n\n#### <a name='setAccessChartCounts' href='#setAccessChartCounts'>#</a> `setAccessChartCounts({...})`:\n\nThis function will programmatically produce a summary count of the elements rendered on a Visa Chart Component, such as `This is a bar-chart with 12 bars.` This information is added as a text element within the description root. This function automatically handles the difference between recursive and non-recursive rendering styles (when deep layers may be hidden from rendering intentionally, thus reducing chart counts).\n\n#### <a name='setAccessXAxis' href='#setAccessXAxis'>#</a> `setAccessXAxis({...})`:\n\nThis function will programmatically produce summary information about what is displayed on a Visa Chart Component's x axis. This information is added as a text element within the description root. This function relies heavily on values supplied to the [xAxis prop](../types/README.md#IAxisType), for example hiding the axis using `xAxis.visible` will remove this summary information. See also: an example of the [xAxis prop used on a chart](../bar-chart/README.md#axis-props).\n\n#### <a name='setAccessYAxis' href='#setAccessYAxis'>#</a> `setAccessYAxis({...})`:\n\nThis function will programmatically produce summary information about what is displayed on a Visa Chart Component's y axis. This information is added as a text element within the description root. This function relies heavily on values supplied to the [yAxis prop](../types/README.md#IAxisType), for example hiding the axis using `yAxis.visible` will remove this summary information. See also: an example of the [yAxis prop used on a chart](../bar-chart/README.md#axis-props).\n\n#### <a name='setAccessStructure' href='#setAccessStructure'>#</a> `setAccessStructure(rootEle: any, structure: string)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `accessibility.structureNotes` prop as well as any updates made to that value. This information is added as a text element within the description root. The lifecycle of this is managed internally by each individual Visa Chart Component. See the [accessibility prop](../types/README.md#accessibility) or the [accessibility prop used within a component](../bar-chart/README.md#accessibility-props) for more details.\n\n#### <a name='setAccessAnnotation' href='#setAccessAnnotation'>#</a> `setAccessAnnotation(rootEle: any, annotations: any, referenceLines: any)`:\n\nThis function runs to initialize any value passed to a Visa Chart Component's `annotations` as well as `referenceLines` and any updates made to these arrays. The lifecycle of this is managed internally by each individual Visa Chart Component. See an example of the [annotations prop's `accessibilityDescription` used within a component](../bar-chart/README.md#annotation-props) for more details. You can also find more information in the <a href=\"#annotate\">documentation for the annotation util</a> in this README file.\n\n#### <a name='setAccessibilityDescriptionWidth' href='#setAccessibilityDescriptionWidth'>#</a> `setAccessibilityDescriptionWidth(uniqueID, width)`:\n\nThis function ensures that the width of the description root either matches the width of the chart, or has a minimum width of 200px. It is important to maintain a minimum width because the description root's primary node is visible when a keyboard only user navigates to it (it must be easy to read).\n\nThis function initializes when the `width` prop passed to a Visa Chart Component and will update if its value changes. This is handled within the lifecycle of each chart component.\n\n#### <a name='findTagLevel' href='#findTagLevel'>#</a> `findTagLevel(startLevel: any, depthFromStart?: number)`:\n\nThis function will produce a hierarchy of HTML elements based on the `highestHeadingLevel` prop sent in to any Visa Chart Component. This is used to calculate the component's own (visible) title and subtitle as well as the contents of the description root used by screen readers and keyboard only users. This is used by each Visa Chart Component as well as internally by the <a href=\"#initializeDescriptionRoot\">`initializeDescriptionRoot`</a> function.\n\n<hr>\n<br>\n\n## <a name=\"accessibilityUtils\" href=\"#accessibilityUtils\">#</a> **Accessibility Utilities** [<>](./src/utils/accessibilityUtils.ts 'Source for Accessibility Utilities')\n\nMany of the functions in this file interact closely with the [accessibility prop](../types/README.md#accessibility) that [each Visa Chart Component](../bar-chart/README.md#accessibility-props) ships with.\n\n![A bar chart example that has detected Window's High Contrast dark mode and inverted the contrast values of all of its elements.](./docs/high-contrast.png 'High contrast mode on a chart')\n\n### **Notable Exports:**\n\n#### <a name='initializeElementAccess' href='#initializeElementAccess'>#</a> `initializeElementAccess(node: any)`:\n\nThis initialization adds attributes to a Visa Chart Component chart element to ensure that it can be recognized by the accessibility controller and description utilities but will not be accessible via screen reader or keyboard navigation. Chart elements (SVG or otherwise) are not intended to be directly accessible by these technologies, as they lack the semantic expressiveness of the HTML-based controller.\n\n#### <a name='hideNonessentialGroups' href='#hideNonessentialGroups'>#</a> `hideNonessentialGroups(rootNode: any, exception: any)`:\n\nThis function hides group elements and their children from a screen reader, keyboard navigation, and the accessibility controller and description utilities (using the <a href='#hideNode'>hideNode utility function</a>). An exception group may be passed, which is intended for the root group element that contains the main chart geometries. This node is typically ignored so that its contents may be initialized using <a href='#initializeElementAccess'>initializeElementAccess</a>.\n\n#### <a name='setTooltipAccess' href='#setTooltipAccess'>#</a> `setTooltipAccess(el: any)`:\n\nThis function hides the tooltip from screen reader access.\n\n#### <a name='setLegendAccess' href='#setLegendAccess'>#</a> `setLegendAccess(root: any, id: string)`:\n\nThis function hides the legend from screen reader and keyboard navigation access (using the <a href='#hideNode'>hideNode utility function</a>) and adds a high contrast listener (similar to the <a href='#setHighContrastListener'>setHighContrastListener utility function</a>).\n\n#### <a name='hideNode' href='#hideNode'>#</a> `hideNode(node: any, excludeFocusable?: boolean)`:\n\nThis is a commonly used function which simply ensures that a given element will not be accessible via screen reader or keyboard navigation, will not be counted by any programmatic accessibility description utilities (such as <a href='#setAccessChartCounts'>setAccessChartCounts</a>), and will not be recognized by <a href=\"#accessibility\">the accessibility controller</a>.\n\n#### <a name='create-url' href='#create-url'>#</a> `createUrl(id: string) [ functional ]`:\n\nThis function expects a string formatted as a valid HTML id and will return a string that can be used to reference the element with that ID in style or attribute declarations. This function handles an array of strange browser and environment quirks when producing valid urls for style/attributes.\n\nExample use:\n\n```js\nconst textureID = 'custom-texture-fill';\nconst textureUrl = createUrl(textureID);\n// simplest form returned is \"url(#custom-texture-fill)\"\nselect(element).attr('fill', textureUrl);\n```\n\n#### <a name='setHighContrastListener' href='#setHighContrastListener'>#</a> `setHighContrastListener(root: any, id: string)`:\n\nThis function builds a luminance-only inversion filter and then applies that filter if the chart is rendered in IE11 or Microsoft Edge and a High Contrast dark scheme is applied at the system level.\n\nTo accomplish a luminance-only inversion, the filter will first invert contrast (for example, turning a dark red into a light green) and then the filter will rotate the hue of the space 180 degrees (so that the light green is now a light red). This retains the original hue (red) but changes it from dark to light. By applying this filter to the root of an entire SVG chart space or legend, it can approximate matching Microsoft's High Contrast dark schemes (except that the color palette is not limited).\n\nThis function will also add a JavaScript-driven media query listener which detects Microsoft's <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-ms-high-contrast\">-ms-high-contrast</a> setting. Since this is a listener, it can detect changes made live (without reload). But note that this listener is experimental and -ms-high-contrast is considered Non-Standard. Real high contrast accessibility should include a limited color palette as well, which developers are expected to apply directly to charts in tandem with this automatic feature.\n\n<hr>\n<br>\n\n## <a name=\"altTextGenerator\" href=\"#altTextGenerator\">#</a> **Alt Text Generator** [<>](./src/utils/altTextGenerator.ts 'Source for Alt Text Generator')\n\nThis utility handles creating textual descriptions of a Visa Chart Component's elements and groups, based on their data values and contents. This utility is leveraged by the accessibility controller and some of the features can be controlled via props sent to a chart's accessibility prop, such as `accessibility.includeDataKeyNames` and `accessibility.elementDescriptionAccessor`. See the [accessibility prop type](../types/README.md#accessibility) for more details.\n\n![Example showing a mac's voiceover screen reader announcing the alt text on a bar chart element as a user navigates.](./docs/alt-text.jpg 'Example chart with alt text on each element')\n\n### **Notable Exports:**\n\n#### <a name='createLabel' href='#createLabel'>#</a> `createLabel({...})`:\n\nThis function produces an automatic textual description of a Visa Chart Component geometry element based on input data used to create that element. This function handles producing labels for all chart geometries in VCC library, such as bars, line points, pie slices, etc as well as handling special data structures that produce grouped, nested, and recursive elements.\n\nAn example circle in a circle-packing chart:\n\n```js\n'D. 16. Canada. Node 1 of 2. This Node contains 0 child elements';\n```\n\nBy default, Visa Chart Components have terse labels, but these can be expanded using `accessibility.includeDataKeyNames`. An example of the previous label with this prop set:\n\n```js\n'Type D. Value 16. Country Canada. Node 1 of 2. This Node contains 0 child elements';\n```\n\nIn addition, labels can be customized to include almost any additional information if a data object has a property specified by `accessibility.elementDescriptionAccessor`. An example of the previous label with this prop set:\n\n```js\n'Type D. Value 16. Country Canada. Note This product Type is also in the United States, data is redundant. Node 1 of 2. This Node contains 0 child elements';\n```\n\n#### <a name='createGroupLabel' href='#createGroupLabel'>#</a> `createGroupLabel({...})`:\n\nLike <a href='#createLabel'>createLabel</a>, this function creates an automatic textual description of a Visa Chart Component element, except for group-level data instead of child-level geometry elements. Typically group labels just contain summary information about what groupAccessor or seriesAccessor was used to create the group, what number in a series the group is, and how many children the group contains.\n\nAn example line in a line chart:\n\n```js\n'Product X. Line 1 of 2 which contains 12 interactive points.';\n```\n\nThis utility can also be used to contain summary information about a group like in a stacked bar chart:\n\n```js\n'2017. 83. Stack 2 of 5 which contains 3 interactive bars.';\n```\n\nBy default, Visa Chart Components have terse labels, but these can be expanded using `accessibility.includeDataKeyNames`. An example of the previous label with this prop set:\n\n```js\n'year 2017. Sum 83. Stack 2 of 5 which contains 3 interactive bars.';\n```\n\n<hr>\n<br>\n\n## <a name=\"annotations\" href=\"#annotations\">#</a> Annotations [<>](./src/utils/annotation.ts 'Source')\n\nThis is a wrapper on [d3-svg-annotation](https://d3-annotation.susielu.com/) by Susie Lu that allows developers to specify data values (and use simple arithmetic operations) in addition to exact pixel or numeric dimensions (as is standard to d3-svg-annotation already).\n\n![An image depicting an example annotation on a bar-chart component](./docs/annotation.jpg 'Annotation on a chart')\n\n### **Notable Exports:**\n\n#### <a name='annotate' href='#annotate'>#</a> `annotate({...})`:\n\nAdds annotations to a chart, based on props sent to the chart. Developers can specify annotations using the documentation provided by [d3-svg-annotation](https://d3-annotation.susielu.com/) as well as using data values.\n\nExample annotation prop sent to a chart:\n\n```jsx\n<bar-chart\n  {...props}\n  annotations = [\n    {\n      // see d3-svg-annotation for the main api available from that library\n      \"note\": {\n        \"label\": \"Social Media Intern returned to college\",\n        \"bgPadding\": 20,\n        \"title\": \"Staff Change\",\n        \"align\": \"middle\",\n        \"wrap\": 130\n      },\n\n      /*\n        devs must explain where they are on a chart for users who cannot see\n        this text is exposed to screen reader users in addition to note text\n      */\n      \"accessibilityDescription\": \"There has been a drop in tweet activity due to staff change in Q3.\",\n\n      /*\n        OR, devs must identify the annotation as decorative, this can be useful when leveraging\n        annotations for additional lines, labels, etc. which are already described elsewhere in\n        the chart. If your annotation describes something on the chart, this should not be used.\n      */\n      \"accessibilityDecorationOnly\": true,\n\n      /*\n        devs can take advantage of VCCs label collision (via vega-label) for annotations\n        currently we only support hiding annotations if they collide, this behavior\n        can be enabled by passing collisionHideOnly with a value of true\n      */\n      \"collisionHideOnly\": true,\n\n      /*\n        data objects can be passed in directly and will use the chart's scale\n        if any other props are passed for x/y, those will override this object\n      */\n      \"data\": {\n        \"label\": \"Q3\",\n        \"value\": 2125\n      },\n\n      // if a value is wrapped in array brackets, it will use the chart's scale\n      \"y\": [2600],\n\n      // parseAsDates is an add-on function provided by VCC that allows you to place\n      // annotation elements on a date scale, specify the axis (\"x\" or \"y\") or accessor key when defining\n      // \"parseAsDates\":[\"date\"] // accepts \"x\" or \"xAccessor\" which is \"date\" in this example\n\n      // we can also pass an array of two values in order to calculate the diff between them\n      // this is an example of calculating the difference of dates (assuming parseAsDates is sent)\n      // \"x\": [\"2016-02-01, 2016-01-01],\n\n      // percentages may also be passed, in string format\n      \"x\": \"62%\",\n\n      // when no bracket or % is used, numbers result in actual pixel space\n      \"dy\": -85,\n\n      // these additional placement options are available via the resolveValue function in the annotations.ts util\n      // they are available and can be used on the following annotation attributes\n      // annotation.x/y\n      // annotation.dx/dy\n      // annotation.subject.x1/x2/y1/y2/width/height\n      // annotation.connector.points\n      // here is an example of passing to connector points (assuming parseAsDates[\"x\"] is also sent)\n      // \"connector\": { ...\n        // \"points\": [\n              // [[\"2016-02-01\",\"2016-01-01\"],[98765,4321]],\n              // [[\"2016-03-01\",\"2016-01-01\"],[98765,4321]],\n              // ...\n        // ]\n      //}\n\n      // types relate to those provided out of the box by d3-svg-annotation\n      \"type\": \"annotationCallout\",\n      \"connector\": {\n        \"end\": \"dot\",\n        \"endScale\": 3\n      },\n\n      // visa-charts colors can be passed in and will be used\n      \"color\": \"oss_dark_grey\"\n  ]\n></bar-chart>\n```\n\nExample use by a Visa Chart Component:\n\n```js\nannotate({\n  source: this.svg,\n  data: this.annotations,\n  xScale: this.x,\n  xAccessor: this.ordinalAccessor,\n  yScale: this.y,\n  yAccessor: this.valueAccessor\n});\n```\n\n<hr>\n<br>\n\n## <a name=\"axis\" href=\"#axis\">#</a> Axes [<>](./src/utils/axis.ts 'Source')\n\nThis util adds axes to Visa Chart Components, customizable by props sent to each chart. Inspired heavily by [d3.js's axis](https://github.com/d3/d3-axis), with modifications to suit VCC design system and lifecycle. The primary export function `drawAxis({...})` is expected to work with a Visa Chart Component. See a [chart component's documentation for how to use the x and y axis props](../bar-chart/README.md#axis-props).\n\n<hr>\n<br>\n\n## <a name=\"browser-util\" href=\"#browser-util\">#</a> Browser and OS Detection [<>](./src/utils/browser-util.ts 'Source')\n\nThis util can be used to query which browser or operating system is being used. This utility is able to detect different versions of Chrome, Edge, Internet Explorer, Opera and UCBrowser.\n\n### **Notable Exports:**\n\n#### <a name='get-browser' href='#get-browser'>#</a> `getBrowser()`:\n\nThis function returns a string representing the browser being used.\n\nExample use:\n\n```js\nconst browser = getBrowser(); // 'IE', 'Edge', 'Safari', etc\n```\n\n<hr>\n<br>\n\n## <a name=\"calculation\" href=\"#calculation\">#</a> Calculating Stats [<>](./src/utils/calculation.ts 'Source')\n\nThis util is leveraged by the scatter-plot Visa Chart Component to calculate its least squares coefficient for use in a fit line.\n\n### **Notable Exports:**\n\n#### <a name='least-squares' href='#least-squares'>#</a> `leastSquares(xSeries: number[], ySeries: number[]) [ functional ]`:\n\nThis function expects two arrays of numbers and will return an array containing the slope, intercept, and r-squared values based on the data.\n\n![An image depicting an example scatterplot component with a fitted trend line.](./docs/least-squares.jpg 'Scatter plot with fit line')\n\nExample use:\n\n```js\nconst calculation = leastSquares([4, 5, 6, 7, 8], [1, 2, 3, 4, 5]); // [1, -3, 1]\n```\n\n<hr>\n<br>\n\n## <a name=\"collision\" href=\"#collision\">#</a> Collision Detection (leveraging vega-label) [<>](./src/utils/collisionDetection.ts 'Source')\n\nThis util is leveraged by VCC components to implement a VCC specific version of [vega-label](https://github.com/vega/vega-label)'s occupancy bitmap approach for collision detection of chart labels.\n\n### **Notable Exports:**\n\n#### <a name='resolve-label-collision' href='#resolve-label-collision'>#</a> `resolveLabelCollision({...})`:\n\nThis function expects to receive d3 selections of marks, labels, potential places which labels can be moved to, and even existing bitmaps (for incremental checking of additional labels, e.g., series labels on line-chart). Under the hood it leverages [vega-label](https://github.com/vega/vega-label)'s bitmap occupancy algorithm and has been extended/adapted for use in VCC. Collision related props (e.g., `collisionPlacement`) have been made available via VCC components, but are not on by default. **NOTE:** running the collision function appears to be adding ~20ms to render times in most cases, sometimes upwards of 30ms. Please keep this in mind when using collision related props in VCC.\n\n![An image depicting an example of an occupancy bitmap applied to the pie chart component in order to detect label collisions.](./docs/resolve-label-collision-pie.png 'Pie chart with occupancy bitmap')\n\n![An image depicting an example of an occupancy bitmap applied to the line chart component in order to detect label collisions.](./docs/resolve-label-collision-line.png 'Line chart with occupancy bitmap')\n\nExample use:\n\n```js\n// direct use in chart, note this function is also called in our dataLabel utility\nthis.bitmaps = resolveLabelCollision({\n  bitmaps: this.bitmaps, // bitmaps previously created in component lifecycle, containing marks\n  labelSelection: seriesUpdate, // d3 selections of labels to place and determine collisions for\n  avoidMarks: [this.updateDots], // marks to write to bitmap and use for bounds to orient labels\n  validPositions: ['middle', 'top', 'bottom'], // anchor positions to try and place label in\n  offsets: [1, 1, 1], // how much to offset each position in pixels\n  accessors: [this.seriesAccessor], // the VCC accessors used to join labels to marks\n  size: [roundTo(this.width, 0), roundTo(this.innerPaddedHeight, 0)], // size of graph\n  hideOnly: this.labelDetails.visible && this.labelDetails.collisionHideOnly // toggle of whether to place or just hide labels if collision is detected\n});\n// returns an occupancy bitmap, populated with marks and labels already drawn to the graph\n// output of the function is to set the following attributes of the labels passed in:\n// 1. data-label-hidden - attribute identifying if algorithm hide the element\n// 2. visibility - style attribute used to hide element\n// 3. x/y - position updated when placing labels based on validPositions\n// 4. text-anchor - position updated when placing labels based on validPositions\n\n// use of function for annotations\nbitmaps = resolveLabelCollision({\n  bitmaps: bitmaps, // existing bitmap is passed in with all chart marks already on it\n  labelSelection: annotationsG.selectAll('.annotation-detect-collision text'), // we applied a specific class in the annotation util and leverage that here for text element selections\n  avoidMarks: [], // no avoid marks needed for annotations\n  validPositions: ['middle'], // we only check annotations based on their specified placement\n  offsets: [1],\n  accessors: ['cidx'], // not used currently\n  size: [roundTo(width, 0), roundTo(height, 0)] // we need the whole width for annotations\n  // hideOnly is set on a per annotation basis and thus is not used in this call to the function\n});\n// for annotations, we check if the any of the text is hidden, if so, we then hide the entire annotation via style.visibility\n```\n\n<hr>\n<br>\n\n## <a name=\"colors\" href=\"#colors\">#</a> Colors [<>](./src/utils/colors.ts 'Source')\n\nThis util contains a wide array of color-related functions, some for convenient styling operations, others for leveraging VCC's color schemes, and others for ensuring accessibility programmatically.\n\n### **Notable Exports:**\n\n#### <a name='auto-text-color' href='#auto-text-color'>#</a> `autoTextColor(backgroundColor: string) [ functional ]`:\n\nThis function will find the most appropriate text color (foreground) given a background color. This function is designed with accessibility compliance in mind, using the [WCAG 2 contrast ratio formula](https://www.w3.org/TR/WCAG20-TECHS/G18.html#G18-tests) to find the highest contrast text possible. Any valid HTML string for a color may be sent: 'red', '#ffffff', 'rgb(12, 200, 15), etc. Alpha values will be ignored. A hex color will be returned, either '#ffffff' or '#222222'.\n\n![An image depicting an example bar-chart component with different color text on each bar, to contrast against the different bar colors.](./docs/auto-text-color.jpg 'Bar chart with automatic text colors')\n\nExample use:\n\n```js\nconst textColorOnBlue = autoTextColor('blue'); // '#ffffff'\nconst textColorOnSoftWhite = autoTextColor('rgb(215, 215, 215)'); // '#222222'\n```\n\n<br>\n\n#### <a name='calculate-luminance' href='#calculate-luminance'>#</a> `calculateLuminance(color: string) [ functional ]`:\n\nThis function will calculate the perceived luminance value of a valid HTML color. [Formula and specification from WCAG 2.0](https://www.w3.org/TR/WCAG20-TECHS/G18.html#G18-tests). Any valid HTML string for a color may be sent: 'red', '#ffffff', 'rgb(12, 200, 15), etc. Alpha values will be ignored. A number will be returned, between 0 (black, no luminance) and 1 (white, full luminance).\n\nExample use:\n\n```js\nconst whiteLuminance = calculateLuminance('#ffffff'); // 1\nconst blackLuminance = calculateLuminance('black'); // 0\n```\n\n<br>\n\n#### <a name='calculate-relative-luminance' href='#calculate-relative-luminance'>#</a> `calculateRelativeLuminance(luminance1: number, luminance2: number) [ functional ]`:\n\nThis function will calculate the contrast ratio between two <a href='#calculate-luminance'>luminance values</a> according to accessibility standards. Luminance values must be a number between 0 and 1 (inclusive). Input luminance values may be supplied in any order, the output will always place the highest value as the numerator. [Formula and specification from WCAG 2.0](https://www.w3.org/TR/WCAG20-TECHS/G18.html#G18-tests). A number will be returned between 1 (the colors have identical luminance) and 21 (the colors are complete opposites, literally black and white).\n\nNote that [WCAG 2.1 AA contrast ratio requirements](https://webaim.org/articles/contrast/) for non-text and large text contrast must be at least 3:1 and regular text must be at least 4.5:1.\n\nExample use:\n\n```js\nconst contrastRatioBW = calculateRelativeLuminance(whiteLuminance, blackLuminance); // 21\nconst contrastRatioWW = calculateRelativeLuminance(whiteLuminance, whiteLuminance); // 1\nconst contrastRatioBB = calculateRelativeLuminance(blackLuminance, blackLuminance); // 1\n```\n\n<br>\n\n#### <a name='convert-visa-color' href='#convert-visa-color'>#</a> `convertVisaColor(colorArr: string[]) [ functional ]`:\n\nThis function expects an array of strings. It will assume the array contains only Visa Chart Component color codes if at least the first entry has an underscore in the string. For performance, no further checking or validation is done. Mixed arrays of color strings and VCC color codes may produce unwanted results. This operation is done in-place on the input array and will either return the array untouched or it will attempt to convert VCC color codes into hex codes.\n\nExample use:\n\n```js\nconst validScheme = convertVisaColor(['blue', 'green']); // ['blue', 'green']\nconst validVCCScheme = convertVisaColor(['oss_light_grey', 'oss_dark_grey']); // ['#D7D7D7', '#363636']\nconst invalidScheme = convertVisaColor(['oss_light_grey', 'green']); // ['#D7D7D7', undefined]\n```\n\n<br>\n\n#### <a name='ensure-text-contrast' href='#ensure-text-contrast'>#</a> `ensureTextContrast(textColor: string) [ functional ]`:\n\nThis function takes a text color as an argument and will attempt to darken that color (while maintaining saturation and hue) until it passes [WCAG 2.1 AA contrast standards](https://webaim.org/articles/contrast/) (4.5:1). If it already passes, it will not be darkened. This function assumes the text is being used on a white background.\n\nNote that any valid HTML string for a color may be sent: 'red', '#ffffff', 'rgb(12, 200, 15), etc. Alpha values will be ignored.\n\n![An image depicting an example scatter plot component with different colored points and darker text matching a highlighted group of points.](./docs/ensure-text-contrast.jpg 'Scatter plot with automatically darkened text colors')\n\nExample use:\n\n```js\nconst geometryColor = '#8CD6C2';\nconst textColorToMatch = ensureTextContrast(geometryColor); // '#2e816b'\n```\n\n<br>\n\n#### <a name='get-accessible-strokes' href='#get-accessible-strokes'>#</a> `getAccessibleStrokes(fillColor: string) [ functional ]`:\n\nThis function will find up to two strokes for a given input color for use as a border on a filled element or as a line (in the case of a line chart). Note that any valid HTML string for a color may be sent: 'red', '#ffffff', 'rgb(12, 200, 15), etc. Alpha values will be ignored.\n\nThe output is an array of hex codes. The first value is computed by <a href='#get-contrasting-stroke'>getContrastingStroke</a> and will always have a 3:1 contrast against the original color. If the original color is dark enough against white by itself, it is added to the array as a second color (this is done to programmatically signal whether the returned contrasting stroke should or should not be used, given the context).\n\nTo demonstrate: For Visa Chart Components with textures, the interior fill will always use the first color for the texture's stroke. If the fill is dark enough, no stroke will be shown on the exterior unless the chart is interacted with.\n\n![An image depicting an example bar chart component with dark grey fill and light grey line pattern on it.](./docs/get-accessible-strokes.jpg 'Bar chart showing contrasting stroke textures')\n\nExample use:\n\n```js\nconst greyFill = '#767676';\nconst strokes = getAccessibleStrokes(greyFill); // ['#d2d2d2','#767676']\n```\n\n<br>\n\n#### <a name='get-contrasting-stroke' href='#get-contrasting-stroke'>#</a> `getContrastingStroke(fillColor: string) [ functional ]`:\n\nThis function receives a color string and will return a color string that is at least 3:1 contrast against the original color. This function can help geometries pass [WCAG 2.1 non-text contrast ratio](https://webaim.org/articles/contrast/) requirements even when light colors are used as input to a component. Note that any valid HTML string for a color may be sent: 'red', '#ffffff', 'rgb(12, 200, 15), etc. Alpha values will be ignored.\n\n![An image depicting an example scatter-plot component nearly white marks that have dark blue outlines.](./docs/get-contrasting-stroke.jpg 'Scatter plot showing high contrast strokes')\n\nExample use:\n\n```js\nconst nearlyWhiteFill = '#FEFEFF';\nconst highContrastStroke = getContrastingStroke(nearlyWhiteFill); // '#8484ff'\n```\n\n<br>\n\n#### <a name='visa-color-to-hex' href='#visa-color-to-hex'>#</a> `visaColorToHex(color: string) [ functional ]`:\n\nThis function will take a string as input and return either a hex code based on a Visa Chart Components color code. If no VCC color code is passed, the original string is returned instead.\n\nExample use:\n\n```js\nconst ossToGreyHexCode = visaColorToHex('oss_dark_grey'); // '#363636'\nconst greyHexCode = visaColorToHex('#363636'); // '#363636'\n```\n\n<hr>\n<br>\n\n## <a name=\"data-labels\" href=\"#data-labels\">#</a> Data Labels [<>](./src/utils/dataLabel.ts 'Source')\n\nThis util is used to place and format data labels all across Visa Chart Components. Each chart has its own set of placement rules (if any). See a [chart component's documentation for how to use the dataLabel prop](../bar-chart/README.md#label-props).\n\n<hr>\n<br>\n\n## <a name=\"data-transformation\" href=\"#data-transformation\">#</a> Data Transformation [<>](./src/utils/dataTransform.ts 'Source')\n\nThis util is used to perform various data preparation and transformation operations, primarily to prepare each [Visa Chart Component's data table](../data-table/README.md) props. One function is unused by VCC but is useful for developers wishing to create valid nested data.\n\n### **Notable Exports:**\n\n#### <a name='fix-nested-sparseness' href='#fix-nested-sparseness'>#</a> `fixNestedSparseness(data: any, ordinalAccessor: string, groupAccessor: string, valueAccessor: string, defaultValue?: number)`:\n\nFor charts that nest their data (Stacked Bar, Clustered Bar, etc), the data must not be sparse. This utility is an in-place operation on an array of objects that will add any missing datum with corresponding ordinal and group accessor values. Value accessor values will populate as either 0 (by default) or a provided default numeric value. Developers are expected to handle their own data preparation, this utility is provided as a convenience (and an example of one way this operation can be done).\n\nAs with any borrowed data algorithm, developers should assess this function to determine if it suits their needs before using.\n\nExample use:\n\n```js\n// this dataset has 3 categories and 2 groups, but only 3 datum (should have 6)\nconst badData = [{ cat: 'a', group: 'x', val: 5 }, { cat: 'b', group: 'x', val: 5 }, { cat: 'c', group: 'y', val: 5 }];\nfixNestedSparseness(this.badData, 'cat', 'group', 'val', 1);\n/*\nbadData is no longer sparse and can be properly nested:\n[\n  {cat: \"a\", group: \"x\", val: 5},\n  {cat: \"b\", group: \"x\", val: 5},\n  {cat: \"c\", group: \"y\", val: 5},\n  {val: 1, cat: \"c\", group: \"x\"},\n  {val: 1, cat: \"a\", group: \"y\"},\n  {val: 1, cat: \"b\", group: \"y\"}\n]\n*/\n```\n\n<hr>\n<br>\n\n## <a name=\"formatting-dates\" href=\"#formatting-dates\">#</a> Formatting Dates [<>](./src/utils/formatDate.ts 'Source')\n\nThis util is for formatting dates used in VCC data labels, tooltips, axes, and in accompanying data tables. For guidance on how to specify time formatting, see [d3-time-format](https://github.com/d3/d3-time-format) (which this util leverages).\n\n<hr>\n<br>\n\n## <a name=\"formatting-numbers\" href=\"#formatting-numbers\">#</a> Formatting Numbers [<>](./src/utils/formatStats.ts 'Source')\n\nThis util is for formatting any non-date number used in VCC data labels, tooltips, axes, and in accompanying data tables. For guidance on how to specify number formatting, see [Numeral.js's formatting](http://numeraljs.com/#format) (which this util leverages).\n\n### **Notable Exports:**\n\n#### <a name='round-to' href='#round-to'>#</a> `roundTo(value: number, decimal: number) [ functional ]`:\n\n[Rounding is an unbelievably complex issue](https://stackoverflow.com/questions/11832914/round-to-at-most-2-decimal-places-only-if-necessary) in any language that uses IEEE's standard for floating point numbers (virtually 99% of all languages, JavaScript/TypeScript included). This util allows a developer to specify which decimal point they would like to round to and has very few faults in how it implements rounding. This function uses `Number.EPSILON` as well as descaling (according to the desired decimal place).\n\nExample use:\n\n```js\nMath.round(1.005 * 1000) / 1000; // Returns 1 instead of expected 1.01!\nroundTo(1.005, 2); // 1.01\n\nNumber(parseFloat('1.555').toFixed(2)); // Returns 1.55 instead of 1.56.\nroundTo(1.555, 2); // 1.56\n```\n\n<br>\n\n#### <a name='format-stats' href='#format-stats'>#</a> `formatStats(value: number, format: string) [ functional ]`:\n\nThis function takes in a number and the string representation of a [format](http://numeraljs.com/#format) and returns a string representation of the number formatted by numeral.js. This utility is used for formatting of labels throughout VCC, but can also be used outside of VCC, for example, a custom number formatting Angular pipe.\n\nExample use:\n\n```js\n// see built in formats available at http://numeraljs.com/#format\nconst exampleNumber = 2343289.4798;\n\nformatStats(exampleNumber, '0.0a'); // returns '2.3m'\nformatStats(exampleNumber, '$0,0.00'); // '$2,343,289.48'\nformatStats(0.082343289798, '0.00%'); // returns '8.23%'\nformatStats(exampleNumber, '$0[.][0][0][a]'); // returns '$2.3m' or locale specific currency symbol\nformatStats(100.325, '0[.][00][a]'); // returns '100.33'\n\n// you can also use a custom format added with registerNumeralFormat() util\nformatStats(100.325, '0[.][00][a] USD'); // returns '100.33 USD'\n```\n\n```js\n// example of how to use this function within an angular pipe\nimport { Pipe, PipeTransform } from '@angular/core';\nimport Utils from '@visa/visa-charts-utils';\nconst { formatStats } = Utils;\n\n@Pipe({\n  name: 'formatStats'\n})\nexport class FormatStatsPipe implements PipeTransform {\n  transform(input: any, format?: string): any {\n    if (!format) {\n      format = '0[.][0][0]a';\n    }\n\n    if (Number.isNaN(input)) {\n      return null;\n    }\n\n    return formatStats(input, format);\n  }\n}\n```\n\n<br>\n\n#### <a name='get-numeral' href='#get-numeral'>#</a> `getNumeralInstance()`:\n\nThis function returns the instance of numeral loaded by the `formatStats` util.\n\nExample use:\n\n```js\nconst numeral = getNumeralInstance();\n\n// checking registered numeral locales and formats\nconsole.log('registered: locales', numeral.locales, ', formats: ', numeral.formats);\n```\n\n<br>\n\n#### <a name='register-numeral-locale' href='#register-numeral-locale'>#</a> `registerNumeralLocale( name: string, locale: object{}, overwrite: boolean) [ functional ]`:\n\nThis function calls `numeral.register` internally to enable the addition of locales to the number formatting provided via [numeral.js](http://numeraljs.com/). See the docs about [locales](http://numeraljs.com/#locales) for more information.\n\nExample use:\n\n```js\n// see http://numeraljs.com/#locales and\n// https://github.com/adamwdraper/Numeral-js/tree/master/src/locales\n// for more examples\nregisterNumeralLocale('ja', {\n  delimiters: {\n    thousands: ',',\n    decimal: '.'\n  },\n  abbreviations: {\n    thousand: '千',\n    million: '百万',\n    billion: '十億',\n    trillion: '兆'\n  },\n  ordinal: function(number) {\n    return '.';\n  },\n  currency: {\n    symbol: '¥'\n  }\n});\n```\n\n<br>\n\n#### <a name='set-numeral-locale' href='#set-numeral-locale'>#</a> `setNumeralLocale(name: string) [ functional ]`:\n\nThis function calls `numeral.locale` internally to set the current locale rules to be applied within the number formatting provided via [numeral.js](http://numeraljs.com/). See the docs about [locales](http://numeraljs.com/#locales) for more information.\n\nExample use:\n\n```js\n// see http://numeraljs.com/#locales\n// assuming locale 'ja' has been loaded and registered in our instance of numeral\nsetNumeralLocale('ja');\nformatStats(2343289.4798, '$0[.][0][0][a]'); // returns '¥2.3百万' based on the 'ja' locale config\n\nsetNumeralLocale('en');\nformatStats(2343289.4798, '$0[.][0][0][a]'); // returns '$2.3m' based on the 'en' locale config\n```\n\n<br>\n\n#### <a name='register-numeral-format' href='#register-numeral-format'>#</a> `registerNumeralFormat( name: string, format: object{}) [ functional ]`:\n\nThis function calls `numeral.register` internally to enable the addition of formats to the number formatting provided via [numeral.js](http://numeraljs.com/). See the docs about [custom formats](http://numeraljs.com/#custom-formats) for more information.\n\nExample use:\n\n```js\n// see http://numeraljs.com/#custom-formats and\n// https://github.com/adamwdraper/Numeral-js/tree/master/src/formats\n// for more examples\nregisterNumeralFormat('full-currency-code', {\n  regexps: {\n    format: /([A-Z]{3})$/,\n    unformat: /([A-Z]{3})$/\n  },\n  format: function(value, format, roundingFunction) {\n    var currencyCode = format.substring(format.length - 3);\n    var space = numeral._.includes(format, ` ${currencyCode}`) ? ' ' : '';\n    var output;\n\n    // check for space before currency code\n    var regexCode = new RegExp(`/( ${currencyCode})$/`, 'g');\n    format = format.replace(regexCode, '');\n\n    output = numeral._.numberToFormat(value, format, roundingFunction);\n\n    if (numeral._.includes(output, ')')) {\n      output = output.split('');\n\n      output.splice(-1, 0, space + currencyCode);\n\n      output = output.join('');\n    } else {\n      output = output + space + currencyCode;\n    }\n\n    return output;\n  },\n  unformat: function(string) {\n    return numeral._.stringToNumber(string) * 0.01;\n  }\n});\n```\n\n<hr>\n<br>\n\n## <a name=\"interactivity\" href=\"#interactivity\">#</a> Interactivity [<>](./src/utils/interaction.ts 'Source')\n\nThis util handles verifying and executing all interaction state in Visa Chart Components: Checking hover status with `checkHovered()` when a chart receives `hoverHighlight` prop, click/select status with `checkClicked()` when a chart receives `clickHighlight` prop, or both at once using `checkInteraction()`. It also handles building custom SVG stroke filters using `buildStrokes()` (which could be useful to emulate, such as when a developer wants to build a custom legend to accompany a chart).\n\n![An image depicting an example heat map component being focused by a keyboard and showing a tooltip.](./docs/interactivity.jpg 'Heat map showing focus and tooltip')\n\n<hr>\n<br>\n\n## <a name=\"legends\" href=\"#legends\">#</a> Legends [<>](./src/utils/legend.ts 'Source')\n\nThis util handles building and maintaining lifecycle for legends (of all shapes and sizes) used in Visa Chart Components. Legend types range from gradients, to categorical blocks, lines, symbols, and diverging/sequential scales represented as range bands and ordinal blocks. This util is meant to be consumed by Visa Chart Components exclusively but could be leveraged by someone clever enough in their own environment.\n\n![An example legend with 6 different line types shown.](./docs/legend.jpg 'Legend example for a line chart')\n\n<hr>\n<br>\n\n## <a name=\"licensing-bundle\" href=\"#licensing-bundle\">#</a> License Bundle [<>](./src/utils/license.ts 'Source')\n\nThis simple util is in place to ensure that required open source licenses are bundled with our code, including our own. It is maintained by our team each time a new dependency is added to one of our components and attaches itself (an object containing license information) to the window ensuring all licenses associated with our packages can be found at `window.VisaChartsLibOSSLicenses` anywhere Visa Chart Components is being used. Dev dependencies are not included as they are not distributed via our minified builds.\n\n```js\n// an example of the license information maintained in this utility\nconst licenses = [\n  {\n    dependency: 'visa-chart-components',\n    github_link: 'https://github.com/visa/visa-chart-components',\n    license: {\n      type: 'MIT',\n      update_date: '11/15/2020',\n      link: 'https://github.com/visa/visa-chart-components/blob/master/LICENSE.md',\n      text: `\n        Copyright (c) Visa, Inc.\n\n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n\n        The above copyright notice and this permission notice shall be included in\n        all copies or substantial portions of the Software.\n\n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n        THE SOFTWARE.\n      `\n    }\n  },\n  // {...}, {...}]\n```\n\n<hr>\n<br>\n\n## <a name=\"localization\" href=\"#localization\">#</a> Localization [<>](./src/utils/localization/index.ts 'Source')\n\nThis util handles building and maintaining lifecycle for localization (languages and numerical locales) used in Visa Chart Components. In VCC you can use English and Hungarian out of the box, and you can also create and use your own language to translate charts to your desired language. There are two approaches you can use to enable localization within VCC, (1) chart based and (2) globally, each approach is described in more details below.\n\nNotes:\n\n1. VCC handles languages externally and internally. Chart details that can be overwritten in an external app during usage (like the title of a chart), are expected to be internationalized by the developer in the app that is using VCC. Internal language expressions, like keyboard instructions of a chart, are handled internally.\n2. The fallback language and numerical locale for VCC is `en` (US English) and `US` (US numerical expressions, abbreviations and currency).\n\n<br>\n\n### Chart-based Initialization Process\n\nA single chart can be used with a language and numerical locale by passing the given language and numerical locale directly to the chart via the localization prop object. Internally VCC will leverage the `localization.overwrite` property to either ignore an object passed that has already been provided, or overwrite the existing configurations. Take caution with this approach if you are re-rendering and updating charts frequently as it could cause some unwanted behavior.\n\n```js\n// language import\nimport { hu } from './your-language-file-here';\n// numerical locale import\nimport { HU } from './your-numeral-locale-file-here';\n```\n\n```js\n<bar-chart\n  localization={{\n    language: hu, // string|object\n    numeralLocale: HU, // string|object\n    overwrite: false // boolean; if true the latest passed language and numeralLocale object will be used\n    skipValidation: false // boolean; if true, disables validations for this chart\n  }}\n  ...\n```\n\n<br>\n\n### Global Initialization Process\n\nIn addition to the above, you can also register your localization config before you render a chart and apply this config across one or many charts using the localization property. In this scenario you will use some of VCC's utility functions in combination with string based prop values being s","readmeFilename":"README.md"}