mw.config.get('wgNamespaceNumber') >= 0 &&
$.when($.ready, mw.loader.using('mediawiki.util')).then(function copySectLink() {
let handler = e => {
e.preventDefault();
let text = (e.data ? '#' + e.data.replace(
/[\[\]\{\|\}]/g,
s => '&#' + s.codePointAt(0) + ';'
) : '').replace(/_/g, ' ');
text = text.replace(/#/, '');
navigator.clipboard.writeText(text).then(() => {
mw.notify(`Copied "${text}"`);
}, () => {
let $input = $('<input>', {
type: 'text',
value: text,
readonly: '',
style: 'position:absolute;left:-999px'
}).appendTo(document.body);
$input[0].select();
document.execCommand('copy');
$input.remove();
mw.notify(`Probably copied "${text}"`);
});
};
let isMobile = mw.config.get('skin') === 'minerva';
if (isMobile) {
mw.loader.addStyleTag(`.copysectlink::before{background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' version='1.1' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%2354595d'%3E%3Cpath d='M16 0H5v2h11v14h2V2a2 2 0 0 0-2-2z'/%3E%3Cpath d='m4 20h9c1.1 0 2-0.9 2-2v-13c0-1.1-0.9-2-2-2h-9c-1.1 0-2 0.9-2 2v13c0 1.1 0.9 2 2 2zm0-15h9v13h-9z'/%3E%3C/g%3E%3C/svg%3E")} .collapsible-heading:not(.open-block) .copysectlink{visibility:hidden} .mw-editsection{white-space:nowrap}`);
}
let addButton = function () {
let isFirst = this.tagName === 'H1';
let hn = isFirst ? this : this.parentElement;
if (hn.querySelector('.copysectlink')) return;
let $button = $('<a>', {
class: 'copysectlink',
href: mw.util.getUrl() + (isFirst ? '' : '#' + this.id),
role: 'button',
text: 'copy'
}).click(!isFirst && this.id, handler);
if (isMobile) {
$button.addClass('mw-ui-icon mw-ui-icon-element').attr('title', 'Copy');
let wrapper = hn.querySelector('.mw-editsection');
if (wrapper) {
$button.prependTo(wrapper);
} else {
$button.appendTo(hn);
}
} else {
let bracket = hn.querySelector('.mw-editsection-bracket:last-child');
if (bracket) {
bracket.insertAdjacentText('beforebegin', ' | ');
} else {
bracket = $('<span>').addClass('mw-editsection').append(
$('<span>', { class: 'mw-editsection-bracket', text: '[' }),
$('<span>', { class: 'mw-editsection-bracket', text: ']' })
).appendTo(hn).children()[1];
}
$button.insertBefore(bracket);
}
};
addButton.call(document.querySelector('h1'));
if (mw.config.get('wgAction') !== 'view') return;
mw.hook('wikipage.content').add($content => {
$content.find('.mw-headline').each(addButton);
});
});