UNPKG

@tsparticles/plugin-canvas-mask

Version:

tsParticles canvas mask plugin

61 lines (60 loc) 2.36 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "./utils.js", "@tsparticles/engine"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CanvasMaskInstance = void 0; const utils_js_1 = require("./utils.js"); const engine_1 = require("@tsparticles/engine"); class CanvasMaskInstance { constructor(container) { this._container = container; } async init() { const container = this._container, options = container.actualOptions.canvasMask; if (!options?.enable) { return; } let pixelData = { pixels: [], height: 0, width: 0, }; const offset = options.pixels.offset; if (options.image) { const url = options.image.src; if (!url) { return; } pixelData = await (0, utils_js_1.getImageData)(url, offset); } else if (options.text) { const textOptions = options.text; const data = (0, utils_js_1.getTextData)(textOptions, offset); if ((0, engine_1.isNull)(data)) { return; } pixelData = data; } else if (options.element ?? options.selector) { const canvas = options.element ?? (options.selector && document.querySelector(options.selector)); if (!canvas) { return; } const context = canvas.getContext("2d"); if (!context) { return; } pixelData = (0, utils_js_1.getCanvasImageData)(context, canvas, offset); } (0, utils_js_1.addParticlesFromCanvasPixels)(container, pixelData, options.position, options.scale, options.override, options.pixels.filter); } } exports.CanvasMaskInstance = CanvasMaskInstance; });