mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-25 17:40:29 +00:00
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
/*\
|
|
title: $:/plugins/tiddlywiki/confetti/startup.js
|
|
type: application/javascript
|
|
module-type: startup
|
|
|
|
Setup the root widget event handlers
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
// Export name and synchronous status
|
|
exports.name = "confetti";
|
|
exports.platforms = ["browser"];
|
|
exports.after = ["startup"];
|
|
exports.synchronous = true;
|
|
|
|
// Install the root widget event handlers
|
|
exports.startup = function() {
|
|
$tw.confettiManager = new $tw.ConfettiManager();
|
|
$tw.rootWidget.addEventListener("tm-confetti-launch",function(event) {
|
|
var paramObject = event.paramObject || {},
|
|
options = {},
|
|
extractNumericParameter = function(name) {
|
|
if(paramObject[name]) {
|
|
options[name] = $tw.utils.parseNumber(paramObject[name]);
|
|
}
|
|
},
|
|
extractListParameter = function(name) {
|
|
if(paramObject[name]) {
|
|
options[name] = $tw.utils.parseStringArray(paramObject[name]);
|
|
}
|
|
},
|
|
extractBooleanParameter = function(name) {
|
|
if(paramObject[name]) {
|
|
options[name] = paramObject[name] === "yes";
|
|
}
|
|
};
|
|
$tw.utils.each("particleCount angle spread startVelocity decay gravity drift ticks scalar zIndex".split(" "),function(name) {
|
|
extractNumericParameter(name);
|
|
});
|
|
$tw.utils.each("colors shapes".split(" "),function(name) {
|
|
extractListParameter(name);
|
|
});
|
|
if(paramObject.originX && paramObject.originY) {
|
|
options.origin = {
|
|
x: paramObject.originX && $tw.utils.parseNumber(paramObject.originX),
|
|
y: paramObject.originY && $tw.utils.parseNumber(paramObject.originY)
|
|
};
|
|
}
|
|
extractBooleanParameter("disableForReducedMotion");
|
|
var delay = paramObject.delay ? $tw.utils.parseNumber(paramObject.delay) : 0;
|
|
$tw.confettiManager.launch(delay,options);
|
|
});
|
|
$tw.rootWidget.addEventListener("tm-confetti-reset",function(event) {
|
|
$tw.confettiManager.reset();
|
|
});
|
|
};
|
|
|
|
})();
|