Add legacy code

This commit is contained in:
Nicholas Jitkoff 2022-01-22 13:49:38 -08:00
parent 77f79f8ea9
commit e6204f6959
10 changed files with 279 additions and 4 deletions

View file

@ -1,9 +1,7 @@
#! /bin/bash
cd docs
cd docs/legacy
terser data.js > data-min.js
cd index.src
terser index.js > index-min.js
uglifycss index.css > index-min.css
awk '$1 == "@include"{system("cat " $2); next} 1' index.html > ../index.html
awk '$1 == "@include"{system("cat " $2); next} 1' index.src.html > index.html

18
docs/legacy.html Normal file

File diff suppressed because one or more lines are too long

1
docs/legacy/data-min.js vendored Normal file
View file

@ -0,0 +1 @@
var BASE64_MARKER=";base64,";var LZMA64_MARKER=";bxze64,";function compressDataURI(dataURI,callback){var base64Index=dataURI.indexOf(BASE64_MARKER);var base64=dataURI.substring(base64Index+BASE64_MARKER.length);stringToZip(base64ToByteArray(base64),(function(result){callback(dataURI.substring(0,base64Index)+LZMA64_MARKER+result)}))}function base64ToByteArray(base64){var raw=window.atob(base64);var rawLength=raw.length;var array=new Uint8Array(new ArrayBuffer(rawLength));for(i=0;i<rawLength;i++){array[i]=raw.charCodeAt(i)}return array}function stringToZip(string,callback){LZMA.compress(string,9,(function(result,error){if(error)console.error(error);var base64String=btoa(String.fromCharCode.apply(null,new Uint8Array(result)));return callback(base64String)}))}function decompressDataURI(dataURI,preamble,callback){var base64Index=dataURI.indexOf(LZMA64_MARKER);if(base64Index>0){var base64=dataURI.substring(base64Index+LZMA64_MARKER.length);zipToString(base64,(function(result){stringToData(result,(function(data){if(!data)return callback(undefined);callback(dataURI.substring(0,base64Index)+BASE64_MARKER+(preamble||"")+data.split(",")[1])}))}))}else{callback(dataURI)}}function zipToString(data,callback){var array=base64ToByteArray(data);LZMA.decompress(array,(function(result,error){if(!(typeof result==="string"))result=new Uint8Array(result);if(error)console.error(error);callback(result)}))}function stringToData(string,callback){if(!string.length)return callback("");var a=new FileReader;a.onload=function(e){callback(e.target.result.replace())};a.readAsDataURL(new Blob([string],{encoding:"UTF-8",type:"text/html;charset=UTF-8"}))}function dataToString(data,callback){var blob=dataURItoBlob(data);var reader=new FileReader;reader.onload=function(e){callback(reader.result)};reader.readAsText(blob)}function dataURItoBlob(dataURI){var byteString=atob(dataURI.split(",")[1]);var mimeString=dataURI.split(",")[0].split(":")[1].split(";")[0];var arrayBuffer=new ArrayBuffer(byteString.length);var _ia=new Uint8Array(arrayBuffer);for(var i=0;i<byteString.length;i++){_ia[i]=byteString.charCodeAt(i)}var dataView=new DataView(arrayBuffer);var blob=new Blob([dataView.buffer],{type:mimeString});return blob}

79
docs/legacy/data.js Normal file
View file

@ -0,0 +1,79 @@
var BASE64_MARKER = ';base64,';
var LZMA64_MARKER = ';bxze64,';
function compressDataURI(dataURI, callback) {
var base64Index = dataURI.indexOf(BASE64_MARKER);
var base64 = dataURI.substring(base64Index + BASE64_MARKER.length);
stringToZip(base64ToByteArray(base64), function(result) {
callback(dataURI.substring(0, base64Index) + LZMA64_MARKER + result)
})
}
function base64ToByteArray(base64) {
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for(i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
function stringToZip(string, callback) {
LZMA.compress(string, 9, function(result, error) {
if (error) console.error(error);
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(result)));
return callback(base64String);
});
}
function decompressDataURI(dataURI, preamble, callback) {
var base64Index = dataURI.indexOf(LZMA64_MARKER);
if (base64Index > 0) {
var base64 = dataURI.substring(base64Index + LZMA64_MARKER.length);
zipToString(base64, function(result) {
stringToData(result, function(data) {
if (!data) return callback(undefined);
callback(dataURI.substring(0, base64Index) + BASE64_MARKER + (preamble || '') + data.split(',')[1])
})
})
} else {
callback(dataURI)
}
}
function zipToString(data, callback) {
var array = base64ToByteArray(data);
LZMA.decompress(array, function(result, error) {
if (!(typeof result === 'string')) result = new Uint8Array(result)
if (error) console.error(error);
callback(result);
});
}
function stringToData(string, callback) {
if (!string.length) return callback("");
var a = new FileReader();
a.onload = function(e) { callback(e.target.result.replace()) }
a.readAsDataURL(new Blob([string], {encoding:"UTF-8",type:"text/html;charset=UTF-8"}));
}
function dataToString(data, callback) {
var blob = dataURItoBlob(data)
var reader = new FileReader();
reader.onload = function(e) { callback(reader.result) }
reader.readAsText(blob);
}
function dataURItoBlob(dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
var arrayBuffer = new ArrayBuffer(byteString.length);
var _ia = new Uint8Array(arrayBuffer);
for (var i = 0; i < byteString.length; i++) {
_ia[i] = byteString.charCodeAt(i);
}
var dataView = new DataView(arrayBuffer);
var blob = new Blob([dataView.buffer], { type: mimeString });
return blob;
}

1
docs/legacy/index-min.css vendored Normal file
View file

@ -0,0 +1 @@
body{font-family:sans-serif}#iframe{border:0;position:absolute;top:0;left:0;width:100%;height:100%}#edit{font-family:monospace;font-weight:bold;color:rgba(0,0,0,0.54);position:absolute;z-index:100;position:absolute;top:.85em;right:1em;display:none}#edit:not(:hover){text-decoration:none}#warning{position:absolute;border-radius:4px;background-color:#feecc2;padding:1em;font-size:16px;width:20em;z-index:100;top:10vh;left:50vw;margin-left:-10em}#warning:empty{display:none}body.toasting #iframe,body.toasting #edit{opacity:.5;pointer-events:none}body.toasting #toast{box-sizing:border-box;background-color:#feecc2;border-radius:4px;font-size:13px;left:50%;top:10px;margin-left:-160px;padding:1em;position:absolute;max-width:320px;z-index:101}body:not(.toasting) #toast,body.toasting #warning{display:none}

1
docs/legacy/index-min.js vendored Normal file
View file

@ -0,0 +1 @@
var HEAD_TAGS="PGJhc2UgdGFyZ2V0PSJfdG9wIj4K";var HEAD_TAGS_EXTENDED="PG1ldGEgY2hhcnNldD0idXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPjxiYXNlIHRhcmdldD0iX3RvcCI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj5ib2R5e21hcmdpbjowIGF1dG87cGFkZGluZzoxMnZtaW4gMTB2bWluO21heC13aWR0aDozNWVtO2xpbmUtaGVpZ2h0OjEuNWVtO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxzYW5zLXNlcmlmO3dvcmQtd3JhcDogYnJlYWstd29yZDt9PC9zdHlsZT4g";function dismiss(){if(document.getElementById("never").checked)window.localStorage.setItem("toasted",true);document.body.classList.remove("toasting")}window.onhashchange=window.onload=function(){var hash=window.location.hash.substring(1);if(hash.length<3){location.href="/edit"}else{var iframe=document.getElementById("iframe");var link=document.getElementById("edit");var preamble=undefined;var slashIndex=hash.indexOf("/");var title=hash.substring(0,slashIndex);document.title=title.length?decodeURIComponent(title.replace(/_/g," ")):location.hostname;hash=hash.substring(slashIndex+1);var editable=hash.charAt(0)=="?";if(editable){hash=hash.substring(1)}if(hash.indexOf("data:")!=0){var colon=hash.indexOf(":");if(colon>0&&colon<15){document.body.classList.remove("toasting");return window.location.replace(hash)}var compressed=true;preamble=HEAD_TAGS_EXTENDED;hash="data:text/html;charset=utf-8;"+(compressed?"bxze64,":"base64,")+hash}else if(hash.indexOf("data:text/html;")==0){preamble=HEAD_TAGS}else if(hash.indexOf("data:text/plain;")==0){preamble=HEAD_TAGS_EXTENDED}link.onclick=function(){location.href="/edit"+location.hash};var isIE=navigator.userAgent.match(/rv:11/);var isEdge=navigator.userAgent.match(/Edge\//);if((isEdge||isIE)&&location.href.length==2083){document.getElementById("warning").innerHTML='Edge only supports shorter URLs (maximum 2083 bytes).<br>Larger sites may require a different browser.<br><a href="http://reference.bitty.site">Learn more</a>'}decompressDataURI(hash,preamble,(function(hash){if(!hash)return;iframe.sandbox="allow-scripts allow-downloads allow-forms allow-top-navigation allow-popups allow-modals allow-popups-to-escape-sandbox";if(!isIE){if(hash)iframe.src=hash}else{dataToString(hash,(function(content){var doc=iframe.contentWindow.document;doc.open();doc.write(content);doc.close()}))}}));var link=document.getElementById("edit");link.href="/edit"+location.hash;link.style.display=editable?"block":"none"}};

62
docs/legacy/index.css Normal file
View file

@ -0,0 +1,62 @@
body {
font-family: sans-serif;
}
#iframe {
border: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#edit {
font-family: monospace;
font-weight: bold;
color: rgba(0, 0, 0, 0.54);
position: absolute;
z-index: 100;
position: absolute;
top: 0.85em;
right: 1em;
display: none;
}
#edit:not(:hover) {
text-decoration: none;
}
#warning {
position: absolute;
border-radius: 4px;
background-color: #feecc2;
padding: 1em;
font-size: 16px;
width: 20em;
z-index: 100;
top: 10vh;
left: 50vw;
margin-left: -10em;
}
#warning:empty {
display: none;
}
body.toasting #iframe,
body.toasting #edit {
opacity: 0.5;
pointer-events: none;
}
body.toasting #toast {
box-sizing: border-box;
background-color: #feecc2;
border-radius: 4px;
font-size: 13px;
left: 50%;
top: 10px;
margin-left: -160px;
padding: 1em;
position: absolute;
max-width: 320px;
z-index: 101;
}
body:not(.toasting) #toast,
body.toasting #warning {
display: none;
}

18
docs/legacy/index.html Normal file

File diff suppressed because one or more lines are too long

78
docs/legacy/index.js Normal file
View file

@ -0,0 +1,78 @@
var HEAD_TAGS = "PGJhc2UgdGFyZ2V0PSJfdG9wIj4K";
var HEAD_TAGS_EXTENDED =
"PG1ldGEgY2hhcnNldD0idXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPjxiYXNlIHRhcmdldD0iX3RvcCI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj5ib2R5e21hcmdpbjowIGF1dG87cGFkZGluZzoxMnZtaW4gMTB2bWluO21heC13aWR0aDozNWVtO2xpbmUtaGVpZ2h0OjEuNWVtO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxzYW5zLXNlcmlmO3dvcmQtd3JhcDogYnJlYWstd29yZDt9PC9zdHlsZT4g";
function dismiss() {
if (document.getElementById("never").checked) window.localStorage.setItem('toasted', true);
document.body.classList.remove("toasting")
}
window.onhashchange = window.onload = function() {
var hash = window.location.hash.substring(1);
if (hash.length < 3) {
location.href = "/edit";
} else {
// if (!window.localStorage.getItem('toasted')) document.body.classList.add("toasting");
var iframe = document.getElementById("iframe");
var link = document.getElementById("edit");
var preamble = undefined;
var slashIndex = hash.indexOf("/");
var title = hash.substring(0, slashIndex);
document.title = title.length
? decodeURIComponent(title.replace(/_/g, " "))
: location.hostname;
hash = hash.substring(slashIndex + 1);
var editable = hash.charAt(0) == "?";
if (editable) {
hash = hash.substring(1);
}
if (hash.indexOf("data:") != 0) {
var colon = hash.indexOf(":");
if ( colon > 0 && colon < 15) {
document.body.classList.remove("toasting");
return window.location.replace(hash);
}
var compressed = true;
preamble = HEAD_TAGS_EXTENDED;
hash =
"data:text/html;charset=utf-8;" +
(compressed ? "bxze64," : "base64,") +
hash;
} else if (hash.indexOf("data:text/html;") == 0) {
preamble = HEAD_TAGS;
} else if (hash.indexOf("data:text/plain;") == 0) {
preamble = HEAD_TAGS_EXTENDED;
}
link.onclick = function() {
location.href = "/edit" + location.hash;
};
var isIE = navigator.userAgent.match(/rv:11/);
var isEdge = navigator.userAgent.match(/Edge\//);
if ((isEdge || isIE) && location.href.length == 2083) {
document.getElementById("warning").innerHTML =
'Edge only supports shorter URLs (maximum 2083 bytes).<br>Larger sites may require a different browser.<br><a href="http://reference.bitty.site">Learn more</a>';
}
decompressDataURI(hash, preamble, function(hash) {
if (!hash) return;
iframe.sandbox =
"allow-scripts allow-downloads allow-forms allow-top-navigation allow-popups allow-modals allow-popups-to-escape-sandbox";
if (!isIE) {
if (hash) iframe.src = hash;
} else {
dataToString(hash, function(content) {
var doc = iframe.contentWindow.document;
doc.open();
doc.write(content);
doc.close();
});
}
});
var link = document.getElementById("edit");
link.href = "/edit" + location.hash;
link.style.display = editable ? "block" : "none";
}
};

View file

@ -0,0 +1,19 @@
<!DOCTYPE html><html x-manifest="manifest.appcache"><meta name="viewport" content="width=device-width, viewport-fit=cover"><meta name="description" content="itty bitty things can be conveyed in a link.">
<script type="text/javascript">
@include ../js/lzma/lzma-d-min.js
@include data-min.js
@include index-min.js
</script>
<style type="text/css">
@include index-min.css
</style>
<noscript>To use itty.bitty, please enable JavaScript.</noscript>
<div id="toast">itty.bitty is experimental technology that renders linked content from outside sources. <a href="http://toast.bitty.site" target="_blank">Learn&nbsp;more</a>.
<br><br>This content is only as trustworthy as its source, and it should be treated with the caution
you would show any insecure web page.
<br><br><button onclick="dismiss()">I understand</button> <input id="never" type="checkbox"><label for="never">Never show this</label></div>
<iframe id="iframe"></iframe>
<div id="warning"></div>
<a id="edit">edit</a>
</html>