diff --git a/static/fs-helpers.js b/static/fs-helpers.js deleted file mode 100644 index f33232d..0000000 --- a/static/fs-helpers.js +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright 2019 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -/* exported getFileHandle, getNewFileHandle, readFile, verifyPermission, - writeFile */ - -/** - * Open a handle to an existing file on the local file system. - * - * @return {!Promise} Handle to the existing file. - */ -function getFileHandle() { - // For Chrome 86 and later... - if ('showOpenFilePicker' in window) { - return window.showOpenFilePicker().then((handles) => handles[0]); - } - // For Chrome 85 and earlier... - return window.chooseFileSystemEntries(); -} - -/** - * Create a handle to a new (text) file on the local file system. - * - * @return {!Promise} Handle to the new file. - */ -function getNewFileHandle() { - // For Chrome 86 and later... - if ('showSaveFilePicker' in window) { - const opts = { - types: [{ - description: 'Text file', - accept: {'text/plain': ['.txt']}, - }], - }; - return window.showSaveFilePicker(opts); - } - // For Chrome 85 and earlier... - const opts = { - type: 'save-file', - accepts: [{ - description: 'Text file', - extensions: ['txt'], - mimeTypes: ['text/plain'], - }], - }; - return window.chooseFileSystemEntries(opts); -} - -/** - * Reads the raw text from a file. - * - * @param {File} file - * @return {!Promise} A promise that resolves to the parsed string. - */ -function readFile(file) { - // If the new .text() reader is available, use it. - if (file.text) { - return file.text(); - } - // Otherwise use the traditional file reading technique. - return _readFileLegacy(file); -} - -/** - * Reads the raw text from a file. - * - * @private - * @param {File} file - * @return {Promise} A promise that resolves to the parsed string. - */ -function _readFileLegacy(file) { - return new Promise((resolve) => { - const reader = new FileReader(); - reader.addEventListener('loadend', (e) => { - const text = e.srcElement.result; - resolve(text); - }); - reader.readAsText(file); - }); -} - -/** - * Writes the contents to disk. - * - * @param {FileSystemFileHandle} fileHandle File handle to write to. - * @param {string} contents Contents to write. - */ -async function writeFile(fileHandle, contents) { - // Support for Chrome 82 and earlier. - if (fileHandle.createWriter) { - // Create a writer (request permission if necessary). - const writer = await fileHandle.createWriter(); - // Write the full length of the contents - await writer.write(0, contents); - // Close the file and write the contents to disk - await writer.close(); - return; - } - // For Chrome 83 and later. - // Create a FileSystemWritableFileStream to write to. - const writable = await fileHandle.createWritable(); - // Write the contents of the file to the stream. - await writable.write(contents); - // Close the file and write the contents to disk. - await writable.close(); -} - -/** - * Verify the user has granted permission to read or write to the file, if - * permission hasn't been granted, request permission. - * - * @param {FileSystemFileHandle} fileHandle File handle to check. - * @param {boolean} withWrite True if write permission should be checked. - * @return {boolean} True if the user has granted read/write permission. - */ -async function verifyPermission(fileHandle, withWrite) { - const opts = {}; - if (withWrite) { - opts.writable = true; - // For Chrome 86 and later... - opts.mode = 'readwrite'; - } - // Check if we already have permission, if so, return true. - if (await fileHandle.queryPermission(opts) === 'granted') { - return true; - } - // Request permission to the file, if the user grants permission, return true. - if (await fileHandle.requestPermission(opts) === 'granted') { - return true; - } - // The user did nt grant permission, return false. - return false; -} diff --git a/static/lz-string.min.js b/static/lz-string.min.js deleted file mode 100644 index 2d1900a..0000000 --- a/static/lz-string.min.js +++ /dev/null @@ -1 +0,0 @@ -var LZString=function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;ne;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(o){return null==o?"":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return"";var e,t,i,s={},p={},u="",c="",a="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;ie;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(""!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join("")},decompress:function(o){return null==o?"":""==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v="",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return""}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return"";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module&&(module.exports=LZString);