Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 78x 78x 78x 78x 78x 78x | import * as FileSaver from 'file-saver';
import JSZip from 'jszip';
import { Ext, writeExt } from '../model/ext';
import { Page } from '../model/page';
import { Plugin, writePlugin } from '../model/plugin';
import { Ref, writeRef } from '../model/ref';
import { Tag } from '../model/tag';
import { writeTemplate } from '../model/template';
import { writeUser } from '../model/user';
import { Type } from '../store/view';
export function file(obj: any) {
return new Blob([JSON.stringify(obj, null, 2)], {type: 'text/plain;charset=utf-8'});
}
export function downloadTag(tag: Tag) {
FileSaver.saveAs(file(tag), (tag.name || tag.tag.replace('/', '_')) + '.json');
}
export function downloadRef(ref: Ref) {
FileSaver.saveAs(file(ref), (ref.title || ref.url.replace(/[^\[\]\w.(){}!@#$%^&*-]+/, '_')) + '.json');
}
function write(type: Type): any {
switch (type) {
case 'ref': return writeRef;
case 'ext': return writeExt;
case 'user': return writeUser;
case 'plugin': return writePlugin;
case 'template': return writeTemplate;
}
}
export async function downloadPage(type: Type, page: Page<any>, exts: Ext[], query: string) {
const zip = new JSZip();
zip.file(type + '.json', file(page.content!.map(write(type))));
if (exts.length) zip.file('ext.json', file(exts.map(writeExt)));
return zip.generateAsync({ type: 'blob' })
.then(content => FileSaver.saveAs(content, `${query.replace('/', '_')}` + (page.page.totalPages > 1 ? ` (page ${page.page.number + 1} of ${page.page.totalPages})` : '') + '.zip'));
}
export async function downloadSet(ref: Ref[], ext: Ext[], title: string) {
const zip = new JSZip();
zip.file('ref.json', file(ref.map(writeRef)));
zip.file('ext.json', file(ext.map(writeExt)));
return zip.generateAsync({ type: 'blob' })
.then(content => FileSaver.saveAs(content, title + '.zip'));
}
export function downloadPluginExport(plugin: Plugin, html: string) {
const title = plugin.name || plugin.tag.replace('/', '_');
const zip = new JSZip();
zip.file(title + '.html', html);
return zip.generateAsync({ type: 'blob' })
.then(content => FileSaver.saveAs(content, title + '.zip'));
}
|