MediaWiki:Gadget-ReferenceTooltips.js
注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:前往菜单 → 设置(Mac为Opera → Preferences),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件。
/* <pre> */
/**
* -------------------------------------------------------------------------
* !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!!
* -------------------------------------------------------------------------
*/
var _addText = '{{GHIACode|page=GHIA:MoegirlPediaInterfaceCodes/blob/master/src/gadgets/ReferenceTooltips/MediaWiki:Gadget-ReferenceTooltips.js|user=[[U:AnnAngela]]|co-authors=|longId=b16e23d7a02982d3b78d4dc0e1b5c99b466590aa|shortId=b16e23d|message=refactor: @annangela/prefer-reflect}}';
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
(function () {
var REF_LINK_SELECTOR = '.reference, a[href^="#CITEREF"]', COMMENTED_TEXT_CLASS = "rt-commentedText", COMMENTED_TEXT_SELECTOR = "".concat(COMMENTED_TEXT_CLASS ? ".".concat(COMMENTED_TEXT_CLASS, ", ") : "", "abbr[title]");
mw.messages.set(wgULS({
"rt-settings": "参考文献提示工具设置",
"rt-enable-footer": "启用参考文献提示工具",
"rt-settings-title": "参考文献提示工具",
"rt-save": "保存",
"rt-cancel": "取消",
"rt-enable": "启用",
"rt-disable": "禁用",
"rt-activationMethod": "提示工具显示方式",
"rt-hovering": "鼠标悬浮",
"rt-clicking": "点击",
"rt-delay": "工具提示显示延迟(毫秒)",
"rt-tooltipsForComments": "\u5728\u53C2\u8003\u6587\u732E\u63D0\u793A\u5DE5\u5177\u6837\u5F0F\u4E2D\u7528<span title=\"\u63D0\u793A\u5DE5\u5177\u7684\u4F8B\u5B50\" class=\"".concat(COMMENTED_TEXT_CLASS || "rt-commentedText", "\" style=\"border-bottom: 1px dotted; cursor: help;\">\u865A\u4E0B\u5212\u7EBF</span>\u7684\u65B9\u5F0F\u5728\u6587\u5B57\u4E0A\u663E\u793A\u63D0\u793A\u5DE5\u5177\uFF08\u53EF\u4EE5\u5728\u4E0D\u652F\u6301\u9F20\u6807\u7684\u8BBE\u5907\u4E0A\u663E\u793A\u63D0\u793A\u5DE5\u5177\uFF09"),
"rt-disabledNote": "你可以通过页脚中的链接重新启用参考文献提示工具",
"rt-done": "完成",
"rt-enabled": "参考文献提示工具已启用"
}, {
"rt-settings": "參考文獻提示工具設定",
"rt-enable-footer": "啟用參考文獻提示工具",
"rt-settings-title": "參考文獻提示工具",
"rt-save": "儲存",
"rt-cancel": "取消",
"rt-enable": "啟用",
"rt-disable": "停用",
"rt-activationMethod": "提示工具顯示方式",
"rt-hovering": "滑鼠懸浮",
"rt-clicking": "點擊",
"rt-delay": "工具提示顯示延遲(毫秒)",
"rt-tooltipsForComments": "\u5728\u53C3\u8003\u6587\u737B\u63D0\u793A\u5DE5\u5177\u6A23\u5F0F\u4E2D\u7528<span title=\"\u63D0\u793A\u5DE5\u5177\u7684\u4F8B\u5B50\" class=\"".concat(COMMENTED_TEXT_CLASS || "rt-commentedText", "\" style=\"border-bottom: 1px dotted; cursor: help;\">\u865B\u5E95\u7DDA</span>\u7684\u65B9\u5F0F\u5728\u6587\u5B57\u4E0A\u986F\u793A\u63D0\u793A\u5DE5\u5177\uFF08\u53EF\u4EE5\u5728\u4E0D\u652F\u6301\u6ED1\u9F20\u7684\u88DD\u7F6E\u4E0A\u986F\u793A\u63D0\u793A\u5DE5\u5177\uFF09"),
"rt-disabledNote": "你可以通過頁尾中的連結重新啟用參考文獻提示工具",
"rt-done": "完成",
"rt-enabled": "參考文獻提示工具已啟用"
}));
var SECONDS_IN_A_DAY = 60 * 60 * 24, CLASSES = {
FADE_IN_DOWN: "rt-fade-in-down",
FADE_IN_UP: "rt-fade-in-up",
FADE_OUT_DOWN: "rt-fade-out-down",
FADE_OUT_UP: "rt-fade-out-up"
}, IS_TOUCHSCREEN = Reflect.has(document.documentElement, "ontouchstart"), IS_MOBILE = /Mobi|Android/i.test(navigator.userAgent) ||
typeof window.orientation !== "undefined", CLIENT_NAME = $.client.profile().name, $body = $(document.body), $window = $(window);
var settings, enabled, delay, activatedByClick, tooltipsForComments, windowManager;
var rt = function ($content) {
if (window.pg || mw.config.get("wgPopupsReferencePreviews")) {
return;
}
var teSelector, settingsDialogOpening = false;
var setSettingsCookie = function () { return mw.cookie.set("RTsettings", "".concat(+enabled, "|").concat(delay, "|").concat(+activatedByClick, "|").concat(+tooltipsForComments), { path: "/", expires: 90 * SECONDS_IN_A_DAY, prefix: "" }); };
var enableRt = function () {
enabled = true;
setSettingsCookie();
$(".rt-enableItem").remove();
rt($content);
mw.notify(mw.msg("rt-enabled"));
};
var disableRt = function () {
$content.find(teSelector).removeClass("rt-commentedText").off(".rt");
$body.off(".rt");
$window.off(".rt");
};
var addEnableLink = function () {
var $footer = $("#footer-places, #f-list");
if (!$footer.length) {
$footer = $("#footer li").parent();
}
$footer.append($("<li>")
.addClass("rt-enableItem")
.append($("<a>")
.text(mw.msg("rt-enable-footer"))
.attr("href", "javascript:")
.on("click", function (e) {
e.preventDefault();
enableRt();
})));
};
var TooltippedElement = (function () {
function TooltippedElement($element) {
var _this = this;
this.onBodyClick = function (e) {
var _a;
if (!_this.tooltip && !((_a = _this.$ref) === null || _a === void 0 ? void 0 : _a.hasClass("rt-target"))) {
return;
}
var $current = $(e.target);
var contextMatchesParameter = function (parameter) {
return this === parameter;
};
while ($current.length &&
(!$current.hasClass("rt-tooltip") ||
!$current.data("tooltip") ||
!$current.data("tooltip").upToTopParent(contextMatchesParameter, [_this.tooltip], true))) {
$current = $current.parent();
}
if (!$current.length) {
_this.hideRef();
}
};
var events;
if (!$element) {
return;
}
var onStartEvent = function (e) {
var showRefArgs;
if (activatedByClick && _this.type !== "commentedText" && e.type !== "contextmenu") {
e.preventDefault();
}
if (!_this.noRef) {
showRefArgs = [_this.$element];
if (_this.type !== "supRef") {
showRefArgs.push(e.pageX, e.pageY);
}
_this.showRef.apply(_this, __spreadArray([], __read(showRefArgs), false));
}
};
var onEndEvent = function () {
if (!_this.noRef) {
_this.hideRef();
}
};
this.$element = $element;
this.$originalElement = $element;
if (this.$element.is(REF_LINK_SELECTOR)) {
if (this.$element.prop("tagName") === "SUP") {
this.type = "supRef";
}
else {
this.type = "harvardRef";
}
}
else {
this.type = "commentedText";
this.comment = this.$element.attr("title");
if (!this.comment) {
return;
}
this.$element.addClass("rt-commentedText");
}
if (activatedByClick) {
events = {
"click.rt": onStartEvent
};
if (this.type === "commentedText" &&
(this.$element.closest("a").length ||
this.$element.has("a").length)) {
events["contextmenu.rt"] = onStartEvent;
}
}
else {
events = {
"mouseenter.rt": onStartEvent,
"mouseleave.rt": onEndEvent
};
}
this.$element.on(events);
}
TooltippedElement.prototype.hideRef = function (immediately) {
var _this = this;
clearTimeout(this.showTimer);
if (this.type === "commentedText") {
this.$element.attr("title", this.comment);
}
if (this.tooltip && this.tooltip.isPresent) {
if (activatedByClick || immediately) {
this.tooltip.hide();
}
else {
this.hideTimer = setTimeout(function () {
_this.tooltip.hide();
}, 200);
}
}
else if (this.$ref && this.$ref.hasClass("rt-target")) {
this.$ref.removeClass("rt-target");
if (activatedByClick) {
$body.off("click.rt touchstart.rt", this.onBodyClick);
}
}
};
TooltippedElement.prototype.showRef = function ($element, ePageX, ePageY) {
var _this = this;
if (window.pg) {
disableRt();
return;
}
if (this.tooltip && !this.tooltip.$content.length) {
return;
}
var tooltipInitiallyPresent = this.tooltip && this.tooltip.isPresent;
var reallyShow = function () {
var viewportTop, refOffsetTop, teHref;
if (!_this.$ref && !_this.comment) {
teHref = _this.type === "supRef" ?
_this.$element.find("a").attr("href") :
_this.$element.attr("href");
_this.$ref = teHref &&
$("#".concat($.escapeSelector(teHref.slice(1))));
if (!_this.$ref || !_this.$ref.length || !_this.$ref.text()) {
_this.noRef = true;
return;
}
}
if (!tooltipInitiallyPresent && !_this.comment) {
viewportTop = $window.scrollTop();
refOffsetTop = _this.$ref.offset().top;
if (!activatedByClick &&
viewportTop < refOffsetTop &&
viewportTop + $window.height() > refOffsetTop + _this.$ref.height() &&
$window.width() > _this.$ref.offset().left + _this.$ref.width()) {
_this.$ref.addClass("rt-target");
return;
}
}
if (!_this.tooltip) {
_this.tooltip = new Tooltip(_this);
if (!_this.tooltip.$content.length) {
return;
}
}
_this.tooltip.parent = _this.$element.closest(".rt-tooltip").data("tooltip");
if (_this.tooltip.parent && _this.tooltip.parent.disappearing) {
return;
}
_this.tooltip.show();
if (tooltipInitiallyPresent) {
if (_this.tooltip.$element.hasClass("rt-tooltip-above")) {
_this.tooltip.$element.addClass(CLASSES.FADE_IN_DOWN);
}
else {
_this.tooltip.$element.addClass(CLASSES.FADE_IN_UP);
}
return;
}
_this.tooltip.calculatePosition(ePageX, ePageY);
$window.on("resize.rt", _this.onWindowResize);
};
this.$element = $element;
if (this.type === "commentedText") {
this.$element.attr("title", "");
}
if (activatedByClick) {
if (tooltipInitiallyPresent ||
this.$ref && this.$ref.hasClass("rt-target")) {
return;
}
setTimeout(function () {
$body.on("click.rt touchstart.rt", _this.onBodyClick);
}, 0);
}
if (activatedByClick || tooltipInitiallyPresent) {
reallyShow();
}
else {
this.showTimer = setTimeout(reallyShow, delay);
}
};
TooltippedElement.prototype.onWindowResize = function () {
this.tooltip.calculatePosition();
};
return TooltippedElement;
}());
var SettingsDialog = (function (_super) {
__extends(SettingsDialog, _super);
function SettingsDialog() {
return _super !== null && _super.apply(this, arguments) || this;
}
SettingsDialog.prototype.initialize = function () {
var _this = this;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
_super.prototype.initialize.apply(this, __spreadArray([], __read(args), false));
this.enableOption = new OO.ui.RadioOptionWidget({
label: mw.msg("rt-enable")
});
this.disableOption = new OO.ui.RadioOptionWidget({
label: mw.msg("rt-disable")
});
this.enableSelect = new OO.ui.RadioSelectWidget({
items: [this.enableOption, this.disableOption],
classes: ["rt-enableSelect"]
});
this.enableSelect.selectItem(this.enableOption);
this.enableSelect.on("choose", function (item) {
if (item === _this.disableOption) {
_this.activationMethodSelect.setDisabled(true);
_this.delayInput.setDisabled(true);
_this.tooltipsForCommentsCheckbox.setDisabled(true);
}
else {
_this.activationMethodSelect.setDisabled(false);
_this.delayInput.setDisabled(_this.clickOption.isSelected());
_this.tooltipsForCommentsCheckbox.setDisabled(false);
}
});
this.hoverOption = new OO.ui.RadioOptionWidget({
label: mw.msg("rt-hovering")
});
this.clickOption = new OO.ui.RadioOptionWidget({
label: mw.msg("rt-clicking")
});
this.activationMethodSelect = new OO.ui.RadioSelectWidget({
items: [this.hoverOption, this.clickOption]
});
this.activationMethodSelect.selectItem(activatedByClick ?
this.clickOption :
this.hoverOption);
this.activationMethodSelect.on("choose", function (item) {
if (item === _this.clickOption) {
_this.delayInput.setDisabled(true);
}
else {
_this.delayInput.setDisabled(_this.clickOption.isSelected());
}
});
this.activationMethodField = new OO.ui.FieldLayout(this.activationMethodSelect, {
label: mw.msg("rt-activationMethod"),
align: "top"
});
this.delayInput = new OO.ui.NumberInputWidget({
input: { value: delay },
step: 50,
min: 0,
max: 5000,
disabled: activatedByClick,
classes: ["rt-numberInput"]
});
this.delayField = new OO.ui.FieldLayout(this.delayInput, {
label: mw.msg("rt-delay"),
align: "top"
});
this.tooltipsForCommentsCheckbox = new OO.ui.CheckboxInputWidget({
selected: tooltipsForComments
});
this.tooltipsForCommentsField = new OO.ui.FieldLayout(this.tooltipsForCommentsCheckbox, {
label: new OO.ui.HtmlSnippet(mw.msg("rt-tooltipsForComments")),
align: "inline",
classes: ["rt-tooltipsForCommentsField"]
});
new TooltippedElement(this.tooltipsForCommentsField.$element.find(".".concat(COMMENTED_TEXT_CLASS || "rt-commentedText")));
this.fieldset = new OO.ui.FieldsetLayout();
this.fieldset.addItems([
this.activationMethodField,
this.delayField,
this.tooltipsForCommentsField,
]);
this.panelSettings = new OO.ui.PanelLayout({
padded: true,
expanded: false
});
this.panelSettings.$element.append(this.enableSelect.$element, $("<hr>").addClass("rt-settingsFormSeparator"), this.fieldset.$element);
this.panelDisabled = new OO.ui.PanelLayout({
padded: true,
expanded: false
});
this.panelDisabled.$element.append($("<table>")
.addClass("rt-disabledHelp")
.append($("<tr>").append($("<td>").append($("<img>").attr("src", "https://en.wikipedia.org/w/load.php?modules=ext.popups.images&image=footer&format=rasterized&lang=ru&skin=vector&version=0uotisb")), $("<td>")
.addClass("rt-disabledNote")
.text(mw.msg("rt-disabledNote")))));
this.stackLayout = new OO.ui.StackLayout({
items: [this.panelSettings, this.panelDisabled]
});
this.$body.append(this.stackLayout.$element);
};
SettingsDialog.prototype.getSetupProcess = function (data) {
var _this = this;
return SettingsDialog["super"].prototype.getSetupProcess.bind(this)(data)
.next(function () {
_this.stackLayout.setItem(_this.panelSettings);
_this.actions.setMode("basic");
}, this);
};
SettingsDialog.prototype.getActionProcess = function (action) {
var _this = this;
if (action === "save") {
return new OO.ui.Process(function () {
var newDelay = +_this.delayInput.getValue();
enabled = _this.enableOption.isSelected();
if (newDelay >= 0 && newDelay <= 5000) {
delay = newDelay;
}
activatedByClick = _this.clickOption.isSelected();
tooltipsForComments = _this.tooltipsForCommentsCheckbox.isSelected();
setSettingsCookie();
if (enabled) {
_this.close();
disableRt();
rt($content);
}
else {
_this.actions.setMode("disabled");
_this.stackLayout.setItem(_this.panelDisabled);
disableRt();
addEnableLink();
}
});
}
else if (action === "deactivated") {
this.close();
}
return SettingsDialog["super"].prototype.getActionProcess.bind(this)(action);
};
SettingsDialog.prototype.getBodyHeight = function () {
return this.stackLayout.getCurrentItem().$element.outerHeight(true);
};
SettingsDialog.static = __assign(__assign({}, _super.static), { tagName: "div", name: "settingsDialog", title: "参考文献提示工具", actions: [
{
modes: "basic",
action: "save",
label: "保存",
flags: [
"primary",
"progressive",
]
},
{
modes: "basic",
label: "取消",
flags: "safe"
},
{
modes: "disabled",
action: "deactivated",
label: "完成",
flags: [
"primary",
"progressive",
]
},
] });
return SettingsDialog;
}(OO.ui.ProcessDialog));
var Tooltip = (function () {
function Tooltip(te) {
var _this = this;
this.te = te;
switch (this.te.type) {
case "supRef":
this.id = "rt-".concat(this.te.$originalElement.attr("id"));
this.$content = this.te.$ref
.contents()
.filter(function (i, ele) {
var $this = $(ele);
return ele.nodeType === Node.TEXT_NODE ||
!($this.is(".mw-cite-backlink") ||
i === 0 &&
($this.is("b") ||
$this.is("a") &&
$this.attr("href").indexOf("#ref") === 0));
})
.clone(true);
break;
case "harvardRef":
this.id = "rt-".concat(this.te.$originalElement.closest("li").attr("id"));
this.$content = this.te.$ref
.clone(true)
.removeAttr("id");
break;
case "commentedText":
this.id = "rt-".concat("".concat(Math.random()).slice(2));
this.$content = $(document.createTextNode(this.te.comment));
break;
}
if (!this.$content.length) {
return;
}
this.insideWindow = !!this.te.$element.closest(".oo-ui-window").length;
this.$element = $("<div>")
.addClass("rt-tooltip")
.attr("id", this.id)
.attr("role", "tooltip")
.data("tooltip", this);
if (this.insideWindow) {
this.$element.addClass("rt-tooltip-insideWindow");
}
this.$content = this.$content
.wrapAll("<div>")
.parent()
.addClass("rt-tooltipContent")
.addClass("mw-parser-output")
.appendTo(this.$element);
if (!activatedByClick) {
this.$element
.on("mouseenter", function () {
if (!_this.disappearing) {
_this.upToTopParent(function (tt) {
tt.show();
});
}
})
.on("mouseleave", function (e) {
if (CLIENT_NAME !== "chrome" ||
(!e.originalEvent ||
e.originalEvent.relatedTarget !== null ||
!_this.clickedTime ||
Date.now() - _this.clickedTime > 50)) {
_this.upToTopParent(function (tt) {
tt.te.hideRef();
});
}
})
.on("click", function () {
_this.clickedTime = Date.now();
});
}
if (!this.insideWindow) {
$("<div>")
.addClass("rt-settingsLink")
.attr("title", mw.msg("rt-settings"))
.on("click", function () {
if (settingsDialogOpening) {
return;
}
settingsDialogOpening = true;
_this.upToTopParent(function (tt) {
if (tt.isPresent) {
if (tt.$element[0].style.right) {
tt.$element.css("right", "+=".concat(window.innerWidth - $window.width()));
}
tt.te.hideRef(true);
}
});
if (!windowManager) {
windowManager = new OO.ui.WindowManager();
$body.append(windowManager.$element);
}
var settingsDialog = new SettingsDialog();
windowManager.addWindows([settingsDialog]);
var settingsWindow = windowManager.openWindow(settingsDialog);
settingsWindow.opened.then(function () {
settingsDialogOpening = false;
});
settingsWindow.closed.then(function () {
windowManager.clearWindows();
});
})
.prependTo(this.$content);
}
this.$tail = $("<div>")
.addClass("rt-tooltipTail")
.prependTo(this.$element);
this.disappearing = false;
}
Tooltip.prototype.show = function () {
this.disappearing = false;
clearTimeout(this.te.hideTimer);
clearTimeout(this.te.removeTimer);
this.$element
.removeClass(CLASSES.FADE_OUT_DOWN)
.removeClass(CLASSES.FADE_OUT_UP);
if (!this.isPresent) {
$body.append(this.$element);
}
this.isPresent = true;
};
Tooltip.prototype.hide = function () {
var _this = this;
this.disappearing = true;
if (this.$element.hasClass("rt-tooltip-above")) {
this.$element
.removeClass(CLASSES.FADE_IN_DOWN)
.addClass(CLASSES.FADE_OUT_UP);
}
else {
this.$element
.removeClass(CLASSES.FADE_IN_UP)
.addClass(CLASSES.FADE_OUT_DOWN);
}
this.te.removeTimer = setTimeout(function () {
if (_this.isPresent) {
_this.$element.detach();
_this.$tail.css("left", "");
if (activatedByClick) {
$body.off("click.rt touchstart.rt", _this.te.onBodyClick);
}
$window.off("resize.rt", _this.te.onWindowResize);
_this.isPresent = false;
}
}, 200);
};
Tooltip.prototype.calculatePosition = function (ePageX, ePageY) {
var teOffsets, teOffset, tooltipTailOffsetX, tooltipTailLeft, offsetYCorrection = 0;
this.$tail.css("left", "");
var teElement = this.te.$element.get(0);
if (ePageX !== undefined) {
tooltipTailOffsetX = ePageX;
teOffsets = teElement.getClientRects &&
teElement.getClientRects() ||
teElement.getBoundingClientRect();
if (teOffsets.length > 1) {
for (var i = teOffsets.length - 1; i >= 0; i--) {
if (ePageY >= Math.round($window.scrollTop() + teOffsets[i].top) &&
ePageY <= Math.round($window.scrollTop() + teOffsets[i].top + teOffsets[i].height)) {
teOffset = teOffsets[i];
}
}
}
}
if (!teOffset) {
teOffset = teElement.getClientRects &&
teElement.getClientRects()[0] ||
teElement.getBoundingClientRect();
}
teOffset = {
top: $window.scrollTop() + teOffset.top,
left: $window.scrollLeft() + teOffset.left,
width: teOffset.width,
height: teOffset.height
};
if (!tooltipTailOffsetX) {
tooltipTailOffsetX = (teOffset.left * 2 + teOffset.width) / 2;
}
if (CLIENT_NAME === "msie" && this.te.type === "supRef") {
offsetYCorrection = -+this.te.$element.parent().css("font-size").replace("px", "") / 2;
}
this.$element.css({
top: teOffset.top - this.$element.outerHeight() - 7 + offsetYCorrection,
left: tooltipTailOffsetX - 20,
right: ""
});
if (this.$element.offset().left + this.$element.outerWidth() > $window.width() - 1) {
this.$element.css({
left: "",
right: 0
});
tooltipTailLeft = tooltipTailOffsetX - this.$element.offset().left - 5;
}
if (teOffset.top < this.$element.outerHeight() + $window.scrollTop() + 6) {
this.$element
.removeClass("rt-tooltip-above")
.addClass("rt-tooltip-below")
.addClass(CLASSES.FADE_IN_UP)
.css({
top: teOffset.top + teOffset.height + 9 + offsetYCorrection
});
if (tooltipTailLeft) {
this.$tail.css("left", "".concat(tooltipTailLeft + 12, "px"));
}
}
else {
this.$element
.removeClass("rt-tooltip-below")
.addClass("rt-tooltip-above")
.addClass(CLASSES.FADE_IN_DOWN)
.css({
top: teOffset.top - this.$element.outerHeight() - 7 + offsetYCorrection
});
if (tooltipTailLeft) {
this.$tail.css("left", "".concat(tooltipTailLeft, "px"));
}
}
};
Tooltip.prototype.upToTopParent = function (func, parameters, stopAtTrue) {
var returnValue, currentTooltip = this;
do {
returnValue = func.bind(currentTooltip).apply(void 0, __spreadArray([currentTooltip], __read(parameters !== null && parameters !== void 0 ? parameters : []), false));
if (stopAtTrue && returnValue) {
break;
}
currentTooltip = currentTooltip.parent;
} while (currentTooltip);
if (stopAtTrue) {
return returnValue;
}
};
return Tooltip;
}());
if (!enabled) {
addEnableLink();
return;
}
teSelector = REF_LINK_SELECTOR;
if (tooltipsForComments) {
teSelector += ", ".concat(COMMENTED_TEXT_SELECTOR);
}
$content.find(teSelector).each(function (_, ele) {
new TooltippedElement($(ele));
});
};
var settingsString = mw.cookie.get("RTsettings", "");
if (settingsString) {
settings = settingsString.split("|");
enabled = !!+settings[0];
delay = +settings[1];
activatedByClick = !!+settings[2];
tooltipsForComments = settings[3] === undefined ?
IS_TOUCHSCREEN && IS_MOBILE :
!!+settings[3];
}
else {
enabled = true;
delay = 200;
activatedByClick = IS_TOUCHSCREEN;
tooltipsForComments = IS_TOUCHSCREEN && IS_MOBILE;
}
mw.hook("wikipage.content").add(rt);
})();
/* </pre> */