@dank-inc/sketchy
Version:
A Super-dank sketching library built with ♥ and typescript!
64 lines (63 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createParams = exports.createCanvas = void 0;
var maff_1 = require("./maff");
var color_1 = require("./helpers/color");
var draw_1 = require("./helpers/draw");
var createCanvas = function (el, dimensions) {
var canvas = document.querySelector('canvas') || document.createElement('canvas');
el.appendChild(canvas);
if (dimensions) {
var x = dimensions[0], y = dimensions[1];
canvas.width = x;
canvas.height = y;
}
else {
canvas.width = el.clientWidth;
canvas.height = el.clientHeight;
}
return canvas;
};
exports.createCanvas = createCanvas;
var createParams = function (config) {
var _a;
var id = config.containerId || ((_a = config.element) === null || _a === void 0 ? void 0 : _a.id) || 'sketchy';
var rootElement = config.element || document.getElementById(id);
if (!rootElement)
throw new Error("No Root Element Found at ".concat(id));
var canvas = (0, exports.createCanvas)(rootElement, config.dimensions);
var context = canvas.getContext('2d');
if (!context)
throw new Error("cannot initialize canvas");
var params = {
data: config.data || {},
requestId: null,
time: config.timeOffset || 0,
dt: 0,
startTime: +new Date(),
width: canvas.width,
height: canvas.height,
animated: config.animate,
context: context,
setFilter: function (val) { return (context.filter = val); },
setFillStyle: function (val) { return (context.fillStyle = val); },
setStrokeStyle: function (val) { return (context.strokeStyle = val); },
setBlendMode: function (val) { return (context.globalCompositeOperation = val); },
saver: function (body) { return (0, draw_1.saver)(context, body); },
circle: function (x, y, r, options) { return (0, draw_1.arc)(context, x, y, r, options); },
shape: function (points, options) { return (0, draw_1.drawShape)(context, points, options); },
createGradient: function (c1, c2, x1, y1, x2, y2) { return (0, color_1.createLinearGradient)(context, c1, c2, x1, y1, x2, y2); },
TAU: Math.PI * 2,
PI: Math.PI,
abs: Math.abs,
sin: maff_1.sin,
cos: maff_1.cos,
t: function () { return 0; },
r: maff_1.r,
n: maff_1.n,
lerp: maff_1.lerp,
stop: function () { return false; },
};
return params;
};
exports.createParams = createParams;