MediaWiki:Common.js: Difference between revisions

From VRChat Wiki
m fix: isWhitelistedPage check
Tag: Reverted
fix: shorter edit summaries (https://github.com/vrchat-community/wiki-scripts/commit/e7df78534acdd90ece722dd6f433a86fa3f4971d); test: show commit messages in ci (https://github.com/vrchat-community/wiki-scripts/commit/07f619785b300a612cea03aa23210916324b8e5f)
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
(function() {
/** @license
 
* This file is auto-generated. Do not edit directly.
 
* @see https://github.com/vrchat-community/wiki-scripts/blob/main/src/index.ts
//#region src/whitelist.ts
*/
function isWhitelistedPage(pages) {
(() => {
const [pageName, pageLanguage] = mw.config.get("wgPageName").split("/");
var e = Object.defineProperty;
if (!pageName || !pages.includes(pageName)) return false;
var __esmMin = (e, t) => () => (e && (t = e(e = 0)), t);
if (pageLanguage && mw.config.get("wgPageContentLanguage") != pageLanguage) return false;
var __export = (t, n) => {
return true;
let r = {};
for (var i in t) e(r, i, {
get: t[i],
enumerable: !0
});
n && e(r, Symbol.toStringTag, { value: "Module" });
return r;
};
function isPage(e) {
let [t, n] = mw.config.get("wgPageName").split("/");
if (!t || !e.includes(t)) return !1;
if (n && mw.config.get("wgPageContentLanguage") !== n) return !1;
return !0;
}
document.querySelectorAll(".spoiler").forEach((e) => {
let t = e.querySelector(".spoiler-overlay");
t == null || t.addEventListener("click", () => {
e.dataset.open = "";
});
});
let __vitePreload = function(e, t, n) {
let r = Promise.resolve();
function handlePreloadError(e) {
let t = new Event("vite:preloadError", { cancelable: !0 });
t.payload = e;
window.dispatchEvent(t);
if (!t.defaultPrevented) throw e;
}
return r.then((t) => {
for (let e of t || []) {
if (e.status !== "rejected") continue;
handlePreloadError(e.reason);
}
return e().catch(handlePreloadError);
});
};
function getArticleFromElement(e) {
let { articleId: t, articleTitle: n, articleContent: r } = e.dataset;
if (!t || !n || !r) return null;
return {
id: t,
title: n,
content: atob(r)
};
}
}
 
var ArticleDialog;
//#endregion
var t = __esmMin((() => {
//#region src/templates/infopush.ts
ArticleDialog = class extends OO.ui.ProcessDialog {
(() => {
constructor(e) {
if (!isWhitelistedPage(["Template:MainPageInfopush", "Main_Page"])) return;
super({
mw.loader.using(["oojs-ui-core", "oojs-ui-windows"]).done(() => {
size: "large",
var windowManager = new OO.ui.WindowManager();
data: { title: e.title }
$(document.body).append(windowManager.$element);
});
function showArticle(element) {
this.article = e;
var { articleTitle, articleContent } = element.dataset;
}
function ArticleDialog(config) {
initialize() {
ArticleDialog.super.call(this, config);
super.initialize();
this.config = config || {};
let e = new OO.ui.PanelLayout({
expanded: !1,
padded: !0,
scrollable: !0
});
e.$element.append(this.article.content);
this.$body.append(e.$element);
return this;
}
getActionProcess(e) {
switch (e) {
case "close": return new OO.ui.Process(() => {
this.close({ action: "close" });
});
}
}
OO.inheritClass(ArticleDialog, OO.ui.ProcessDialog);
return super.getActionProcess(e);
ArticleDialog.static.name = "ArticleDialog";
ArticleDialog.static.title = articleTitle;
ArticleDialog.static.size = "large";
ArticleDialog.static.actions = [{
action: "close",
flags: "safe",
icon: "close",
label: "Close"
}];
ArticleDialog.prototype.initialize = function() {
ArticleDialog.super.prototype.initialize.apply(this, arguments);
this.content = new OO.ui.PanelLayout({
$content: atob(articleContent),
expanded: false,
padded: true,
scrollable: true
});
this.$body.append(this.content.$element);
};
ArticleDialog.prototype.getActionProcess = function(action) {
if (action === "close") return new OO.ui.Process(function() {
this.close({ action: "close" });
}, this);
return ArticleDialog.super.prototype.getActionProcess.call(this, action);
};
var dialog = new ArticleDialog();
windowManager.addWindows([dialog]);
windowManager.openWindow(dialog);
}
}
const infopushes = document.querySelectorAll(".tpl-infopush");
};
for (const infopush of infopushes) {
ArticleDialog.static.name = ArticleDialog.name;
const content = infopush.querySelector(".tpl-infopush-content");
ArticleDialog.static.actions = [{
const items = content.querySelectorAll(".tpl-infopush-item");
action: "close",
const total = items.length;
flags: "safe",
for (const item of items) {
icon: "close",
const { articleId } = item.dataset;
label: "Close"
if (!articleId || !!item.querySelector("a")) continue;
}];
item.style.cursor = "pointer";
}));
item.addEventListener("click", () => showArticle(item));
var n = __esmMin((() => {}));
function asyncGeneratorStep(e, t, n, r, i, a, o) {
try {
var s = e[a](o), c = s.value;
} catch (e) {
n(e);
return;
}
s.done ? t(c) : Promise.resolve(c).then(r, i);
}
function _asyncToGenerator(e) {
return function() {
var t = this, n = arguments;
return new Promise(function(r, i) {
var a = e.apply(t, n);
function _next(e) {
asyncGeneratorStep(a, r, i, _next, _throw, "next", e);
}
}
const navigation = infopush.querySelector(".tpl-infopush-navigation");
function _throw(e) {
let currentOffset = 0;
asyncGeneratorStep(a, r, i, _next, _throw, "throw", e);
function showSlide(index) {
currentOffset = (index + total) % total;
content.style.transform = `translateX(-${currentOffset * 100}%)`;
}
}
const autoAdvanceEvery = 5e3;
_next(void 0);
let autoAdvanceInterval;
});
function resetAutoAdvance() {
};
if (autoAdvanceInterval) clearInterval(autoAdvanceInterval);
}
autoAdvanceInterval = setInterval(function() {
var r = __esmMin((() => {}));
showSlide(currentOffset + 1);
var i = /* @__PURE__ */ __export({}, 1);
}, autoAdvanceEvery);
var a, o;
}
var s = __esmMin((() => {
navigation.querySelector(".tpl-infopush-navigation-previous").addEventListener("click", () => {
t();
showSlide(currentOffset - 1);
n();
resetAutoAdvance();
r();
});
a = document.querySelectorAll(".tpl-infopush");
navigation.querySelector(".tpl-infopush-navigation-next").addEventListener("click", () => {
o = new OO.ui.WindowManager();
showSlide(currentOffset + 1);
$(document.body).append(o.$element);
resetAutoAdvance();
for (let e of a) {
});
let t = e.querySelector(".tpl-infopush-content");
let n = t.querySelectorAll(".tpl-infopush-item");
let r = n.length;
for (let e of n) {
if (e.querySelector("a")) continue;
let t = getArticleFromElement(e);
if (!t) continue;
e.style.cursor = "pointer";
e.addEventListener("click", _asyncToGenerator(function* () {
if (!(yield o.getWindow(t.id).then(() => !0).catch(() => !1))) {
let e = new ArticleDialog(t);
o.addWindows({ [t.id]: e });
}
yield o.openWindow(t.id).opening;
}));
}
let i = e.querySelector(".tpl-infopush-navigation");
let a = 0;
function showSlide(e) {
a = (e + r) % r;
t.style.transform = `translateX(-${a * 100}%)`;
}
let s;
function resetAutoAdvance() {
s && clearInterval(s);
s = setInterval(() => {
showSlide(a + 1);
}, 5e3);
}
i.querySelector(".tpl-infopush-navigation-previous").addEventListener("click", () => {
showSlide(a - 1);
resetAutoAdvance();
});
i.querySelector(".tpl-infopush-navigation-next").addEventListener("click", () => {
showSlide(a + 1);
resetAutoAdvance();
resetAutoAdvance();
showSlide(0);
});
}
resetAutoAdvance();
});
showSlide(0);
})();
 
//#endregion
//#region src/templates/spoiler.ts
[...document.querySelectorAll(".spoiler")].map((container) => {
const overlay = container.querySelector(".spoiler-overlay");
overlay === null || overlay === void 0 || overlay.addEventListener("click", () => {
container.dataset.open = "";
});
});
 
//#endregion
//#region \0@oxc-project+runtime@0.102.0/helpers/objectWithoutPropertiesLoose.js
function _objectWithoutPropertiesLoose(r, e) {
if (null == r) return {};
var t = {};
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
if (e.includes(n)) continue;
t[n] = r[n];
}
}
return t;
}));
isPage(["Template:MainPageInfopush", "Main_Page"]) && mw.loader.using(["oojs-ui-core", "oojs-ui-windows"]).then(() => __vitePreload(() => Promise.resolve().then(() => (s(), i)), void 0, {}.url));
var c = document.createElement("script");
c.setAttribute("defer", "defer");
c.setAttribute("data-domain", "wiki.vrchat.com");
c.setAttribute("event-page-name", mw.config.get("wgTitle"));
c.setAttribute("event-page-language", mw.config.get("wgPageContentLanguage"));
var l = mw.config.get("wgFormattedNamespaces");
c.setAttribute("event-page-namespace", l[mw.config.get("wgNamespaceNumber")]);
c.setAttribute("event-theme", mw.config.get("skin"));
c.setAttribute("event-action", mw.config.get("wgAction"));
c.setAttribute("event-is-logged-in", String(mw.config.get("wgUserName") !== null));
var u = mw.config.get("wgUserGroups");
var d = u.includes("community-mod") || u.includes("moderator") || u.includes("sysop");
c.setAttribute("event-is-maintainer", String(d));
c.src = "https://plausible.io/js/script.pageview-props.outbound-links.js";
document.head.appendChild(c);
var f = "p-userpagetools";
function lowercaseFirst(e) {
return e.charAt(0).toLowerCase() + e.slice(1);
}
}
 
if (mw.util.isPortletVisible(f)) {
//#endregion
let e = lowercaseFirst(mw.config.get("wgPageName").split(":")[1]);
//#region \0@oxc-project+runtime@0.102.0/helpers/objectWithoutProperties.js
mw.util.addPortletLink(f, `https://vrchat.com/home/user/${e}`, "VRChat profile");
function _objectWithoutProperties(e, t) {
if (null == e) return {};
var o, r, i = _objectWithoutPropertiesLoose(e, t);
if (Object.getOwnPropertySymbols) {
var s = Object.getOwnPropertySymbols(e);
for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
}
return i;
}
}
 
console.log("Wiki scripts loaded.");
//#endregion
//#region src/templates/youtube.ts
const _excluded = ["videoId"];
[...document.querySelectorAll(".youtube")].map((element) => {
const _element$dataset = element.dataset, { videoId } = _element$dataset, attributes = _objectWithoutProperties(_element$dataset, _excluded);
const iframe = document.createElement("iframe");
iframe.setAttribute("width", String(560));
iframe.setAttribute("height", String(315));
iframe.setAttribute("frameborder", String(0));
iframe.setAttribute("allow", [
"accelerometer",
"autoplay",
"clipboard-write",
"encrypted-media",
"gyroscope",
"picture-in-picture",
"web-share"
].join("; "));
iframe.setAttribute("referrerpolicy", "strict-origin-when-cross-origin");
iframe.setAttribute("allowfullscreen", String(true));
Object.entries(attributes).map(([key, value]) => value && iframe.setAttribute(key, value));
iframe.setAttribute("style", element.getAttribute("style") || "");
iframe.src = `https://www.youtube-nocookie.com/embed/${videoId}?rel=0`;
element.replaceWith(iframe);
});
 
//#endregion
//#region src/plausible.ts
var script = document.createElement("script");
script.setAttribute("defer", "defer");
script.setAttribute("data-domain", "wiki.vrchat.com");
script.setAttribute("event-page-name", mw.config.get("wgTitle"));
script.setAttribute("event-page-language", mw.config.get("wgPageContentLanguage"));
const namespaces = mw.config.get("wgFormattedNamespaces");
script.setAttribute("event-page-namespace", namespaces[mw.config.get("wgNamespaceNumber")]);
script.setAttribute("event-theme", mw.config.get("skin"));
script.setAttribute("event-action", mw.config.get("wgAction"));
script.setAttribute("event-is-logged-in", String(mw.config.get("wgUserName") !== null));
const wgUserGroups = mw.config.get("wgUserGroups");
const maintainer = wgUserGroups.includes("community-mod") || wgUserGroups.includes("moderator") || wgUserGroups.includes("sysop");
script.setAttribute("event-is-maintainer", String(maintainer));
script.src = "https://plausible.io/js/script.pageview-props.outbound-links.js";
document.head.appendChild(script);
 
//#endregion
})();
})();

Latest revision as of 04:35, 18 May 2026

/** @license
* This file is auto-generated. Do not edit directly.
* @see https://github.com/vrchat-community/wiki-scripts/blob/main/src/index.ts
*/
(() => {
	var e = Object.defineProperty;
	var __esmMin = (e, t) => () => (e && (t = e(e = 0)), t);
	var __export = (t, n) => {
		let r = {};
		for (var i in t) e(r, i, {
			get: t[i],
			enumerable: !0
		});
		n && e(r, Symbol.toStringTag, { value: "Module" });
		return r;
	};
	function isPage(e) {
		let [t, n] = mw.config.get("wgPageName").split("/");
		if (!t || !e.includes(t)) return !1;
		if (n && mw.config.get("wgPageContentLanguage") !== n) return !1;
		return !0;
	}
	document.querySelectorAll(".spoiler").forEach((e) => {
		let t = e.querySelector(".spoiler-overlay");
		t == null || t.addEventListener("click", () => {
			e.dataset.open = "";
		});
	});
	let __vitePreload = function(e, t, n) {
		let r = Promise.resolve();
		function handlePreloadError(e) {
			let t = new Event("vite:preloadError", { cancelable: !0 });
			t.payload = e;
			window.dispatchEvent(t);
			if (!t.defaultPrevented) throw e;
		}
		return r.then((t) => {
			for (let e of t || []) {
				if (e.status !== "rejected") continue;
				handlePreloadError(e.reason);
			}
			return e().catch(handlePreloadError);
		});
	};
	function getArticleFromElement(e) {
		let { articleId: t, articleTitle: n, articleContent: r } = e.dataset;
		if (!t || !n || !r) return null;
		return {
			id: t,
			title: n,
			content: atob(r)
		};
	}
	var ArticleDialog;
	var t = __esmMin((() => {
		ArticleDialog = class extends OO.ui.ProcessDialog {
			constructor(e) {
				super({
					size: "large",
					data: { title: e.title }
				});
				this.article = e;
			}
			initialize() {
				super.initialize();
				let e = new OO.ui.PanelLayout({
					expanded: !1,
					padded: !0,
					scrollable: !0
				});
				e.$element.append(this.article.content);
				this.$body.append(e.$element);
				return this;
			}
			getActionProcess(e) {
				switch (e) {
					case "close": return new OO.ui.Process(() => {
						this.close({ action: "close" });
					});
				}
				return super.getActionProcess(e);
			}
		};
		ArticleDialog.static.name = ArticleDialog.name;
		ArticleDialog.static.actions = [{
			action: "close",
			flags: "safe",
			icon: "close",
			label: "Close"
		}];
	}));
	var n = __esmMin((() => {}));
	function asyncGeneratorStep(e, t, n, r, i, a, o) {
		try {
			var s = e[a](o), c = s.value;
		} catch (e) {
			n(e);
			return;
		}
		s.done ? t(c) : Promise.resolve(c).then(r, i);
	}
	function _asyncToGenerator(e) {
		return function() {
			var t = this, n = arguments;
			return new Promise(function(r, i) {
				var a = e.apply(t, n);
				function _next(e) {
					asyncGeneratorStep(a, r, i, _next, _throw, "next", e);
				}
				function _throw(e) {
					asyncGeneratorStep(a, r, i, _next, _throw, "throw", e);
				}
				_next(void 0);
			});
		};
	}
	var r = __esmMin((() => {}));
	var i = /* @__PURE__ */ __export({}, 1);
	var a, o;
	var s = __esmMin((() => {
		t();
		n();
		r();
		a = document.querySelectorAll(".tpl-infopush");
		o = new OO.ui.WindowManager();
		$(document.body).append(o.$element);
		for (let e of a) {
			let t = e.querySelector(".tpl-infopush-content");
			let n = t.querySelectorAll(".tpl-infopush-item");
			let r = n.length;
			for (let e of n) {
				if (e.querySelector("a")) continue;
				let t = getArticleFromElement(e);
				if (!t) continue;
				e.style.cursor = "pointer";
				e.addEventListener("click", _asyncToGenerator(function* () {
					if (!(yield o.getWindow(t.id).then(() => !0).catch(() => !1))) {
						let e = new ArticleDialog(t);
						o.addWindows({ [t.id]: e });
					}
					yield o.openWindow(t.id).opening;
				}));
			}
			let i = e.querySelector(".tpl-infopush-navigation");
			let a = 0;
			function showSlide(e) {
				a = (e + r) % r;
				t.style.transform = `translateX(-${a * 100}%)`;
			}
			let s;
			function resetAutoAdvance() {
				s && clearInterval(s);
				s = setInterval(() => {
					showSlide(a + 1);
				}, 5e3);
			}
			i.querySelector(".tpl-infopush-navigation-previous").addEventListener("click", () => {
				showSlide(a - 1);
				resetAutoAdvance();
			});
			i.querySelector(".tpl-infopush-navigation-next").addEventListener("click", () => {
				showSlide(a + 1);
				resetAutoAdvance();
			});
			resetAutoAdvance();
			showSlide(0);
		}
	}));
	isPage(["Template:MainPageInfopush", "Main_Page"]) && mw.loader.using(["oojs-ui-core", "oojs-ui-windows"]).then(() => __vitePreload(() => Promise.resolve().then(() => (s(), i)), void 0, {}.url));
	var c = document.createElement("script");
	c.setAttribute("defer", "defer");
	c.setAttribute("data-domain", "wiki.vrchat.com");
	c.setAttribute("event-page-name", mw.config.get("wgTitle"));
	c.setAttribute("event-page-language", mw.config.get("wgPageContentLanguage"));
	var l = mw.config.get("wgFormattedNamespaces");
	c.setAttribute("event-page-namespace", l[mw.config.get("wgNamespaceNumber")]);
	c.setAttribute("event-theme", mw.config.get("skin"));
	c.setAttribute("event-action", mw.config.get("wgAction"));
	c.setAttribute("event-is-logged-in", String(mw.config.get("wgUserName") !== null));
	var u = mw.config.get("wgUserGroups");
	var d = u.includes("community-mod") || u.includes("moderator") || u.includes("sysop");
	c.setAttribute("event-is-maintainer", String(d));
	c.src = "https://plausible.io/js/script.pageview-props.outbound-links.js";
	document.head.appendChild(c);
	var f = "p-userpagetools";
	function lowercaseFirst(e) {
		return e.charAt(0).toLowerCase() + e.slice(1);
	}
	if (mw.util.isPortletVisible(f)) {
		let e = lowercaseFirst(mw.config.get("wgPageName").split(":")[1]);
		mw.util.addPortletLink(f, `https://vrchat.com/home/user/${e}`, "VRChat profile");
	}
	console.log("Wiki scripts loaded.");
})();