익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
식물 vs 좀비 위키
검색
미디어위키:Gadget-Vector.js 문서 원본 보기
식물 vs 좀비 위키
이름공간
메시지
토론
더 보기
더 보기
문서 작업
읽기
원본 보기
역사
새로 고침
←
미디어위키:Gadget-Vector.js
문서 편집 작업을 수행할 권한이 없습니다. 다음 이유를 확인해주세요:
이 문서는 이 위키의 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다. 모든 위키에 대한 번역을 추가하거나 바꾸려면 미디어위키 지역화 프로젝트인
translatewiki.net
에 참여하시기 바랍니다.
모든 방문자에게 영향을 미칠 수 있기 때문에 이 자바스크립트 문서의 편집 권한이 없습니다.
문서의 원본을 보거나 복사할 수 있습니다.
(function () { 'use strict'; var SPIN_CLASS = 'pvz-watch-spinning'; var WATCHED_CLASS = 'pvz-watch-watched'; var NOT_WATCHED_CLASS = 'pvz-watch-not-watched'; var SPIN_TIME = 360; var cleanupTimer = 0; function getContainer() { return document.querySelector( '#ca-watch, #ca-unwatch, li.mw-watchlink, a.mw-watchlink' ); } function getLink(container) { if (!container) { return null; } return container.matches('a') ? container : container.querySelector('a'); } function applyState(isWatched) { var container = getContainer(); if (!container) { return; } container.classList.toggle(WATCHED_CLASS, !!isWatched); container.classList.toggle(NOT_WATCHED_CLASS, !isWatched); } function syncFromMarkup() { var container = getContainer(); var link = getLink(container); var href; if (!container || !link) { return; } href = link.getAttribute('href') || ''; applyState( container.id === 'ca-unwatch' || href.indexOf('action=unwatch') !== -1 ); } function spin() { var container = getContainer(); if (!container) { return; } window.clearTimeout(cleanupTimer); container.classList.remove(SPIN_CLASS); void container.offsetWidth; container.classList.add(SPIN_CLASS); cleanupTimer = window.setTimeout(function () { container.classList.remove(SPIN_CLASS); }, SPIN_TIME + 40); } function handleClick(event) { var link = event.target.closest( '#ca-watch > a, #ca-unwatch > a, li.mw-watchlink > a, a.mw-watchlink' ); if (link) { spin(); } } function shortenHistoryLabel() { var historyLink = document.querySelector('#ca-history > a'); if (!historyLink) { return; } Array.prototype.forEach.call(historyLink.childNodes, function (node) { if (node.nodeType === Node.TEXT_NODE) { node.nodeValue = node.nodeValue.replace(/역사 보기/g, '역사'); } }); if (historyLink.textContent.trim() === '역사 보기') { historyLink.textContent = '역사'; } historyLink.setAttribute('title', '역사'); } function init() { var observer; shortenHistoryLabel(); syncFromMarkup(); document.addEventListener('click', handleClick, true); observer = new MutationObserver(function () { shortenHistoryLabel(); syncFromMarkup(); }); observer.observe(document.body, { subtree: true, childList: true, attributes: true, attributeFilter: ['id', 'href'] }); if (window.mw && mw.hook) { mw.hook('wikipage.watchlistChange').add(function (isWatched) { applyState(isWatched); spin(); }); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init, { once: true }); } else { init(); } }()); (function () { 'use strict'; function installSearchButtonIcon(wrapper) { var simpleSearch; var searchButton; var icon; if (!wrapper) { return; } simpleSearch = wrapper.querySelector('#simpleSearch'); if (!simpleSearch) { return; } searchButton = simpleSearch.querySelector('#searchButton') || simpleSearch.querySelector('.searchButton:not(#mw-searchButton)'); if (!searchButton) { return; } searchButton.classList.add('pvz-primary-search-button'); icon = simpleSearch.querySelector('.pvz-search-button-icon'); if (!icon) { icon = document.createElement('span'); icon.className = 'pvz-search-button-icon'; icon.setAttribute('aria-hidden', 'true'); simpleSearch.appendChild(icon); } } function installTopSearch() { var content = document.querySelector('.skin-vector-legacy #content'); var form = document.querySelector('#searchform'); var wrapper; if (!content || !form || !document.body) { return; } wrapper = document.getElementById('pvz-content-search'); if (!wrapper) { wrapper = document.createElement('div'); wrapper.id = 'pvz-content-search'; wrapper.setAttribute('role', 'search'); wrapper.setAttribute('aria-label', '사이트 검색'); } if (wrapper.parentNode !== document.body) { document.body.insertBefore(wrapper, content); } if (form.parentNode !== wrapper) { wrapper.appendChild(form); } installSearchButtonIcon(wrapper); document.documentElement.classList.add('pvz-content-search-ready'); } function initTopSearch() { var observer; installTopSearch(); observer = new MutationObserver(function () { installTopSearch(); }); observer.observe(document.body, { childList: true, subtree: true }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTopSearch, { once: true }); } else { initTopSearch(); } }()); (function () { 'use strict'; function syncSearchLeft() { var content = document.querySelector('.skin-vector-legacy #content'); var left; if (!content) { return; } left = content.getBoundingClientRect().left + window.scrollX; document.documentElement.style.setProperty('--pvz-content-left', left + 'px'); } function initSearchAlignment() { syncSearchLeft(); window.addEventListener('resize', syncSearchLeft, { passive: true }); window.addEventListener('orientationchange', syncSearchLeft, { passive: true }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initSearchAlignment, { once: true }); } else { initSearchAlignment(); } }()); (function () { 'use strict'; function removeObsoleteInterface() { var ids = [ 'pvz-related-toggle', 'pvz-related-menu', 'pvz-right-panel', 'pvz-left-panel-toggle', 'pvz-right-panel-toggle' ]; ids.forEach(function (id) { var element = document.getElementById(id); if (element) { element.remove(); } }); } function restoreLogoToPanel(panel) { var wrapper = document.getElementById('pvz-sidebar-logo'); var logo = (wrapper && wrapper.querySelector('#p-logo')) || document.querySelector('#p-logo'); if (!panel || !logo) { return; } if (logo.parentNode !== panel) { panel.insertBefore(logo, panel.firstChild); } if (wrapper) { wrapper.remove(); } } function syncPanelTop() { var content = document.querySelector('.skin-vector-legacy #content'); var top; if (!content) { return; } top = content.getBoundingClientRect().top + window.scrollY; document.documentElement.style.setProperty('--pvz-content-top', top + 'px'); } function syncSearchLeft() { var content = document.querySelector('.skin-vector-legacy #content'); var left; if (!content) { return; } left = content.getBoundingClientRect().left + window.scrollX; document.documentElement.style.setProperty('--pvz-content-left', left + 'px'); } function installV27Interface() { var panel = document.querySelector('.skin-vector-legacy #mw-panel'); removeObsoleteInterface(); restoreLogoToPanel(panel); syncPanelTop(); syncSearchLeft(); } function initV27Interface() { installV27Interface(); window.addEventListener('resize', function () { syncPanelTop(); syncSearchLeft(); }, { passive: true }); window.addEventListener('orientationchange', function () { syncPanelTop(); syncSearchLeft(); }, { passive: true }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initV27Interface, { once: true }); } else { initV27Interface(); } }()); (function () { 'use strict'; var ACTION_OFFSET = 230; var SEARCH_WIDTH = 205; var SEARCH_DOWN_OFFSET = 5; var CONTENT_TOP = 24; function getCactionsParts() { var menu = document.getElementById('p-cactions'); if (!menu) { return null; } return { menu: menu, label: document.getElementById('p-cactions-label') || menu.querySelector('.vector-menu-heading'), checkbox: menu.querySelector( 'input.vector-menu-checkbox, input[type="checkbox"]' ), content: menu.querySelector('.vector-menu-content') }; } function setCactionsOpen(open) { var parts = getCactionsParts(); if (!parts) { return; } parts.menu.classList.toggle('pvz-cactions-open', open); if (parts.checkbox) { parts.checkbox.checked = open; } if (parts.label) { parts.label.setAttribute( 'aria-expanded', open ? 'true' : 'false' ); } if (parts.content) { parts.content.setAttribute( 'aria-hidden', open ? 'false' : 'true' ); } } function handleCactionsClick(event) { var parts = getCactionsParts(); var label; if (!parts) { return; } label = event.target.closest( '#p-cactions-label, #p-cactions > .vector-menu-heading' ); if (label) { event.preventDefault(); event.stopImmediatePropagation(); setCactionsOpen( !parts.menu.classList.contains('pvz-cactions-open') ); return; } if ( parts.menu.classList.contains('pvz-cactions-open') && !event.target.closest('#p-cactions') ) { setCactionsOpen(false); } } function syncV35Layout() { var content = document.querySelector('#content'); var leftNavigation = document.getElementById('left-navigation'); var rightNavigation = document.getElementById('right-navigation'); var search = document.getElementById('pvz-content-search'); var rightGap; var navigationTop; if (!content || !leftNavigation) { return; } rightGap = Math.max( 0, window.innerWidth - content.getBoundingClientRect().right ); navigationTop = leftNavigation.getBoundingClientRect().top + window.scrollY; if (!Number.isFinite(navigationTop)) { navigationTop = CONTENT_TOP; } document.documentElement.style.setProperty( '--pvz-content-right-gap', rightGap + 'px' ); document.documentElement.style.setProperty( '--pvz-navigation-top', navigationTop + 'px' ); if (rightNavigation) { rightNavigation.style.setProperty( 'position', 'absolute', 'important' ); rightNavigation.style.setProperty( 'top', navigationTop + 'px', 'important' ); rightNavigation.style.setProperty( 'right', (rightGap + ACTION_OFFSET) + 'px', 'important' ); rightNavigation.style.setProperty( 'left', 'auto', 'important' ); rightNavigation.style.setProperty( 'display', 'flex', 'important' ); rightNavigation.style.setProperty( 'align-items', 'flex-end', 'important' ); rightNavigation.style.setProperty( 'justify-content', 'flex-end', 'important' ); rightNavigation.style.setProperty( 'width', 'max-content', 'important' ); rightNavigation.style.setProperty( 'margin', '0', 'important' ); rightNavigation.style.setProperty( 'transform', 'none', 'important' ); } if (search) { search.style.setProperty( 'position', 'absolute', 'important' ); search.style.setProperty( 'top', (navigationTop + SEARCH_DOWN_OFFSET) + 'px', 'important' ); search.style.setProperty( 'right', rightGap + 'px', 'important' ); search.style.setProperty( 'left', 'auto', 'important' ); search.style.setProperty( 'width', SEARCH_WIDTH + 'px', 'important' ); search.style.setProperty( 'max-width', SEARCH_WIDTH + 'px', 'important' ); } } function initV35Layout() { var observer; setCactionsOpen(false); syncV35Layout(); document.addEventListener( 'click', handleCactionsClick, true ); window.addEventListener( 'resize', syncV35Layout, { passive: true } ); window.addEventListener( 'orientationchange', syncV35Layout, { passive: true } ); observer = new MutationObserver(function () { window.requestAnimationFrame(syncV35Layout); }); observer.observe(document.body, { childList: true, subtree: true }); } if (document.readyState === 'loading') { document.addEventListener( 'DOMContentLoaded', initV35Layout, { once: true } ); } else { initV35Layout(); } }());
미디어위키:Gadget-Vector.js
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의 문서로
미디어위키 도움말
특수 문서 목록
위키 도구
위키 도구
축약된 URL 얻기
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록