Files
mybb-april-fools/dist/april-fools.js
T

258 lines
126 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/html/button.html":
/*!******************************!*\
!*** ./src/html/button.html ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Module\nvar code = \"<button class=\\\"april-fools__button\\\">🎉</button>\";\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (code);\n\n//# sourceURL=webpack://mybb-april-fools/./src/html/button.html?");
/***/ }),
/***/ "./src/html/styles.html":
/*!******************************!*\
!*** ./src/html/styles.html ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Module\nvar code = \"<style class=\\\"april-fools__styles\\\">\\n.april-fools__button {\\n position: fixed;\\n bottom: 0.2rem;\\n right: 0.2rem;\\n padding: 0;\\n font-size: 3rem;\\n border: 0 solid;\\n background: transparent none;\\n opacity: 0.3;\\n transition: 0.4s all;\\n cursor: pointer;\\n}\\n.april-fools__button:hover {\\n opacity: 1;\\n}\\n.april-fools__joke-row {\\n border-bottom: 1px solid black;\\n}\\n.april-fools__joke-row:first-of-type {\\n border-top: 1px solid black;\\n}\\n.april-fools__joke {\\n display: flex;\\n flex-flow: row wrap;\\n padding: 10px;\\n opacity: 0.5;\\n justify-content: space-between;\\n align-items: center;\\n gap: 1ch;\\n cursor: pointer;\\n}\\n.april-fools__joke:hover {\\n text-shadow: 0 0 black;\\n}\\n.april-fools__joke:before {\\n display: block;\\n content: \\\"\\\";\\n flex: 0 0 2ch;\\n text-align: center;\\n content: \\\"✔\\\";\\n opacity: 0;\\n}\\ninput.april-fools__joke-input:checked + .april-fools__joke {\\n opacity: 1;\\n}\\ninput.april-fools__joke-input:checked + .april-fools__joke:before {\\n opacity: 1;\\n}\\n.april-fools__joke .april-fools__joke-title {\\n flex: 1 auto;\\n font-weight: bold;\\n}\\n.april-fools__joke .april-fools__joke-description {\\n flex: 1 auto;\\n text-align: right;\\n}\\n.april-fools__joke .april-fools__joke-chance {\\n flex: 0 0 4ch;\\n text-align: right;\\n}\\n.april-fools__content .april-fools__reset-button {\\n display: block;\\n margin: 10px auto;\\n}\\n</style>\";\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (code);\n\n//# sourceURL=webpack://mybb-april-fools/./src/html/styles.html?");
/***/ }),
/***/ "./src/html/window.html":
/*!******************************!*\
!*** ./src/html/window.html ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Module\nvar code = \"<div class=\\\"april-fools__content\\\">\\n <div class=\\\"april-fools__jokes\\\"></div>\\n\\n <button class=\\\"april-fools__reset-button\\\">Вернуться к настройкам форума (страница будет перезагружена!)</button>\\n</div>\\n<template class=\\\"april-fools__template\\\" id=\\\"april-fools__window-row\\\">\\n <div class=\\\"april-fools__joke-row\\\">\\n <input type=\\\"checkbox\\\" class=\\\"april-fools__joke-input\\\" name=\\\"april-fools__joke-${joke.id}\\\" id=\\\"april-fools__joke-${joke.id}\\\" style=\\\"display: none;\\\" />\\n <label class=\\\"april-fools__joke\\\" for=\\\"april-fools__joke-${joke.id}\\\">\\n <p class=\\\"april-fools__joke-title\\\">${joke.title}</p>\\n <p class=\\\"april-fools__joke-description\\\">${joke.description}</p>\\n <p class=\\\"april-fools__joke-chance\\\">${joke.settings.chance}%</p>\\n </label>\\n </div>\\n</template>\";\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (code);\n\n//# sourceURL=webpack://mybb-april-fools/./src/html/window.html?");
/***/ }),
/***/ "./src/joke.ts":
/*!*********************!*\
!*** ./src/joke.ts ***!
\*********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Joke\": () => (/* binding */ Joke),\n/* harmony export */ \"StopableJoke\": () => (/* binding */ StopableJoke)\n/* harmony export */ });\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Объект, описывающий шутку\n */\nvar Joke = /** @class */ (function () {\n function Joke() {\n }\n /**\n * Проверка вероятности\n *\n * @param {number} chance Вероятность срабатывания\n * @returns {boolean} Флаг срабатывания (true - сработало)\n */\n Joke.prototype.check = function (chance) {\n return Math.random() < 0.01 * chance;\n };\n /**\n * Разблокировать шутку\n */\n Joke.prototype.enable = function () {\n this.settings.enabled = true;\n };\n /**\n * Заблокировать шутку\n */\n Joke.prototype.disable = function () {\n this.settings.enabled = false;\n };\n /**\n * Переключить блокировку шутки\n * @param value Новое значение\n */\n Joke.prototype.toggle = function (value) {\n if (value === void 0) { value = null; }\n this.settings.enabled = (value === null) ? !this.settings.enabled : value;\n };\n return Joke;\n}());\n\n/**\n * Объект, описывающий шутку, которая может быть остановлена\n */\nvar StopableJoke = /** @class */ (function (_super) {\n __extends(StopableJoke, _super);\n function StopableJoke() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StopableJoke;\n}(Joke));\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/joke.ts?");
/***/ }),
/***/ "./src/joker.ts":
/*!**********************!*\
!*** ./src/joker.ts ***!
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JokerClass\": () => (/* binding */ JokerClass)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./joke */ \"./src/joke.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ui */ \"./src/ui.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n/**\n * Блок обработки перво-апрельских шуток\n *\n * @author Kozhilya\n */\nvar JokerClass = /** @class */ (function () {\n function JokerClass() {\n this.ui = new _ui__WEBPACK_IMPORTED_MODULE_1__.JokerUI(this);\n /**\n * Общие настройки системы\n */\n this.core_settings = new CoreSettings;\n /**\n * Перечисление всех шуток\n */\n this.jokes = {};\n }\n /**\n * Проверка вероятности\n *\n * @param {number} chance Вероятность срабатывания\n * @returns {boolean} Флаг срабатывания (true - сработало)\n */\n JokerClass.prototype.check = function (chance) {\n return Math.random() < 0.01 * chance;\n };\n /**\n * Добавление шутки\n *\n * @param joke Объект шутки\n */\n JokerClass.prototype.add = function (joke) {\n this.jokes[joke.id] = joke;\n };\n /**\n * Регистрация новой шутки\n *\n * @param id Идентификатор шутки\n * @param handler Метод, выполняющий шутку\n * @param settings Объект настроек шутки\n */\n JokerClass.prototype.addCustom = function (id, handler, settings) {\n if (settings === void 0) { settings = null; }\n var joke = new /** @class */ (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = id;\n _this.title = 'Пользовательская шутка';\n _this.description = 'Для шутки не определено описание';\n _this.settings = { chance: 10, enabled: true };\n return _this;\n }\n class_1.prototype.start = function () {\n handler.call(this, this.settings);\n };\n return class_1;\n }(_joke__WEBPACK_IMPORTED_MODULE_0__.Joke));\n Object.assign(joke.settings, settings !== null && settings !== void 0 ? settings : {});\n this.add(joke);\n return joke;\n };\n Object.defineProperty(JokerClass.prototype, \"settings\", {\n /**\n * Получение полного списка настроек\n */\n get: function () {\n var result = {};\n result['core'] = this.core_settings;\n for (var _i = 0, _a = Object.entries(this.jokes); _i < _a.length; _i++) {\n var entries = _a[_i];\n var id = entries[0];\n var joke = entries[1];\n result[id] = joke.settings;\n }\n return result;\n },\n /**\n * Запись новых настроек\n *\n * @param settings\n */\n set: function (settings) {\n for (var _i = 0, _a = Object.entries(settings); _i < _a.length; _i++) {\n var entry = _a[_i];\n var id = entry[0];\n var jokeSettings = entry[1];\n var targetSettings = (id === 'core') ? this.core_settings : this.jokes[id].settings;\n Object.assign(targetSettings, jokeSettings);\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Разблокировать систему\n */\n JokerClass.prototype.enable = function () {\n this.core_settings.enabled = true;\n };\n /**\n * Заблокировать систему\n */\n JokerClass.prototype.disable = function () {\n this.core_settings.enabled = false;\n };\n /**\n * Разблокировать все шутки\n */\n JokerClass.prototype.enableAll = function () {\n for (var _i = 0, _a = Object.keys(this.jokes); _i < _a.length; _i++) {\n var key = _a[_i];\n this.jokes[key].enable();\n }\n };\n /**\n * Заблокировать все шутки\n */\n JokerClass.prototype.disableAll = function () {\n for (var _i = 0, _a = Object.keys(this.jokes); _i < _a.length; _i++) {\n var key = _a[_i];\n this.jokes[key].disable();\n }\n };\n /**\n * Переключение шутки\n */\n JokerClass.prototype.toggleJoke = function (joke_id, state) {\n var joke = this.jokes[joke_id];\n joke.settings.enabled = state;\n if (joke instanceof _joke__WEBPACK_IMPORTED_MODULE_0__.StopableJoke && !state) {\n joke.stop();\n }\n this.saveUserStates();\n };\n /**\n * Сохранение пользовательских настроек\n */\n JokerClass.prototype.saveUserStates = function () {\n var states = {};\n for (var _i = 0, _a = Object.keys(this.jokes); _i < _a.length; _i++) {\n var key = _a[_i];\n states[key] = this.jokes[key].settings.enabled;\n }\n fetch('/api.php?' + $.param({\n method: 'storage.set',\n user_id: window.UserID,\n key: 'april-fools',\n token: window.ForumAPITicket,\n value: JSON.stringify(states),\n timer: 24 * 60\n }));\n };\n /**\n * Загрузка пользовательских настроек\n */\n JokerClass.prototype.loadUserStates = function () {\n return __awaiter(this, void 0, void 0, function () {\n var response, json, data, _i, _a, key;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, fetch('/api.php?' + $.param({\n method: 'storage.get',\n user_id: window.UserID,\n key: 'april-fools',\n }))];\n case 1:\n response = _b.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n json = _b.sent();\n if (json.error) {\n return [2 /*return*/];\n }\n data = JSON.parse(json.response.storage.data['april-fools']);\n for (_i = 0, _a = Object.keys(this.jokes); _i < _a.length; _i++) {\n key = _a[_i];\n this.jokes[key].settings.enabled = data[key];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JokerClass.prototype.clearUserStates = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fetch('/api.php?' + $.param({\n method: 'storage.delete',\n user_id: window.UserID,\n key: 'april-fools',\n token: window.ForumAPITicket,\n }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Запуск шутки\n *\n * @param id\n * @param {boolean} forced\n */\n JokerClass.prototype.start = function (id, forced) {\n if (forced === void 0) { forced = false; }\n if (!(id in this.jokes))\n return;\n var joke = this.jokes[id];\n if (!forced && (!joke.settings.enabled || !this.check(joke.settings.chance))) {\n return;\n }\n joke.start();\n };\n /**\n * Запуск всех шуток\n */\n JokerClass.prototype.startAll = function (forced) {\n if (forced === void 0) { forced = false; }\n for (var _i = 0, _a = Object.keys(this.jokes); _i < _a.length; _i++) {\n var key = _a[_i];\n this.start(key, forced);\n }\n };\n JokerClass.prototype.regularCheck = function () {\n if (!this.core_settings.enabled) {\n return false;\n }\n if (this.core_settings.testers.indexOf(window.UserID) >= 0) {\n return true;\n }\n var today = new Date();\n var month = today.getMonth() + 1;\n var day = today.getDate();\n if (month !== 4 || day !== 1) {\n return false;\n }\n return this.check(this.core_settings.chance);\n };\n JokerClass.prototype.regularStart = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.regularCheck()) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.loadUserStates()];\n case 1:\n _a.sent();\n this.ui.show();\n this.startAll();\n return [2 /*return*/];\n }\n });\n });\n };\n return JokerClass;\n}());\n\nvar CoreSettings = /** @class */ (function () {\n function CoreSettings() {\n this.chance = 100;\n this.enabled = true;\n this.testers = [];\n }\n return CoreSettings;\n}());\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/joker.ts?");
/***/ }),
/***/ "./src/jokes/carnival.ts":
/*!*******************************!*\
!*** ./src/jokes/carnival.ts ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CarnivalJoke\": () => (/* binding */ CarnivalJoke),\n/* harmony export */ \"CarnivalJokeSettings\": () => (/* binding */ CarnivalJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * **Карнавал**\n *\n * Аватарки приобретают интересные цвета\n *\n * @author Kozhilya\n */\nvar CarnivalJoke = /** @class */ (function (_super) {\n __extends(CarnivalJoke, _super);\n function CarnivalJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'carnival';\n _this.title = 'Карнавал';\n _this.description = 'Аватарки приобретают интересные цвета';\n _this.settings = new CarnivalJokeSettings;\n return _this;\n }\n CarnivalJoke.prototype.start = function () {\n var _this = this;\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.settings.selector).each(function (_, elem) {\n var filters = [];\n for (var _i = 0, _a = Object.entries(_this.settings.variants); _i < _a.length; _i++) {\n var entry = _a[_i];\n if (!_this.check(_this.settings.variant_chance)) {\n continue;\n }\n filters.push(entry[0].replace('{0}', Math.round(Math.random() * entry[1]).toString()));\n }\n if (filters.length > 0) {\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(elem).css({ 'filter': filters.join(' ') });\n }\n });\n };\n return CarnivalJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.Joke));\n\nvar CarnivalJokeSettings = /** @class */ (function () {\n function CarnivalJokeSettings() {\n this.enabled = true;\n this.chance = 30;\n /**\n * Селектор всех элементов, которые будут перекрашены\n */\n this.selector = 'img[src*=\"/avatars/\"]';\n /**\n * Вероятность применения некоторого фильтра\n */\n this.variant_chance = 20;\n /**\n * Список фильтров и диапозона случайных параметров\n */\n this.variants = {\n 'sepia({0}%)': 100,\n 'saturate({0}%)': 100,\n 'hue-rotate({0}deg)': 360,\n 'invert({0}%)': 100,\n };\n }\n return CarnivalJokeSettings;\n}());\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/carnival.ts?");
/***/ }),
/***/ "./src/jokes/crazy_letters.ts":
/*!************************************!*\
!*** ./src/jokes/crazy_letters.ts ***!
\************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CrazyLettersJoke\": () => (/* binding */ CrazyLettersJoke),\n/* harmony export */ \"CrazyLettersJokeSettings\": () => (/* binding */ CrazyLettersJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * **Мама, Я сОшЛа С уМа!**\n *\n * иМеНа ЗаБоРчИкОм\n *\n * @author Kozhilya\n */\nvar CrazyLettersJoke = /** @class */ (function (_super) {\n __extends(CrazyLettersJoke, _super);\n function CrazyLettersJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'crazy_letters';\n _this.title = 'Мама, Я сОшЛа С уМа!';\n _this.description = 'иМеНа ЗаБоРчИкОм';\n _this.settings = new CrazyLettersJokeSettings;\n return _this;\n }\n CrazyLettersJoke.prototype.start = function () {\n var _this = this;\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.settings.selector).each(function (_, elem) {\n var text = jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this).text();\n var result = '';\n for (var i = 0; i < text.length; i++) {\n result += text[i][(i % 2) ? 'toLowerCase' : 'toUpperCase']();\n }\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this).text(result);\n });\n };\n return CrazyLettersJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.Joke));\n\nvar CrazyLettersJokeSettings = /** @class */ (function () {\n function CrazyLettersJokeSettings() {\n this.enabled = true;\n this.chance = 20;\n /**\n * Селектор всех элементов, которые будут затронуты\n */\n this.selector = '.pa-author a';\n }\n return CrazyLettersJokeSettings;\n}());\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/crazy_letters.ts?");
/***/ }),
/***/ "./src/jokes/cursor.ts":
/*!*****************************!*\
!*** ./src/jokes/cursor.ts ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CursorEffectsJoke\": () => (/* binding */ CursorEffectsJoke),\n/* harmony export */ \"CursorEffectsJokeSettings\": () => (/* binding */ CursorEffectsJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n// import * as cursor_effects from \"cursor-effects\";\nvar cursor_effects = __webpack_require__(/*! cursor-effects */ \"./node_modules/cursor-effects/dist/cjs.cjs\");\n/**\n * **Красивый курсор**\n *\n * Эффекты, следующие за курсором\n *\n * @author Tim Holman\n * @link https://tholman.com/cursor-effects/\n */\nvar CursorEffectsJoke = /** @class */ (function (_super) {\n __extends(CursorEffectsJoke, _super);\n function CursorEffectsJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'cursor_effects';\n _this.title = 'Красивый курсор';\n _this.description = 'Эффекты, следующие за курсором';\n _this.settings = new CursorEffectsJokeSettings;\n return _this;\n }\n /**\n * Разблокировать все варианты курсоров\n */\n CursorEffectsJoke.prototype.enableAll = function () {\n for (var _i = 0, _a = Object.keys(this.settings.effects); _i < _a.length; _i++) {\n var key = _a[_i];\n this.settings.effects[key].enabled = true;\n }\n };\n /**\n * Заблокировать все варианты курсоров\n */\n CursorEffectsJoke.prototype.disableAll = function () {\n for (var _i = 0, _a = Object.keys(this.settings.effects); _i < _a.length; _i++) {\n var key = _a[_i];\n this.settings.effects[key].enabled = false;\n }\n };\n CursorEffectsJoke.prototype.weight = function (effect) {\n var s = this.settings.effects[effect];\n return s.enabled ? s.weight : 0;\n };\n CursorEffectsJoke.prototype.getRandomEffect = function () {\n var _this = this;\n var elements = Object.values(CursorEffectsEnum).map(function (e) { return e; });\n var totalWeight = elements.reduce(function (sum, element) { return sum + _this.weight(element); }, 0);\n var randomWeight = Math.random() * totalWeight;\n var currentWeight = 0;\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n currentWeight += this.weight(element);\n if (randomWeight <= currentWeight) {\n return element;\n }\n }\n throw new Error(\"Тебя быть тут не должно...\");\n };\n CursorEffectsJoke.prototype.start = function () {\n var effect = this.getRandomEffect();\n var settings = this.settings.effects[effect];\n this.active_cursor_effect = resolveCursorEffectsEnum(effect, settings);\n };\n CursorEffectsJoke.prototype.stop = function () {\n this.active_cursor_effect.destroy();\n };\n return CursorEffectsJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.StopableJoke));\n\nvar CursorEffectsEnum;\n(function (CursorEffectsEnum) {\n CursorEffectsEnum[\"Rainbow\"] = \"rainbow\";\n CursorEffectsEnum[\"FairyDust\"] = \"fairy_dust\";\n CursorEffectsEnum[\"SpringyEmoji\"] = \"springy_emoji\";\n CursorEffectsEnum[\"Emoji\"] = \"emoji\";\n CursorEffectsEnum[\"Ghost\"] = \"ghost\";\n CursorEffectsEnum[\"Trailing\"] = \"trailing\";\n CursorEffectsEnum[\"TextFlag\"] = \"text_flag\";\n CursorEffectsEnum[\"FollowingDot\"] = \"following_dot\";\n CursorEffectsEnum[\"Bubbles\"] = \"bubbles\";\n CursorEffectsEnum[\"Snowflake\"] = \"snowflake\";\n CursorEffectsEnum[\"Clock\"] = \"clock\";\n})(CursorEffectsEnum || (CursorEffectsEnum = {}));\nfunction resolveCursorEffectsEnum(effect, options) {\n switch (effect) {\n case CursorEffectsEnum.Rainbow:\n return cursor_effects.rainbowCursor(options);\n case CursorEffectsEnum.FairyDust:\n return cursor_effects.fairyDustCursor(options);\n case CursorEffectsEnum.SpringyEmoji:\n return cursor_effects.springyEmojiCursor(options);\n case CursorEffectsEnum.Emoji:\n return cursor_effects.emojiCursor(options);\n case CursorEffectsEnum.Ghost:\n return cursor_effects.ghostCursor(options);\n case CursorEffectsEnum.Trailing:\n return cursor_effects.trailingCursor(options);\n case CursorEffectsEnum.TextFlag:\n return cursor_effects.textFlag(options);\n case CursorEffectsEnum.FollowingDot:\n return cursor_effects.followingDotCursor(options);\n case CursorEffectsEnum.Bubbles:\n return cursor_effects.bubbleCursor(options);\n case CursorEffectsEnum.Snowflake:\n return cursor_effects.snowflakeCursor(options);\n case CursorEffectsEnum.Clock:\n return cursor_effects.clockCursor(options);\n }\n}\nvar CursorEffectsJokeSettings = /** @class */ (function () {\n function CursorEffectsJokeSettings() {\n var _a;\n this.enabled = true;\n this.chance = 100;\n this.effects = (_a = {},\n /**\n * Радужный след за курсором\n */\n _a[CursorEffectsEnum.Rainbow] = new /** @class */ (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Длина полосы\n */\n _this.length = 20;\n /**\n * Ширина полосы\n */\n _this.size = 3;\n /**\n * Цвета полос (сверху вниз)\n */\n _this.colors = [\n \"#9400D3\",\n \"#4B0082\",\n \"#0000FF\",\n \"#00FF00\",\n \"#FFFF00\",\n \"#FF7F00\",\n \"#FF0000\"\n ];\n return _this;\n }\n return class_1;\n }(DefaultCursorEffectsSetting)),\n /**\n * Цепочка из эмодзи \"на резинке\" под курсором\n */\n _a[CursorEffectsEnum.SpringyEmoji] = new /** @class */ (function (_super) {\n __extends(class_2, _super);\n function class_2() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Висящий эмодзи\n */\n _this.emoji = \"🤪\";\n return _this;\n }\n return class_2;\n }(DefaultCursorEffectsSetting)),\n /**\n * Падающие от курсора эмодзи\n */\n _a[CursorEffectsEnum.Emoji] = new /** @class */ (function (_super) {\n __extends(class_3, _super);\n function class_3() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Падающие эмодзи\n */\n _this.emoji = [\"🔥\", \"🐬\", \"🦆\"];\n return _this;\n }\n return class_3;\n }(DefaultCursorEffectsSetting)),\n /**\n * Падающие от курсора пылинки\n */\n _a[CursorEffectsEnum.FairyDust] = new /** @class */ (function (_super) {\n __extends(class_4, _super);\n function class_4() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Цвет пылинок\n */\n _this.colors = [\"#ff0000\", \"#00ff00\", \"#0000ff\"];\n return _this;\n }\n return class_4;\n }(DefaultCursorEffectsSetting)),\n /**\n * След \"зависших\" курсоров\n */\n _a[CursorEffectsEnum.Ghost] = new DefaultCursorEffectsSetting,\n /**\n * След курсоров \"на резинке\"\n */\n _a[CursorEffectsEnum.Trailing] = new /** @class */ (function (_super) {\n __extends(class_5, _super);\n function class_5() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Количество элементов\n */\n _this.particles = 15;\n /**\n * Скорость частиц\n */\n _this.rate = 0.4;\n /**\n * Ссылка на картинку с курсором\n * Используйте `null`, что бы использовать картинку курсора по умолчанию\n */\n _this.baseImageSrc = null;\n return _this;\n }\n return class_5;\n }(DefaultCursorEffectsSetting)),\n /**\n * Текст, развивающийся флагом от курсора\n */\n _a[CursorEffectsEnum.TextFlag] = new /** @class */ (function (_super) {\n __extends(class_6, _super);\n function class_6() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Отображаемый текст\n */\n _this.text = \"С днём смеха!\";\n /**\n * Цвет текста\n */\n _this.color = \"#000000\";\n /**\n * Шрифт текста\n */\n _this.font = \"monospace\";\n /**\n * Размер текста\n */\n _this.textSize = 12;\n /**\n * Растояние между бквами\n */\n _this.gap = 14;\n /**\n * Размер... чего-то.\n */\n _this.size = 3;\n return _this;\n }\n return class_6;\n }(DefaultCursorEffectsSetting)),\n /**\n * Точка, преследующая курсор\n */\n _a[CursorEffectsEnum.FollowingDot] = new /** @class */ (function (_super) {\n __extends(class_7, _super);\n function class_7() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Цвет догоняющей точки\n */\n _this.color = \"#323232a6\";\n return _this;\n }\n return class_7;\n }(DefaultCursorEffectsSetting)),\n /**\n * Пузырьки от курсора\n */\n _a[CursorEffectsEnum.Bubbles] = new DefaultCursorEffectsSetting,\n /**\n * Снежинки, летящие от курсора\n *\n * Отключено, потому что сейчас не зима :D\n */\n _a[CursorEffectsEnum.Snowflake] = new /** @class */ (function (_super) {\n __extends(class_8, _super);\n function class_8() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.weight = 0;\n return _this;\n }\n return class_8;\n }(DefaultCursorEffectsSetting)),\n /**\n * Циферблат вокруг курсора\n */\n _a[CursorEffectsEnum.Clock] = new /** @class */ (function (_super) {\n __extends(class_9, _super);\n function class_9() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Цвет даты\n */\n _this.dateColor = \"blue\";\n /**\n * Цвет циферблата\n */\n _this.faceColor = \"black\";\n /**\n * Цвет секундной стрелки\n */\n _this.secondsColor = \"red\";\n /**\n * Цвет минутной стрелки\n */\n _this.minutesColor = \"black\";\n /**\n * Цвет часовой стрелки\n */\n _this.hoursColor = \"black\";\n return _this;\n }\n return class_9;\n }(DefaultCursorEffectsSetting)),\n _a);\n }\n return CursorEffectsJokeSettings;\n}());\n\nvar DefaultCursorEffectsSetting = /** @class */ (function () {\n function DefaultCursorEffectsSetting() {\n /**\n * Флаг возможности срабатывания\n */\n this.enabled = true;\n /**\n * Весовой коэффициент вероятности курсора\n */\n this.weight = 50;\n }\n return DefaultCursorEffectsSetting;\n}());\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/cursor.ts?");
/***/ }),
/***/ "./src/jokes/humanitarian_hell.ts":
/*!****************************************!*\
!*** ./src/jokes/humanitarian_hell.ts ***!
\****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"HumanitarianHellJoke\": () => (/* binding */ HumanitarianHellJoke),\n/* harmony export */ \"HumanitarianHellJokeSettings\": () => (/* binding */ HumanitarianHellJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * **Ад гуманитария**\n *\n * Все \"тся\" заменяются на \"ться\", а все \"ться\" на \"тся\"\n *\n * @author Kozhilya\n */\nvar HumanitarianHellJoke = /** @class */ (function (_super) {\n __extends(HumanitarianHellJoke, _super);\n function HumanitarianHellJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'humanitarian_hell';\n _this.title = 'Ад гуманитария';\n _this.description = 'Все \"тся\" заменяются на \"ться\", а все \"ться\" на \"тся\"';\n _this.settings = new HumanitarianHellJokeSettings;\n return _this;\n }\n HumanitarianHellJoke.prototype.start = function () {\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.settings.selector).each(function () {\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(this).html(jquery__WEBPACK_IMPORTED_MODULE_1___default()(this).html().replace(/(ть?ся)/g, function (fnd) {\n return (fnd.indexOf('ь') > 0) ? 'тся' : 'ться';\n }));\n });\n };\n return HumanitarianHellJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.Joke));\n\nvar HumanitarianHellJokeSettings = /** @class */ (function () {\n function HumanitarianHellJokeSettings() {\n this.enabled = true;\n this.chance = 20;\n /**\n * Селектор всех элементов, которые будут затронуты\n */\n this.selector = '.post-content';\n }\n return HumanitarianHellJokeSettings;\n}());\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/humanitarian_hell.ts?");
/***/ }),
/***/ "./src/jokes/letter_chaos.ts":
/*!***********************************!*\
!*** ./src/jokes/letter_chaos.ts ***!
\***********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"LetterChaosJoke\": () => (/* binding */ LetterChaosJoke),\n/* harmony export */ \"LetterChaosJokeSettings\": () => (/* binding */ LetterChaosJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n/**\n * **Буквенный хаос**\n *\n * Все буквы в словах, кроме первой и последней, перемешены.\n *\n * @author Kozhilya\n */\nvar LetterChaosJoke = /** @class */ (function (_super) {\n __extends(LetterChaosJoke, _super);\n function LetterChaosJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'letter_chaos';\n _this.title = 'Буквенный хаос';\n _this.description = 'Все буквы в словах, кроме первой и последней, перемешены.';\n _this.settings = new LetterChaosJokeSettings;\n _this.punctuationSymbols = null;\n return _this;\n }\n LetterChaosJoke.prototype.shuffleLetters = function (word) {\n var _a;\n // Check if the word has two or more letters\n if ((word.length < 3) || !this.check(this.settings.shuffle_chance)) {\n return word;\n }\n // Split the word into an array of characters\n var characters = word.split(\"\");\n // Shuffle the characters between the first and last letters\n var middleCharacters = characters.slice(1, -1);\n for (var i = middleCharacters.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n _a = [middleCharacters[j], middleCharacters[i]], middleCharacters[i] = _a[0], middleCharacters[j] = _a[1];\n }\n // Join the shuffled characters back into a word\n return __spreadArray(__spreadArray([characters[0]], middleCharacters, true), [characters[characters.length - 1]], false).join(\"\");\n };\n LetterChaosJoke.prototype.processNode = function (node) {\n var _a;\n node.textContent = (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.replace(/([А-Яа-яA-Za-z]+)/gm, this.shuffleLetters);\n };\n LetterChaosJoke.prototype.start = function () {\n var _this = this;\n var items = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.settings.selector).find('*').contents().filter(function (_, node) { return node.nodeType === Node.TEXT_NODE; });\n items.each(function (_, node) { return _this.processNode(node); });\n };\n return LetterChaosJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.Joke));\n\nvar LetterChaosJokeSettings = /** @class */ (function () {\n function LetterChaosJokeSettings() {\n this.enabled = true;\n this.chance = 20;\n /**\n * Селектор всех элементов, которые будут затронуты\n */\n this.selector = '.post-content';\n /**\n * Вероятность того, что буквы будут перемешаны\n */\n this.shuffle_chance = 50;\n }\n return LetterChaosJokeSettings;\n}());\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/letter_chaos.ts?");
/***/ }),
/***/ "./src/jokes/mirror.ts":
/*!*****************************!*\
!*** ./src/jokes/mirror.ts ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MirrorJoke\": () => (/* binding */ MirrorJoke),\n/* harmony export */ \"MirrorJokeSettings\": () => (/* binding */ MirrorJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * **Зеркало**\n *\n * Элементы форума отражаются (по крайней мере, пытаются)\n *\n * @author Kozhilya\n */\nvar MirrorJoke = /** @class */ (function (_super) {\n __extends(MirrorJoke, _super);\n function MirrorJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'mirror';\n _this.title = 'Зеркало';\n _this.description = 'Элементы форума отражаются (по крайней мере, пытаются)';\n _this.settings = new MirrorJokeSettings;\n return _this;\n }\n MirrorJoke.prototype.start = function () {\n jquery__WEBPACK_IMPORTED_MODULE_1___default()('.post, .post h3, .post-links, .post-author, .post-content')\n .css('transform', 'scaleX(-1)').css('-moz-transform', 'scaleX(-1)').css('-moz-transform', 'scaleX(-1)').css('filter', 'FlipH').css('-ms-filter', '\"FlipH\"');\n jquery__WEBPACK_IMPORTED_MODULE_1___default()('.post-links, .post-links ul, .post h3 span').css('margin-left', '0');\n jquery__WEBPACK_IMPORTED_MODULE_1___default()('.post h3 span').css('margin-right', '25em');\n };\n return MirrorJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.Joke));\n\nvar MirrorJokeSettings = /** @class */ (function () {\n function MirrorJokeSettings() {\n this.enabled = false;\n this.chance = 30;\n }\n return MirrorJokeSettings;\n}());\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/mirror.ts?");
/***/ }),
/***/ "./src/jokes/shake.ts":
/*!****************************!*\
!*** ./src/jokes/shake.ts ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ShakeJoke\": () => (/* binding */ ShakeJoke),\n/* harmony export */ \"ShakeJokeSettings\": () => (/* binding */ ShakeJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * **Форумо-трясение**\n *\n * Страница форума начинает трястись\n *\n * @author Kozhilya\n */\nvar ShakeJoke = /** @class */ (function (_super) {\n __extends(ShakeJoke, _super);\n function ShakeJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'shake';\n _this.title = 'Форумо-трясение';\n _this.description = 'Страница форума начинает трястись';\n _this.settings = new ShakeJokeSettings;\n _this.data_name = 'april-fools-shake';\n return _this;\n }\n ShakeJoke.prototype.rand = function (a) {\n return a + this.settings.force * (Math.random() * 2 - 1);\n };\n ShakeJoke.prototype.start = function () {\n var _this = this;\n this.items = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.settings.selector);\n this.items.each(function (_, elem) {\n var data = {};\n _this.settings.directions.forEach(function (d) {\n data[d] = parseInt(jquery__WEBPACK_IMPORTED_MODULE_1___default()(elem).css('margin-' + d));\n });\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(elem).data(_this.data_name, data);\n });\n this.interval_id = setInterval(function () {\n _this.items.each(function (_, elem) {\n var data = jquery__WEBPACK_IMPORTED_MODULE_1___default()(elem).data(_this.data_name);\n for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {\n var entry = _a[_i];\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(elem).css('margin-' + entry[0], _this.rand(entry[1]));\n }\n });\n }, this.settings.interval);\n };\n ShakeJoke.prototype.stop = function () {\n var _this = this;\n clearInterval(this.interval_id);\n this.items.each(function (_, elem) {\n var data = {};\n _this.settings.directions.forEach(function (d) {\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(elem).css('margin-' + d, data[d]);\n });\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(elem).data(_this.data_name, data);\n });\n };\n return ShakeJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.StopableJoke));\n\nvar ShakeJokeSettings = /** @class */ (function () {\n function ShakeJokeSettings() {\n this.enabled = false;\n this.chance = 1;\n /**\n * Направление тряски (тряска происходит путём изменения перечисленных направлений margin на значение ±force от стандартного значения)\n */\n this.directions = ['top', 'left', 'bottom', 'left'];\n /**\n * Сила тряски - насколько отклоняется элемент от стандартного значения\n */\n this.force = 0.5;\n /**\n * Селектор всех элементов, которые будут трястись\n */\n this.selector = '[id^=pun]';\n /**\n * Частота тряски\n */\n this.interval = 100;\n }\n return ShakeJokeSettings;\n}());\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/shake.ts?");
/***/ }),
/***/ "./src/jokes/stupid_title.ts":
/*!***********************************!*\
!*** ./src/jokes/stupid_title.ts ***!
\***********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"StupidTitleJoke\": () => (/* binding */ StupidTitleJoke),\n/* harmony export */ \"StupidTitleJokeSettings\": () => (/* binding */ StupidTitleJokeSettings)\n/* harmony export */ });\n/* harmony import */ var _joke__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../joke */ \"./src/joke.ts\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n/**\n * **Глупые статусы**\n *\n * Каждому пользователю даётся новый глупый статус.\n *\n * @author Kozhilya\n */\nvar StupidTitleJoke = /** @class */ (function (_super) {\n __extends(StupidTitleJoke, _super);\n function StupidTitleJoke() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = 'stupid_title';\n _this.title = 'Глупые статусы';\n _this.description = 'Каждому пользователю даётся новый глупый статус.';\n _this.settings = new StupidTitleJokeSettings;\n _this.loadedGenders = null;\n _this.seed = 0;\n return _this;\n }\n StupidTitleJoke.prototype.loadGenders = function () {\n return __awaiter(this, void 0, void 0, function () {\n var names, url, response, json;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n names = jquery__WEBPACK_IMPORTED_MODULE_1___default()('.pa-author a')\n .map(function (_, elem) { return elem.innerText; }).toArray()\n .reduce(function (arr, name) {\n if (arr.indexOf(name) < 0) {\n arr.push(name);\n }\n return arr;\n }, []);\n url = '/api.php?' + jquery__WEBPACK_IMPORTED_MODULE_1___default().param({ method: 'users.get', fields: 'username,sex', username: names });\n return [4 /*yield*/, fetch(url)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n json = _a.sent();\n this.loadedGenders = {};\n if (json.error) {\n return [2 /*return*/];\n }\n json.response.users.forEach(function (element) {\n if (element.sex === '0') {\n return;\n }\n _this.loadedGenders[element.username] = element.sex === '1';\n });\n return [2 /*return*/];\n }\n });\n });\n };\n StupidTitleJoke.prototype.resolveGender = function (name) {\n if (this.settings.gender_resolver !== null) {\n return !!this.settings.gender_resolver.call(this, name);\n }\n if (name in this.loadedGenders) {\n return !!this.loadedGenders[name];\n }\n this.resetSeed();\n return this.selectRandom(name, { 'm': 1, 'f': 1 }) === 'm';\n };\n StupidTitleJoke.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cache;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.loadGenders()];\n case 1:\n _a.sent();\n cache = {};\n jquery__WEBPACK_IMPORTED_MODULE_1___default()('.post-author').each(function (_, root) {\n var name = jquery__WEBPACK_IMPORTED_MODULE_1___default()('.pa-author a', root).text();\n if (!name) {\n return;\n }\n if (!(name in cache)) {\n _this.resetSeed();\n cache[name] = _this.generatePhrase(name);\n }\n jquery__WEBPACK_IMPORTED_MODULE_1___default()('.pa-title', root).text(cache[name]);\n });\n return [2 /*return*/];\n }\n });\n });\n };\n StupidTitleJoke.prototype.prng = function (name, seed, limit) {\n /*\n https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js\n\n cyrb53 (c) 2018 bryc (github.com/bryc)\n A fast and simple hash function with decent collision resistance.\n Largely inspired by MurmurHash2/3, but with a focus on speed/simplicity.\n Public domain. Attribution appreciated.\n */\n var h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n for (var i = 0, ch = void 0; i < name.length; i++) {\n ch = name.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n var value = 4294967296 * (2097151 & h2) + (h1 >>> 0);\n return Math.floor(Math.pow(Math.sin(value), 2) * limit) % limit;\n };\n StupidTitleJoke.prototype.resetSeed = function () {\n var date = new Date();\n var time = new Date().getUTCHours() * 60 + new Date().getUTCMinutes();\n this.seed = Math.floor(time / this.settings.change_frequency);\n console.log('Seed reset:', time, this.seed);\n };\n StupidTitleJoke.prototype.selectRandom = function (name, variants) {\n var elements = Object.keys(variants);\n var totalWeight = elements.reduce(function (sum, element) { return sum + variants[element]; }, 0);\n var randomWeight = this.prng(name, this.seed++, totalWeight);\n var currentWeight = 0;\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n currentWeight += variants[element];\n if (randomWeight <= currentWeight) {\n return element;\n }\n }\n throw new Error(\"Тебя быть тут не должно...\");\n };\n StupidTitleJoke.prototype.buildVariants = function (type, gender) {\n var result = {};\n var variants = this.settings.variants[type];\n for (var _i = 0, _a = Object.entries(variants); _i < _a.length; _i++) {\n var iterator = _a[_i];\n var word = iterator[0];\n var wordSettings = iterator[1];\n if (!wordSettings.enabled || (wordSettings.gender === !gender)) {\n continue;\n }\n if (!this.settings.rude && wordSettings.rude) {\n continue;\n }\n result[word] = wordSettings.weight;\n }\n return result;\n };\n StupidTitleJoke.prototype.capitalizeFirst = function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n };\n StupidTitleJoke.prototype.generatePhrase = function (name) {\n var _this = this;\n var gender = this.resolveGender(name);\n var prhase = this.selectRandom(name, this.settings.schemas);\n return this.capitalizeFirst(prhase.replace(/\\{(.+?)\\}/g, function (_, type) {\n var variants = _this.buildVariants(type, gender);\n return _this.selectRandom(name, variants);\n }));\n };\n return StupidTitleJoke;\n}(_joke__WEBPACK_IMPORTED_MODULE_0__.Joke));\n\nvar StupidTitleJokeSettings = /** @class */ (function () {\n function StupidTitleJokeSettings() {\n this.enabled = true;\n this.chance = 100;\n /**\n * Определение пола по имени.\n * По умолчанию род устанавливается случайным образом\n *\n * Если установлено значение `null`, система попытается загрузить пол, установленный в настройках аккаунта. Если этот пол определить невозможно, то он будет выбран случайно. Эта настройка позволяет изменить это поведение, если ваш форум обладает ролевой системой, в которой пол определяется иным образом.\n *\n * @param name Имя персонажа\n * @returns true, если мужской род; false, если женский род\n */\n this.gender_resolver = null;\n /**\n * Разрешить возможно оскорбительные варианты\n */\n this.rude = false;\n /**\n * Частота смены статусов (в минутах)\n */\n this.change_frequency = 5;\n /**\n * Разрешённые схемы формирования статусов\n *\n * {adj} - прилагательное\n * {noun} - имя существительно\n * {verb} - глагол\n * {adv} - наречие\n * {place} - дополнение места\n * {p} - знак препинания\n */\n this.schemas = {\n '{adj} {noun}{p}': 10,\n '{noun} {adj}{p}': 3,\n '{adj}, {adj} {noun}{p}': 10,\n '{adj} и очень {adj} {noun}{p}': 10,\n '{adj} {noun} {verb}{p}': 10,\n '{adj} {noun} {adv} {verb}{p}': 5,\n '{adj} {noun} {verb} {place}{p}': 5,\n '{adj} {noun} {adv} {verb} {place}{p}': 5,\n };\n /**\n * Вариант слов\n * Смотрите раздел описания скрипта, что бы настроить это поле\n */\n this.variants = {\n adj: __assign(__assign({}, buildVariant(true, 'жесткий,^удачливый,низкий,знакомый,откровенный,^мирный,грамотный,вкусный,виртуальный,пышный,провинциальный,$жирный,заинтересованный,объективный,^оригинальный,пожилой,чистый,особенный,выгодный,громадный,обыкновенный,чужой,ударный,^солнечный,истинный,посторонний,южный,седой,$бесполезный,острый,пестрый,формальный,повседневный,невозможный,$жалкий,целый,$глупый,последний,выходной,серьезный,подземный,небесный,любимый,былой,семейный,далекий,северный,суровый,гигантский,иностранный,родной,конструктивный,показательный,нужный,чрезвычайный,гордый,банальный,открытый,независимый,запасной,мстительный,грубый,алчный,мелочный,хладнокровный,спокойный,терпеливый,креативный,активный,адекватный,застенчивый,опрятный,безнадёжный,уверенный в себе,доброжелательный,ласковый,робкий,воспитанный,самовлюблённый,деятельный,двуличный,верный')), buildVariant(false, 'жесткая,^удачливая,низкая,знакомая,откровенная,^мирная,грамотная,вкусная,виртуальная,пышная,провинциальная,$жирная,заинтересованная,объективная,^оригинальная,пожилая,чистая,особенная,выгодная,громадная,обыкновенная,чужая,ударная,^солнечная,истинная,посторонняя,южная,седая,$бесполезная,острая,пестрая,формальная,повседневная,невозможная,$жалкая,целая,$глупая,последняя,выходная,серьезная,подземная,небесная,любимая,былая,семейная,далекая,северная,суровая,гигантская,иностранная,родная,конструктивная,показательная,нужная,чрезвычайная,гордая,банальная,открытая,независимая,запасная,мстительная,грубая,алчная,мелочная,хладнокровная,спокаяная,терпеливая,креативная,активная,адекватная,застенчивая,опрятная,безнадёжная,уверенная в себе,доброжелательная,ласковая,робкая,воспитанная,самовлюблённая,деятельная,двуличная,верная')),\n noun: __assign(__assign(__assign({}, buildVariant(null, '')), buildVariant(true, 'орёл, ниндзя, манекен, пузырь, бродяга, рыцарь, кентавр, зайц, диван, наследник, сын, джентльмен, басурманин, карасик, $злоумышленник, $раб, хоббит, одиночка, отец, кролик, бруталище, дворф, актёр, %дед, спортсмен, $балбес, %мальчег, лев, ёж, организм, монах, хоббит, борец, тигр, монстр, массажист, мачо, эльф, ледник, жук, кот, зомби, проказник, дракон, носорог, волк, лесоруб, кит, %дедушка, динозавр, бард, кулак, принц, %сынок, мальчик, товарищ, ёжик, сурикат')), buildVariant(false, 'заноза, волторна, $личинка, детка, %бабушка, простуда, черепашка, мышь, волчица, деревяшка, пиранья, каруселька, красотка, леди, %дочка, орлица, принцесса, $ведьма, травка, актриса, наследница, %деффачка, горгулья, белочка, акула, машинка, конфетка, знаменитость, косточка, спортсменка, панда, мать, львица, эльфийка, $злоумышленница, чертовка, дворфиха, кошка, $рабыня, скамеечка, дочь, монашка, бактерия, рыбка, бусинка, $бабка, девочка, валькирия, килька, бабочка, милашка, крышка, тигрица, рыбка, русалочка')),\n verb: __assign(__assign(__assign({}, buildVariant(null, 'встаёт, снимает, приказывает, указывает, собирается, чувствует опасность, орёт, болеет, поздравляет, освобождает, поздравляет, бежит, берёт и делает, молчит, радуется, прощает, читает, снимает, снимается в фильме, что-то скрывает, думает, имеет план и придерживается его, тянет, работает, меняется, ловит, отказаться куда-то идти, заходит, замирает, оформляет, нарушает, отказывается что-то делать, шепчет, снимается в сериале, скрывается, учит, спрашивает, идёт, отказывается вставать, прибывает, отказывается, забывает, получает, плывёт, отвечает, поглядывает, говорит, просыпается, соединяет, оглядывается')), buildVariant(true, 'женится, женился, успел, не успел, смог, скрылся, заработался, познал дзен, присел, обиделся, проснулся, взял и сделал, додумался, не спал')), buildVariant(false, 'выходит замуж, вышла замуж, успела, не успела, смогла, скрылась, заработалась, познала дзен, присела, обиделась, проснулась, взяла и сделала, додумалась, не спала')),\n place: __assign({}, buildVariant(null, 'где-то, в пустыне, на пляже, под дождём, %под проливным дождём, в квартире, %в тёплой и уютной квартире, в космосе, в театре, в филармонии, на заснеженной вершине, на конференции, на форуме, в очереди, в лесу, в джунглях, под водой')),\n adv: __assign({}, buildVariant(null, 'счастливо, уныло, грустно, позже, немедленно, регулярно, вновь, опять, уже, внезапно, предсказуемо, медленно, быстро, %молниеносно, $грубо, безрассудно, осмысленно, расчётливо')),\n p: {\n '': new StupidTitleSetting({ weight: 10 }),\n '.': new StupidTitleSetting({ weight: 10 }),\n '...': new StupidTitleSetting({ weight: 5 }),\n '!': new StupidTitleSetting({ weight: 5 }),\n '!!!': new StupidTitleSetting({ weight: 2 }),\n '?': new StupidTitleSetting({ weight: 2 }),\n '?!': new StupidTitleSetting({ weight: 1 }),\n },\n };\n }\n return StupidTitleJokeSettings;\n}());\n\nvar StupidTitleSetting = /** @class */ (function () {\n function StupidTitleSetting(options) {\n if (options === void 0) { options = new Object; }\n this.weight = 10;\n this.enabled = true;\n this.rude = false;\n this.gender = null;\n for (var _i = 0, _a = Object.entries(options); _i < _a.length; _i++) {\n var iterator = _a[_i];\n if (iterator[0] in this) {\n this[iterator[0]] = iterator[1];\n }\n }\n }\n return StupidTitleSetting;\n}());\nfunction buildVariant(gender, input) {\n var result = {};\n var words = input.split(',').map(function (word) { return word.trim(); });\n words.forEach(function (word) {\n var clean_word = word.replace(/[^А-ЯЁа-яёA-Za-z\\- ]/g, '');\n if (clean_word === '') {\n return;\n }\n result[clean_word] = new StupidTitleSetting({\n gender: gender,\n rude: word.indexOf('$') >= 0,\n enabled: word.indexOf('!') < 0,\n weight: 10 * ((word.indexOf('$') >= 0) ? 0.5 : 1) * ((word.indexOf('%') >= 0) ? 0.5 : 1) * ((word.indexOf('^') >= 0) ? 2 : 1)\n });\n });\n return result;\n}\nwindow.BuildStupdiTitleVariant = buildVariant;\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/jokes/stupid_title.ts?");
/***/ }),
/***/ "./src/main.ts":
/*!*********************!*\
!*** ./src/main.ts ***!
\*********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _joker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./joker */ \"./src/joker.ts\");\n/* harmony import */ var _jokes_shake__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jokes/shake */ \"./src/jokes/shake.ts\");\n/* harmony import */ var _jokes_humanitarian_hell__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jokes/humanitarian_hell */ \"./src/jokes/humanitarian_hell.ts\");\n/* harmony import */ var _jokes_mirror__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./jokes/mirror */ \"./src/jokes/mirror.ts\");\n/* harmony import */ var _jokes_carnival__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./jokes/carnival */ \"./src/jokes/carnival.ts\");\n/* harmony import */ var _jokes_crazy_letters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./jokes/crazy_letters */ \"./src/jokes/crazy_letters.ts\");\n/* harmony import */ var _jokes_letter_chaos__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./jokes/letter_chaos */ \"./src/jokes/letter_chaos.ts\");\n/* harmony import */ var _jokes_cursor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./jokes/cursor */ \"./src/jokes/cursor.ts\");\n/* harmony import */ var _jokes_stupid_title__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./jokes/stupid_title */ \"./src/jokes/stupid_title.ts\");\n\n\n\n\n\n\n\n\n\nwindow.AprilJokes = (function (jokes) {\n var cl = new _joker__WEBPACK_IMPORTED_MODULE_0__.JokerClass();\n jokes.forEach(function (joke) {\n cl.add(new joke());\n });\n $(function () { return cl.regularStart(); });\n return cl;\n})([\n _jokes_shake__WEBPACK_IMPORTED_MODULE_1__.ShakeJoke,\n _jokes_humanitarian_hell__WEBPACK_IMPORTED_MODULE_2__.HumanitarianHellJoke,\n _jokes_mirror__WEBPACK_IMPORTED_MODULE_3__.MirrorJoke,\n _jokes_carnival__WEBPACK_IMPORTED_MODULE_4__.CarnivalJoke,\n _jokes_crazy_letters__WEBPACK_IMPORTED_MODULE_5__.CrazyLettersJoke,\n _jokes_letter_chaos__WEBPACK_IMPORTED_MODULE_6__.LetterChaosJoke,\n _jokes_cursor__WEBPACK_IMPORTED_MODULE_7__.CursorEffectsJoke,\n _jokes_stupid_title__WEBPACK_IMPORTED_MODULE_8__.StupidTitleJoke,\n]);\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/main.ts?");
/***/ }),
/***/ "./src/ui.ts":
/*!*******************!*\
!*** ./src/ui.ts ***!
\*******************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JokerUI\": () => (/* binding */ JokerUI)\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _html_button_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./html/button.html */ \"./src/html/button.html\");\n/* harmony import */ var _html_styles_html__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./html/styles.html */ \"./src/html/styles.html\");\n/* harmony import */ var _html_window_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./html/window.html */ \"./src/html/window.html\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar JokerUI = /** @class */ (function () {\n function JokerUI(joker) {\n var _this = this;\n this.joker = joker;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('link[rel=\"stylesheet\"]').eq(0).before(_html_styles_html__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n var button = this.button;\n button.hide();\n button.mybbModal({\n title: \"Настройки первоапрельских шуток\",\n content: function () { return _this.render(); },\n closer: true,\n noscroll: true,\n escClose: true,\n });\n }\n Object.defineProperty(JokerUI.prototype, \"button\", {\n get: function () {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.april-fools__button');\n if (button.length === 0) {\n button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(_html_button_html__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).appendTo('body');\n }\n return button;\n },\n enumerable: false,\n configurable: true\n });\n JokerUI.prototype.show = function () {\n this.button.show();\n };\n JokerUI.prototype.render = function () {\n var _this = this;\n var result = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div></div>').html(_html_window_html__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n var row_template = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#april-fools__window-row', result).html();\n var joke_container = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.april-fools__jokes', result);\n var _loop_1 = function (joke) {\n var row = jquery__WEBPACK_IMPORTED_MODULE_0___default()(eval('`' + row_template + '`'));\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('input[type=\"checkbox\"]', row).prop('checked', joke.settings.enabled)\n .on('click', function (e) { return _this.joker.toggleJoke(joke.id, e.currentTarget.checked); });\n joke_container.append(row);\n };\n for (var _i = 0, _a = Object.values(this.joker.jokes); _i < _a.length; _i++) {\n var joke = _a[_i];\n _loop_1(joke);\n }\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('button', result).on('click', function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.joker.clearUserStates()];\n case 1:\n _a.sent();\n window.location.reload();\n return [2 /*return*/];\n }\n });\n }); });\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()('.april-fools__content', result);\n };\n return JokerUI;\n}());\n\n\n\n//# sourceURL=webpack://mybb-april-fools/./src/ui.ts?");
/***/ }),
/***/ "jquery":
/*!*************************!*\
!*** external "jQuery" ***!
\*************************/
/***/ ((module) => {
module.exports = jQuery;
/***/ }),
/***/ "./node_modules/cursor-effects/dist/cjs.cjs":
/*!**************************************************!*\
!*** ./node_modules/cursor-effects/dist/cjs.cjs ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("Object.defineProperty(exports, \"__esModule\", ({value:!0})),exports.bubbleCursor=function(e){let t,i,n,o=e&&e.element,s=o||document.body,h=window.innerWidth,c=window.innerHeight,l={x:h/2,y:h/2},r=[],d=[];const a=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function A(){if(a.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",o?(t.style.position=\"absolute\",s.appendChild(t),t.width=s.clientWidth,t.height=s.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=h,t.height=c),s.addEventListener(\"mousemove\",g),s.addEventListener(\"touchmove\",m,{passive:!0}),s.addEventListener(\"touchstart\",m,{passive:!0}),window.addEventListener(\"resize\",u),f()}function u(e){h=window.innerWidth,c=window.innerHeight,o?(t.width=s.clientWidth,t.height=s.clientHeight):(t.width=h,t.height=c)}function m(e){if(e.touches.length>0)for(let t=0;t<e.touches.length;t++)p(e.touches[t].clientX,e.touches[t].clientY,d[Math.floor(Math.random()*d.length)])}function g(e){if(o){const t=s.getBoundingClientRect();l.x=e.clientX-t.left,l.y=e.clientY-t.top}else l.x=e.clientX,l.y=e.clientY;p(l.x,l.y)}function p(e,t,i){r.push(new w(e,t,i))}function f(){!function(){if(0!=r.length){i.clearRect(0,0,h,c);for(let e=0;e<r.length;e++)r[e].update(i);for(let e=r.length-1;e>=0;e--)r[e].lifeSpan<0&&r.splice(e,1);0==r.length&&i.clearRect(0,0,h,c)}}(),n=requestAnimationFrame(f)}function y(){t.remove(),cancelAnimationFrame(n),s.removeEventListener(\"mousemove\",g),s.removeEventListener(\"touchmove\",m),s.removeEventListener(\"touchstart\",m),window.addEventListener(\"resize\",u)}function w(e,t,i){const n=Math.floor(60*Math.random()+60);this.initialLifeSpan=n,this.lifeSpan=n,this.velocity={x:(Math.random()<.5?-1:1)*(Math.random()/10),y:-1*Math.random()-.4},this.position={x:e,y:t},this.canv=i,this.baseDimension=4,this.update=function(e){this.position.x+=this.velocity.x,this.position.y+=this.velocity.y,this.velocity.x+=2*(Math.random()<.5?-1:1)/75,this.velocity.y-=Math.random()/600,this.lifeSpan--;const t=.2+(this.initialLifeSpan-this.lifeSpan)/this.initialLifeSpan;e.fillStyle=\"#e6f1f7\",e.strokeStyle=\"#3a92c5\",e.beginPath(),e.arc(this.position.x-this.baseDimension/2*t,this.position.y-this.baseDimension/2,this.baseDimension*t,0,2*Math.PI),e.stroke(),e.fill(),e.closePath()}}return a.onchange=()=>{a.matches?y():A()},A(),{destroy:y}},exports.clockCursor=function(e){let t,i,n,o=e&&e.element,s=o||document.body,h=window.innerWidth,c=window.innerHeight,l={x:h/2,y:h/2};const r=e&&e.dateColor||\"blue\",d=e&&e.faceColor||\"black\",a=e&&e.secondsColor||\"red\",A=e&&e.minutesColor||\"black\",u=e&&e.hoursColor||\"black\",m=.4;let g=new Date,p=g.getDate(),f=g.getYear()+1900;const y=(\" \"+[\"SUNDAY\",\"MONDAY\",\"TUESDAY\",\"WEDNESDAY\",\"THURSDAY\",\"FRIDAY\",\"SATURDAY\"][g.getDay()]+\" \"+p+\" \"+[\"JANUARY\",\"FEBRUARY\",\"MARCH\",\"APRIL\",\"MAY\",\"JUNE\",\"JULY\",\"AUGUST\",\"SEPTEMBER\",\"OCTOBER\",\"NOVEMBER\",\"DECEMBER\"][g.getMonth()]+\" \"+f).split(\"\"),w=[\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"1\",\"2\"],v=w.length,x=[\"•\",\"•\",\"•\"],E=[\"•\",\"•\",\"•\",\"•\"],C=[\"•\",\"•\",\"•\",\"•\",\"•\"],M=360/v,L=360/y.length,B=45/6.5,b=[],R=[],Y=[],S=[],W=[],H=[],I=[],X=[],T=[];var D=parseInt(y.length+v+x.length+E.length+C.length)+1;const F=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function z(){if(F.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",o?(t.style.position=\"absolute\",s.appendChild(t),t.width=s.clientWidth,t.height=s.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=h,t.height=c),i.font=\"10px sans-serif\",i.textAlign=\"center\",i.textBaseline=\"middle\";for(let e=0;e<D;e++)b[e]=0,R[e]=0,Y[e]=0,S[e]=0;for(let e=0;e<y.length;e++)T[e]={color:r,value:y[e]};for(let e=0;e<w.length;e++)X[e]={color:d,value:w[e]};for(let e=0;e<x.length;e++)I[e]={color:u,value:x[e]};for(let e=0;e<E.length;e++)H[e]={color:A,value:E[e]};for(let e=0;e<C.length;e++)W[e]={color:a,value:C[e]};s.addEventListener(\"mousemove\",U),s.addEventListener(\"touchmove\",J,{passive:!0}),s.addEventListener(\"touchstart\",J,{passive:!0}),window.addEventListener(\"resize\",P),Q()}function P(e){h=window.innerWidth,c=window.innerHeight,o?(t.width=s.clientWidth,t.height=s.clientHeight):(t.width=h,t.height=c)}function J(e){if(e.touches.length>0)if(o){const t=s.getBoundingClientRect();l.x=e.touches[0].clientX-t.left,l.y=e.touches[0].clientY-t.top}else l.x=e.touches[0].clientX,l.y=e.touches[0].clientY}function U(e){if(o){const t=s.getBoundingClientRect();l.x=e.clientX-t.left,l.y=e.clientY-t.top}else l.x=e.clientX,l.y=e.clientY}function Q(){!function(){Y[0]=Math.round(b[0]+=(l.y-b[0])*m),S[0]=Math.round(R[0]+=(l.x-R[0])*m);for(let e=1;e<D;e++)Y[e]=Math.round(b[e]+=(Y[e-1]-b[e])*m),S[e]=Math.round(R[e]+=(S[e-1]-R[e])*m),b[e-1]>=c-80&&(b[e-1]=c-80),R[e-1]>=h-80&&(R[e-1]=h-80)}(),function(){i.clearRect(0,0,h,c);const e=new Date,t=e.getSeconds(),n=Math.PI*(t-15)/30,o=e.getMinutes(),s=Math.PI*(o-15)/30,l=e.getHours(),r=Math.PI*(l-3)/6+Math.PI*parseInt(e.getMinutes())/360;for(let e=0;e<T.length;e++)T[e].y=b[e]+67.5*Math.sin(-n+e*L*Math.PI/180),T[e].x=R[e]+67.5*Math.cos(-n+e*L*Math.PI/180),i.fillStyle=T[e].color,i.fillText(T[e].value,T[e].x,T[e].y);for(let e=0;e<X.length;e++)X[e].y=b[T.length+e]+45*Math.sin(e*M*Math.PI/180),X[e].x=R[T.length+e]+45*Math.cos(e*M*Math.PI/180),i.fillStyle=X[e].color,i.fillText(X[e].value,X[e].x,X[e].y);for(let e=0;e<I.length;e++)I[e].y=b[T.length+v+e]+0+e*B*Math.sin(r),I[e].x=R[T.length+v+e]+0+e*B*Math.cos(r),i.fillStyle=I[e].color,i.fillText(I[e].value,I[e].x,I[e].y);for(let e=0;e<H.length;e++)H[e].y=b[T.length+v+I.length+e]+0+e*B*Math.sin(s),H[e].x=R[T.length+v+I.length+e]+0+e*B*Math.cos(s),i.fillStyle=H[e].color,i.fillText(H[e].value,H[e].x,H[e].y);for(let e=0;e<W.length;e++)W[e].y=b[T.length+v+I.length+H.length+e]+0+e*B*Math.sin(n),W[e].x=R[T.length+v+I.length+H.length+e]+0+e*B*Math.cos(n),i.fillStyle=W[e].color,i.fillText(W[e].value,W[e].x,W[e].y)}(),n=requestAnimationFrame(Q)}function Z(){t.remove(),cancelAnimationFrame(n),s.removeEventListener(\"mousemove\",U),s.removeEventListener(\"touchmove\",J),s.removeEventListener(\"touchstart\",J),window.addEventListener(\"resize\",P)}return F.onchange=()=>{F.matches?Z():z()},z(),{destroy:Z}},exports.emojiCursor=function(e){const t=e&&e.emoji||[\"😀\",\"😂\",\"😆\",\"😊\"];let i=e&&e.element,n=i||document.body,o=window.innerWidth,s=window.innerHeight;const h={x:o/2,y:o/2},c={x:o/2,y:o/2};let l=0;const r=[],d=[];let a,A,u;const m=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function g(){if(m.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;a=document.createElement(\"canvas\"),A=a.getContext(\"2d\"),a.style.top=\"0px\",a.style.left=\"0px\",a.style.pointerEvents=\"none\",i?(a.style.position=\"absolute\",n.appendChild(a),a.width=n.clientWidth,a.height=n.clientHeight):(a.style.position=\"fixed\",document.body.appendChild(a),a.width=o,a.height=s),A.font=\"21px serif\",A.textBaseline=\"middle\",A.textAlign=\"center\",t.forEach((e=>{let t=A.measureText(e),i=document.createElement(\"canvas\"),n=i.getContext(\"2d\");i.width=t.width,i.height=2*t.actualBoundingBoxAscent,n.textAlign=\"center\",n.font=\"21px serif\",n.textBaseline=\"middle\",n.fillText(e,i.width/2,t.actualBoundingBoxAscent),d.push(i)})),n.addEventListener(\"mousemove\",y,{passive:!0}),n.addEventListener(\"touchmove\",f,{passive:!0}),n.addEventListener(\"touchstart\",f,{passive:!0}),window.addEventListener(\"resize\",p),v()}function p(e){o=window.innerWidth,s=window.innerHeight,i?(a.width=n.clientWidth,a.height=n.clientHeight):(a.width=o,a.height=s)}function f(e){if(e.touches.length>0)for(let t=0;t<e.touches.length;t++)w(e.touches[t].clientX,e.touches[t].clientY,d[Math.floor(Math.random()*d.length)])}function y(e){e.timeStamp-l<16||window.requestAnimationFrame((()=>{if(i){const t=n.getBoundingClientRect();h.x=e.clientX-t.left,h.y=e.clientY-t.top}else h.x=e.clientX,h.y=e.clientY;Math.hypot(h.x-c.x,h.y-c.y)>1&&(w(h.x,h.y,d[Math.floor(Math.random()*t.length)]),c.x=h.x,c.y=h.y,l=e.timeStamp)}))}function w(e,t,i){r.push(new E(e,t,i))}function v(){!function(){if(0!=r.length){A.clearRect(0,0,o,s);for(let e=0;e<r.length;e++)r[e].update(A);for(let e=r.length-1;e>=0;e--)r[e].lifeSpan<0&&r.splice(e,1);0==r.length&&A.clearRect(0,0,o,s)}}(),u=requestAnimationFrame(v)}function x(){a.remove(),cancelAnimationFrame(u),n.removeEventListener(\"mousemove\",y),n.removeEventListener(\"touchmove\",f),n.removeEventListener(\"touchstart\",f),window.addEventListener(\"resize\",p)}function E(e,t,i){const n=Math.floor(60*Math.random()+80);this.initialLifeSpan=n,this.lifeSpan=n,this.velocity={x:(Math.random()<.5?-1:1)*(Math.random()/2),y:.4*Math.random()+.8},this.position={x:e,y:t},this.canv=i,this.update=function(e){this.position.x+=this.velocity.x,this.position.y+=this.velocity.y,this.lifeSpan--,this.velocity.y+=.05;const t=Math.max(this.lifeSpan/this.initialLifeSpan,0);e.drawImage(this.canv,this.position.x-this.canv.width/2*t,this.position.y-this.canv.height/2,this.canv.width*t,this.canv.height*t)}}return m.onchange=()=>{m.matches?x():g()},g(),{destroy:x}},exports.fairyDustCursor=function(e){let t=e&&e.colors||[\"#D61C59\",\"#E7D84B\",\"#1B8798\"],i=e&&e.element,n=i||document.body,o=window.innerWidth,s=window.innerHeight;const h={x:o/2,y:o/2},c={x:o/2,y:o/2},l=[],r=[];let d,a,A;const u=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function m(){if(u.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;d=document.createElement(\"canvas\"),a=d.getContext(\"2d\"),d.style.top=\"0px\",d.style.left=\"0px\",d.style.pointerEvents=\"none\",i?(d.style.position=\"absolute\",n.appendChild(d),d.width=n.clientWidth,d.height=n.clientHeight):(d.style.position=\"fixed\",n.appendChild(d),d.width=o,d.height=s),a.font=\"21px serif\",a.textBaseline=\"middle\",a.textAlign=\"center\",t.forEach((e=>{let t=a.measureText(\"*\"),i=document.createElement(\"canvas\"),n=i.getContext(\"2d\");i.width=t.width,i.height=t.actualBoundingBoxAscent+t.actualBoundingBoxDescent,n.fillStyle=e,n.textAlign=\"center\",n.font=\"21px serif\",n.textBaseline=\"middle\",n.fillText(\"*\",i.width/2,t.actualBoundingBoxAscent),r.push(i)})),n.addEventListener(\"mousemove\",f),n.addEventListener(\"touchmove\",p,{passive:!0}),n.addEventListener(\"touchstart\",p,{passive:!0}),window.addEventListener(\"resize\",g),w()}function g(e){o=window.innerWidth,s=window.innerHeight,i?(d.width=n.clientWidth,d.height=n.clientHeight):(d.width=o,d.height=s)}function p(e){if(e.touches.length>0)for(let t=0;t<e.touches.length;t++)y(e.touches[t].clientX,e.touches[t].clientY,r[Math.floor(Math.random()*r.length)])}function f(e){window.requestAnimationFrame((()=>{if(i){const t=n.getBoundingClientRect();h.x=e.clientX-t.left,h.y=e.clientY-t.top}else h.x=e.clientX,h.y=e.clientY;Math.hypot(h.x-c.x,h.y-c.y)>1.5&&(y(h.x,h.y,r[Math.floor(Math.random()*t.length)]),c.x=h.x,c.y=h.y)}))}function y(e,t,i){l.push(new x(e,t,i))}function w(){!function(){if(0!=l.length){a.clearRect(0,0,o,s);for(let e=0;e<l.length;e++)l[e].update(a);for(let e=l.length-1;e>=0;e--)l[e].lifeSpan<0&&l.splice(e,1);0==l.length&&a.clearRect(0,0,o,s)}}(),A=requestAnimationFrame(w)}function v(){d.remove(),cancelAnimationFrame(A),n.removeEventListener(\"mousemove\",f),n.removeEventListener(\"touchmove\",p),n.removeEventListener(\"touchstart\",p),window.addEventListener(\"resize\",g)}function x(e,t,i){const n=Math.floor(30*Math.random()+60);this.initialLifeSpan=n,this.lifeSpan=n,this.velocity={x:(Math.random()<.5?-1:1)*(Math.random()/2),y:.7*Math.random()+.9},this.position={x:e,y:t},this.canv=i,this.update=function(e){this.position.x+=this.velocity.x,this.position.y+=this.velocity.y,this.lifeSpan--,this.velocity.y+=.02;const t=Math.max(this.lifeSpan/this.initialLifeSpan,0);e.drawImage(this.canv,this.position.x-this.canv.width/2*t,this.position.y-this.canv.height/2,this.canv.width*t,this.canv.height*t)}}return u.onchange=()=>{u.matches?v():m()},m(),{destroy:v}},exports.followingDotCursor=function(e){let t,i,n=e&&e.element,o=n||document.body,s=window.innerWidth,h=window.innerHeight,c={x:s/2,y:s/2},l=new function(e,t,i,n){this.position={x:e,y:t},this.width=i,this.lag=n,this.moveTowards=function(e,t,i){this.position.x+=(e-this.position.x)/this.lag,this.position.y+=(t-this.position.y)/this.lag,i.fillStyle=r,i.beginPath(),i.arc(this.position.x,this.position.y,this.width,0,2*Math.PI),i.fill(),i.closePath()}}(s/2,h/2,10,10),r=e?.color||\"#323232a6\";const d=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function a(){if(d.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",n?(t.style.position=\"absolute\",o.appendChild(t),t.width=o.clientWidth,t.height=o.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=s,t.height=h),o.addEventListener(\"mousemove\",u),window.addEventListener(\"resize\",A),m()}function A(e){s=window.innerWidth,h=window.innerHeight,n?(t.width=o.clientWidth,t.height=o.clientHeight):(t.width=s,t.height=h)}function u(e){if(n){const t=o.getBoundingClientRect();c.x=e.clientX-t.left,c.y=e.clientY-t.top}else c.x=e.clientX,c.y=e.clientY}function m(){i.clearRect(0,0,s,h),l.moveTowards(c.x,c.y,i),requestAnimationFrame(m)}function g(){t.remove(),cancelAnimationFrame(m),o.removeEventListener(\"mousemove\",u),window.addEventListener(\"resize\",A)}return d.onchange=()=>{d.matches?g():a()},a(),{destroy:g}},exports.ghostCursor=function(e){let t,i,n,o=e&&e.element,s=o||document.body,h=window.innerWidth,c=window.innerHeight,l={x:h/2,y:h/2},r=[],d=new Image;d.src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAATCAYAAACk9eypAAAAAXNSR0IArs4c6QAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAAEwAAAAAChpcNAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAABqElEQVQoFY3SPUvDQBgH8BREpRHExYiDgmLFl6WC+AYmWeyLg4i7buJX8DMpOujgyxGvUYeCgzhUQUSKKLUS0+ZyptXh8Z5Ti621ekPyJHl+uftfomhaf9Ei5JyxXKfynyEA6EYcLHpwyflT958GAQ7DTABNHd8EbtDbEH2BD5QEQmi2mM8P/Iq+A0SzszEg+3sPjDnDdVEtQKQbMUidHD3xVzf6A9UDEmEm+8h9KTqTVUjT+vB53aHrCbAPiceYq1dQI1Aqv4EhMll0jzv+Y0yiRgCnLRSYyDQHVoqUXe4uKL9l+L7GXC4vkMhE6eW/AOJs9k583ORDUyXMZ8F5SVHVVnllmPNKSFagAJ5DofaqGXw/gHBYg51dIldkmknY3tguv3jOtHR4+MqAzaraJXbEhqHhcQlwGSOi5pytVQHZLN5s0WNe8HPrLYlFsO20RPHkImxsbmHdLJFI76th7Z4SeuF53hTeFLvhRCJRCTKZKxgdnRDbW+iozFJbBMw14/ElwGYc0egMBMFzT21f5Rog33Z7dX02GBm7WV5ZfT5Nn5bE3zuCDe9UxdTpNvK+5AAAAABJRU5ErkJggg==\";const a=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function A(){if(a.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",o?(t.style.position=\"absolute\",s.appendChild(t),t.width=s.clientWidth,t.height=s.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=h,t.height=c),s.addEventListener(\"mousemove\",g),s.addEventListener(\"touchmove\",m,{passive:!0}),s.addEventListener(\"touchstart\",m,{passive:!0}),window.addEventListener(\"resize\",u),f()}function u(e){h=window.innerWidth,c=window.innerHeight,o?(t.width=s.clientWidth,t.height=s.clientHeight):(t.width=h,t.height=c)}function m(e){if(e.touches.length>0)for(let t=0;t<e.touches.length;t++)p(e.touches[t].clientX,e.touches[t].clientY,d)}function g(e){if(o){const t=s.getBoundingClientRect();l.x=e.clientX-t.left,l.y=e.clientY-t.top}else l.x=e.clientX,l.y=e.clientY;p(l.x,l.y,d)}function p(e,t,i){r.push(new w(e,t,i))}function f(){!function(){if(0!=r.length){i.clearRect(0,0,h,c);for(let e=0;e<r.length;e++)r[e].update(i);for(let e=r.length-1;e>=0;e--)r[e].lifeSpan<0&&r.splice(e,1);0==r.length&&i.clearRect(0,0,h,c)}}(),n=requestAnimationFrame(f)}function y(){t.remove(),cancelAnimationFrame(n),s.removeEventListener(\"mousemove\",g),s.removeEventListener(\"touchmove\",m),s.removeEventListener(\"touchstart\",m),window.addEventListener(\"resize\",u)}function w(e,t,i){this.initialLifeSpan=40,this.lifeSpan=40,this.position={x:e,y:t},this.image=i,this.update=function(e){this.lifeSpan--;const t=Math.max(this.lifeSpan/this.initialLifeSpan,0);e.globalAlpha=t,e.drawImage(this.image,this.position.x,this.position.y)}}return a.onchange=()=>{a.matches?y():A()},A(),{destroy:y}},exports.rainbowCursor=function(e){let t,i,n,o=e&&e.element,s=o||document.body,h=window.innerWidth,c=window.innerHeight,l={x:h/2,y:h/2},r=[];const d=e?.length||20,a=e?.colors||[\"#FE0000\",\"#FD8C00\",\"#FFE500\",\"#119F0B\",\"#0644B3\",\"#C22EDC\"],A=e?.size||3;let u=!1;const m=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function g(){if(m.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",o?(t.style.position=\"absolute\",s.appendChild(t),t.width=s.clientWidth,t.height=s.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=h,t.height=c),s.addEventListener(\"mousemove\",f),window.addEventListener(\"resize\",p),y()}function p(e){h=window.innerWidth,c=window.innerHeight,o?(t.width=s.clientWidth,t.height=s.clientHeight):(t.width=h,t.height=c)}function f(e){if(o){const t=s.getBoundingClientRect();l.x=e.clientX-t.left,l.y=e.clientY-t.top}else l.x=e.clientX,l.y=e.clientY;if(!1===u){u=!0;for(let e=0;e<d;e++)t=l.x,i=l.y,void 0,r.push(new v(t,i))}var t,i}function y(){!function(){i.clearRect(0,0,h,c),i.lineJoin=\"round\";let e=[],t=l.x,n=l.y;r.forEach((function(i,o,s){let h=s[o+1]||s[0];i.position.x=t,i.position.y=n,e.push({x:t,y:n}),t+=.4*(h.position.x-i.position.x),n+=.4*(h.position.y-i.position.y)})),a.forEach(((t,n)=>{i.beginPath(),i.strokeStyle=t,e.length&&i.moveTo(e[0].x,e[0].y+n*(A-1)),e.forEach(((e,t)=>{0!==t&&i.lineTo(e.x,e.y+n*A)})),i.lineWidth=A,i.lineCap=\"round\",i.stroke()}))}(),n=requestAnimationFrame(y)}function w(){t.remove(),cancelAnimationFrame(n),s.removeEventListener(\"mousemove\",f),window.addEventListener(\"resize\",p)}function v(e,t){this.position={x:e,y:t}}return m.onchange=()=>{m.matches?w():g()},g(),{destroy:w}},exports.snowflakeCursor=function(e){let t,i,n,o=e&&e.element,s=o||document.body,h=[\"❄️\"],c=window.innerWidth,l=window.innerHeight,r={x:c/2,y:c/2},d=[],a=[];const A=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function u(){if(A.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",o?(t.style.position=\"absolute\",s.appendChild(t),t.width=s.clientWidth,t.height=s.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=c,t.height=l),i.font=\"12px serif\",i.textBaseline=\"middle\",i.textAlign=\"center\",h.forEach((e=>{let t=i.measureText(e),n=document.createElement(\"canvas\"),o=n.getContext(\"2d\");n.width=t.width,n.height=2*t.actualBoundingBoxAscent,o.textAlign=\"center\",o.font=\"12px serif\",o.textBaseline=\"middle\",o.fillText(e,n.width/2,t.actualBoundingBoxAscent),a.push(n)})),s.addEventListener(\"mousemove\",p),s.addEventListener(\"touchmove\",g,{passive:!0}),s.addEventListener(\"touchstart\",g,{passive:!0}),window.addEventListener(\"resize\",m),y()}function m(e){c=window.innerWidth,l=window.innerHeight,o?(t.width=s.clientWidth,t.height=s.clientHeight):(t.width=c,t.height=l)}function g(e){if(e.touches.length>0)for(let t=0;t<e.touches.length;t++)f(e.touches[t].clientX,e.touches[t].clientY,a[Math.floor(Math.random()*a.length)])}function p(e){if(o){const t=s.getBoundingClientRect();r.x=e.clientX-t.left,r.y=e.clientY-t.top}else r.x=e.clientX,r.y=e.clientY;f(r.x,r.y,a[Math.floor(Math.random()*h.length)])}function f(e,t,i){d.push(new v(e,t,i))}function y(){!function(){if(0!=d.length){i.clearRect(0,0,c,l);for(let e=0;e<d.length;e++)d[e].update(i);for(let e=d.length-1;e>=0;e--)d[e].lifeSpan<0&&d.splice(e,1);0==d.length&&i.clearRect(0,0,c,l)}}(),n=requestAnimationFrame(y)}function w(){t.remove(),cancelAnimationFrame(n),s.removeEventListener(\"mousemove\",p),s.removeEventListener(\"touchmove\",g),s.removeEventListener(\"touchstart\",g),window.addEventListener(\"resize\",m)}function v(e,t,i){const n=Math.floor(60*Math.random()+80);this.initialLifeSpan=n,this.lifeSpan=n,this.velocity={x:(Math.random()<.5?-1:1)*(Math.random()/2),y:1+Math.random()},this.position={x:e,y:t},this.canv=i,this.update=function(e){this.position.x+=this.velocity.x,this.position.y+=this.velocity.y,this.lifeSpan--,this.velocity.x+=2*(Math.random()<.5?-1:1)/75,this.velocity.y-=Math.random()/300;const t=Math.max(this.lifeSpan/this.initialLifeSpan,0),i=.0174533*(2*this.lifeSpan);e.translate(this.position.x,this.position.y),e.rotate(i),e.drawImage(this.canv,-this.canv.width/2*t,-this.canv.height/2,this.canv.width*t,this.canv.height*t),e.rotate(-i),e.translate(-this.position.x,-this.position.y)}}return A.onchange=()=>{A.matches?w():u()},u(),{destroy:w}},exports.springyEmojiCursor=function(e){let t,i,n,o,s=e&&e.emoji||\"🤪\",h=e&&e.element,c=h||document.body,l=window.innerWidth,r=window.innerHeight,d={x:l/2,y:l/2},a=[];const A=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function u(){if(A.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",h?(t.style.position=\"absolute\",c.appendChild(t),t.width=c.clientWidth,t.height=c.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=l,t.height=r),i.font=\"16px serif\",i.textBaseline=\"middle\",i.textAlign=\"center\";let e=i.measureText(s),n=document.createElement(\"canvas\"),d=n.getContext(\"2d\");n.width=e.width,n.height=2*e.actualBoundingBoxAscent,d.textAlign=\"center\",d.font=\"16px serif\",d.textBaseline=\"middle\",d.fillText(s,n.width/2,e.actualBoundingBoxAscent),o=n;let u=0;for(u=0;u<7;u++)a[u]=new x(o);c.addEventListener(\"mousemove\",p),c.addEventListener(\"touchmove\",g,{passive:!0}),c.addEventListener(\"touchstart\",g,{passive:!0}),window.addEventListener(\"resize\",m),f()}function m(e){l=window.innerWidth,r=window.innerHeight,h?(t.width=c.clientWidth,t.height=c.clientHeight):(t.width=l,t.height=r)}function g(e){if(e.touches.length>0)if(h){const t=c.getBoundingClientRect();d.x=e.touches[0].clientX-t.left,d.y=e.touches[0].clientY-t.top}else d.x=e.touches[0].clientX,d.y=e.touches[0].clientY}function p(e){if(h){const t=c.getBoundingClientRect();d.x=e.clientX-t.left,d.y=e.clientY-t.top}else d.x=e.clientX,d.y=e.clientY}function f(){!function(){t.width=t.width,a[0].position.x=d.x,a[0].position.y=d.y;for(let e=1;e<7;e++){let n=new w(0,0);e>0&&v(e-1,e,n),e<6&&v(e+1,e,n);let o,s,h=new w(10*-a[e].velocity.x,10*-a[e].velocity.y),c=new w((n.X+h.X)/1,(n.Y+h.Y)/1+50);a[e].velocity.x+=.01*c.X,a[e].velocity.y+=.01*c.Y,Math.abs(a[e].velocity.x)<.1&&Math.abs(a[e].velocity.y)<.1&&Math.abs(c.X)<.1&&Math.abs(c.Y)<.1&&(a[e].velocity.x=0,a[e].velocity.y=0),a[e].position.x+=a[e].velocity.x,a[e].position.y+=a[e].velocity.y,o=t.clientHeight,s=t.clientWidth,a[e].position.y>=o-11-1&&(a[e].velocity.y>0&&(a[e].velocity.y=.7*-a[e].velocity.y),a[e].position.y=o-11-1),a[e].position.x>=s-11&&(a[e].velocity.x>0&&(a[e].velocity.x=.7*-a[e].velocity.x),a[e].position.x=s-11-1),a[e].position.x<0&&(a[e].velocity.x<0&&(a[e].velocity.x=.7*-a[e].velocity.x),a[e].position.x=0),a[e].draw(i)}}(),n=requestAnimationFrame(f)}function y(){t.remove(),cancelAnimationFrame(n),c.removeEventListener(\"mousemove\",p),c.removeEventListener(\"touchmove\",g),c.removeEventListener(\"touchstart\",g),window.addEventListener(\"resize\",m)}function w(e,t){this.X=e,this.Y=t}function v(e,t,i){let n=a[e].position.x-a[t].position.x,o=a[e].position.y-a[t].position.y,s=Math.sqrt(n*n+o*o);if(s>10){let e=10*(s-10);i.X+=n/s*e,i.Y+=o/s*e}}function x(e){this.position={x:d.x,y:d.y},this.velocity={x:0,y:0},this.canv=e,this.draw=function(e){e.drawImage(this.canv,this.position.x-this.canv.width/2,this.position.y-this.canv.height/2,this.canv.width,this.canv.height)}}return A.onchange=()=>{A.matches?y():u()},u(),{destroy:y}},exports.textFlag=function(e){let t,i,n,o=e||{},s=e&&e.element,h=s||document.body,c=o.text?\" \"+e.text:\" Your Text Here\",l=o.font||\"monospace\",r=o.textSize||12,d=r+\"px \"+l,a=o.gap||r+2,A=0,u=[],m=window.innerWidth,g=window.innerHeight,p={x:m/2,y:m/2};for(let e=0;e<c.length;e++)u[e]={letter:c.charAt(e),x:m/2,y:m/2};e?.size;const f=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function y(){if(f.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",s?(t.style.position=\"absolute\",h.appendChild(t),t.width=h.clientWidth,t.height=h.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=m,t.height=g),h.addEventListener(\"mousemove\",v),window.addEventListener(\"resize\",w),x()}function w(e){m=window.innerWidth,g=window.innerHeight,s?(t.width=h.clientWidth,t.height=h.clientHeight):(t.width=m,t.height=g)}function v(e){if(s){const t=h.getBoundingClientRect();p.x=e.clientX-t.left,p.y=e.clientY-t.top}else p.x=e.clientX,p.y=e.clientY}function x(){!function(){i.clearRect(0,0,m,g),A+=.15;let e=2*Math.cos(A),t=5*Math.sin(A);for(let e=u.length-1;e>0;e--)u[e].x=u[e-1].x+a,u[e].y=u[e-1].y,i.font=d,i.fillText(u[e].letter,u[e].x,u[e].y);let n=u[0].x,o=u[0].y;n+=(p.x-n)/5+e+2,o+=(p.y-o)/5+t,u[0].x=n,u[0].y=o}(),n=requestAnimationFrame(x)}function E(){t.remove(),cancelAnimationFrame(n),h.removeEventListener(\"mousemove\",v),window.addEventListener(\"resize\",w)}return f.onchange=()=>{f.matches?E():y()},y(),{destroy:E}},exports.trailingCursor=function(e){let t,i,n,o=e&&e.element,s=o||document.body,h=window.innerWidth,c=window.innerHeight,l={x:h/2,y:h/2},r=[];const d=e?.particles||15,a=e?.rate||.4,A=e?.baseImageSrc||\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAATCAYAAACk9eypAAAAAXNSR0IArs4c6QAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAAEwAAAAAChpcNAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAABqElEQVQoFY3SPUvDQBgH8BREpRHExYiDgmLFl6WC+AYmWeyLg4i7buJX8DMpOujgyxGvUYeCgzhUQUSKKLUS0+ZyptXh8Z5Ti621ekPyJHl+uftfomhaf9Ei5JyxXKfynyEA6EYcLHpwyflT958GAQ7DTABNHd8EbtDbEH2BD5QEQmi2mM8P/Iq+A0SzszEg+3sPjDnDdVEtQKQbMUidHD3xVzf6A9UDEmEm+8h9KTqTVUjT+vB53aHrCbAPiceYq1dQI1Aqv4EhMll0jzv+Y0yiRgCnLRSYyDQHVoqUXe4uKL9l+L7GXC4vkMhE6eW/AOJs9k583ORDUyXMZ8F5SVHVVnllmPNKSFagAJ5DofaqGXw/gHBYg51dIldkmknY3tguv3jOtHR4+MqAzaraJXbEhqHhcQlwGSOi5pytVQHZLN5s0WNe8HPrLYlFsO20RPHkImxsbmHdLJFI76th7Z4SeuF53hTeFLvhRCJRCTKZKxgdnRDbW+iozFJbBMw14/ElwGYc0egMBMFzT21f5Rog33Z7dX02GBm7WV5ZfT5Nn5bE3zuCDe9UxdTpNvK+5AAAAABJRU5ErkJggg==\";let u=!1,m=new Image;m.src=A;const g=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function p(){if(g.matches)return console.log(\"This browser has prefers reduced motion turned on, so the cursor did not init\"),!1;t=document.createElement(\"canvas\"),i=t.getContext(\"2d\"),t.style.top=\"0px\",t.style.left=\"0px\",t.style.pointerEvents=\"none\",o?(t.style.position=\"absolute\",s.appendChild(t),t.width=s.clientWidth,t.height=s.clientHeight):(t.style.position=\"fixed\",document.body.appendChild(t),t.width=h,t.height=c),s.addEventListener(\"mousemove\",y),window.addEventListener(\"resize\",f),w()}function f(e){h=window.innerWidth,c=window.innerHeight,o?(t.width=s.clientWidth,t.height=s.clientHeight):(t.width=h,t.height=c)}function y(e){if(o){const t=s.getBoundingClientRect();l.x=e.clientX-t.left,l.y=e.clientY-t.top}else l.x=e.clientX,l.y=e.clientY;if(!1===u){u=!0;for(let e=0;e<d;e++)t=l.x,i=l.y,n=m,r.push(new x(t,i,n))}var t,i,n}function w(){!function(){i.clearRect(0,0,h,c);let e=l.x,t=l.y;r.forEach((function(n,o,s){let h=s[o+1]||s[0];n.position.x=e,n.position.y=t,n.move(i),e+=(h.position.x-n.position.x)*a,t+=(h.position.y-n.position.y)*a}))}(),n=requestAnimationFrame(w)}function v(){t.remove(),cancelAnimationFrame(n),s.removeEventListener(\"mousemove\",y),window.addEventListener(\"resize\",f)}function x(e,t,i){this.position={x:e,y:t},this.image=i,this.move=function(e){e.drawImage(this.image,this.position.x,this.position.y)}}return g.onchange=()=>{g.matches?v():p()},p(),{destroy:v}};\n\n\n//# sourceURL=webpack://mybb-april-fools/./node_modules/cursor-effects/dist/cjs.cjs?");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/ var __webpack_exports__ = __webpack_require__("./src/main.ts");
/******/
/******/ })()
;