Socket
Socket
Sign inDemoInstall

abo-utils

Package Overview
Dependencies
0
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.0 to 0.1.0

src/utils-canvas.js

8

CHANGELOG.md

@@ -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 });
})));

4

dist/abo-utils.min.js
/*!
* 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 };
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc