UNPKG

@dank-inc/sketchy

Version:

A Super-dank sketching library built with ♥ and typescript!

53 lines (52 loc) 1.85 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSketch = exports.loadSketch = void 0; var requestId; var lastSketch; var animateSketch = function (frame, params) { if (!params.animated) return; frame(params); var now = +new Date(); var dt = now - (params.startTime + params.time); var time = params.time + dt; requestId = requestAnimationFrame(function () { return animateSketch(frame, __assign(__assign({}, params), { time: time, dt: dt, t: function (s, o) { if (s === void 0) { s = 1; } if (o === void 0) { o = 0; } return 0.001 * time * s + o; } })); }); }; var loadSketch = function (sketch, params) { var _a; if (requestId) { cancelAnimationFrame(requestId); requestId = null; } if (lastSketch) { (_a = lastSketch.onKill) === null || _a === void 0 ? void 0 : _a.call(lastSketch); lastSketch = null; } lastSketch = params; params.requestId = Math.floor(Math.random() * 100000); params.context.clearRect(0, 0, params.width, params.height); var frame = sketch(params); params.animated ? animateSketch(frame, params) : frame(params); params.stop = function () { return (params.animated = false); }; return params; }; exports.loadSketch = loadSketch; var createSketch = function (sketch) { return sketch; }; exports.createSketch = createSketch;