abo-utils
Advanced tools
Comparing version 0.0.0 to 0.1.0
@@ -11,2 +11,7 @@ # Changelog | ||
## [0.1.0] - 2018-08-07 | ||
### Added | ||
- Collected utils and polyfills, mainly from https://codepen.io/Sphinxxxx/pen/VejGLv. | ||
## 0.0.0 - 2018-08-06 | ||
@@ -17,2 +22,3 @@ ### Added | ||
[Unreleased]: https://github.com/Sphinxxxx/abo-utils/compare/v0.0.0...HEAD | ||
[Unreleased]: https://github.com/Sphinxxxx/abo-utils/compare/v0.1.0...HEAD | ||
[0.1.0]: https://github.com/Sphinxxxx/abo-utils/compare/v0.0.0...v0.1.0 |
/*! | ||
* abo-utils v0.0.0 | ||
* abo-utils v0.1.0 | ||
* https://github.com/Sphinxxxx/abo-utils | ||
@@ -9,11 +9,453 @@ * | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
typeof define === 'function' && define.amd ? define(factory) : | ||
(global.ABOUtils = factory()); | ||
}(this, (function () { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(factory((global.ABOUtils = {}))); | ||
}(this, (function (exports) { 'use strict'; | ||
var index = 42; | ||
Array.from = Array.from || function (list) { | ||
return Array.prototype.slice.call(list); | ||
}; | ||
return index; | ||
Math.trunc = Math.trunc || function (x) { | ||
return x < 0 ? Math.ceil(x) : Math.floor(x); | ||
}; | ||
var utilsPolys = Object.freeze({ | ||
}); | ||
function calcAngle(p0, p1, p2) { | ||
function squared(a) { | ||
return a * a; | ||
} | ||
var a = squared(p1[0] - p0[0]) + squared(p1[1] - p0[1]), | ||
b = squared(p1[0] - p2[0]) + squared(p1[1] - p2[1]), | ||
c = squared(p2[0] - p0[0]) + squared(p2[1] - p0[1]); | ||
var angle = Math.acos((a + b - c) / Math.sqrt(4 * a * b)); | ||
return angle; | ||
} | ||
function calcIncircle(A, B, C) { | ||
function lineLen(p1, p2) { | ||
var dx = p2[0] - p1[0], | ||
dy = p2[1] - p1[1]; | ||
return Math.sqrt(dx * dx + dy * dy); | ||
} | ||
var a = lineLen(B, C), | ||
b = lineLen(C, A), | ||
c = lineLen(A, B), | ||
p = a + b + c, | ||
s = p / 2; | ||
var area = Math.sqrt(s * (s - a) * (s - b) * (s - c)); | ||
var r = area / s, | ||
cx = (a * A[0] + b * B[0] + c * C[0]) / p, | ||
cy = (a * A[1] + b * B[1] + c * C[1]) / p; | ||
return { | ||
r: r, | ||
c: [cx, cy] | ||
}; | ||
} | ||
function expandTriangle(A, B, C, amount) { | ||
var incircle = calcIncircle(A, B, C), | ||
c = incircle.c, | ||
factor = (incircle.r + amount) / incircle.r; | ||
function extendPoint(p) { | ||
var dx = p[0] - c[0], | ||
dy = p[1] - c[1], | ||
x2 = dx * factor + c[0], | ||
y2 = dy * factor + c[1]; | ||
return [x2, y2]; | ||
} | ||
var A2 = extendPoint(A), | ||
B2 = extendPoint(B), | ||
C2 = extendPoint(C); | ||
return [A2, B2, C2]; | ||
} | ||
var utilsGeom = Object.freeze({ | ||
calcAngle: calcAngle, | ||
calcIncircle: calcIncircle, | ||
expandTriangle: expandTriangle | ||
}); | ||
function $$(selector, context) { | ||
context = context || document; | ||
var elements = context.querySelectorAll(selector); | ||
return Array.from(elements); | ||
} | ||
function $$1(selector, context) { | ||
context = context || document; | ||
var element = context.querySelector(selector); | ||
return element; | ||
} | ||
function createElement(tag, parent, attributes) { | ||
var tagInfo = tag.split(/([#\.])/); | ||
if (tagInfo.length > 1) { | ||
tag = tagInfo[0] || 'div'; | ||
attributes = attributes || {}; | ||
for (var i = 1; i < tagInfo.length - 1; i++) { | ||
var key = tagInfo[i], | ||
val = tagInfo[i + 1]; | ||
if (key === '#') { | ||
attributes.id = val; | ||
} else { | ||
attributes.class = attributes.class ? attributes.class + ' ' + val : val; | ||
} | ||
i++; | ||
} | ||
} | ||
var element = parent | ||
? document.createElementNS(parent.namespaceURI, tag) : document.createElement(tag); | ||
if (attributes) { | ||
for (var _key in attributes) { | ||
element.setAttribute(_key, attributes[_key]); | ||
} | ||
} | ||
if (parent) { | ||
parent.appendChild(element); | ||
} | ||
return element; | ||
} | ||
function relativeMousePos(mouseEvent, element, stayWithin) { | ||
function respectBounds(value, min, max) { | ||
return Math.max(min, Math.min(value, max)); | ||
} | ||
var elmBounds = element.getBoundingClientRect(); | ||
var x = mouseEvent.clientX - elmBounds.left, | ||
y = mouseEvent.clientY - elmBounds.top; | ||
if (stayWithin) { | ||
x = respectBounds(x, 0, elmBounds.width); | ||
y = respectBounds(y, 0, elmBounds.height); | ||
} | ||
return [x, y]; | ||
} | ||
function live(eventType, elementQuerySelector, callback) { | ||
document.addEventListener(eventType, function (e) { | ||
var qs = $$(elementQuerySelector); | ||
if (qs && qs.length) { | ||
var el = e.target, | ||
index = -1; | ||
while (el && (index = qs.indexOf(el)) === -1) { | ||
el = el.parentElement; | ||
} | ||
if (index > -1) { | ||
callback.call(el, e); | ||
} | ||
} | ||
}); | ||
} | ||
var utilsDom = Object.freeze({ | ||
$$: $$, | ||
$$1: $$1, | ||
createElement: createElement, | ||
relativeMousePos: relativeMousePos, | ||
live: live | ||
}); | ||
var classCallCheck = function (instance, Constructor) { | ||
if (!(instance instanceof Constructor)) { | ||
throw new TypeError("Cannot call a class as a function"); | ||
} | ||
}; | ||
var createClass = function () { | ||
function defineProperties(target, props) { | ||
for (var i = 0; i < props.length; i++) { | ||
var descriptor = props[i]; | ||
descriptor.enumerable = descriptor.enumerable || false; | ||
descriptor.configurable = true; | ||
if ("value" in descriptor) descriptor.writable = true; | ||
Object.defineProperty(target, descriptor.key, descriptor); | ||
} | ||
} | ||
return function (Constructor, protoProps, staticProps) { | ||
if (protoProps) defineProperties(Constructor.prototype, protoProps); | ||
if (staticProps) defineProperties(Constructor, staticProps); | ||
return Constructor; | ||
}; | ||
}(); | ||
function drawImageTriangle(img, ctx, s1, s2, s3, d1, d2, d3) { | ||
function linearSolution(r1, s1, t1, r2, s2, t2, r3, s3, t3) { | ||
var a = ((t2 - t3) * (s1 - s2) - (t1 - t2) * (s2 - s3)) / ((r2 - r3) * (s1 - s2) - (r1 - r2) * (s2 - s3)); | ||
var b = ((t2 - t3) * (r1 - r2) - (t1 - t2) * (r2 - r3)) / ((s2 - s3) * (r1 - r2) - (s1 - s2) * (r2 - r3)); | ||
var c = t1 - r1 * a - s1 * b; | ||
return [a, b, c]; | ||
} | ||
var xm = linearSolution(s1[0], s1[1], d1[0], s2[0], s2[1], d2[0], s3[0], s3[1], d3[0]), | ||
ym = linearSolution(s1[0], s1[1], d1[1], s2[0], s2[1], d2[1], s3[0], s3[1], d3[1]); | ||
ctx.save(); | ||
ctx.setTransform(xm[0], ym[0], xm[1], ym[1], xm[2], ym[2]); | ||
ctx.beginPath(); | ||
ctx.moveTo(s1[0], s1[1]); | ||
ctx.lineTo(s2[0], s2[1]); | ||
ctx.lineTo(s3[0], s3[1]); | ||
ctx.closePath(); | ||
ctx.clip(); | ||
ctx.drawImage(img, 0, 0, img.width, img.height); | ||
ctx.restore(); | ||
var incircle = calcIncircle(d1, d2, d3), | ||
c = incircle.c; | ||
ctx.beginPath(); | ||
ctx.arc(c[0], c[1], incircle.r, 0, 2 * Math.PI, false); | ||
ctx.moveTo(d1[0], d1[1]); | ||
ctx.lineTo(d2[0], d2[1]); | ||
ctx.lineTo(d3[0], d3[1]); | ||
ctx.closePath(); | ||
ctx.lineWidth = 2; | ||
ctx.strokeStyle = 'rgba(255,0,0, .4)'; | ||
ctx.stroke(); | ||
} | ||
var CanvasPixelBuffer = function () { | ||
function CanvasPixelBuffer(canvas, w, h) { | ||
classCallCheck(this, CanvasPixelBuffer); | ||
this.w = canvas.width = w || canvas.width; | ||
this.h = canvas.height = h || canvas.height; | ||
this.targetContext = canvas.getContext('2d'); | ||
this.targetData = this.targetContext.getImageData(0, 0, this.w, this.h); | ||
} | ||
createClass(CanvasPixelBuffer, [{ | ||
key: 'setPixel', | ||
value: function setPixel(x, y, rgb) { | ||
var index = (y * this.w + x) * 4, | ||
data = this.targetData.data; | ||
data[index] = rgb[0]; | ||
data[index + 1] = rgb[1]; | ||
data[index + 2] = rgb[2]; | ||
data[index + 3] = rgb.length > 3 ? rgb[3] : 255; | ||
} | ||
}, { | ||
key: 'render', | ||
value: function render() { | ||
this.targetContext.putImageData(this.targetData, 0, 0); | ||
} | ||
}]); | ||
return CanvasPixelBuffer; | ||
}(); | ||
var utilsCanvas = Object.freeze({ | ||
drawImageTriangle: drawImageTriangle, | ||
CanvasPixelBuffer: CanvasPixelBuffer | ||
}); | ||
var segLengths = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, | ||
segSearch = /([astvzqmhlc])([^astvzqmhlc]*)/ig; | ||
function parsePath(path) { | ||
function parseValues(args) { | ||
args = args.replace(/(\.\d+)(?=\.)/g, '$1 '); | ||
args = args.match(/-?[.0-9]+(?:e[-+]?\d+)?/ig); | ||
return args ? args.map(Number) : []; | ||
} | ||
var data = []; | ||
path.replace(segSearch, function (_, command, args) { | ||
var type = command.toLowerCase(); | ||
args = parseValues(args); | ||
if (type === 'm' && args.length > 2) { | ||
data.push([command].concat(args.splice(0, 2))); | ||
type = 'l'; | ||
command = command === 'm' ? 'l' : 'L'; | ||
} | ||
while (true) { | ||
if (args.length === segLengths[type]) { | ||
args.unshift(command); | ||
return data.push(args); | ||
} | ||
if (args.length < segLengths[type]) { | ||
throw new Error('Malformed path data: ' + [command, args]); | ||
} | ||
data.push([command].concat(args.splice(0, segLengths[type]))); | ||
} | ||
}); | ||
return data; | ||
} | ||
function absolutizePath(path) { | ||
var startX = 0; | ||
var startY = 0; | ||
var x = 0; | ||
var y = 0; | ||
return path.map(function (seg) { | ||
seg = seg.slice(); | ||
var type = seg[0]; | ||
var command = type.toUpperCase(); | ||
seg.startPoint = { x: x, y: y }; | ||
if (type !== command) { | ||
seg[0] = command; | ||
switch (type) { | ||
case 'a': | ||
seg[6] += x; | ||
seg[7] += y; | ||
break; | ||
case 'v': | ||
seg[1] += y; | ||
break; | ||
case 'h': | ||
seg[1] += x; | ||
break; | ||
default: | ||
for (var i = 1; i < seg.length;) { | ||
seg[i++] += x; | ||
seg[i++] += y; | ||
} | ||
break; | ||
} | ||
} | ||
switch (command) { | ||
case 'Z': | ||
x = startX; | ||
y = startY; | ||
break; | ||
case 'H': | ||
x = seg[1]; | ||
break; | ||
case 'V': | ||
y = seg[1]; | ||
break; | ||
case 'M': | ||
x = startX = seg[1]; | ||
y = startY = seg[2]; | ||
break; | ||
default: | ||
x = seg[seg.length - 2]; | ||
y = seg[seg.length - 1]; | ||
break; | ||
} | ||
seg.endPoint = { x: x, y: y }; | ||
return seg; | ||
}); | ||
} | ||
function serializePath(path) { | ||
return path.reduce(function (str, seg) { | ||
return str + seg[0] + seg.slice(1).join(','); | ||
}, ''); | ||
} | ||
var utilsSvg = Object.freeze({ | ||
parsePath: parsePath, | ||
absolutizePath: absolutizePath, | ||
serializePath: serializePath | ||
}); | ||
function printTime() { | ||
var d = new Date(); | ||
var millis = ('00' + d.getMilliseconds()).substr(-3); | ||
return d.toTimeString().split(' ')[0] + '.' + millis; | ||
} | ||
function htmlEncode(text) { | ||
return document.createElement('a').appendChild(document.createTextNode(text)).parentNode.innerHTML; | ||
} | ||
function htmlDecode(html) { | ||
var a = document.createElement('a'); | ||
a.innerHTML = html; | ||
return a.textContent; | ||
} | ||
function getQueryVariable(variable) { | ||
var vars = window.location.search.substring(1).split("&"); | ||
for (var i = 0; i < vars.length; i++) { | ||
var pair = vars[i].split("="); | ||
if (pair[0] === variable) { | ||
return pair[1]; | ||
} | ||
} | ||
return false; | ||
} | ||
function alertErrors() { | ||
window.onerror = function (msg, url, linenumber) { | ||
alert(printTime() + ' - Error message: ' + msg + '\nURL: ' + url + '\nLine Number: ' + linenumber); | ||
}; | ||
} | ||
function logToScreen() { | ||
var log = document.body.appendChild(document.createElement('div')); | ||
log.id = 'abo-log'; | ||
log.setAttribute('style', 'position:fixed;top:0;left:0;z-index:9999;white-space:pre;pointer-events:none;background-color:rgba(255,255,255,.5);'); | ||
console._log = console.log; | ||
console.log = function () { | ||
var msg = Array.from(arguments).join(' '); | ||
log.textContent = printTime() + ' - ' + msg + '\n' + log.textContent; | ||
}; | ||
} | ||
exports.Polys = utilsPolys; | ||
exports.Geom = utilsGeom; | ||
exports.DOM = utilsDom; | ||
exports.Canvas = utilsCanvas; | ||
exports.SVG = utilsSvg; | ||
exports.printTime = printTime; | ||
exports.htmlEncode = htmlEncode; | ||
exports.htmlDecode = htmlDecode; | ||
exports.getQueryVariable = getQueryVariable; | ||
exports.alertErrors = alertErrors; | ||
exports.logToScreen = logToScreen; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
}))); |
/*! | ||
* abo-utils v0.0.0 | ||
* abo-utils v0.1.0 | ||
* https://github.com/Sphinxxxx/abo-utils | ||
@@ -8,2 +8,2 @@ * | ||
*/ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.ABOUtils=t()}(this,function(){"use strict";return 42}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.ABOUtils={})}(this,function(e){"use strict";Array.from=Array.from||function(e){return Array.prototype.slice.call(e)},Math.trunc=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};var t=Object.freeze({});function d(e,t,n){function r(e,t){var n=t[0]-e[0],r=t[1]-e[1];return Math.sqrt(n*n+r*r)}var a=r(t,n),o=r(n,e),i=r(e,t),c=a+o+i,u=c/2;return{r:Math.sqrt(u*(u-a)*(u-o)*(u-i))/u,c:[(a*e[0]+o*t[0]+i*n[0])/c,(a*e[1]+o*t[1]+i*n[1])/c]}}var n=Object.freeze({calcAngle:function(e,t,n){function r(e){return e*e}var a=r(t[0]-e[0])+r(t[1]-e[1]),o=r(t[0]-n[0])+r(t[1]-n[1]),i=r(n[0]-e[0])+r(n[1]-e[1]);return Math.acos((a+o-i)/Math.sqrt(4*a*o))},calcIncircle:d,expandTriangle:function(e,t,n,r){var a=d(e,t,n),o=a.c,i=(a.r+r)/a.r;function c(e){var t=e[0]-o[0],n=e[1]-o[1];return[t*i+o[0],n*i+o[1]]}return[c(e),c(t),c(n)]}});function i(e,t){var n=(t=t||document).querySelectorAll(e);return Array.from(n)}var r=Object.freeze({$$:i,$$1:function(e,t){return(t=t||document).querySelector(e)},createElement:function(e,t,n){var r=e.split(/([#\.])/);if(1<r.length){e=r[0]||"div",n=n||{};for(var a=1;a<r.length-1;a++){var o=r[a],i=r[a+1];"#"===o?n.id=i:n.class=n.class?n.class+" "+i:i,a++}}var c=t?document.createElementNS(t.namespaceURI,e):document.createElement(e);if(n)for(var u in n)c.setAttribute(u,n[u]);return t&&t.appendChild(c),c},relativeMousePos:function(e,t,n){function r(e,t,n){return Math.max(t,Math.min(e,n))}var a=t.getBoundingClientRect(),o=e.clientX-a.left,i=e.clientY-a.top;return n&&(o=r(o,0,a.width),i=r(i,0,a.height)),[o,i]},live:function(e,a,o){document.addEventListener(e,function(e){var t=i(a);if(t&&t.length){for(var n=e.target,r=-1;n&&-1===(r=t.indexOf(n));)n=n.parentElement;-1<r&&o.call(n,e)}})}}),a=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function r(e,t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r),this.w=e.width=t||e.width,this.h=e.height=n||e.height,this.targetContext=e.getContext("2d"),this.targetData=this.targetContext.getImageData(0,0,this.w,this.h)}return a(r,[{key:"setPixel",value:function(e,t,n){var r=4*(t*this.w+e),a=this.targetData.data;a[r]=n[0],a[r+1]=n[1],a[r+2]=n[2],a[r+3]=3<n.length?n[3]:255}},{key:"render",value:function(){this.targetContext.putImageData(this.targetData,0,0)}}]),r}(),c=Object.freeze({drawImageTriangle:function(e,t,n,r,a,o,i,c){function u(e,t,n,r,a,o,i,c,u){var l=((o-u)*(t-a)-(n-o)*(a-c))/((r-i)*(t-a)-(e-r)*(a-c)),s=((o-u)*(e-r)-(n-o)*(r-i))/((a-c)*(e-r)-(t-a)*(r-i));return[l,s,n-e*l-t*s]}var l=u(n[0],n[1],o[0],r[0],r[1],i[0],a[0],a[1],c[0]),s=u(n[0],n[1],o[1],r[0],r[1],i[1],a[0],a[1],c[1]);t.save(),t.setTransform(l[0],s[0],l[1],s[1],l[2],s[2]),t.beginPath(),t.moveTo(n[0],n[1]),t.lineTo(r[0],r[1]),t.lineTo(a[0],a[1]),t.closePath(),t.clip(),t.drawImage(e,0,0,e.width,e.height),t.restore();var f=d(o,i,c),h=f.c;t.beginPath(),t.arc(h[0],h[1],f.r,0,2*Math.PI,!1),t.moveTo(o[0],o[1]),t.lineTo(i[0],i[1]),t.lineTo(c[0],c[1]),t.closePath(),t.lineWidth=2,t.strokeStyle="rgba(255,0,0, .4)",t.stroke()},CanvasPixelBuffer:o}),u={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},l=/([astvzqmhlc])([^astvzqmhlc]*)/gi;var s=Object.freeze({parsePath:function(e){var o=[];return e.replace(l,function(e,t,n){var r,a=t.toLowerCase();for(n=(r=(r=(r=n).replace(/(\.\d+)(?=\.)/g,"$1 ")).match(/-?[.0-9]+(?:e[-+]?\d+)?/gi))?r.map(Number):[],"m"===a&&2<n.length&&(o.push([t].concat(n.splice(0,2))),a="l",t="m"===t?"l":"L");;){if(n.length===u[a])return n.unshift(t),o.push(n);if(n.length<u[a])throw new Error("Malformed path data: "+[t,n]);o.push([t].concat(n.splice(0,u[a])))}}),o},absolutizePath:function(e){var a=0,o=0,i=0,c=0;return e.map(function(e){var t=(e=e.slice())[0],n=t.toUpperCase();if(e.startPoint={x:i,y:c},t!==n)switch(e[0]=n,t){case"a":e[6]+=i,e[7]+=c;break;case"v":e[1]+=c;break;case"h":e[1]+=i;break;default:for(var r=1;r<e.length;)e[r++]+=i,e[r++]+=c}switch(n){case"Z":i=a,c=o;break;case"H":i=e[1];break;case"V":c=e[1];break;case"M":i=a=e[1],c=o=e[2];break;default:i=e[e.length-2],c=e[e.length-1]}return e.endPoint={x:i,y:c},e})},serializePath:function(e){return e.reduce(function(e,t){return e+t[0]+t.slice(1).join(",")},"")}});function f(){var e=new Date,t=("00"+e.getMilliseconds()).substr(-3);return e.toTimeString().split(" ")[0]+"."+t}e.Polys=t,e.Geom=n,e.DOM=r,e.Canvas=c,e.SVG=s,e.printTime=f,e.htmlEncode=function(e){return document.createElement("a").appendChild(document.createTextNode(e)).parentNode.innerHTML},e.htmlDecode=function(e){var t=document.createElement("a");return t.innerHTML=e,t.textContent},e.getQueryVariable=function(e){for(var t=window.location.search.substring(1).split("&"),n=0;n<t.length;n++){var r=t[n].split("=");if(r[0]===e)return r[1]}return!1},e.alertErrors=function(){window.onerror=function(e,t,n){alert(f()+" - Error message: "+e+"\nURL: "+t+"\nLine Number: "+n)}},e.logToScreen=function(){var t=document.body.appendChild(document.createElement("div"));t.id="abo-log",t.setAttribute("style","position:fixed;top:0;left:0;z-index:9999;white-space:pre;pointer-events:none;background-color:rgba(255,255,255,.5);"),console._log=console.log,console.log=function(){var e=Array.from(arguments).join(" ");t.textContent=f()+" - "+e+"\n"+t.textContent}},Object.defineProperty(e,"__esModule",{value:!0})}); |
{ | ||
"name": "abo-utils", | ||
"version": "0.0.0", | ||
"version": "0.1.0", | ||
"description": "JS utils and polyfills.", | ||
@@ -5,0 +5,0 @@ "author": "Andreas Borgen", |
@@ -1,1 +0,14 @@ | ||
export default 42; | ||
//Doesn't work yet.. | ||
//https://stackoverflow.com/questions/44640696/es6-module-syntax-is-it-possible-to-export-as-name-from | ||
// export * as DOM from './utils-dom'; | ||
import * as Polys from './utils-polys'; | ||
import * as Geom from './utils-geom'; | ||
import * as DOM from './utils-dom'; | ||
import * as Canvas from './utils-canvas'; | ||
import * as SVG from './utils-svg'; | ||
//Export the basic stuff un-namespaced.. | ||
export * from './utils'; | ||
//..and other things within namespaces: | ||
export { Polys, Geom, DOM, Canvas, SVG }; |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
37218
13
804
1