-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Create Beta 0.3 release * Delete .index.html.swp
- Loading branch information
Showing
16 changed files
with
4,274 additions
and
4 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,231 @@ | ||
/** Copied from https://www.w3.org/scripts/TR/2016/fixup.js 2018-06-14 */ | ||
|
||
/****************************************************************************** | ||
* JS Extension for the W3C Spec Style Sheet * | ||
* * | ||
* This code handles: * | ||
* - some fixup to improve the table of contents * | ||
* - the obsolete warning on outdated specs * | ||
******************************************************************************/ | ||
(function() { | ||
"use strict"; | ||
var ESCAPEKEY = 27; | ||
var collapseSidebarText = '<span aria-hidden="true">←</span> ' | ||
+ '<span>Collapse Sidebar</span>'; | ||
var expandSidebarText = '<span aria-hidden="true">→</span> ' | ||
+ '<span>Pop Out Sidebar</span>'; | ||
var tocJumpText = '<span aria-hidden="true">↑</span> ' | ||
+ '<span>Jump to Table of Contents</span>'; | ||
|
||
var sidebarMedia = window.matchMedia('screen and (min-width: 78em)'); | ||
var autoToggle = function(e){ toggleSidebar(e.matches) }; | ||
if(sidebarMedia.addListener) { | ||
sidebarMedia.addListener(autoToggle); | ||
} | ||
|
||
function toggleSidebar(on, skipScroll) { | ||
if (on == undefined) { | ||
on = !document.body.classList.contains('toc-sidebar'); | ||
} | ||
|
||
if (!skipScroll) { | ||
/* Don't scroll to compensate for the ToC if we're above it already. */ | ||
var headY = 0; | ||
var head = document.querySelector('.head'); | ||
if (head) { | ||
// terrible approx of "top of ToC" | ||
headY += head.offsetTop + head.offsetHeight; | ||
} | ||
skipScroll = window.scrollY < headY; | ||
} | ||
|
||
var toggle = document.getElementById('toc-toggle'); | ||
var tocNav = document.getElementById('toc'); | ||
if (on) { | ||
var tocHeight = tocNav.offsetHeight; | ||
document.body.classList.add('toc-sidebar'); | ||
document.body.classList.remove('toc-inline'); | ||
toggle.innerHTML = collapseSidebarText; | ||
if (!skipScroll) { | ||
window.scrollBy(0, 0 - tocHeight); | ||
} | ||
tocNav.focus(); | ||
sidebarMedia.addListener(autoToggle); // auto-collapse when out of room | ||
} | ||
else { | ||
document.body.classList.add('toc-inline'); | ||
document.body.classList.remove('toc-sidebar'); | ||
toggle.innerHTML = expandSidebarText; | ||
if (!skipScroll) { | ||
window.scrollBy(0, tocNav.offsetHeight); | ||
} | ||
if (toggle.matches(':hover')) { | ||
/* Unfocus button when not using keyboard navigation, | ||
because I don't know where else to send the focus. */ | ||
toggle.blur(); | ||
} | ||
} | ||
} | ||
|
||
function createSidebarToggle() { | ||
/* Create the sidebar toggle in JS; it shouldn't exist when JS is off. */ | ||
var toggle = document.createElement('a'); | ||
/* This should probably be a button, but appearance isn't standards-track.*/ | ||
toggle.id = 'toc-toggle'; | ||
toggle.class = 'toc-toggle'; | ||
toggle.href = '#toc'; | ||
toggle.innerHTML = collapseSidebarText; | ||
|
||
sidebarMedia.addListener(autoToggle); | ||
var toggler = function(e) { | ||
e.preventDefault(); | ||
sidebarMedia.removeListener(autoToggle); // persist explicit off states | ||
toggleSidebar(); | ||
return false; | ||
} | ||
toggle.addEventListener('click', toggler, false); | ||
|
||
|
||
/* Get <nav id=toc-nav>, or make it if we don't have one. */ | ||
var tocNav = document.getElementById('toc-nav'); | ||
if (!tocNav) { | ||
tocNav = document.createElement('p'); | ||
tocNav.id = 'toc-nav'; | ||
/* Prepend for better keyboard navigation */ | ||
document.body.insertBefore(tocNav, document.body.firstChild); | ||
} | ||
/* While we're at it, make sure we have a Jump to Toc link. */ | ||
var tocJump = document.getElementById('toc-jump'); | ||
if (!tocJump) { | ||
tocJump = document.createElement('a'); | ||
tocJump.id = 'toc-jump'; | ||
tocJump.href = '#toc'; | ||
tocJump.innerHTML = tocJumpText; | ||
tocNav.appendChild(tocJump); | ||
} | ||
|
||
tocNav.appendChild(toggle); | ||
} | ||
|
||
var toc = document.getElementById('toc'); | ||
if (toc) { | ||
if (!document.getElementById('toc-toggle')) { | ||
createSidebarToggle(); | ||
} | ||
toggleSidebar(sidebarMedia.matches, true); | ||
|
||
/* If the sidebar has been manually opened and is currently overlaying the text | ||
(window too small for the MQ to add the margin to body), | ||
then auto-close the sidebar once you click on something in there. */ | ||
toc.addEventListener('click', function(e) { | ||
if(e.target.tagName.toLowerCase() == "a" && document.body.classList.contains('toc-sidebar') && !sidebarMedia.matches) { | ||
toggleSidebar(false); | ||
} | ||
}, false); | ||
} | ||
else { | ||
console.warn("Can't find Table of Contents. Please use <nav id='toc'> around the ToC."); | ||
} | ||
|
||
/* Wrap tables in case they overflow */ | ||
var tables = document.querySelectorAll(':not(.overlarge) > table.data, :not(.overlarge) > table.index'); | ||
var numTables = tables.length; | ||
for (var i = 0; i < numTables; i++) { | ||
var table = tables[i]; | ||
if (!table.matches('.example *, .note *, .advisement *, .def *, .issue *')) { | ||
/* Overflowing colored boxes looks terrible, and also | ||
the kinds of tables inside these boxes | ||
are less likely to need extra space. */ | ||
var wrapper = document.createElement('div'); | ||
wrapper.className = 'overlarge'; | ||
table.parentNode.insertBefore(wrapper, table); | ||
wrapper.appendChild(table); | ||
} | ||
} | ||
|
||
/* Deprecation warning */ | ||
if (document.location.hostname === "www.w3.org") { | ||
var request = new XMLHttpRequest(); | ||
|
||
request.open('GET', '//www.w3.org/TR/tr-outdated-spec'); | ||
request.onload = function() { | ||
if (request.status < 200 || request.status >= 400) { | ||
return; | ||
} | ||
try { | ||
var currentSpec = JSON.parse(request.responseText); | ||
} catch (err) { | ||
console.error(err); | ||
return; | ||
} | ||
document.body.classList.add("outdated-spec"); | ||
var node = document.createElement("p"); | ||
node.classList.add("outdated-warning"); | ||
node.tabIndex = -1; | ||
node.setAttribute("role", "dialog"); | ||
node.setAttribute("aria-modal", "true"); | ||
node.setAttribute("aria-labelledby", "outdatedWarning"); | ||
if (currentSpec.style) { | ||
node.classList.add(currentSpec.style); | ||
} | ||
|
||
var frag = document.createDocumentFragment(); | ||
var heading = document.createElement("strong"); | ||
heading.id = "outdatedWarning"; | ||
heading.innerHTML = currentSpec.header; | ||
frag.appendChild(heading); | ||
|
||
var anchor = document.createElement("a"); | ||
anchor.id = "outdated-note"; | ||
anchor.href = currentSpec.latestUrl; | ||
anchor.innerText = currentSpec.latestUrl + "."; | ||
|
||
var warning = document.createElement("span"); | ||
warning.innerText = currentSpec.warning; | ||
warning.appendChild(anchor); | ||
frag.appendChild(warning); | ||
|
||
var button = document.createElement("button"); | ||
var handler = makeClickHandler(node); | ||
button.addEventListener("click", handler); | ||
button.innerHTML = "▾ collapse"; | ||
frag.appendChild(button); | ||
node.appendChild(frag); | ||
|
||
function makeClickHandler(node) { | ||
var isOpen = true; | ||
return function collapseWarning(event) { | ||
var button = event.target; | ||
isOpen = !isOpen; | ||
node.classList.toggle("outdated-collapsed"); | ||
document.body.classList.toggle("outdated-spec"); | ||
button.innerText = (isOpen) ? '\u25BE collapse' : '\u25B4 expand'; | ||
} | ||
} | ||
|
||
document.body.appendChild(node); | ||
button.focus(); | ||
window.onkeydown = function (event) { | ||
var isCollapsed = node.classList.contains("outdated-collapsed"); | ||
if (event.keyCode === ESCAPEKEY && !isCollapsed) { | ||
button.click(); | ||
} | ||
} | ||
|
||
document.addEventListener("focus", function(event) { | ||
var isCollapsed = node.classList.contains("outdated-collapsed"); | ||
var containsTarget = node.contains(event.target); | ||
if (!isCollapsed && !containsTarget) { | ||
event.stopPropagation(); | ||
node.focus(); | ||
} | ||
}, true); // use capture to enable event delegation as focus doesn't bubble up | ||
}; | ||
|
||
request.onerror = function() { | ||
console.error("Request to https://www.w3.org/TR/tr-outdated-spec failed."); | ||
}; | ||
|
||
request.send(); | ||
} | ||
})(); |
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* ocfl modification of respec unofficial style for | ||
candidate recommendations. Used with specStatus="ocfl-cr" | ||
2018-10-17 | ||
*/ | ||
|
||
/* Style for an "Unofficial Draft" */ | ||
|
||
@import "base.css"; | ||
|
||
body { | ||
background-image: url(ocfl-cr-logo.png); | ||
background-color: transparent; | ||
} | ||
|
||
html { | ||
background-image: url(ocfl-cr-watermark.png); | ||
background-repeat: repeat; | ||
background-attachment: fixed; | ||
} |
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
/* ocfl modification of respec unofficial style for | ||
recommendations. Used with specStatus="ocfl-final" | ||
2018-10-17 | ||
*/ | ||
|
||
/* Style for an "Unofficial Draft" */ | ||
|
||
@import "base.css"; | ||
|
||
body { | ||
background-image: url(ocfl-final-logo.png); | ||
background-color: transparent; | ||
} | ||
|
Oops, something went wrong.