mirror of
https://github.com/arfct/itty-bitty.git
synced 2026-03-11 08:54:33 +00:00
Restructure folders. Add watch detection
This commit is contained in:
parent
11cbae6aed
commit
8db34fa6c9
9 changed files with 30 additions and 15 deletions
1
docs/data-min.js
vendored
1
docs/data-min.js
vendored
|
|
@ -1 +0,0 @@
|
|||
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}
|
||||
|
|
@ -4,8 +4,8 @@
|
|||
<meta name="viewport" content="width=device-width">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; connect-src https://codepen.io; style-src 'unsafe-inline' 'self'">
|
||||
<title>itty.bitty</title>
|
||||
<script src="lzma/lzma_worker-min.js"></script>
|
||||
<script src="jquery-3.3.1.min.js"></script>
|
||||
<script src="js/lzma/lzma_worker-min.js"></script>
|
||||
<script src="js/jquery-3.3.1.min.js"></script>
|
||||
<script src="data.js"></script>
|
||||
<script src="edit.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="edit.css">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html><html xmanifest="manifest.appcache"><meta name="viewport" content="width=device-width, viewport-fit=cover" viewport-fit=cover"><meta name="description" content="itty bitty things can be conveyed in a link.">
|
||||
<link id="favicon" rel=icon href='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><text y=".9em">🛰</text></svg>'>
|
||||
<script src="/lzma/lzma-d-min.js"></script>
|
||||
<link id="favicon" rel=icon href=''>
|
||||
<script src="/js/lzma/lzma-d-min.js"></script>
|
||||
<script src="/data.js"></script>
|
||||
<script src="/index.js"></script>
|
||||
<link rel="stylesheet" href="/index.css">
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ window.onhashchange = window.onload = function() {
|
|||
var iframe = document.getElementById("iframe");
|
||||
var link = document.getElementById("edit");
|
||||
var preamble = undefined;
|
||||
var download = undefined;
|
||||
var renderMode = "data";
|
||||
|
||||
var slashIndex = hash.indexOf("/");
|
||||
var title = hash.substring(0, slashIndex);
|
||||
|
|
@ -72,13 +72,13 @@ window.onhashchange = window.onload = function() {
|
|||
let script = '<script src="' + location.origin + '/render/recipe.js"></script>'
|
||||
script = script + " ".repeat(3 - (script.length % 3))
|
||||
preamble = btoa(script);
|
||||
renderMode = "frame";
|
||||
} else {
|
||||
console.log("unknown type, rendering as download")
|
||||
let extension = title.split(".")
|
||||
document.querySelector("#dl-name").innerText = title;
|
||||
if (extension.length > 1) document.querySelector("#dl-image").innerText = extension.pop();
|
||||
download = document.querySelector("#download");
|
||||
download.download = title;
|
||||
renderMode = "download";
|
||||
}
|
||||
}
|
||||
link.onclick = function() {
|
||||
|
|
@ -87,6 +87,7 @@ window.onhashchange = window.onload = function() {
|
|||
|
||||
var isIE = navigator.userAgent.match(/rv:11/);
|
||||
var isEdge = navigator.userAgent.match(/Edge\//);
|
||||
var isWatch = (window.outerWidth < 200);
|
||||
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>';
|
||||
|
|
@ -95,24 +96,39 @@ window.onhashchange = window.onload = function() {
|
|||
if (!dataURL) return;
|
||||
iframe.sandbox = "allow-downloads allow-scripts allow-forms allow-top-navigation allow-popups allow-modals allow-popups-to-escape-sandbox";
|
||||
|
||||
dataURL = dataURL.replace("application/ld+json", "text/html");
|
||||
if (download) {
|
||||
if (isIE && renderMode == "data") renderMode = "frame";
|
||||
if (isWatch) {
|
||||
renderMode = "rewrite";
|
||||
}
|
||||
console.log("rendermode", renderMode)
|
||||
dataURL = dataURL.replace("application/ld+json", "text/plain");
|
||||
if (renderMode == "download") {
|
||||
try {
|
||||
download.href = dataURL
|
||||
download.click();
|
||||
let dl = document.querySelector("#download");
|
||||
dl.href = dataURL;
|
||||
dl.title = title;
|
||||
dl.click();
|
||||
document.body.classList.add("download");
|
||||
} catch (e) {
|
||||
iframe.src = dataURL;
|
||||
}
|
||||
} else if (!isIE) {
|
||||
} else if (renderMode == "data") {
|
||||
iframe.src = dataURL;
|
||||
} else {
|
||||
} else if (renderMode == "url") {
|
||||
location.href = dataURL;
|
||||
} else if (renderMode == "frame") {
|
||||
dataToString(dataURL, function(content) {
|
||||
var doc = iframe.contentWindow.document;
|
||||
doc.open();
|
||||
doc.write(content);
|
||||
doc.close();
|
||||
});
|
||||
} else if (renderMode == "rewrite") {
|
||||
dataToString(dataURL, function(content) {
|
||||
document.open();
|
||||
document.write(content);
|
||||
document.close();
|
||||
});
|
||||
}
|
||||
});
|
||||
var link = document.getElementById("edit");
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ exports.index = functions.https.onRequest((request, response) => {
|
|||
functions.logger.info("Hello logs!", );
|
||||
const agent = request.headers["user-agent"];
|
||||
let path = request.path;
|
||||
if (agent.indexOf("Twitterbot") != -1 || agent.indexOf("facebookexternalhit") != -1) {
|
||||
if (agent.indexOf("Twitterbot") != -1 || agent.indexOf("facebookexternalhit") != -1 || agent.indexOf("Slackbot-LinkExpanding") != -1 || agent.indexOf("Discordbot") != -1) {
|
||||
let components = path.split("/");
|
||||
components.shift();
|
||||
components.pop();
|
||||
|
|
|
|||
Loading…
Reference in a new issue