MediaWiki:Gadget-EditConflict.js:修订间差异

MediaWiki系统消息页面
(Git 版本 d13a10b: 代码仓库同步更新)
 
(Git commit 315405d: feat: sync upstream with Qiuwen)
 
(未显示同一用户的4个中间版本)
第1行: 第1行:
/**
/**
* SPDX-License-Identifier: CC-BY-SA-4.0
* SPDX-License-Identifier: GPL-3.0-or-later
* _addText: '{{Gadget Header|license=CC-BY-SA-4.0}}'
* _addText: '{{Gadget Header|license=GPL-3.0-or-later}}'
*
*
* @source {@link https://github.com/TopRealm/YsArchives-Gadgets/tree/master/src/EditConflict}
* @source <meta.wikimedia.org/wiki/User:Bluedeck/source/edit-conflict.js>
* @author 安忆 <i@anyi.in>
* @license GPL-3.0-or-later {@link https://youshou.wiki/wiki/H:GPLV3}
*/
*/
/**
* +------------------------------------------------------------+
* | === WARNING: GLOBAL GADGET FILE === |
* +------------------------------------------------------------+
* | All changes should be made in the repository, |
* | otherwise they will be lost. |
* +------------------------------------------------------------+
* | Changes to this page may affect many users. |
* | Please discuss changes by opening an issue before editing. |
* +------------------------------------------------------------+
*/
/* <nowiki> */

(() => {

"use strict";
"use strict";


// dist/EditConflict/EditConflict.js
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function asyncGeneratorStep(n, t, e, r, o, a, c) {
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
try {
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
var i = n[a](c), u = i.value;
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
} catch (n2) {
(function (ele, txt, time, condition) {
return void e(n2);
if (!condition) {
return;
}
}
i.done ? t(u) : Promise.resolve(u).then(r, o);
ele.innerHTML = "";
}
(function (ele, txt, time) {
function _asyncToGenerator(n) {
txt = txt.split("");
return function() {
var len = txt.length,
rate = time / len;
var t = this, e = arguments;
for (var i = 0; i < len; i++) {
return new Promise(function(r, o) {
setTimeout(function () {
var a = n.apply(t, e);
function _next(n2) {
ele.innerHTML += txt.shift();
asyncGeneratorStep(a, r, o, _next, _throw, "next", n2);
}, i * rate);
}
function _throw(n2) {
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2);
}
_next(void 0);
});
};
}
function _createForOfIteratorHelper(r, e) {
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (!t) {
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
t && (r = t);
var n = 0, F = function() {
};
return { s: F, n: function() {
return n >= r.length ? { done: true } : { done: false, value: r[n++] };
}, e: function(r2) {
throw r2;
}, f: F };
}
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
})(ele, txt, time);
})(document.getElementById("edit_conflict"), "2021.0.2", 400, document.getElementById("8c23b4144bd58c689e192c6ab912a3b75c76f6849977518b8bedefd5e347d67f"));
(function (w) {
// if not edit mode, abort
if (!/[&?]action=edit/.test(w.location.search)) {
return;
}
}
var o, a = true, u = false;
if ((mw.config.values.wgCurRevisionId || w.wgCurRevisionId) === 0) {
return { s: function() {
// the page does not exist, abort actions.
return;
t = t.call(r);
}, n: function() {
var r2 = t.next();
return a = r2.done, r2;
}, e: function(r2) {
u = true, o = r2;
}, f: function() {
try {
a || null == t.return || t.return();
} finally {
if (u) throw o;
}
} };
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
}
}
}
var lang_code = "en_us";
function _arrayLikeToArray(r, a) {
var done = false;
(null == a || a > r.length) && (a = r.length);
var interval_id = null;
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
var current_revid = mw.config.values.wgCurRevisionId || w.wgCurRevisionId;
return n;
var lang = {
}
notice: {
var __create = Object.create;
en_us: '<div>This page has been changed by someone else after you started editing. Copy your changes, refresh and start over to avoid edit conflicts. </div><div style="margin-top: 0.4em;"><button>OK</button>&nbsp;<button onclick="window.location.reload()">Refresh</button></div>',
var __defProp = Object.defineProperty;
zh_cn: '<div>本页面已被他人更改。请复制您的编辑,然后刷新页面,重新开始编辑,以避免编辑冲突。</div><div style="margin-top: 0.4em;"><button>OK</button>&nbsp;<button onclick="window.location.reload()">刷新</button></div>',
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
zh_hk: '<div>本頁已被他人更改。請將您的編輯複製,並重新載入頁面,然後繼續編輯,來避免編輯衝突。</div><div style="margin-top: 0.4em;"><button>OK</button>&nbsp;<button onclick="window.location.reload()">重新載入</button></div>'
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
var _iterator = _createForOfIteratorHelper(__getOwnPropNames(from)), _step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
let key = _step.value;
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target,
mod
));
//! src/EditConflict/modules/core.ts
var import_ext_gadget4 = require("ext.gadget.Util");
//! src/EditConflict/modules/noticeMessage.tsx
var import_ext_gadget2 = __toESM(require("ext.gadget.React"), 1);
//! src/EditConflict/modules/i18n.ts
var import_ext_gadget = require("ext.gadget.i18n");
var getI18nMessages = () => {
return {
Notice: (0, import_ext_gadget.localize)({
en: "This page has been changed by someone else after you started editing. Copy your changes, refresh and start over to avoid edit conflicts.",
ja: "このページは他の人によって変更されています。編集衝突を避けるため、編集内容をコピーしてページを再読み込みし、編集を続けてください。",
"zh-hans": "此页面已被他人更改。请复制您的编辑,然后刷新页面,重新开始编辑,以避免编辑冲突。",
"zh-hant": "本頁已被他人更改。請將您的編輯複製,並重新載入頁面,然後繼續編輯,來避免編輯衝突。"
}),
Refresh: (0, import_ext_gadget.localize)({
en: "Refresh",
ja: "再読み込み",
"zh-hans": "刷新页面",
"zh-hant": "重新載入"
})
};
};
};

var i18nMessages = getI18nMessages();
// libs
var getMessage = (key) => {
var ding = window.DingExposedInterface;
return i18nMessages[key] || key;
var acc_lang = function () {
};
var PREVENT_INFINITE_LOOP = 1000;
//! src/EditConflict/modules/noticeMessage.tsx
var accepted_languages_dict = {
var locationReload = () => {
// lang_code
location.reload();
en: "en_us",
return false;
enau: "en_au",
};
enca: "en_ca",
var NoticeMessage = () => /* @__PURE__ */ import_ext_gadget2.default.createElement("span", null, getMessage("Notice"), /* @__PURE__ */ import_ext_gadget2.default.createElement("a", {
enhk: "en_hk",
onClick: locationReload
ennz: "en_nz",
}, getMessage("Refresh")));
enuk: "en_uk",
//! src/EditConflict/options.json
enus: "en_us",
var version = "2.0";
zh: "zh_cn",
//! src/EditConflict/modules/api.ts
zhcn: "zh_cn",
var import_ext_gadget3 = require("ext.gadget.Util");
zhhk: "zh_hk",
var api = (0, import_ext_gadget3.initMwApi)("EditConflict/".concat(version));
zhmo: "zh_mo",
//! src/EditConflict/modules/util/queryPageInfo.ts
zhtw: "zh_tw",
var parameters = {
zhsg: "zh_sg",
action: "query",
// country code
au: "en_au",
format: "json",
ca: "en_ca",
formatversion: "2",
ch: "de_ch",
prop: "revisions",
cn: "zh_cn",
rvprop: "ids"
};
hk: "zh_hk",
var queryPageInfo = /* @__PURE__ */ function() {
nz: "en_us",
var _ref = _asyncToGenerator(function* (title) {
tw: "zh_tw",
sg: "zh_cn",
try {
uk: "en_uk",
return yield api.post({
us: "en_us",
...parameters,
// non-standard raw lang code
titles: title
"zh-hans": "zh_cn",
});
"zh-hant": "zh_hk"
} catch (error) {
console.error("[EditConflict] Ajax error:", error);
};
return {};
var Language_proximity_group = /*#__PURE__*/function () {
}
function Language_proximity_group(desc) {
});
_classCallCheck(this, Language_proximity_group);
return function queryPageInfo2(_x) {
this.parent = null;
this.desc = desc;
return _ref.apply(this, arguments);
};
this.sub_groups = [];
}();
this.languages = [];
//! src/EditConflict/modules/getCurrentRevisionId.ts
}
var getCurrentRevisionId = /* @__PURE__ */ function() {
_createClass(Language_proximity_group, [{
var _ref2 = _asyncToGenerator(function* (title) {
key: "all",
const pageInfo = yield queryPageInfo(title);
value: function all() {
const {
var all_codes = [];
query
for (var i = 0; i < this.languages.length; i++) {
} = pageInfo;
all_codes = all_codes.concat(this.languages[i]);
}
if (!query) {
return 0;
for (var _i2 = 0; _i2 < this.sub_groups.length; _i2++) {
}
all_codes = all_codes.concat(this.sub_groups[_i2].all());
}
const [page] = query.pages;
if (!page || page.missing) {
return all_codes;
return 0;
}
return page.revisions[0].revid;
});
return function getCurrentRevisionId2(_x2) {
return _ref2.apply(this, arguments);
};
}();
//! src/EditConflict/modules/core.ts
var import_ext_gadget5 = require("ext.gadget.Toastify");
var editConflict = /* @__PURE__ */ function() {
var _ref3 = _asyncToGenerator(function* () {
let isContinue = true;
void (0, import_ext_gadget4.getBody)().then(($body) => {
$body.find('input[name="wpSave"]').on("click", () => {
isContinue = false;
});
});
const checkEditConflict = /* @__PURE__ */ function() {
var _ref4 = _asyncToGenerator(function* () {
const {
wgCurRevisionId: wgCurRevisionId2,
wgPageName
} = mw.config.get();
const pageRevisionId = yield getCurrentRevisionId(wgPageName);
if (!pageRevisionId) {
isContinue = false;
} else if (pageRevisionId > wgCurRevisionId2) {
isContinue = false;
(0, import_ext_gadget5.toastify)({
node: NoticeMessage(),
close: true,
duration: -1
}, "info");
}
}
}, {
});
return function checkEditConflict2() {
key: "add_one",
value: function add_one(item) {
return _ref4.apply(this, arguments);
};
if (typeof item === "string" && this.languages.indexOf(item) === -1) {
this.languages.push(item);
} else if (_typeof(item) === "object" && item !== null && item.constructor === Language_proximity_group && this.sub_groups.indexOf(item) === -1) {
item.parent = this, this.sub_groups.push(item);
} else {
throw new TypeError("cannot add this item ".concat(_typeof(item), ". add only language code and proximity groups."));
}
return this;
}
}, {
key: "add",
value: function add() {
for (var i = 0; i < arguments.length; i++) {
this.add_one(arguments[i]);
}
return this;
}

// return the group in which the language code resides.
}, {
key: "group_of",
value: function group_of(code_or_desc) {
if (this.languages.indexOf(code_or_desc) !== -1) {
// desired language is in this group
return this;
} else if (this.all().indexOf(code_or_desc) !== -1) {
// desired language is not in this group, but in a sub group of this group
for (var i = 0; i < this.sub_groups.length; i++) {
var search_result = this.sub_groups[i].group_of(code_or_desc);
if (search_result !== null) {
return search_result;
}
}
// search has finished but all subgroups returned null, which should not happen since the desired language is alleged to be in one of these sub groups, as per the opening condition of this if-else ladder.
console.log("reporting a [peculiarity], see line 90 of dependencies/accepted_languages.js. this line is never intended to be executed.");
return null;
} else if (this.desc === code_or_desc) {
// this is the desired group
return this;
}

// desired language is not in this group
return null;
}
}]);
return Language_proximity_group;
}();
}();
while (true) {
var group_north_am_eng = new Language_proximity_group("en_north_american").add("en_us", "en_ca");
if (!isContinue) {
var group_australian_eng = new Language_proximity_group("en_au_nz").add("en_nz", "en_au");
break;
var group_dominant_english = new Language_proximity_group("en_native").add("en_uk", group_north_am_eng, group_australian_eng);
var group_english = new Language_proximity_group("en").add(group_dominant_english, "en_sg", "en_hk");
var group_european = new Language_proximity_group("european").add(group_english);
var group_zh_hans = new Language_proximity_group("zh_hans").add("zh_cn", "zh_sg", "zh_mo");
var group_zh_hant = new Language_proximity_group("zh_hant").add("zh_hk", "zh_tw");
var group_zh = new Language_proximity_group("zh").add(group_zh_hans, group_zh_hant);
var group_asian = new Language_proximity_group("asian").add(group_zh);
var group_world = new Language_proximity_group("world").add(group_asian, group_european);
var accepted_languages = function accepted_languages(raw_lang_code) {
var all_acceptable_codes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var processed_lang_code = String(raw_lang_code).toLowerCase().replace(/[^a-z]/g, "").slice(0, 4);
var processed_lang_code_short = processed_lang_code.slice(0, 2);
var best_match;
if (raw_lang_code in accepted_languages_dict) {
best_match = accepted_languages_dict[raw_lang_code];
} else if (processed_lang_code in accepted_languages_dict) {
best_match = accepted_languages_dict[processed_lang_code];
} else if (processed_lang_code_short in accepted_languages_dict) {
best_match = accepted_languages_dict[processed_lang_code_short];
} else {
best_match = null;
}
}
yield checkEditConflict();
if (all_acceptable_codes === null || _typeof(all_acceptable_codes) !== "object" ||
if (!isContinue) {
// eslint-disable-next-line no-unsafe-negation
break;
!all_acceptable_codes instanceof Array || all_acceptable_codes.length === 0 || all_acceptable_codes.indexOf(best_match) !== -1) {
return best_match;
}
}
yield (0, import_ext_gadget4.delay)(3 * 1e3);
var current_group = group_world.group_of(best_match);
if (current_group === null) {
return all_acceptable_codes[0];
}

// this was originally a while(true) loop, but i changed it into a for loop that will force quit if it runs more than a specified length,
// just as a fail safe in case the current_group.parent somehow referred to itself.
for (var i = 0; i < PREVENT_INFINITE_LOOP; i++) {
var close_match_group = current_group.all();
for (var _i4 = 0; _i4 < close_match_group.length; _i4++) {
if (all_acceptable_codes.indexOf(close_match_group[_i4]) !== -1) {
return close_match_group[_i4];
}
}
if (current_group.parent) {
current_group = current_group.parent;
} else {
return all_acceptable_codes[0];
}
}
console.log("[warning][peculiarity] produced at accepted_languages.js:175, forced jump out of a suspected 1k loop that should not happen. This indicates that a faulty language proximity group has one/multiple parent pointer(s) that formed a circle.");
return all_acceptable_codes[0];
};
return accepted_languages;
}();
var ui_notify = function ui_notify() {
ding(lang.notice[lang_code], "info", "long");
};
var expose = function () {
var glb = {
url: mw.config.values.wgServer,
p: mw.config.values.wgPageName,
un: mw.config.values.wgUserName,
u: "User:".concat(mw.config.values.wgUserName),
ut: "User_talk:".concat(mw.config.values.wgUserName),
t: null
};
glb.a = "".concat(glb.url).concat(mw.config.get("wgScriptPath"), "/api.php");
var eur = encodeURIComponent;
var asyncPost = function asyncPost(url, body, cb) {
var z1 = "Content-Type";
var z2 = "application/x-www-form-urlencoded";
var a = new XMLHttpRequest();
a.onreadystatechange = cb;
a.open("POST", url, true);
a.setRequestHeader(z1, z2);
a.send(body);
};
var getPage = function getPage(a, cb) {
var z = "action=query&prop=revisions&rvprop=ids|flags|timestamp|user|userid|size&format=json&titles=";
asyncPost(glb.a, z + eur(a), cb);
};
var pickPageRevid = function pickPageRevid(a) {
var focus = "revid";
if (typeof a === "string") {
var b = JSON.parse(a);
if (_typeof(b) === "object") {
for (var x in b.query.pages) {
var c = b.query.pages[x];
return c.revisions[0][focus];
}
} else {
return false;
}
// from now on pick functions will only work with string inputs. DO NOT parse pages before passing them into pick functions.
} else {
return false;
}
};
var tellPageExist = function tellPageExist(a) {
try {
a = JSON.parse(a);
} catch (e) {
return false;
}
if (_typeof(a) !== "object") {
return false;
}
if (!("query" in a)) {
return false;
}
if (!("pages" in a.query)) {
return false;
}
if (-1 in a.query.pages) {
return false;
}
return true;
};
var check_page_revid = function check_page_revid(title) {
// eslint-disable-next-line compat/compat, no-unused-vars
return new Promise(function (r, _s) {
getPage(title, function () {
if (this.readyState !== 4) {
return;
}
if (tellPageExist(this.responseText)) {
r(pickPageRevid(this.responseText));
} else {
r(null);
}
});
});
};
return check_page_revid;
}();
// end of libs
var raw_lang_code = mw.config.get("wgUserLanguage") || navigator.language;
lang_code = acc_lang(raw_lang_code, ["en_us", "zh_cn", "zh_hk"]);
var main_loop = function main_loop() {
if (done) {
return;
}
}
});
expose(mw.config.values.wgPageName || w.wgPageName).then(function (a) {
return function editConflict2() {
if (a === null) {
return _ref3.apply(this, arguments);
// the page does not exist. stop polling.
done = true;
clearInterval(interval_id);
} else if (a > current_revid) {
ui_notify();
done = true;
if (interval_id !== null) {
clearInterval(interval_id);
}
} else {
return 0;
}
});
};
};
}();
interval_id = setInterval(main_loop, 2000);
//! src/EditConflict/EditConflict.ts
try {
var {
document.getElementById("wpSave").addEventListener("click", function () {
wgAction,
done = true;
wgCurRevisionId
clearInterval(interval_id);
} = mw.config.get();
});
if (["edit", "submit"].includes(wgAction) && wgCurRevisionId) {
} catch (e) {}
void editConflict();
})(window);
}

})();

/* </nowiki> */

//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL0VkaXRDb25mbGljdC9tb2R1bGVzL2NvcmUudHMiLCAic3JjL0VkaXRDb25mbGljdC9tb2R1bGVzL25vdGljZU1lc3NhZ2UudHN4IiwgInNyYy9FZGl0Q29uZmxpY3QvbW9kdWxlcy9pMThuLnRzIiwgInNyYy9FZGl0Q29uZmxpY3Qvb3B0aW9ucy5qc29uIiwgInNyYy9FZGl0Q29uZmxpY3QvbW9kdWxlcy9hcGkudHMiLCAic3JjL0VkaXRDb25mbGljdC9tb2R1bGVzL3V0aWwvcXVlcnlQYWdlSW5mby50cyIsICJzcmMvRWRpdENvbmZsaWN0L21vZHVsZXMvZ2V0Q3VycmVudFJldmlzaW9uSWQudHMiLCAic3JjL0VkaXRDb25mbGljdC9FZGl0Q29uZmxpY3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7ZGVsYXksIGdldEJvZHl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5pbXBvcnQge05vdGljZU1lc3NhZ2V9IGZyb20gJy4vbm90aWNlTWVzc2FnZSc7XG5pbXBvcnQge2dldEN1cnJlbnRSZXZpc2lvbklkfSBmcm9tICcuL2dldEN1cnJlbnRSZXZpc2lvbklkJztcbmltcG9ydCB7dG9hc3RpZnl9IGZyb20gJ2V4dC5nYWRnZXQuVG9hc3RpZnknO1xuXG5jb25zdCBlZGl0Q29uZmxpY3QgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdGxldCBpc0NvbnRpbnVlOiBib29sZWFuID0gdHJ1ZTtcblxuXHR2b2lkIGdldEJvZHkoKS50aGVuKCgkYm9keTogSlF1ZXJ5PEhUTUxCb2R5RWxlbWVudD4pOiB2b2lkID0+IHtcblx0XHQkYm9keS5maW5kKCdpbnB1dFtuYW1lPVwid3BTYXZlXCJdJykub24oJ2NsaWNrJywgKCk6IHZvaWQgPT4ge1xuXHRcdFx0aXNDb250aW51ZSA9IGZhbHNlO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRjb25zdCBjaGVja0VkaXRDb25mbGljdCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB7d2dDdXJSZXZpc2lvbklkLCB3Z1BhZ2VOYW1lfSA9IG13LmNvbmZpZy5nZXQoKTtcblx0XHRjb25zdCBwYWdlUmV2aXNpb25JZDogbnVtYmVyID0gYXdhaXQgZ2V0Q3VycmVudFJldmlzaW9uSWQod2dQYWdlTmFtZSk7XG5cdFx0aWYgKCFwYWdlUmV2aXNpb25JZCkge1xuXHRcdFx0aXNDb250aW51ZSA9IGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAocGFnZVJldmlzaW9uSWQgPiB3Z0N1clJldmlzaW9uSWQpIHtcblx0XHRcdGlzQ29udGludWUgPSBmYWxzZTtcblx0XHRcdHRvYXN0aWZ5KFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bm9kZTogTm90aWNlTWVzc2FnZSgpLFxuXHRcdFx0XHRcdGNsb3NlOiB0cnVlLFxuXHRcdFx0XHRcdGR1cmF0aW9uOiAtMSxcblx0XHRcdFx0fSxcblx0XHRcdFx0J2luZm8nXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHR3aGlsZSAodHJ1ZSkge1xuXHRcdC8vIElmICFpc0NvbnRpbnVlIHRyaWdnZXJlZCAoYnkgb25DbGljaykgdGhlbiBicmVha1xuXHRcdGlmICghaXNDb250aW51ZSkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0YXdhaXQgY2hlY2tFZGl0Q29uZmxpY3QoKTtcblxuXHRcdC8vIElmICFpc0NvbnRpbnVlIHRyaWdnZXJlZCAoYnkgY2hlY2tFZGl0Q29uZmxpY3QpIHRoZW4gYnJlYWtcblx0XHRpZiAoIWlzQ29udGludWUpIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGF3YWl0IGRlbGF5KDMgKiAxMDAwKTtcblx0fVxufTtcblxuZXhwb3J0IHtlZGl0Q29uZmxpY3R9O1xuIiwgImltcG9ydCBSZWFjdCBmcm9tICdleHQuZ2FkZ2V0LlJlYWN0JztcbmltcG9ydCB7Z2V0TWVzc2FnZX0gZnJvbSAnLi9pMThuJztcblxuY29uc3QgbG9jYXRpb25SZWxvYWQgPSAoKSA9PiB7XG5cdGxvY2F0aW9uLnJlbG9hZCgpO1xuXHRyZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBOb3RpY2VNZXNzYWdlID0gKCkgPT4gKFxuXHQ8c3Bhbj5cblx0XHR7Z2V0TWVzc2FnZSgnTm90aWNlJyl9XG5cdFx0PGEgb25DbGljaz17bG9jYXRpb25SZWxvYWR9PntnZXRNZXNzYWdlKCdSZWZyZXNoJyl9PC9hPlxuXHQ8L3NwYW4+XG4pO1xuXG5leHBvcnQge05vdGljZU1lc3NhZ2V9O1xuIiwgImltcG9ydCB7bG9jYWxpemV9IGZyb20gJ2V4dC5nYWRnZXQuaTE4bic7XG5cbmNvbnN0IGdldEkxOG5NZXNzYWdlcyA9ICgpID0+IHtcblx0cmV0dXJuIHtcblx0XHROb3RpY2U6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnVGhpcyBwYWdlIGhhcyBiZWVuIGNoYW5nZWQgYnkgc29tZW9uZSBlbHNlIGFmdGVyIHlvdSBzdGFydGVkIGVkaXRpbmcuIENvcHkgeW91ciBjaGFuZ2VzLCByZWZyZXNoIGFuZCBzdGFydCBvdmVyIHRvIGF2b2lkIGVkaXQgY29uZmxpY3RzLicsXG5cdFx0XHRqYTogJ+OBk+OBruODmuODvOOCuOOBr+S7luOBruS6uuOBq+OCiOOBo+OBpuWkieabtOOBleOCjOOBpuOBhOOBvuOBmeOAgue3qOmbhuihneeqgeOCkumBv+OBkeOCi+OBn+OCgeOAgee3qOmbhuWGheWuueOCkuOCs+ODlOODvOOBl+OBpuODmuODvOOCuOOCkuWGjeiqreOBv+i+vOOBv+OBl+OAgee3qOmbhuOCkue2muOBkeOBpuOBj+OBoOOBleOBhOOAgicsXG5cdFx0XHQnemgtaGFucyc6ICfmraTpobXpnaLlt7Looqvku5bkurrmm7TmlLnjgILor7flpI3liLbmgqjnmoTnvJbovpHvvIznhLblkI7liLfmlrDpobXpnaLvvIzph43mlrDlvIDlp4vnvJbovpHvvIzku6Xpgb/lhY3nvJbovpHlhrLnqoHjgIInLFxuXHRcdFx0J3poLWhhbnQnOiAn5pys6aCB5bey6KKr5LuW5Lq65pu05pS544CC6KuL5bCH5oKo55qE57eo6Lyv6KSH6KO977yM5Lim6YeN5paw6LyJ5YWl6aCB6Z2i77yM54S25b6M57m857qM57eo6Lyv77yM5L6G6YG/5YWN57eo6Lyv6KGd56qB44CCJyxcblx0XHR9KSxcblx0XHRSZWZyZXNoOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ1JlZnJlc2gnLFxuXHRcdFx0amE6ICflho3oqq3jgb/ovrzjgb8nLFxuXHRcdFx0J3poLWhhbnMnOiAn5Yi35paw6aG16Z2iJyxcblx0XHRcdCd6aC1oYW50JzogJ+mHjeaWsOi8ieWFpScsXG5cdFx0fSksXG5cdH07XG59O1xuXG5jb25zdCBpMThuTWVzc2FnZXMgPSBnZXRJMThuTWVzc2FnZXMoKTtcblxuY29uc3QgZ2V0TWVzc2FnZTogR2V0TWVzc2FnZXM8dHlwZW9mIGkxOG5NZXNzYWdlcz4gPSAoa2V5KSA9PiB7XG5cdHJldHVybiBpMThuTWVzc2FnZXNba2V5XSB8fCBrZXk7XG59O1xuXG5leHBvcnQge2dldE1lc3NhZ2V9O1xuIiwgIntcblx0XCJ2ZXJzaW9uXCI6IFwiMi4wXCJcbn1cbiIsICJpbXBvcnQgKiBhcyBPUFRJT05TIGZyb20gJy4uL29wdGlvbnMuanNvbic7XG5pbXBvcnQge2luaXRNd0FwaX0gZnJvbSAnZXh0LmdhZGdldC5VdGlsJztcblxuY29uc3QgYXBpOiBtdy5BcGkgPSBpbml0TXdBcGkoYEVkaXRDb25mbGljdC8ke09QVElPTlMudmVyc2lvbn1gKTtcblxuZXhwb3J0IHthcGl9O1xuIiwgImltcG9ydCB7YXBpfSBmcm9tICcuLi9hcGknO1xuXG5pbnRlcmZhY2UgUGFnZUluZm8ge1xuXHRxdWVyeT86IHtcblx0XHRwYWdlczogQXJyYXk8e1xuXHRcdFx0bWlzc2luZz86IGJvb2xlYW47XG5cdFx0XHRyZXZpc2lvbnM6IEFycmF5PHtcblx0XHRcdFx0cmV2aWQ6IG51bWJlcjtcblx0XHRcdH0+O1xuXHRcdH0+O1xuXHR9O1xufVxuXG5jb25zdCBwYXJhbWV0ZXJzOiBBcGlRdWVyeVJldmlzaW9uc1BhcmFtcyA9IHtcblx0YWN0aW9uOiAncXVlcnknLFxuXHRmb3JtYXQ6ICdqc29uJyxcblx0Zm9ybWF0dmVyc2lvbjogJzInLFxuXHRwcm9wOiAncmV2aXNpb25zJyxcblx0cnZwcm9wOiAnaWRzJyxcbn07XG5cbmNvbnN0IHF1ZXJ5UGFnZUluZm8gPSBhc3luYyAodGl0bGU6IHN0cmluZyk6IFByb21pc2U8UGFnZUluZm8+ID0+IHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gKGF3YWl0IGFwaS5wb3N0KHtcblx0XHRcdC4uLnBhcmFtZXRlcnMsXG5cdFx0XHR0aXRsZXM6IHRpdGxlLFxuXHRcdH0gYXMgdHlwZW9mIHBhcmFtZXRlcnMpKSBhcyBQYWdlSW5mbztcblx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRjb25zb2xlLmVycm9yKCdbRWRpdENvbmZsaWN0XSBBamF4IGVycm9yOicsIGVycm9yKTtcblx0XHRyZXR1cm4ge307XG5cdH1cbn07XG5cbmV4cG9ydCB7cXVlcnlQYWdlSW5mb307XG4iLCAiaW1wb3J0IHtxdWVyeVBhZ2VJbmZvfSBmcm9tICcuL3V0aWwvcXVlcnlQYWdlSW5mbyc7XG5cbmNvbnN0IGdldEN1cnJlbnRSZXZpc2lvbklkID0gYXN5bmMgKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuXHRjb25zdCBwYWdlSW5mbzogQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBxdWVyeVBhZ2VJbmZvPj4gPSBhd2FpdCBxdWVyeVBhZ2VJbmZvKHRpdGxlKTtcblxuXHRjb25zdCB7cXVlcnl9ID0gcGFnZUluZm87XG5cdGlmICghcXVlcnkpIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IFtwYWdlXSA9IHF1ZXJ5LnBhZ2VzO1xuXHRpZiAoIXBhZ2UgfHwgcGFnZS5taXNzaW5nKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRyZXR1cm4gcGFnZS5yZXZpc2lvbnNbMF0hLnJldmlkO1xufTtcblxuZXhwb3J0IHtnZXRDdXJyZW50UmV2aXNpb25JZH07XG4iLCAiaW1wb3J0IHtlZGl0Q29uZmxpY3R9IGZyb20gJy4vbW9kdWxlcy9jb3JlJztcblxuY29uc3Qge3dnQWN0aW9uLCB3Z0N1clJldmlzaW9uSWR9ID0gbXcuY29uZmlnLmdldCgpO1xuXG5pZiAoWydlZGl0JywgJ3N1Ym1pdCddLmluY2x1ZGVzKHdnQWN0aW9uKSAmJiB3Z0N1clJldmlzaW9uSWQpIHtcblx0dm9pZCBlZGl0Q29uZmxpY3QoKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLHFCQUE2QkMsUUFBQSxpQkFBQTs7QUNBN0IsSUFBQUMscUJBQWtCQyxRQUFBRixRQUFBLGtCQUFBLEdBQUEsQ0FBQTs7QUNBbEIsSUFBQUcsb0JBQXVCSCxRQUFBLGlCQUFBO0FBRXZCLElBQU1JLGtCQUFrQkEsTUFBTTtBQUM3QixTQUFPO0lBQ05DLFNBQUEsR0FBUUYsa0JBQUFHLFVBQVM7TUFDaEJDLElBQUk7TUFDSkMsSUFBSTtNQUNKLFdBQVc7TUFDWCxXQUFXO0lBQ1osQ0FBQztJQUNEQyxVQUFBLEdBQVNOLGtCQUFBRyxVQUFTO01BQ2pCQyxJQUFJO01BQ0pDLElBQUk7TUFDSixXQUFXO01BQ1gsV0FBVztJQUNaLENBQUM7RUFDRjtBQUNEO0FBRUEsSUFBTUUsZUFBZU4sZ0JBQWdCO0FBRXJDLElBQU1PLGFBQWdEQyxTQUFRO0FBQzdELFNBQU9GLGFBQWFFLEdBQUcsS0FBS0E7QUFDN0I7O0FEcEJBLElBQU1DLGlCQUFpQkEsTUFBTTtBQUM1QkMsV0FBU0MsT0FBTztBQUNoQixTQUFPO0FBQ1I7QUFFQSxJQUFNQyxnQkFBZ0JBLE1BQ3JCZixtQ0FBQWdCLFFBQUFDLGNBQUMsUUFBQSxNQUNDUCxXQUFXLFFBQVEsR0FDcEJWLG1DQUFBZ0IsUUFBQUMsY0FBQyxLQUFBO0VBQUVDLFNBQVNOO0FB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QyxRQUFRLFFBQVEsRUFBRVEsU0FBU0QsUUFBUSxLQUFLWixpQkFBaUI7QUFDN0QsT0FBS1YsYUFBYTtBQUNuQjsiLAogICJuYW1lcyI6IFsiaW1wb3J0X2V4dF9nYWRnZXQ0IiwgInJlcXVpcmUiLCAiaW1wb3J0X2V4dF9nYWRnZXQyIiwgIl9fdG9FU00iLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAiZ2V0STE4bk1lc3NhZ2VzIiwgIk5vdGljZSIsICJsb2NhbGl6ZSIsICJlbiIsICJqYSIsICJSZWZyZXNoIiwgImkxOG5NZXNzYWdlcyIsICJnZXRNZXNzYWdlIiwgImtleSIsICJsb2NhdGlvblJlbG9hZCIsICJsb2NhdGlvbiIsICJyZWxvYWQiLCAiTm90aWNlTWVzc2FnZSIsICJkZWZhdWx0IiwgImNyZWF0ZUVsZW1lbnQiLCAib25DbGljayIsICJ2ZXJzaW9uIiwgImltcG9ydF9leHRfZ2FkZ2V0MyIsICJhcGkiLCAiaW5pdE13QXBpIiwgImNvbmNhdCIsICJwYXJhbWV0ZXJzIiwgImFjdGlvbiIsICJmb3JtYXQiLCAiZm9ybWF0dmVyc2lvbiIsICJwcm9wIiwgInJ2cHJvcCIsICJxdWVyeVBhZ2VJbmZvIiwgIl9yZWYiLCAiX2FzeW5jVG9HZW5lcmF0b3IiLCAidGl0bGUiLCAicG9zdCIsICJ0aXRsZXMiLCAiZXJyb3IiLCAiY29uc29sZSIsICJfeCIsICJhcHBseSIsICJhcmd1bWVudHMiLCAiZ2V0Q3VycmVudFJldmlzaW9uSWQiLCAiX3JlZjIiLCAicGFnZUluZm8iLCAicXVlcnkiLCAicGFnZSIsICJwYWdlcyIsICJtaXNzaW5nIiwgInJldmlzaW9ucyIsICJyZXZpZCIsICJfeDIiLCAiaW1wb3J0X2V4dF9nYWRnZXQ1IiwgImVkaXRDb25mbGljdCIsICJfcmVmMyIsICJpc0NvbnRpbnVlIiwgImdldEJvZHkiLCAidGhlbiIsICIkYm9keSIsICJmaW5kIiwgIm9uIiwgImNoZWNrRWRpdENvbmZsaWN0IiwgIl9yZWY0IiwgIndnQ3VyUmV2aXNpb25JZCIsICJ3Z0N1clJldmlzaW9uSWQyIiwgIndnUGFnZU5hbWUiLCAibXciLCAiY29uZmlnIiwgImdldCIsICJwYWdlUmV2aXNpb25JZCIsICJ0b2FzdGlmeSIsICJub2RlIiwgImNsb3NlIiwgImR1cmF0aW9uIiwgImRlbGF5IiwgIndnQWN0aW9uIiwgImluY2x1ZGVzIl0KfQo=

2024年5月31日 (五) 15:56的最新版本

/**
 * SPDX-License-Identifier: GPL-3.0-or-later
 * _addText: '{{Gadget Header|license=GPL-3.0-or-later}}'
 *
 * @source {@link https://github.com/TopRealm/YsArchives-Gadgets/tree/master/src/EditConflict}
 * @author 安忆 <i@anyi.in>
 * @license GPL-3.0-or-later {@link https://youshou.wiki/wiki/H:GPLV3}
 */
/**
 * +------------------------------------------------------------+
 * |            === WARNING: GLOBAL GADGET FILE ===             |
 * +------------------------------------------------------------+
 * |       All changes should be made in the repository,        |
 * |                otherwise they will be lost.                |
 * +------------------------------------------------------------+
 * |        Changes to this page may affect many users.         |
 * | Please discuss changes by opening an issue before editing. |
 * +------------------------------------------------------------+
 */
/* <nowiki> */

(() => {

"use strict";

// dist/EditConflict/EditConflict.js
function asyncGeneratorStep(n, t, e, r, o, a, c) {
  try {
    var i = n[a](c), u = i.value;
  } catch (n2) {
    return void e(n2);
  }
  i.done ? t(u) : Promise.resolve(u).then(r, o);
}
function _asyncToGenerator(n) {
  return function() {
    var t = this, e = arguments;
    return new Promise(function(r, o) {
      var a = n.apply(t, e);
      function _next(n2) {
        asyncGeneratorStep(a, r, o, _next, _throw, "next", n2);
      }
      function _throw(n2) {
        asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2);
      }
      _next(void 0);
    });
  };
}
function _createForOfIteratorHelper(r, e) {
  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
  if (!t) {
    if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
      t && (r = t);
      var n = 0, F = function() {
      };
      return { s: F, n: function() {
        return n >= r.length ? { done: true } : { done: false, value: r[n++] };
      }, e: function(r2) {
        throw r2;
      }, f: F };
    }
    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  var o, a = true, u = false;
  return { s: function() {
    t = t.call(r);
  }, n: function() {
    var r2 = t.next();
    return a = r2.done, r2;
  }, e: function(r2) {
    u = true, o = r2;
  }, f: function() {
    try {
      a || null == t.return || t.return();
    } finally {
      if (u) throw o;
    }
  } };
}
function _unsupportedIterableToArray(r, a) {
  if (r) {
    if ("string" == typeof r) return _arrayLikeToArray(r, a);
    var t = {}.toString.call(r).slice(8, -1);
    return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
  }
}
function _arrayLikeToArray(r, a) {
  (null == a || a > r.length) && (a = r.length);
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
  return n;
}
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    var _iterator = _createForOfIteratorHelper(__getOwnPropNames(from)), _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done; ) {
        let key = _step.value;
        if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
          get: () => from[key],
          enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
        });
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
    value: mod,
    enumerable: true
  }) : target,
  mod
));
//! src/EditConflict/modules/core.ts
var import_ext_gadget4 = require("ext.gadget.Util");
//! src/EditConflict/modules/noticeMessage.tsx
var import_ext_gadget2 = __toESM(require("ext.gadget.React"), 1);
//! src/EditConflict/modules/i18n.ts
var import_ext_gadget = require("ext.gadget.i18n");
var getI18nMessages = () => {
  return {
    Notice: (0, import_ext_gadget.localize)({
      en: "This page has been changed by someone else after you started editing. Copy your changes, refresh and start over to avoid edit conflicts.",
      ja: "このページは他の人によって変更されています。編集衝突を避けるため、編集内容をコピーしてページを再読み込みし、編集を続けてください。",
      "zh-hans": "此页面已被他人更改。请复制您的编辑,然后刷新页面,重新开始编辑,以避免编辑冲突。",
      "zh-hant": "本頁已被他人更改。請將您的編輯複製,並重新載入頁面,然後繼續編輯,來避免編輯衝突。"
    }),
    Refresh: (0, import_ext_gadget.localize)({
      en: "Refresh",
      ja: "再読み込み",
      "zh-hans": "刷新页面",
      "zh-hant": "重新載入"
    })
  };
};
var i18nMessages = getI18nMessages();
var getMessage = (key) => {
  return i18nMessages[key] || key;
};
//! src/EditConflict/modules/noticeMessage.tsx
var locationReload = () => {
  location.reload();
  return false;
};
var NoticeMessage = () => /* @__PURE__ */ import_ext_gadget2.default.createElement("span", null, getMessage("Notice"), /* @__PURE__ */ import_ext_gadget2.default.createElement("a", {
  onClick: locationReload
}, getMessage("Refresh")));
//! src/EditConflict/options.json
var version = "2.0";
//! src/EditConflict/modules/api.ts
var import_ext_gadget3 = require("ext.gadget.Util");
var api = (0, import_ext_gadget3.initMwApi)("EditConflict/".concat(version));
//! src/EditConflict/modules/util/queryPageInfo.ts
var parameters = {
  action: "query",
  format: "json",
  formatversion: "2",
  prop: "revisions",
  rvprop: "ids"
};
var queryPageInfo = /* @__PURE__ */ function() {
  var _ref = _asyncToGenerator(function* (title) {
    try {
      return yield api.post({
        ...parameters,
        titles: title
      });
    } catch (error) {
      console.error("[EditConflict] Ajax error:", error);
      return {};
    }
  });
  return function queryPageInfo2(_x) {
    return _ref.apply(this, arguments);
  };
}();
//! src/EditConflict/modules/getCurrentRevisionId.ts
var getCurrentRevisionId = /* @__PURE__ */ function() {
  var _ref2 = _asyncToGenerator(function* (title) {
    const pageInfo = yield queryPageInfo(title);
    const {
      query
    } = pageInfo;
    if (!query) {
      return 0;
    }
    const [page] = query.pages;
    if (!page || page.missing) {
      return 0;
    }
    return page.revisions[0].revid;
  });
  return function getCurrentRevisionId2(_x2) {
    return _ref2.apply(this, arguments);
  };
}();
//! src/EditConflict/modules/core.ts
var import_ext_gadget5 = require("ext.gadget.Toastify");
var editConflict = /* @__PURE__ */ function() {
  var _ref3 = _asyncToGenerator(function* () {
    let isContinue = true;
    void (0, import_ext_gadget4.getBody)().then(($body) => {
      $body.find('input[name="wpSave"]').on("click", () => {
        isContinue = false;
      });
    });
    const checkEditConflict = /* @__PURE__ */ function() {
      var _ref4 = _asyncToGenerator(function* () {
        const {
          wgCurRevisionId: wgCurRevisionId2,
          wgPageName
        } = mw.config.get();
        const pageRevisionId = yield getCurrentRevisionId(wgPageName);
        if (!pageRevisionId) {
          isContinue = false;
        } else if (pageRevisionId > wgCurRevisionId2) {
          isContinue = false;
          (0, import_ext_gadget5.toastify)({
            node: NoticeMessage(),
            close: true,
            duration: -1
          }, "info");
        }
      });
      return function checkEditConflict2() {
        return _ref4.apply(this, arguments);
      };
    }();
    while (true) {
      if (!isContinue) {
        break;
      }
      yield checkEditConflict();
      if (!isContinue) {
        break;
      }
      yield (0, import_ext_gadget4.delay)(3 * 1e3);
    }
  });
  return function editConflict2() {
    return _ref3.apply(this, arguments);
  };
}();
//! src/EditConflict/EditConflict.ts
var {
  wgAction,
  wgCurRevisionId
} = mw.config.get();
if (["edit", "submit"].includes(wgAction) && wgCurRevisionId) {
  void editConflict();
}

})();

/* </nowiki> */

//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL0VkaXRDb25mbGljdC9tb2R1bGVzL2NvcmUudHMiLCAic3JjL0VkaXRDb25mbGljdC9tb2R1bGVzL25vdGljZU1lc3NhZ2UudHN4IiwgInNyYy9FZGl0Q29uZmxpY3QvbW9kdWxlcy9pMThuLnRzIiwgInNyYy9FZGl0Q29uZmxpY3Qvb3B0aW9ucy5qc29uIiwgInNyYy9FZGl0Q29uZmxpY3QvbW9kdWxlcy9hcGkudHMiLCAic3JjL0VkaXRDb25mbGljdC9tb2R1bGVzL3V0aWwvcXVlcnlQYWdlSW5mby50cyIsICJzcmMvRWRpdENvbmZsaWN0L21vZHVsZXMvZ2V0Q3VycmVudFJldmlzaW9uSWQudHMiLCAic3JjL0VkaXRDb25mbGljdC9FZGl0Q29uZmxpY3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7ZGVsYXksIGdldEJvZHl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5pbXBvcnQge05vdGljZU1lc3NhZ2V9IGZyb20gJy4vbm90aWNlTWVzc2FnZSc7XG5pbXBvcnQge2dldEN1cnJlbnRSZXZpc2lvbklkfSBmcm9tICcuL2dldEN1cnJlbnRSZXZpc2lvbklkJztcbmltcG9ydCB7dG9hc3RpZnl9IGZyb20gJ2V4dC5nYWRnZXQuVG9hc3RpZnknO1xuXG5jb25zdCBlZGl0Q29uZmxpY3QgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdGxldCBpc0NvbnRpbnVlOiBib29sZWFuID0gdHJ1ZTtcblxuXHR2b2lkIGdldEJvZHkoKS50aGVuKCgkYm9keTogSlF1ZXJ5PEhUTUxCb2R5RWxlbWVudD4pOiB2b2lkID0+IHtcblx0XHQkYm9keS5maW5kKCdpbnB1dFtuYW1lPVwid3BTYXZlXCJdJykub24oJ2NsaWNrJywgKCk6IHZvaWQgPT4ge1xuXHRcdFx0aXNDb250aW51ZSA9IGZhbHNlO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRjb25zdCBjaGVja0VkaXRDb25mbGljdCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB7d2dDdXJSZXZpc2lvbklkLCB3Z1BhZ2VOYW1lfSA9IG13LmNvbmZpZy5nZXQoKTtcblx0XHRjb25zdCBwYWdlUmV2aXNpb25JZDogbnVtYmVyID0gYXdhaXQgZ2V0Q3VycmVudFJldmlzaW9uSWQod2dQYWdlTmFtZSk7XG5cdFx0aWYgKCFwYWdlUmV2aXNpb25JZCkge1xuXHRcdFx0aXNDb250aW51ZSA9IGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAocGFnZVJldmlzaW9uSWQgPiB3Z0N1clJldmlzaW9uSWQpIHtcblx0XHRcdGlzQ29udGludWUgPSBmYWxzZTtcblx0XHRcdHRvYXN0aWZ5KFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bm9kZTogTm90aWNlTWVzc2FnZSgpLFxuXHRcdFx0XHRcdGNsb3NlOiB0cnVlLFxuXHRcdFx0XHRcdGR1cmF0aW9uOiAtMSxcblx0XHRcdFx0fSxcblx0XHRcdFx0J2luZm8nXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHR3aGlsZSAodHJ1ZSkge1xuXHRcdC8vIElmICFpc0NvbnRpbnVlIHRyaWdnZXJlZCAoYnkgb25DbGljaykgdGhlbiBicmVha1xuXHRcdGlmICghaXNDb250aW51ZSkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0YXdhaXQgY2hlY2tFZGl0Q29uZmxpY3QoKTtcblxuXHRcdC8vIElmICFpc0NvbnRpbnVlIHRyaWdnZXJlZCAoYnkgY2hlY2tFZGl0Q29uZmxpY3QpIHRoZW4gYnJlYWtcblx0XHRpZiAoIWlzQ29udGludWUpIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGF3YWl0IGRlbGF5KDMgKiAxMDAwKTtcblx0fVxufTtcblxuZXhwb3J0IHtlZGl0Q29uZmxpY3R9O1xuIiwgImltcG9ydCBSZWFjdCBmcm9tICdleHQuZ2FkZ2V0LlJlYWN0JztcbmltcG9ydCB7Z2V0TWVzc2FnZX0gZnJvbSAnLi9pMThuJztcblxuY29uc3QgbG9jYXRpb25SZWxvYWQgPSAoKSA9PiB7XG5cdGxvY2F0aW9uLnJlbG9hZCgpO1xuXHRyZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBOb3RpY2VNZXNzYWdlID0gKCkgPT4gKFxuXHQ8c3Bhbj5cblx0XHR7Z2V0TWVzc2FnZSgnTm90aWNlJyl9XG5cdFx0PGEgb25DbGljaz17bG9jYXRpb25SZWxvYWR9PntnZXRNZXNzYWdlKCdSZWZyZXNoJyl9PC9hPlxuXHQ8L3NwYW4+XG4pO1xuXG5leHBvcnQge05vdGljZU1lc3NhZ2V9O1xuIiwgImltcG9ydCB7bG9jYWxpemV9IGZyb20gJ2V4dC5nYWRnZXQuaTE4bic7XG5cbmNvbnN0IGdldEkxOG5NZXNzYWdlcyA9ICgpID0+IHtcblx0cmV0dXJuIHtcblx0XHROb3RpY2U6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnVGhpcyBwYWdlIGhhcyBiZWVuIGNoYW5nZWQgYnkgc29tZW9uZSBlbHNlIGFmdGVyIHlvdSBzdGFydGVkIGVkaXRpbmcuIENvcHkgeW91ciBjaGFuZ2VzLCByZWZyZXNoIGFuZCBzdGFydCBvdmVyIHRvIGF2b2lkIGVkaXQgY29uZmxpY3RzLicsXG5cdFx0XHRqYTogJ+OBk+OBruODmuODvOOCuOOBr+S7luOBruS6uuOBq+OCiOOBo+OBpuWkieabtOOBleOCjOOBpuOBhOOBvuOBmeOAgue3qOmbhuihneeqgeOCkumBv+OBkeOCi+OBn+OCgeOAgee3qOmbhuWGheWuueOCkuOCs+ODlOODvOOBl+OBpuODmuODvOOCuOOCkuWGjeiqreOBv+i+vOOBv+OBl+OAgee3qOmbhuOCkue2muOBkeOBpuOBj+OBoOOBleOBhOOAgicsXG5cdFx0XHQnemgtaGFucyc6ICfmraTpobXpnaLlt7Looqvku5bkurrmm7TmlLnjgILor7flpI3liLbmgqjnmoTnvJbovpHvvIznhLblkI7liLfmlrDpobXpnaLvvIzph43mlrDlvIDlp4vnvJbovpHvvIzku6Xpgb/lhY3nvJbovpHlhrLnqoHjgIInLFxuXHRcdFx0J3poLWhhbnQnOiAn5pys6aCB5bey6KKr5LuW5Lq65pu05pS544CC6KuL5bCH5oKo55qE57eo6Lyv6KSH6KO977yM5Lim6YeN5paw6LyJ5YWl6aCB6Z2i77yM54S25b6M57m857qM57eo6Lyv77yM5L6G6YG/5YWN57eo6Lyv6KGd56qB44CCJyxcblx0XHR9KSxcblx0XHRSZWZyZXNoOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ1JlZnJlc2gnLFxuXHRcdFx0amE6ICflho3oqq3jgb/ovrzjgb8nLFxuXHRcdFx0J3poLWhhbnMnOiAn5Yi35paw6aG16Z2iJyxcblx0XHRcdCd6aC1oYW50JzogJ+mHjeaWsOi8ieWFpScsXG5cdFx0fSksXG5cdH07XG59O1xuXG5jb25zdCBpMThuTWVzc2FnZXMgPSBnZXRJMThuTWVzc2FnZXMoKTtcblxuY29uc3QgZ2V0TWVzc2FnZTogR2V0TWVzc2FnZXM8dHlwZW9mIGkxOG5NZXNzYWdlcz4gPSAoa2V5KSA9PiB7XG5cdHJldHVybiBpMThuTWVzc2FnZXNba2V5XSB8fCBrZXk7XG59O1xuXG5leHBvcnQge2dldE1lc3NhZ2V9O1xuIiwgIntcblx0XCJ2ZXJzaW9uXCI6IFwiMi4wXCJcbn1cbiIsICJpbXBvcnQgKiBhcyBPUFRJT05TIGZyb20gJy4uL29wdGlvbnMuanNvbic7XG5pbXBvcnQge2luaXRNd0FwaX0gZnJvbSAnZXh0LmdhZGdldC5VdGlsJztcblxuY29uc3QgYXBpOiBtdy5BcGkgPSBpbml0TXdBcGkoYEVkaXRDb25mbGljdC8ke09QVElPTlMudmVyc2lvbn1gKTtcblxuZXhwb3J0IHthcGl9O1xuIiwgImltcG9ydCB7YXBpfSBmcm9tICcuLi9hcGknO1xuXG5pbnRlcmZhY2UgUGFnZUluZm8ge1xuXHRxdWVyeT86IHtcblx0XHRwYWdlczogQXJyYXk8e1xuXHRcdFx0bWlzc2luZz86IGJvb2xlYW47XG5cdFx0XHRyZXZpc2lvbnM6IEFycmF5PHtcblx0XHRcdFx0cmV2aWQ6IG51bWJlcjtcblx0XHRcdH0+O1xuXHRcdH0+O1xuXHR9O1xufVxuXG5jb25zdCBwYXJhbWV0ZXJzOiBBcGlRdWVyeVJldmlzaW9uc1BhcmFtcyA9IHtcblx0YWN0aW9uOiAncXVlcnknLFxuXHRmb3JtYXQ6ICdqc29uJyxcblx0Zm9ybWF0dmVyc2lvbjogJzInLFxuXHRwcm9wOiAncmV2aXNpb25zJyxcblx0cnZwcm9wOiAnaWRzJyxcbn07XG5cbmNvbnN0IHF1ZXJ5UGFnZUluZm8gPSBhc3luYyAodGl0bGU6IHN0cmluZyk6IFByb21pc2U8UGFnZUluZm8+ID0+IHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gKGF3YWl0IGFwaS5wb3N0KHtcblx0XHRcdC4uLnBhcmFtZXRlcnMsXG5cdFx0XHR0aXRsZXM6IHRpdGxlLFxuXHRcdH0gYXMgdHlwZW9mIHBhcmFtZXRlcnMpKSBhcyBQYWdlSW5mbztcblx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRjb25zb2xlLmVycm9yKCdbRWRpdENvbmZsaWN0XSBBamF4IGVycm9yOicsIGVycm9yKTtcblx0XHRyZXR1cm4ge307XG5cdH1cbn07XG5cbmV4cG9ydCB7cXVlcnlQYWdlSW5mb307XG4iLCAiaW1wb3J0IHtxdWVyeVBhZ2VJbmZvfSBmcm9tICcuL3V0aWwvcXVlcnlQYWdlSW5mbyc7XG5cbmNvbnN0IGdldEN1cnJlbnRSZXZpc2lvbklkID0gYXN5bmMgKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuXHRjb25zdCBwYWdlSW5mbzogQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBxdWVyeVBhZ2VJbmZvPj4gPSBhd2FpdCBxdWVyeVBhZ2VJbmZvKHRpdGxlKTtcblxuXHRjb25zdCB7cXVlcnl9ID0gcGFnZUluZm87XG5cdGlmICghcXVlcnkpIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IFtwYWdlXSA9IHF1ZXJ5LnBhZ2VzO1xuXHRpZiAoIXBhZ2UgfHwgcGFnZS5taXNzaW5nKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRyZXR1cm4gcGFnZS5yZXZpc2lvbnNbMF0hLnJldmlkO1xufTtcblxuZXhwb3J0IHtnZXRDdXJyZW50UmV2aXNpb25JZH07XG4iLCAiaW1wb3J0IHtlZGl0Q29uZmxpY3R9IGZyb20gJy4vbW9kdWxlcy9jb3JlJztcblxuY29uc3Qge3dnQWN0aW9uLCB3Z0N1clJldmlzaW9uSWR9ID0gbXcuY29uZmlnLmdldCgpO1xuXG5pZiAoWydlZGl0JywgJ3N1Ym1pdCddLmluY2x1ZGVzKHdnQWN0aW9uKSAmJiB3Z0N1clJldmlzaW9uSWQpIHtcblx0dm9pZCBlZGl0Q29uZmxpY3QoKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLHFCQUE2QkMsUUFBQSxpQkFBQTs7QUNBN0IsSUFBQUMscUJBQWtCQyxRQUFBRixRQUFBLGtCQUFBLEdBQUEsQ0FBQTs7QUNBbEIsSUFBQUcsb0JBQXVCSCxRQUFBLGlCQUFBO0FBRXZCLElBQU1JLGtCQUFrQkEsTUFBTTtBQUM3QixTQUFPO0lBQ05DLFNBQUEsR0FBUUYsa0JBQUFHLFVBQVM7TUFDaEJDLElBQUk7TUFDSkMsSUFBSTtNQUNKLFdBQVc7TUFDWCxXQUFXO0lBQ1osQ0FBQztJQUNEQyxVQUFBLEdBQVNOLGtCQUFBRyxVQUFTO01BQ2pCQyxJQUFJO01BQ0pDLElBQUk7TUFDSixXQUFXO01BQ1gsV0FBVztJQUNaLENBQUM7RUFDRjtBQUNEO0FBRUEsSUFBTUUsZUFBZU4sZ0JBQWdCO0FBRXJDLElBQU1PLGFBQWdEQyxTQUFRO0FBQzdELFNBQU9GLGFBQWFFLEdBQUcsS0FBS0E7QUFDN0I7O0FEcEJBLElBQU1DLGlCQUFpQkEsTUFBTTtBQUM1QkMsV0FBU0MsT0FBTztBQUNoQixTQUFPO0FBQ1I7QUFFQSxJQUFNQyxnQkFBZ0JBLE1BQ3JCZixtQ0FBQWdCLFFBQUFDLGNBQUMsUUFBQSxNQUNDUCxXQUFXLFFBQVEsR0FDcEJWLG1DQUFBZ0IsUUFBQUMsY0FBQyxLQUFBO0VBQUVDLFNBQVNOO0FB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QyxRQUFRLFFBQVEsRUFBRVEsU0FBU0QsUUFBUSxLQUFLWixpQkFBaUI7QUFDN0QsT0FBS1YsYUFBYTtBQUNuQjsiLAogICJuYW1lcyI6IFsiaW1wb3J0X2V4dF9nYWRnZXQ0IiwgInJlcXVpcmUiLCAiaW1wb3J0X2V4dF9nYWRnZXQyIiwgIl9fdG9FU00iLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAiZ2V0STE4bk1lc3NhZ2VzIiwgIk5vdGljZSIsICJsb2NhbGl6ZSIsICJlbiIsICJqYSIsICJSZWZyZXNoIiwgImkxOG5NZXNzYWdlcyIsICJnZXRNZXNzYWdlIiwgImtleSIsICJsb2NhdGlvblJlbG9hZCIsICJsb2NhdGlvbiIsICJyZWxvYWQiLCAiTm90aWNlTWVzc2FnZSIsICJkZWZhdWx0IiwgImNyZWF0ZUVsZW1lbnQiLCAib25DbGljayIsICJ2ZXJzaW9uIiwgImltcG9ydF9leHRfZ2FkZ2V0MyIsICJhcGkiLCAiaW5pdE13QXBpIiwgImNvbmNhdCIsICJwYXJhbWV0ZXJzIiwgImFjdGlvbiIsICJmb3JtYXQiLCAiZm9ybWF0dmVyc2lvbiIsICJwcm9wIiwgInJ2cHJvcCIsICJxdWVyeVBhZ2VJbmZvIiwgIl9yZWYiLCAiX2FzeW5jVG9HZW5lcmF0b3IiLCAidGl0bGUiLCAicG9zdCIsICJ0aXRsZXMiLCAiZXJyb3IiLCAiY29uc29sZSIsICJfeCIsICJhcHBseSIsICJhcmd1bWVudHMiLCAiZ2V0Q3VycmVudFJldmlzaW9uSWQiLCAiX3JlZjIiLCAicGFnZUluZm8iLCAicXVlcnkiLCAicGFnZSIsICJwYWdlcyIsICJtaXNzaW5nIiwgInJldmlzaW9ucyIsICJyZXZpZCIsICJfeDIiLCAiaW1wb3J0X2V4dF9nYWRnZXQ1IiwgImVkaXRDb25mbGljdCIsICJfcmVmMyIsICJpc0NvbnRpbnVlIiwgImdldEJvZHkiLCAidGhlbiIsICIkYm9keSIsICJmaW5kIiwgIm9uIiwgImNoZWNrRWRpdENvbmZsaWN0IiwgIl9yZWY0IiwgIndnQ3VyUmV2aXNpb25JZCIsICJ3Z0N1clJldmlzaW9uSWQyIiwgIndnUGFnZU5hbWUiLCAibXciLCAiY29uZmlnIiwgImdldCIsICJwYWdlUmV2aXNpb25JZCIsICJ0b2FzdGlmeSIsICJub2RlIiwgImNsb3NlIiwgImR1cmF0aW9uIiwgImRlbGF5IiwgIndnQWN0aW9uIiwgImluY2x1ZGVzIl0KfQo=