@figliolia/ripples
Version:
WebGL ripples based on the clever work of Pim Schreurs
47 lines (46 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Options = void 0;
class Options {
constructor(options) {
const configuration = this.configure(options);
this.imageUrl = configuration.imageUrl;
this.dropRadius = configuration.dropRadius;
this.interactive = configuration.interactive;
this.perturbance = configuration.perturbance;
this.crossOrigin = configuration.crossOrigin;
this.onInitialized = configuration.onInitialized;
this.resolution = this.extractResolution(configuration.resolution);
}
configure(options) {
return Object.assign({}, Options.defaults, options);
}
extractResolution(resolution) {
if (typeof resolution === "number") {
return resolution;
}
if (typeof window.devicePixelRatio === "number") {
return Math.max(Options.defaults.resolution, 256 * window.devicePixelRatio);
}
return Options.defaults.resolution;
}
extractUrl(value) {
const urlMatch = /url\(["']?([^"']*)["']?\)/.exec(value);
if (urlMatch == null) {
return null;
}
return urlMatch[1];
}
isDataUri(url) {
return url.match(/^data:/);
}
}
exports.Options = Options;
Options.defaults = {
imageUrl: null,
resolution: 512,
dropRadius: 10,
perturbance: 0.02,
interactive: true,
crossOrigin: "",
};