1,优化URL报错,2,更新OFD组件 3,美化Excel 4,文本方法关闭字节流 5,新增多种类型文件预览 (#419)
1,优化URL报错 2,更新OFD组件 3,美化Excel 4,文本方法关闭字节流 5,新增xmind、eml、epub、"obj", "3ds", "stl", "ply", "off", "3dm", "fbx", "dae", "wrl", "3mf", "ifc","glb","o3dv","gltf","stp","bim","fcstd","step","iges","brep"格式 Co-authored-by: gaoxiongzaq <admin@cxcp.com>pull/63/head
|
@ -237,6 +237,15 @@ ofd 类型文件支持版本,本次版本重要功能均由社区开发贡献
|
||||||
1. 新增spring boot profile,支持多环境配置
|
1. 新增spring boot profile,支持多环境配置
|
||||||
1. 引入pdf.js预览doc等文件,支持doc标题生成pdf预览菜单,支持手机端预览
|
1. 引入pdf.js预览doc等文件,支持doc标题生成pdf预览菜单,支持手机端预览
|
||||||
|
|
||||||
|
|
||||||
|
### 关于引用
|
||||||
|
ofd 引用于 [ofdview ](https://gitee.com/cnofd/ofdview ) 开源协议 Apache-2.0
|
||||||
|
CAD 引用于 aspose-cad 测试版本 商用请自行购买
|
||||||
|
xmind 引用于 [ xmind-embed-viewer](https://github.com/xmindltd/xmind-embed-viewer) 开源协议 MIT
|
||||||
|
epub 引用于 [ epub.js](https://github.com/futurepress/epub.js) 开源协议 BSD许可证
|
||||||
|
压缩包 引用于 [sevenzipjbinding](https://github.com/borisbrodski/sevenzipjbinding )开源协议LGPL
|
||||||
|
3D 引用于 [Online3DViewer](https://github.com/kovacsv/Online3DViewer )开源协议MIT
|
||||||
|
|
||||||
### 使用登记
|
### 使用登记
|
||||||
如果这个项目解决了你的实际问题,可在 https://gitee.com/kekingcn/file-online-preview/issues/IGSBV
|
如果这个项目解决了你的实际问题,可在 https://gitee.com/kekingcn/file-online-preview/issues/IGSBV
|
||||||
登记下,如果节省了你的三方预览服务费用,也愿意支持下的话,可点击下方【捐助】请作者喝杯咖啡,也是非常感谢
|
登记下,如果节省了你的三方预览服务费用,也愿意支持下的话,可点击下方【捐助】请作者喝杯咖啡,也是非常感谢
|
||||||
|
|
5
pom.xml
|
@ -11,7 +11,7 @@
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
|
|
||||||
<jodconverter.version>4.4.4</jodconverter.version>
|
<jodconverter.version>4.4.5</jodconverter.version>
|
||||||
<spring.boot.version>2.4.2</spring.boot.version>
|
<spring.boot.version>2.4.2</spring.boot.version>
|
||||||
<poi.version>5.2.2</poi.version>
|
<poi.version>5.2.2</poi.version>
|
||||||
<xdocreport.version>1.0.6</xdocreport.version>
|
<xdocreport.version>1.0.6</xdocreport.version>
|
||||||
|
@ -19,7 +19,6 @@
|
||||||
<junrar.version>7.4.1</junrar.version>
|
<junrar.version>7.4.1</junrar.version>
|
||||||
<redisson.version>3.2.0</redisson.version>
|
<redisson.version>3.2.0</redisson.version>
|
||||||
<sevenzipjbinding.version>16.02-2.01</sevenzipjbinding.version>
|
<sevenzipjbinding.version>16.02-2.01</sevenzipjbinding.version>
|
||||||
<tukaani.version>1.8</tukaani.version>
|
|
||||||
<jchardet.version>1.0</jchardet.version>
|
<jchardet.version>1.0</jchardet.version>
|
||||||
<antlr.version>2.7.7</antlr.version>
|
<antlr.version>2.7.7</antlr.version>
|
||||||
<concurrentlinkedhashmap.version>1.4.2</concurrentlinkedhashmap.version>
|
<concurrentlinkedhashmap.version>1.4.2</concurrentlinkedhashmap.version>
|
||||||
|
@ -38,7 +37,7 @@
|
||||||
<commons-cli.version>1.2</commons-cli.version>
|
<commons-cli.version>1.2</commons-cli.version>
|
||||||
<commons-net.version>3.6</commons-net.version>
|
<commons-net.version>3.6</commons-net.version>
|
||||||
<commons-lang3.version>3.7</commons-lang3.version>
|
<commons-lang3.version>3.7</commons-lang3.version>
|
||||||
<commons-compress.version>1.21</commons-compress.version>
|
|
||||||
|
|
||||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
|
|
|
@ -112,25 +112,12 @@
|
||||||
<artifactId>redisson</artifactId>
|
<artifactId>redisson</artifactId>
|
||||||
<version>${redisson.version}</version>
|
<version>${redisson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 解压(apache) -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.commons</groupId>
|
|
||||||
<artifactId>commons-compress</artifactId>
|
|
||||||
<version>${commons-compress.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- 解压(rar)-->
|
<!-- 解压(rar)-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.junrar</groupId>
|
<groupId>com.github.junrar</groupId>
|
||||||
<artifactId>junrar</artifactId>
|
<artifactId>junrar</artifactId>
|
||||||
<version>${junrar.version}</version>
|
<version>${junrar.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- 解压(7z)-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.tukaani</groupId>
|
|
||||||
<artifactId>xz</artifactId>
|
|
||||||
<version>${tukaani.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.sourceforge.jchardet</groupId>
|
<groupId>net.sourceforge.jchardet</groupId>
|
||||||
<artifactId>jchardet</artifactId>
|
<artifactId>jchardet</artifactId>
|
||||||
|
@ -200,14 +187,6 @@
|
||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${pom.basedir}/lib/aspose-cad-19.9.jar</systemPath>
|
<systemPath>${pom.basedir}/lib/aspose-cad-19.9.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- 编码识别 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cpdetector</groupId>
|
|
||||||
<artifactId>cpdetector</artifactId>
|
|
||||||
<version>1.04</version>
|
|
||||||
<scope>system</scope>
|
|
||||||
<systemPath>${pom.basedir}/lib/cpdetector-1.04.jar</systemPath>
|
|
||||||
</dependency>
|
|
||||||
<!-- url 规范化 -->
|
<!-- url 规范化 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.mola.galimatias</groupId>
|
<groupId>io.mola.galimatias</groupId>
|
||||||
|
|
|
@ -25,11 +25,19 @@ public enum FileType {
|
||||||
CAD("cadFilePreviewImpl"),
|
CAD("cadFilePreviewImpl"),
|
||||||
TIFF("tiffFilePreviewImpl"),
|
TIFF("tiffFilePreviewImpl"),
|
||||||
OFD("ofdFilePreviewImpl"),
|
OFD("ofdFilePreviewImpl"),
|
||||||
SVG("svgFilePreviewImpl");
|
EML("emlFilePreviewImpl"),
|
||||||
|
Online3D("online3DFilePreviewImpl"),
|
||||||
|
XMIND("xmindFilePreviewImpl"),
|
||||||
|
SVG("svgFilePreviewImpl"),
|
||||||
|
Epub("epubFilePreviewImpl");
|
||||||
|
|
||||||
private static final String[] OFFICE_TYPES = {"docx", "wps", "doc", "docm", "xls", "xlsx", "csv" ,"xlsm", "ppt", "pptx", "vsd", "rtf", "odt", "wmf", "emf", "dps", "et", "ods", "ots", "tsv", "odp", "otp", "sxi", "ott", "vsdx", "fodt", "fods", "xltx","tga","psd"};
|
private static final String[] OFFICE_TYPES = {"docx", "wps", "doc", "docm", "xls", "xlsx", "csv" ,"xlsm", "ppt", "pptx", "vsd", "rtf", "odt", "wmf", "emf", "dps", "et", "ods", "ots", "tsv", "odp", "otp", "sxi", "ott", "vsdx", "fodt", "fods", "xltx","tga","psd"};
|
||||||
private static final String[] PICTURE_TYPES = {"jpg", "jpeg", "png", "gif", "bmp", "ico", "jfif", "webp"};
|
private static final String[] PICTURE_TYPES = {"jpg", "jpeg", "png", "gif", "bmp", "ico", "jfif", "webp"};
|
||||||
private static final String[] ARCHIVE_TYPES = {"rar", "zip", "jar", "7-zip", "tar", "gzip", "7z"};
|
private static final String[] ARCHIVE_TYPES = {"rar", "zip", "jar", "7-zip", "tar", "gzip", "7z"};
|
||||||
|
private static final String[] Online3D_TYPES = {"obj", "3ds", "stl", "ply", "off", "3dm", "fbx", "dae", "wrl", "3mf", "ifc","glb","o3dv","gltf","stp","bim","fcstd","step","iges","brep"};
|
||||||
|
private static final String[] EML_TYPES = {"eml"};
|
||||||
|
private static final String[] XMIND_TYPES = {"xmind"};
|
||||||
|
private static final String[] Epub_TYPES = {"epub"};
|
||||||
private static final String[] TIFF_TYPES = {"tif", "tiff"};
|
private static final String[] TIFF_TYPES = {"tif", "tiff"};
|
||||||
private static final String[] OFD_TYPES = {"ofd"};
|
private static final String[] OFD_TYPES = {"ofd"};
|
||||||
private static final String[] SVG_TYPES = {"svg"};
|
private static final String[] SVG_TYPES = {"svg"};
|
||||||
|
@ -74,6 +82,18 @@ public enum FileType {
|
||||||
for (String svg : SVG_TYPES) {
|
for (String svg : SVG_TYPES) {
|
||||||
FILE_TYPE_MAPPER.put(svg, FileType.SVG);
|
FILE_TYPE_MAPPER.put(svg, FileType.SVG);
|
||||||
}
|
}
|
||||||
|
for (String epub : Epub_TYPES) {
|
||||||
|
FILE_TYPE_MAPPER.put(epub, FileType.Epub);
|
||||||
|
}
|
||||||
|
for (String eml : EML_TYPES) {
|
||||||
|
FILE_TYPE_MAPPER.put(eml, FileType.EML);
|
||||||
|
}
|
||||||
|
for (String xmind : XMIND_TYPES) {
|
||||||
|
FILE_TYPE_MAPPER.put(xmind, FileType.XMIND);
|
||||||
|
}
|
||||||
|
for (String online3D : Online3D_TYPES) {
|
||||||
|
FILE_TYPE_MAPPER.put(online3D, FileType.Online3D);
|
||||||
|
}
|
||||||
FILE_TYPE_MAPPER.put("md", FileType.MARKDOWN);
|
FILE_TYPE_MAPPER.put("md", FileType.MARKDOWN);
|
||||||
FILE_TYPE_MAPPER.put("xml", FileType.XML);
|
FILE_TYPE_MAPPER.put("xml", FileType.XML);
|
||||||
FILE_TYPE_MAPPER.put("pdf", FileType.PDF);
|
FILE_TYPE_MAPPER.put("pdf", FileType.PDF);
|
||||||
|
|
|
@ -112,7 +112,7 @@ public class CompressFileReader {
|
||||||
//去除字符串中的空格 制表符 换行 回车
|
//去除字符串中的空格 制表符 换行 回车
|
||||||
Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");
|
Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");
|
||||||
Matcher m = p.matcher(strName);
|
Matcher m = p.matcher(strName);
|
||||||
String after = m.replaceAll("");
|
String after = m.replaceAll("").replaceAll("\\+", "").replaceAll("#", "").replaceAll("&", "");
|
||||||
//去除字符串中的标点符号
|
//去除字符串中的标点符号
|
||||||
String temp = after.replaceAll("\\p{P}", "");
|
String temp = after.replaceAll("\\p{P}", "");
|
||||||
//处理之后转换成字符数组
|
//处理之后转换成字符数组
|
||||||
|
|
|
@ -151,7 +151,7 @@ public class FileHandlerService {
|
||||||
// 添加sheet控制头
|
// 添加sheet控制头
|
||||||
sb.append("<script src=\"js/jquery-3.6.1.min.js\" type=\"text/javascript\"></script>");
|
sb.append("<script src=\"js/jquery-3.6.1.min.js\" type=\"text/javascript\"></script>");
|
||||||
sb.append("<script src=\"js/excel.header.js\" type=\"text/javascript\"></script>");
|
sb.append("<script src=\"js/excel.header.js\" type=\"text/javascript\"></script>");
|
||||||
sb.append("<link rel=\"stylesheet\" href=\"bootstrap/css/bootstrap.min.css\">");
|
sb.append("<link rel=\"stylesheet\" href=\"bootstrap/css/xlsx.css\">");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -273,10 +273,16 @@ public class FileHandlerService {
|
||||||
if (url.contains("?fileKey=")) {
|
if (url.contains("?fileKey=")) {
|
||||||
attribute.setSkipDownLoad(true);
|
attribute.setSkipDownLoad(true);
|
||||||
}
|
}
|
||||||
|
String urlStrr = url.toLowerCase(); //转换为小写对比
|
||||||
|
boolean wjl = WebUtils.kuayu("&fullfilename=", urlStrr); //判断是否启用文件流
|
||||||
|
if(wjl){
|
||||||
|
url = url.substring(0,url.lastIndexOf("&")); //删除添加的文件流内容
|
||||||
|
}
|
||||||
|
url = WebUtils.encodeUrlFileName(url);
|
||||||
|
fileName = KkFileUtils.htmlEscape(fileName); //文件名处理
|
||||||
attribute.setType(type);
|
attribute.setType(type);
|
||||||
attribute.setName(fileName);
|
attribute.setName(fileName);
|
||||||
attribute.setSuffix(suffix);
|
attribute.setSuffix(suffix);
|
||||||
url = WebUtils.encodeUrlFileName(url);
|
|
||||||
attribute.setUrl(url);
|
attribute.setUrl(url);
|
||||||
if (req != null) {
|
if (req != null) {
|
||||||
String officePreviewType = req.getParameter("officePreviewType");
|
String officePreviewType = req.getParameter("officePreviewType");
|
||||||
|
|
|
@ -18,6 +18,10 @@ public interface FilePreview {
|
||||||
String TIFF_FILE_PREVIEW_PAGE = "tiff";
|
String TIFF_FILE_PREVIEW_PAGE = "tiff";
|
||||||
String OFD_FILE_PREVIEW_PAGE = "ofd";
|
String OFD_FILE_PREVIEW_PAGE = "ofd";
|
||||||
String SVG_FILE_PREVIEW_PAGE = "svg";
|
String SVG_FILE_PREVIEW_PAGE = "svg";
|
||||||
|
String Online3D_FILE_PAGE = "online3D";
|
||||||
|
String EpubFilePreviewImpl = "epub";
|
||||||
|
String XMIND_FILE_PREVIEW_PAGE = "xmind";
|
||||||
|
String EML_FILE_PREVIEW_PAGE = "eml";
|
||||||
String OFFICE_PICTURE_FILE_PREVIEW_PAGE = "officePicture";
|
String OFFICE_PICTURE_FILE_PREVIEW_PAGE = "officePicture";
|
||||||
String TXT_FILE_PREVIEW_PAGE = "txt";
|
String TXT_FILE_PREVIEW_PAGE = "txt";
|
||||||
String CODE_FILE_PREVIEW_PAGE = "code";
|
String CODE_FILE_PREVIEW_PAGE = "code";
|
||||||
|
|
|
@ -31,8 +31,7 @@ public class CompressFilePreviewImpl implements FilePreview {
|
||||||
@Override
|
@Override
|
||||||
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
||||||
String fileName=fileAttribute.getName();
|
String fileName=fileAttribute.getName();
|
||||||
String suffix=fileAttribute.getSuffix();
|
String fileTree;
|
||||||
String fileTree = null;
|
|
||||||
// 判断文件名是否存在(redis缓存读取)
|
// 判断文件名是否存在(redis缓存读取)
|
||||||
if (!StringUtils.hasText(fileHandlerService.getConvertedFile(fileName)) || !ConfigConstants.isCacheEnabled()) {
|
if (!StringUtils.hasText(fileHandlerService.getConvertedFile(fileName)) || !ConfigConstants.isCacheEnabled()) {
|
||||||
ReturnResponse<String> response = DownloadUtils.downLoad(fileAttribute, fileName);
|
ReturnResponse<String> response = DownloadUtils.downLoad(fileAttribute, fileName);
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package cn.keking.service.impl;
|
||||||
|
|
||||||
|
import cn.keking.model.FileAttribute;
|
||||||
|
import cn.keking.service.FilePreview;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* EML 文件处理
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class EmlFilePreviewImpl implements FilePreview {
|
||||||
|
|
||||||
|
private final PictureFilePreviewImpl pictureFilePreview;
|
||||||
|
|
||||||
|
public EmlFilePreviewImpl(PictureFilePreviewImpl pictureFilePreview) {
|
||||||
|
this.pictureFilePreview = pictureFilePreview;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
||||||
|
pictureFilePreview.filePreviewHandle(url,model,fileAttribute);
|
||||||
|
return EML_FILE_PREVIEW_PAGE;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package cn.keking.service.impl;
|
||||||
|
|
||||||
|
import cn.keking.model.FileAttribute;
|
||||||
|
import cn.keking.service.FilePreview;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* svg 图片文件处理
|
||||||
|
* @author kl (http://kailing.pub)
|
||||||
|
* @since 2021/2/8
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class EpubFilePreviewImpl implements FilePreview {
|
||||||
|
|
||||||
|
private final PictureFilePreviewImpl pictureFilePreview;
|
||||||
|
|
||||||
|
public EpubFilePreviewImpl(PictureFilePreviewImpl pictureFilePreview) {
|
||||||
|
this.pictureFilePreview = pictureFilePreview;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
||||||
|
pictureFilePreview.filePreviewHandle(url,model,fileAttribute);
|
||||||
|
return EpubFilePreviewImpl;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package cn.keking.service.impl;
|
||||||
|
|
||||||
|
import cn.keking.model.FileAttribute;
|
||||||
|
import cn.keking.service.FilePreview;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by kl on 2018/1/17.
|
||||||
|
* Content :图片文件处理
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class Online3DFilePreviewImpl implements FilePreview {
|
||||||
|
|
||||||
|
private final PictureFilePreviewImpl pictureFilePreview;
|
||||||
|
|
||||||
|
public Online3DFilePreviewImpl(PictureFilePreviewImpl pictureFilePreview) {
|
||||||
|
this.pictureFilePreview = pictureFilePreview;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
||||||
|
pictureFilePreview.filePreviewHandle(url,model,fileAttribute);
|
||||||
|
return Online3D_FILE_PAGE;
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ import cn.keking.service.FileHandlerService;
|
||||||
import cn.keking.service.FilePreview;
|
import cn.keking.service.FilePreview;
|
||||||
import cn.keking.utils.DownloadUtils;
|
import cn.keking.utils.DownloadUtils;
|
||||||
import cn.keking.utils.EncodingDetects;
|
import cn.keking.utils.EncodingDetects;
|
||||||
|
import cn.keking.utils.KkFileUtils;
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
|
@ -14,8 +15,6 @@ import org.springframework.web.util.HtmlUtils;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Paths;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by kl on 2018/1/17.
|
* Created by kl on 2018/1/17.
|
||||||
|
@ -46,7 +45,7 @@ public class SimTextFilePreviewImpl implements FilePreview {
|
||||||
fileHandlerService.addConvertedFile(fileName, filePath); //加入缓存
|
fileHandlerService.addConvertedFile(fileName, filePath); //加入缓存
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
String fileData = HtmlUtils.htmlEscape(textData(filePath));
|
String fileData = HtmlUtils.htmlEscape(textData(filePath,fileName));
|
||||||
model.addAttribute("textData", Base64.encodeBase64String(fileData.getBytes()));
|
model.addAttribute("textData", Base64.encodeBase64String(fileData.getBytes()));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
return otherFilePreview.notSupportedFile(model, fileAttribute, e.getLocalizedMessage());
|
return otherFilePreview.notSupportedFile(model, fileAttribute, e.getLocalizedMessage());
|
||||||
|
@ -55,7 +54,7 @@ public class SimTextFilePreviewImpl implements FilePreview {
|
||||||
}
|
}
|
||||||
String fileData = null;
|
String fileData = null;
|
||||||
try {
|
try {
|
||||||
fileData = HtmlUtils.htmlEscape(textData(filePath));
|
fileData = HtmlUtils.htmlEscape(textData(filePath,fileName));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -63,8 +62,11 @@ public class SimTextFilePreviewImpl implements FilePreview {
|
||||||
return TXT_FILE_PREVIEW_PAGE;
|
return TXT_FILE_PREVIEW_PAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String textData(String filePath) throws IOException {
|
private String textData(String filePath,String fileName) throws IOException {
|
||||||
File file = new File(filePath);
|
File file = new File(filePath);
|
||||||
|
if (KkFileUtils.isIllegalFileName(fileName)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (!file.exists() || file.length() == 0) {
|
if (!file.exists() || file.length() == 0) {
|
||||||
return "";
|
return "";
|
||||||
} else {
|
} else {
|
||||||
|
@ -72,15 +74,14 @@ public class SimTextFilePreviewImpl implements FilePreview {
|
||||||
if ("ASCII".equals(charset)) {
|
if ("ASCII".equals(charset)) {
|
||||||
charset = StandardCharsets.US_ASCII.name();
|
charset = StandardCharsets.US_ASCII.name();
|
||||||
}
|
}
|
||||||
BufferedReader br = new BufferedReader(new InputStreamReader(Files.newInputStream(Paths.get(filePath)), charset));
|
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), charset));
|
||||||
StringBuilder result = new StringBuilder();
|
StringBuilder result = new StringBuilder();
|
||||||
String line;
|
String line;
|
||||||
while ((line = br.readLine()) != null) {
|
while ((line = br.readLine()) != null) {
|
||||||
result.append(line).append("\r\n");
|
result.append(line).append("\r\n");
|
||||||
}
|
}
|
||||||
|
br.close();
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package cn.keking.service.impl;
|
||||||
|
|
||||||
|
import cn.keking.model.FileAttribute;
|
||||||
|
import cn.keking.service.FilePreview;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* svg 图片文件处理
|
||||||
|
* @author kl (http://kailing.pub)
|
||||||
|
* @since 2021/2/8
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class XmindFilePreviewImpl implements FilePreview {
|
||||||
|
|
||||||
|
private final PictureFilePreviewImpl pictureFilePreview;
|
||||||
|
|
||||||
|
public XmindFilePreviewImpl(PictureFilePreviewImpl pictureFilePreview) {
|
||||||
|
this.pictureFilePreview = pictureFilePreview;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
||||||
|
pictureFilePreview.filePreviewHandle(url,model,fileAttribute);
|
||||||
|
return XMIND_FILE_PREVIEW_PAGE;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,10 +3,13 @@ package cn.keking.utils;
|
||||||
import cn.keking.config.ConfigConstants;
|
import cn.keking.config.ConfigConstants;
|
||||||
import cn.keking.model.FileAttribute;
|
import cn.keking.model.FileAttribute;
|
||||||
import cn.keking.model.ReturnResponse;
|
import cn.keking.model.ReturnResponse;
|
||||||
|
import cn.keking.service.FileHandlerService;
|
||||||
import io.mola.galimatias.GalimatiasParseException;
|
import io.mola.galimatias.GalimatiasParseException;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
import org.springframework.web.util.HtmlUtils;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
|
@ -35,6 +38,12 @@ public class DownloadUtils {
|
||||||
String urlStr = fileAttribute.getUrl().replaceAll("\\+", "%20");
|
String urlStr = fileAttribute.getUrl().replaceAll("\\+", "%20");
|
||||||
ReturnResponse<String> response = new ReturnResponse<>(0, "下载成功!!!", "");
|
ReturnResponse<String> response = new ReturnResponse<>(0, "下载成功!!!", "");
|
||||||
String realPath = DownloadUtils.getRelFilePath(fileName, fileAttribute);
|
String realPath = DownloadUtils.getRelFilePath(fileName, fileAttribute);
|
||||||
|
if(!StringUtils.hasText(realPath)){
|
||||||
|
response.setCode(1);
|
||||||
|
response.setContent(null);
|
||||||
|
response.setMsg("下载失败:文件名不合法!" + urlStr);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
URL url = WebUtils.normalizedURL(urlStr);
|
URL url = WebUtils.normalizedURL(urlStr);
|
||||||
if (!fileAttribute.getSkipDownLoad()) {
|
if (!fileAttribute.getSkipDownLoad()) {
|
||||||
|
@ -82,18 +91,20 @@ public class DownloadUtils {
|
||||||
} else { // 文件后缀不一致时,以type为准(针对simText【将类txt文件转为txt】)
|
} else { // 文件后缀不一致时,以type为准(针对simText【将类txt文件转为txt】)
|
||||||
fileName = fileName.replace(fileName.substring(fileName.lastIndexOf(".") + 1), type);
|
fileName = fileName.replace(fileName.substring(fileName.lastIndexOf(".") + 1), type);
|
||||||
}
|
}
|
||||||
|
// 判断是否非法地址
|
||||||
|
if (KkFileUtils.isIllegalFileName(fileName)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
String realPath = fileDir + fileName;
|
String realPath = fileDir + fileName;
|
||||||
File dirFile = new File(fileDir);
|
File dirFile = new File(fileDir);
|
||||||
if (!dirFile.exists() && !dirFile.mkdirs()) {
|
if (!dirFile.exists() && !dirFile.mkdirs()) {
|
||||||
logger.error("创建目录【{}】失败,可能是权限不够,请检查", fileDir);
|
logger.error("创建目录【{}】失败,可能是权限不够,请检查", fileDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文件已在本地存在,跳过文件下载
|
// 文件已在本地存在,跳过文件下载
|
||||||
File realFile = new File(realPath);
|
File realFile = new File(realPath);
|
||||||
if (realFile.exists()) {
|
if (realFile.exists()) {
|
||||||
fileAttribute.setSkipDownLoad(true);
|
fileAttribute.setSkipDownLoad(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return realPath;
|
return realPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
package cn.keking.utils;
|
package cn.keking.utils;
|
||||||
|
|
||||||
import cpdetector.CharsetPrinter;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.util.HtmlUtils;
|
import org.springframework.web.util.HtmlUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -45,7 +43,18 @@ public class KkFileUtils {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 检查是否是数字
|
||||||
|
* @param str 文件名
|
||||||
|
* @return 合规结果,true:不合规,false:合规
|
||||||
|
*/
|
||||||
|
public static boolean isInteger(String str) {
|
||||||
|
if(StringUtils.hasText(str)){
|
||||||
|
boolean strResult = str.matches("-?[0-9]+.?[0-9]*");
|
||||||
|
return strResult ;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 判断url是否是http资源
|
* 判断url是否是http资源
|
||||||
*
|
*
|
||||||
|
@ -89,41 +98,16 @@ public class KkFileUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 检测文件编码格式
|
|
||||||
*
|
|
||||||
* @param filePath 绝对路径
|
|
||||||
* @return 编码格式
|
|
||||||
*/
|
|
||||||
public static String getFileEncode(String filePath) {
|
|
||||||
return getFileEncode(new File(filePath));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 检测文件编码格式
|
|
||||||
*
|
|
||||||
* @param file 检测的文件
|
|
||||||
* @return 编码格式
|
|
||||||
*/
|
|
||||||
public static String getFileEncode(File file) {
|
|
||||||
CharsetPrinter cp = new CharsetPrinter();
|
|
||||||
try {
|
|
||||||
String encoding = cp.guessEncoding(file);
|
|
||||||
LOGGER.info("检测到文件【{}】编码: {}", file.getAbsolutePath(), encoding);
|
|
||||||
return encoding;
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.warn("文件编码获取失败,采用默认的编码格式:UTF-8", e);
|
|
||||||
return DEFAULT_FILE_ENCODING;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String htmlEscape(String input) {
|
public static String htmlEscape(String input) {
|
||||||
if(StringUtils.hasText(input)){
|
if(StringUtils.hasText(input)){
|
||||||
|
//input = input.replaceAll("\\{", "%7B").replaceAll("}", "%7D").replaceAll("\\\\", "%5C");
|
||||||
return HtmlUtils.htmlEscape(input);
|
return HtmlUtils.htmlEscape(input);
|
||||||
}
|
}
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过文件名获取文件后缀
|
* 通过文件名获取文件后缀
|
||||||
*
|
*
|
||||||
|
|
|
@ -8,12 +8,13 @@ import javax.servlet.ServletRequest;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLDecoder;
|
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author : kl
|
* @author : kl
|
||||||
|
@ -173,7 +174,23 @@ public class WebUtils {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 判断地址是否正确
|
||||||
|
* 高 2022/12/17
|
||||||
|
*/
|
||||||
|
public static boolean hefaurl (String url) {
|
||||||
|
String regStr = "^((https|http|ftp|rtsp|mms|file)://)";//[.?*]表示匹配的就是本身
|
||||||
|
Pattern pattern = Pattern.compile(regStr);
|
||||||
|
Matcher matcher = pattern.matcher(url);
|
||||||
|
return matcher.find();
|
||||||
|
}
|
||||||
|
public static boolean kuayu(String host, String wjl) { //查询域名是否相同
|
||||||
|
if (wjl.contains(host)) {
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 将 Base64 字符串解码,再解码URL参数, 默认使用 UTF-8
|
* 将 Base64 字符串解码,再解码URL参数, 默认使用 UTF-8
|
||||||
* @param source 原始 Base64 字符串
|
* @param source 原始 Base64 字符串
|
||||||
|
@ -183,11 +200,10 @@ public class WebUtils {
|
||||||
*/
|
*/
|
||||||
public static String decodeUrl(String source) {
|
public static String decodeUrl(String source) {
|
||||||
String url = decodeBase64String(source, StandardCharsets.UTF_8);
|
String url = decodeBase64String(source, StandardCharsets.UTF_8);
|
||||||
try {
|
if (! StringUtils.isNotBlank(url)){
|
||||||
url = URLDecoder.decode(url, StandardCharsets.UTF_8.name());
|
return null;
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,9 +219,13 @@ public class WebUtils {
|
||||||
* 有些 Base64 实现可能每 76 个字符插入换行符,也一并去掉
|
* 有些 Base64 实现可能每 76 个字符插入换行符,也一并去掉
|
||||||
* https://github.com/kekingcn/kkFileView/pull/340
|
* https://github.com/kekingcn/kkFileView/pull/340
|
||||||
*/
|
*/
|
||||||
return new String(Base64Utils.decodeFromString(
|
try {
|
||||||
source.replaceAll(" ", "+").replaceAll("\n", "")
|
return new String(Base64Utils.decodeFromString(source.replaceAll(" ", "+").replaceAll("\n", "")), charsets);
|
||||||
), charsets);
|
} catch (Exception e) {
|
||||||
|
System.out.println("接入方法错误,或者未使用BASE64");
|
||||||
|
// e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -46,26 +46,45 @@ public class AttributeSetFilter implements Filter {
|
||||||
* 设置水印属性
|
* 设置水印属性
|
||||||
* @param request request
|
* @param request request
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private void setWatermarkAttribute(ServletRequest request) {
|
private void setWatermarkAttribute(ServletRequest request) {
|
||||||
String watermarkTxt= KkFileUtils.htmlEscape(request.getParameter("watermarkTxt"));
|
String watermarkTxt= KkFileUtils.htmlEscape(request.getParameter("watermarkTxt"));
|
||||||
request.setAttribute("watermarkTxt", watermarkTxt != null ? watermarkTxt : WatermarkConfigConstants.getWatermarkTxt());
|
request.setAttribute("watermarkTxt", watermarkTxt != null ? watermarkTxt : WatermarkConfigConstants.getWatermarkTxt());
|
||||||
String watermarkXSpace = request.getParameter("watermarkXSpace");
|
String watermarkXSpace = KkFileUtils.htmlEscape(request.getParameter("watermarkXSpace"));
|
||||||
|
if (!KkFileUtils.isInteger(watermarkXSpace)){
|
||||||
|
watermarkXSpace =null;
|
||||||
|
}
|
||||||
request.setAttribute("watermarkXSpace", watermarkXSpace != null ? watermarkXSpace : WatermarkConfigConstants.getWatermarkXSpace());
|
request.setAttribute("watermarkXSpace", watermarkXSpace != null ? watermarkXSpace : WatermarkConfigConstants.getWatermarkXSpace());
|
||||||
String watermarkYSpace = request.getParameter("watermarkYSpace");
|
String watermarkYSpace = KkFileUtils.htmlEscape(request.getParameter("watermarkYSpace"));
|
||||||
|
if (!KkFileUtils.isInteger(watermarkYSpace)){
|
||||||
|
watermarkYSpace =null;
|
||||||
|
}
|
||||||
request.setAttribute("watermarkYSpace", watermarkYSpace != null ? watermarkYSpace : WatermarkConfigConstants.getWatermarkYSpace());
|
request.setAttribute("watermarkYSpace", watermarkYSpace != null ? watermarkYSpace : WatermarkConfigConstants.getWatermarkYSpace());
|
||||||
String watermarkFont = request.getParameter("watermarkFont");
|
String watermarkFont = KkFileUtils.htmlEscape(request.getParameter("watermarkFont"));
|
||||||
request.setAttribute("watermarkFont", watermarkFont != null ? watermarkFont : WatermarkConfigConstants.getWatermarkFont());
|
request.setAttribute("watermarkFont", watermarkFont != null ? watermarkFont : WatermarkConfigConstants.getWatermarkFont());
|
||||||
String watermarkFontsize = request.getParameter("watermarkFontsize");
|
String watermarkFontsize = KkFileUtils.htmlEscape(request.getParameter("watermarkFontsize"));
|
||||||
request.setAttribute("watermarkFontsize", watermarkFontsize != null ? watermarkFontsize : WatermarkConfigConstants.getWatermarkFontsize());
|
request.setAttribute("watermarkFontsize", watermarkFontsize != null ? watermarkFontsize : WatermarkConfigConstants.getWatermarkFontsize());
|
||||||
String watermarkColor = request.getParameter("watermarkColor");
|
String watermarkColor = KkFileUtils.htmlEscape(request.getParameter("watermarkColor"));
|
||||||
request.setAttribute("watermarkColor", watermarkColor != null ? watermarkColor : WatermarkConfigConstants.getWatermarkColor());
|
request.setAttribute("watermarkColor", watermarkColor != null ? watermarkColor : WatermarkConfigConstants.getWatermarkColor());
|
||||||
String watermarkAlpha = request.getParameter("watermarkAlpha");
|
String watermarkAlpha = KkFileUtils.htmlEscape(request.getParameter("watermarkAlpha"));
|
||||||
|
if (!KkFileUtils.isInteger(watermarkAlpha)){
|
||||||
|
watermarkAlpha =null;
|
||||||
|
}
|
||||||
request.setAttribute("watermarkAlpha", watermarkAlpha != null ? watermarkAlpha : WatermarkConfigConstants.getWatermarkAlpha());
|
request.setAttribute("watermarkAlpha", watermarkAlpha != null ? watermarkAlpha : WatermarkConfigConstants.getWatermarkAlpha());
|
||||||
String watermarkWidth = request.getParameter("watermarkWidth");
|
String watermarkWidth = KkFileUtils.htmlEscape(request.getParameter("watermarkWidth"));
|
||||||
|
if (!KkFileUtils.isInteger(watermarkWidth)){
|
||||||
|
watermarkWidth =null;
|
||||||
|
}
|
||||||
request.setAttribute("watermarkWidth", watermarkWidth != null ? watermarkWidth : WatermarkConfigConstants.getWatermarkWidth());
|
request.setAttribute("watermarkWidth", watermarkWidth != null ? watermarkWidth : WatermarkConfigConstants.getWatermarkWidth());
|
||||||
String watermarkHeight = request.getParameter("watermarkHeight");
|
String watermarkHeight = KkFileUtils.htmlEscape(request.getParameter("watermarkHeight"));
|
||||||
|
if (!KkFileUtils.isInteger(watermarkHeight)){
|
||||||
|
watermarkHeight =null;
|
||||||
|
}
|
||||||
request.setAttribute("watermarkHeight", watermarkHeight != null ? watermarkHeight : WatermarkConfigConstants.getWatermarkHeight());
|
request.setAttribute("watermarkHeight", watermarkHeight != null ? watermarkHeight : WatermarkConfigConstants.getWatermarkHeight());
|
||||||
String watermarkAngle = request.getParameter("watermarkAngle");
|
String watermarkAngle = KkFileUtils.htmlEscape(request.getParameter("watermarkAngle"));
|
||||||
|
if (!KkFileUtils.isInteger(watermarkAngle)){
|
||||||
|
watermarkAngle =null;
|
||||||
|
}
|
||||||
request.setAttribute("watermarkAngle", watermarkAngle != null ? watermarkAngle : WatermarkConfigConstants.getWatermarkAngle());
|
request.setAttribute("watermarkAngle", watermarkAngle != null ? watermarkAngle : WatermarkConfigConstants.getWatermarkAngle());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class TrustDirFilter implements Filter {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean allowPreview(String urlPath) {
|
private boolean allowPreview(String urlPath) {
|
||||||
if(!StringUtils.hasText(urlPath)){
|
if(!StringUtils.hasText(urlPath) || !WebUtils.hefaurl(urlPath)){ //判断URL是否合法
|
||||||
return false ;
|
return false ;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
body {
|
||||||
|
margin-left: 0px;
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-right: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
table, tbody, tfoot, thead, tr, th, td {
|
||||||
|
|
||||||
|
white-space: normal !important;
|
||||||
|
}
|
||||||
|
/* 该行会导致部分excel列变得又窄又高,从而变为竖长条
|
||||||
|
table {
|
||||||
|
table-layout: auto !important;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
.tab-content {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: none !important;
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
|
||||||
|
text-decoration: none;
|
||||||
|
border: 1px solid #dddddd !important;
|
||||||
|
white-space: normal !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
/*默认状态*/
|
||||||
|
h1 {
|
||||||
|
background: #2B6695;
|
||||||
|
border-radius: 6px 6px 6px 6px;
|
||||||
|
box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5);
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family:"微软雅黑", "宋体", "黑体", Arial;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 25px;
|
||||||
|
line-height: 25px;
|
||||||
|
margin: 4px 0 !important;
|
||||||
|
padding: 8px 0 5px 5px;
|
||||||
|
text-shadow: 2px 2px 3px #222222;
|
||||||
|
}
|
||||||
|
table{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<title>EML 在线看</title>
|
||||||
|
|
||||||
|
<link href="src/bootstrap.css" rel="stylesheet">
|
||||||
|
<link href="src/main.css" rel="stylesheet">
|
||||||
|
<script type="text/javascript" src="static/js/manifest.2ae2e69a05c33dfc65f8.js"></script>
|
||||||
|
<script type="text/javascript" src="static/js/vendor.f615be12b031102299b7.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="static/js/app.8292ba6c8f6b07911e29.js?"' + Math.random() +'></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="headerwrap" class="dropzone">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row" id="download-eml">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row" id="view-eml">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="panel-group eml-details" id="accordion" role="tablist" aria-multiselectable="true">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading" role="tab" id="headingHeaders">
|
||||||
|
<h4 class="panel-title">
|
||||||
|
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseHeaders" aria-expanded="true" aria-controls="collapseHeaders">
|
||||||
|
标题
|
||||||
|
</a>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div id="collapseHeaders" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingHeaders">
|
||||||
|
<div class="panel-body eml-details__content eml-details__content-headers"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default">
|
||||||
|
|
||||||
|
<b><font color="#000000">正文:</font></b>
|
||||||
|
<div class="panel-heading" role="tab" id="divPagenation"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading" role="tab" id="headingAttachments">
|
||||||
|
<h4 class="panel-title">
|
||||||
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseAttachments" aria-expanded="false" aria-controls="collapseAttachments">
|
||||||
|
附件
|
||||||
|
</a>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div id="collapseAttachments" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingAttachments">
|
||||||
|
<div class="panel-body eml-details__content eml-details__content-attachments"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
After Width: | Height: | Size: 110 KiB |
|
@ -0,0 +1,342 @@
|
||||||
|
html, body {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'EB Garamond', serif;
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #f2f2f2;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Titles */
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
|
font-weight: 300;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Paragraph & Typographic */
|
||||||
|
p {
|
||||||
|
line-height: 28px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.centered {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links */
|
||||||
|
a {
|
||||||
|
color: #f85c37;
|
||||||
|
word-wrap: break-word;
|
||||||
|
|
||||||
|
-webkit-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
-moz-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
-ms-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
-o-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover,
|
||||||
|
a:focus {
|
||||||
|
color: #7b7b7b;
|
||||||
|
text-decoration: none;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:before,
|
||||||
|
a:after {
|
||||||
|
-webkit-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
-moz-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
-ms-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
-o-transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
transition: color 0.1s ease-in, background 0.1s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
display: block;
|
||||||
|
height: 1px;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
margin: 1em 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Wrap Sections
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
#headerwrap {
|
||||||
|
background: url(header-bg.jpg) no-repeat center center fixed;
|
||||||
|
|
||||||
|
-webkit-background-size: 100%;
|
||||||
|
-moz-background-size: 100%;
|
||||||
|
-o-background-size: 100%;
|
||||||
|
background-size: 100%;
|
||||||
|
|
||||||
|
-webkit-background-size: cover;
|
||||||
|
-moz-background-size: cover;
|
||||||
|
-o-background-size: cover;
|
||||||
|
background-size: cover;
|
||||||
|
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
text-align:center;
|
||||||
|
min-height: 700px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerwrap h1 {
|
||||||
|
margin-top: 150px;
|
||||||
|
color: white;
|
||||||
|
font-size: 70px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerwrap h3 {
|
||||||
|
color: white;
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: 100;
|
||||||
|
font-family: 'EB Garamond', serif;
|
||||||
|
font-style: oblique;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerwrap .logo {
|
||||||
|
text-align: left;
|
||||||
|
margin-left: 20px;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Footer Wrap */
|
||||||
|
|
||||||
|
#f {
|
||||||
|
background: #1a1a1a;
|
||||||
|
padding-top: 70px;
|
||||||
|
padding-bottom: 70px;
|
||||||
|
text-align: center
|
||||||
|
}
|
||||||
|
|
||||||
|
#f h3 {
|
||||||
|
color: white;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#f i {
|
||||||
|
font-size: 8px;
|
||||||
|
color: #fff;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#f p {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#f img {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* MENU CONF*/
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
position: fixed;
|
||||||
|
right: -200px;
|
||||||
|
width: 260px;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu.menu-open {
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-wrap {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 60px;
|
||||||
|
background: #1a1a1a;
|
||||||
|
width: 200px;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu h1.logo a {
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.15em;
|
||||||
|
line-height: 40px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #ffffff;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu h1.logo a:hover {
|
||||||
|
color: #f85c37;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu img.logo {
|
||||||
|
margin: 20px 0;
|
||||||
|
max-width: 160px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu a {
|
||||||
|
margin-left: 20px;
|
||||||
|
color: #808080;
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 40px;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu a:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu a:active {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu a > i {
|
||||||
|
float: left;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: left;
|
||||||
|
width: 25px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 40px;
|
||||||
|
margin: 25px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-close {
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #808080;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
top: 20px;
|
||||||
|
right: 5px;
|
||||||
|
-webkit-transition: all .1s ease-in-out;
|
||||||
|
-moz-transition: all .1s ease-in-out;
|
||||||
|
-ms-transition: all .1s ease-in-out;
|
||||||
|
-o-transition: all .1s ease-in-out;
|
||||||
|
transition: all .1s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-close:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
-webkit-transition: all .1s ease-in-out;
|
||||||
|
-moz-transition: all .1s ease-in-out;
|
||||||
|
-ms-transition: all .1s ease-in-out;
|
||||||
|
-o-transition: all .1s ease-in-out;
|
||||||
|
transition: all .1s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Push the body after clicking the menu button */
|
||||||
|
.body-push {
|
||||||
|
overflow-x: hidden;
|
||||||
|
position: relative;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-push-toright {
|
||||||
|
left: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-push-toleft {
|
||||||
|
left: -200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu,
|
||||||
|
.body-push {
|
||||||
|
-webkit-transition: all .3s ease;
|
||||||
|
-moz-transition: all .3s ease;
|
||||||
|
-ms-transition: all .3s ease;
|
||||||
|
-o-transition: all .3s ease;
|
||||||
|
transition: all .3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menuToggle {
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
left: 0;
|
||||||
|
z-index: 11;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #ffffff;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
cursor: pointer;
|
||||||
|
background: rgba(0,0,0,0.25);
|
||||||
|
-webkit-transition: all .1s ease-in-out;
|
||||||
|
-moz-transition: all .1s ease-in-out;
|
||||||
|
-ms-transition: all .1s ease-in-out;
|
||||||
|
-o-transition: all .1s ease-in-out;
|
||||||
|
transition: all .1s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menuToggle:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background: rgba(0,0,0,0.2);
|
||||||
|
-webkit-transition: all .1s ease-in-out;
|
||||||
|
-moz-transition: all .1s ease-in-out;
|
||||||
|
-ms-transition: all .1s ease-in-out;
|
||||||
|
-o-transition: all .1s ease-in-out;
|
||||||
|
transition: all .1s ease-in-out;
|
||||||
|
}
|
||||||
|
#file {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dragging {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drag-and-drop-label {
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 18px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
#view-eml {
|
||||||
|
display: none;
|
||||||
|
padding-top: 20px;
|
||||||
|
}
|
||||||
|
.eml-iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 1000px;
|
||||||
|
margin-top: 10px;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
.eml-details {
|
||||||
|
display: none;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.eml-details__content {
|
||||||
|
color: #1a1a1a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#eml_error_header {
|
||||||
|
font-weight:300;
|
||||||
|
font-size: 18px;
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
/******/ (function(modules) { // webpackBootstrap
|
||||||
|
/******/ // install a JSONP callback for chunk loading
|
||||||
|
/******/ var parentJsonpFunction = window["webpackJsonp"];
|
||||||
|
/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {
|
||||||
|
/******/ // add "moreModules" to the modules object,
|
||||||
|
/******/ // then flag all "chunkIds" as loaded and fire callback
|
||||||
|
/******/ var moduleId, chunkId, i = 0, resolves = [], result;
|
||||||
|
/******/ for(;i < chunkIds.length; i++) {
|
||||||
|
/******/ chunkId = chunkIds[i];
|
||||||
|
/******/ if(installedChunks[chunkId]) {
|
||||||
|
/******/ resolves.push(installedChunks[chunkId][0]);
|
||||||
|
/******/ }
|
||||||
|
/******/ installedChunks[chunkId] = 0;
|
||||||
|
/******/ }
|
||||||
|
/******/ for(moduleId in moreModules) {
|
||||||
|
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
|
||||||
|
/******/ modules[moduleId] = moreModules[moduleId];
|
||||||
|
/******/ }
|
||||||
|
/******/ }
|
||||||
|
/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);
|
||||||
|
/******/ while(resolves.length) {
|
||||||
|
/******/ resolves.shift()();
|
||||||
|
/******/ }
|
||||||
|
/******/ if(executeModules) {
|
||||||
|
/******/ for(i=0; i < executeModules.length; i++) {
|
||||||
|
/******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]);
|
||||||
|
/******/ }
|
||||||
|
/******/ }
|
||||||
|
/******/ return result;
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // The module cache
|
||||||
|
/******/ var installedModules = {};
|
||||||
|
/******/
|
||||||
|
/******/ // objects to store loaded and loading chunks
|
||||||
|
/******/ var installedChunks = {
|
||||||
|
/******/ 2: 0
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // The require function
|
||||||
|
/******/ function __webpack_require__(moduleId) {
|
||||||
|
/******/
|
||||||
|
/******/ // Check if module is in cache
|
||||||
|
/******/ if(installedModules[moduleId]) {
|
||||||
|
/******/ return installedModules[moduleId].exports;
|
||||||
|
/******/ }
|
||||||
|
/******/ // Create a new module (and put it into the cache)
|
||||||
|
/******/ var module = installedModules[moduleId] = {
|
||||||
|
/******/ i: moduleId,
|
||||||
|
/******/ l: false,
|
||||||
|
/******/ exports: {}
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // Execute the module function
|
||||||
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||||
|
/******/
|
||||||
|
/******/ // Flag the module as loaded
|
||||||
|
/******/ module.l = true;
|
||||||
|
/******/
|
||||||
|
/******/ // Return the exports of the module
|
||||||
|
/******/ return module.exports;
|
||||||
|
/******/ }
|
||||||
|
/******/
|
||||||
|
/******/
|
||||||
|
/******/ // expose the modules object (__webpack_modules__)
|
||||||
|
/******/ __webpack_require__.m = modules;
|
||||||
|
/******/
|
||||||
|
/******/ // expose the module cache
|
||||||
|
/******/ __webpack_require__.c = installedModules;
|
||||||
|
/******/
|
||||||
|
/******/ // define getter function for harmony exports
|
||||||
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||||
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||||
|
/******/ Object.defineProperty(exports, name, {
|
||||||
|
/******/ configurable: false,
|
||||||
|
/******/ enumerable: true,
|
||||||
|
/******/ get: getter
|
||||||
|
/******/ });
|
||||||
|
/******/ }
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||||
|
/******/ __webpack_require__.n = function(module) {
|
||||||
|
/******/ var getter = module && module.__esModule ?
|
||||||
|
/******/ function getDefault() { return module['default']; } :
|
||||||
|
/******/ function getModuleExports() { return module; };
|
||||||
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||||
|
/******/ return getter;
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // Object.prototype.hasOwnProperty.call
|
||||||
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||||
|
/******/
|
||||||
|
/******/ // __webpack_public_path__
|
||||||
|
/******/ __webpack_require__.p = "/";
|
||||||
|
/******/
|
||||||
|
/******/ // on error function for async loading
|
||||||
|
/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
|
||||||
|
/******/ })
|
||||||
|
/************************************************************************/
|
||||||
|
/******/ ([]);
|
||||||
|
//# sourceMappingURL=manifest.2ae2e69a05c33dfc65f8.js.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"sources":["webpack:///webpack/bootstrap ee44b4f4fda6076f2a18"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,YAAY,2BAA2B;QACvC;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,KAAK;QACL;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW","file":"static/js/manifest.2ae2e69a05c33dfc65f8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ee44b4f4fda6076f2a18"],"sourceRoot":""}
|
|
@ -0,0 +1,286 @@
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
background: #fafafa;
|
||||||
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
|
color: #333;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#title {
|
||||||
|
width: 900px;
|
||||||
|
min-height: 18px;
|
||||||
|
margin: 10px auto;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #E2E2E2;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
#title:hover {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer.spreads {
|
||||||
|
width: 900px;
|
||||||
|
height: 600px;
|
||||||
|
box-shadow: 0 0 4px #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
margin: 10px auto;
|
||||||
|
background: white url('ajax-loader.gif') center center no-repeat;
|
||||||
|
top: calc(50vh - 400px);
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer.spreads .epub-view > iframe {
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer.scrolled {
|
||||||
|
overflow: hidden;
|
||||||
|
width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
position: relative;
|
||||||
|
background: url('ajax-loader.gif') center center no-repeat;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer.scrolled .epub-container {
|
||||||
|
background: white;
|
||||||
|
box-shadow: 0 0 4px #ccc;
|
||||||
|
margin: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer.scrolled .epub-view > iframe {
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#prev {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#next {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toc {
|
||||||
|
display: block;
|
||||||
|
margin: 10px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1000px) {
|
||||||
|
#viewer.spreads:after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
border-right: 1px #000 solid;
|
||||||
|
height: 90%;
|
||||||
|
z-index: 1;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -1px;
|
||||||
|
top: 5%;
|
||||||
|
opacity: .15;
|
||||||
|
box-shadow: -2px 0 15px rgba(0, 0, 0, 1);
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer.spreads.single:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#prev {
|
||||||
|
left: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#next {
|
||||||
|
right: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow {
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -32px;
|
||||||
|
font-size: 64px;
|
||||||
|
color: #E2E2E2;
|
||||||
|
font-family: arial, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navlink {
|
||||||
|
margin: 14px;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow:hover, .navlink:hover {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow:active, .navlink:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#book-wrapper {
|
||||||
|
width: 480px;
|
||||||
|
height: 640px;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
margin: 28px auto;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 0 5px 5px 0;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
#book-viewer {
|
||||||
|
width: 480px;
|
||||||
|
height: 660px;
|
||||||
|
margin: -30px auto;
|
||||||
|
-moz-box-shadow: inset 10px 0 20px rgba(0,0,0,.1);
|
||||||
|
-webkit-box-shadow: inset 10px 0 20px rgba(0,0,0,.1);
|
||||||
|
box-shadow: inset 10px 0 20px rgba(0,0,0,.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#book-viewer iframe {
|
||||||
|
padding: 40px 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#controls {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 16px;
|
||||||
|
left: 50%;
|
||||||
|
width: 400px;
|
||||||
|
margin-left: -200px;
|
||||||
|
text-align: center;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#controls > input[type=range] {
|
||||||
|
width: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation {
|
||||||
|
width: 400px;
|
||||||
|
height: 100vh;
|
||||||
|
position: absolute;
|
||||||
|
overflow: auto;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background: #777;
|
||||||
|
-webkit-transition: -webkit-transform .25s ease-out;
|
||||||
|
-moz-transition: -moz-transform .25s ease-out;
|
||||||
|
-ms-transition: -moz-transform .25s ease-out;
|
||||||
|
transition: transform .25s ease-out;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation.fixed {
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation h1 {
|
||||||
|
width: 200px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation h2 {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #B0B0B0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation ul {
|
||||||
|
padding-left: 36px;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-top: 12px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
width: 340px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation ul li {
|
||||||
|
list-style: decimal;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: #cccddd;
|
||||||
|
font-size: 12px;
|
||||||
|
padding-left: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation ul li a {
|
||||||
|
color: #ccc;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation ul li a:hover {
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation ul li a.active {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation #cover {
|
||||||
|
display: block;
|
||||||
|
margin: 24px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation #closer {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: 12px;
|
||||||
|
color: #cccddd;
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation.closed {
|
||||||
|
-webkit-transform: translate(-400px, 0);
|
||||||
|
-moz-transform: translate(-400px, 0);
|
||||||
|
-ms-transform: translate(-400px, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-x {
|
||||||
|
stroke: #cccddd;
|
||||||
|
fill: transparent;
|
||||||
|
stroke-linecap: round;
|
||||||
|
stroke-width: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-x:hover {
|
||||||
|
stroke: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#opener {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: 10px;
|
||||||
|
stroke: #E2E2E2;
|
||||||
|
fill: #E2E2E2;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#opener:hover {
|
||||||
|
stroke: #777;
|
||||||
|
fill: #777;
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/**创建一个div并固定在底部,将center中的所有a标签放在改div中**/
|
/**创建一个div并固定在底部,将center中的所有a标签放在改div中**/
|
||||||
$("body").append($("<div>").css({"width":"100%","height":"30px","position":"fixed","top":"0","left":"0"
|
$("body").append($("<div>").css({"width":"100%","height":"100%px","position":"fixed","top":"0","left":"0"
|
||||||
,"background-color":"rgba(53, 53, 53, 1)","line-height":"30px","font-size":"13px"}).attr("id","excel-header-nav"));
|
,"background-color":"rgba(53, 53, 53, 1)","line-height":"30px","font-size":"13px"}).attr("id","excel-header-nav"));
|
||||||
$("center").css("display", "none");
|
$("center").css("display", "none");
|
||||||
var centerChildrenA = $("center").children("a");
|
var centerChildrenA = $("center").children("a");
|
||||||
|
@ -15,4 +15,42 @@ $(centerChildrenA).each(function (a, b) {
|
||||||
$("#excel-header-nav").append(b);
|
$("#excel-header-nav").append(b);
|
||||||
});
|
});
|
||||||
/**给所有的table添加class=table table-striped样式**/
|
/**给所有的table添加class=table table-striped样式**/
|
||||||
$("table").addClass("table table-striped");
|
$("table").addClass("table table-striped");
|
||||||
|
/**
|
||||||
|
* openoffice,只有一个 colgroup,用col子标签来描述列,liboffice 每一列都是一个colgroup
|
||||||
|
* var meta = $("meta[name=generator]");
|
||||||
|
* LibreOffice //OpenOffice
|
||||||
|
* console.log(meta[0].content);
|
||||||
|
*/
|
||||||
|
/**计算表头宽度----start**/
|
||||||
|
function ______getColgroupWidth(colgroups){
|
||||||
|
var twidth = 0;
|
||||||
|
$(colgroups).each(function (i, g) {
|
||||||
|
var w = $(g).attr("width");
|
||||||
|
var s = $(g).attr("span");
|
||||||
|
if(null==s || undefined==s){
|
||||||
|
s=1;
|
||||||
|
}
|
||||||
|
twidth +=1*w*s;
|
||||||
|
});
|
||||||
|
return twidth;
|
||||||
|
}
|
||||||
|
$("table").each(function (a, b) {
|
||||||
|
var twidth = 0;
|
||||||
|
var tableChildrenColgroup = $(b).children("colgroup");
|
||||||
|
if(0==tableChildrenColgroup.length){
|
||||||
|
}else if(1==tableChildrenColgroup.length){
|
||||||
|
var cols = tableChildrenColgroup.children("col");
|
||||||
|
if(0==cols.length){
|
||||||
|
twidth=______getColgroupWidth(tableChildrenColgroup);
|
||||||
|
}else{
|
||||||
|
$(cols).each(function (i, g) {
|
||||||
|
var w = $(g).attr("width");
|
||||||
|
twidth +=1*w;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
twidth = ______getColgroupWidth(tableChildrenColgroup);
|
||||||
|
}
|
||||||
|
$(b).css({"width":twidth});
|
||||||
|
});
|
|
@ -362,6 +362,9 @@ function print() {
|
||||||
if (list.length > 0) {
|
if (list.length > 0) {
|
||||||
if (!isIE()) {
|
if (!isIE()) {
|
||||||
var mywindow = window.open("打印窗口", "_blank");
|
var mywindow = window.open("打印窗口", "_blank");
|
||||||
|
mywindow.document.write('<!DOCTYPE html><html><head>'
|
||||||
|
+'<style media="print">.page-break { page-break-inside: avoid; page-break-after: always; }</style>'
|
||||||
|
+'</head><body></body</html>');
|
||||||
var documentBody = mywindow.document.body;
|
var documentBody = mywindow.document.body;
|
||||||
var _iterator2 = _createForOfIteratorHelper(list),
|
var _iterator2 = _createForOfIteratorHelper(list),
|
||||||
_step2;
|
_step2;
|
||||||
|
|
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 23 KiB |
|
@ -0,0 +1,13 @@
|
||||||
|
Author
|
||||||
|
======
|
||||||
|
|
||||||
|
This is the work of Emil Persson, aka Humus.
|
||||||
|
http://www.humus.name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
License
|
||||||
|
=======
|
||||||
|
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
|
||||||
|
http://creativecommons.org/licenses/by/3.0/
|
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="logo" version="1.1" viewBox="0 0 60 60" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><clipPath id="d-5"><use width="100%" height="100%" overflow="visible" xlink:href="#c"/></clipPath></defs><g transform="translate(4.4 -.117)"><defs><path id="a" d="m-5-1h62v62h-62z"/></defs><clipPath id="b"><use width="100%" height="100%" overflow="visible" xlink:href="#a"/></clipPath><g clip-path="url(#b)"><defs><path id="c" d="m-5-1h62v62h-62z"/></defs><clipPath id="d"><use width="100%" height="100%" overflow="visible" xlink:href="#c"/></clipPath><g style="stroke:var(--ov_logo_border_color);" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"><path transform="translate(.039092 .02257)" d="m38.361 22.877-12.4-7.3 9.2e-5 -14.177 24.8 14.2v28.8l-12.4-7.3226z" clip-path="url(#d)" fill="#4688b4"/><path transform="rotate(120,26,30.082)" d="m38.4 22.923-12.522-7.0887 0.14178-14.4 24.78 14.166v28.8l-12.522-7.0883z" clip-path="url(#d-5)" fill="#64c0ff"/><path d="m26 30v14.4l12.4-7.3v-14.2z" clip-path="url(#d)" fill="#294e67"/><path d="m13.6 37.1v-14.2l12.4-7.3v-14.177l-24.8 14.177v28.8z" clip-path="url(#d)" fill="#294e67"/><path d="m26 15.6-12.4 7.3 12.4 7.1 12.4-7.1z" clip-path="url(#d)" fill="#64c0ff"/><path d="m13.6 22.9 12.4 7.1v14.4l-12.4-7.3z" clip-path="url(#d)" fill="#4688b4"/></g></g></g></svg>
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 30 KiB |
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="logo" version="1.1" viewBox="0 0 286 60" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M-5-1h62v62H-5z"/><clipPath id="d-5"><use width="100%" height="100%" overflow="visible" xlink:href="#c"/></clipPath><path id="a-85" d="m-5-1h62v62h-62z"/><path id="c" d="m-5-1h62v62h-62z"/></defs><clipPath id="b"><use width="100%" height="100%" overflow="visible" xlink:href="#a"/></clipPath><g transform="translate(.10025)" fill="#15334a"><path style="fill:var(--ov_logo_text_color);" transform="matrix(.78095 0 0 .78095 14.238 8.152)" d="m75.237 18.5c-6.008 0-10.237 4.52-10.237 10.528 0 5.98 4.229 10.47 10.237 10.47 5.979 0 10.207-4.49 10.207-10.47 0-6.007-4.228-10.528-10.207-10.528zm6.97 10.528c0 4.375-2.741 7.612-6.97 7.612-4.23 0-7-3.237-7-7.612 0-4.403 2.77-7.699 7-7.699 4.229 0 6.97 3.296 6.97 7.7zm21.839-10.236v16.332l-10.906-16.332h-3.88v20.415h3.091v-16.39l10.879 16.39h3.908v-20.415zm10.978 17.615v-17.615h-3.15v20.415h13.649v-2.8zm14.597-17.615v20.415h3.15v-20.415zm22.843 0v16.332l-10.907-16.332h-3.88v20.415h3.092v-16.39l10.879 16.39h3.908v-20.415zm22.031 2.741v-2.741h-14.203v20.415h14.203v-2.742h-11.112v-6.59h10.733v-2.655h-10.733v-5.687zm18.205 6.067 5.599-8.663v-0.145h-13.24v2.712h8.486l-5.425 8.195v0.146h2.625c2.77 0 4.696 1.458 4.696 3.47 0 1.984-1.663 3.442-4.083 3.442-1.692 0-3.908-0.67-6.33-2.07v3.382c2.334 1.05 4.434 1.459 6.242 1.43 4.258-0.03 7.291-2.538 7.291-6.154 0-3.092-2.537-5.25-5.862-5.746zm17.266-8.808h-7.408v20.415h7.408c6.183 0 10.849-4.2 10.849-10.208 0-5.92-4.666-10.207-10.85-10.207zm0.029 17.586h-4.287v-14.758h4.287c4.345 0 7.583 3.062 7.583 7.378 0 4.346-3.15 7.379-7.583 7.379zm34.925-17.586-5.833 17.47-5.862-17.47h-3.587l7.262 20.415h4.316l7.291-20.415zm7.056 0v20.415h3.15v-20.415zm22.26 2.741v-2.741h-14.203v20.415h14.203v-2.742h-11.112v-6.59h10.733v-2.655h-10.733v-5.687zm29.18-2.741-3.996 17.09-5.308-17.09h-3.733l-5.045 17.061-4.229-17.061h-3.733l5.687 20.415h4.404l4.754-17.411 5.045 17.41h4.404l5.454-20.414zm21.231 2.741v-2.741h-14.203v20.415h14.203v-2.742h-11.111v-6.59h10.732v-2.655h-10.732v-5.687zm17.253 17.674h4.024l-6.27-8.341c3.353-0.525 5.6-2.946 5.6-6.037 0-3.413-2.888-6.037-7-6.037h-9.012v20.415h3.15v-8.225h3.995zm-9.508-17.703h5.745c2.391 0 4.025 1.458 4.025 3.354 0 1.954-1.634 3.5-4.025 3.5h-5.745z" fill="#15334a" stroke-width="2.2231" aria-label="ONLINE 3D VIEWER"/></g><g transform="translate(-.7 .077394)"><clipPath id="b-3"><use width="100%" height="100%" overflow="visible" xlink:href="#a-85"/></clipPath><g clip-path="url(#b-3)"><clipPath id="d"><use width="100%" height="100%" overflow="visible" xlink:href="#c"/></clipPath><g style="stroke:var(--ov_logo_border_color);" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"><path transform="translate(.039092 .02257)" d="m38.361 22.877-12.4-7.3 9.2e-5 -14.177 24.8 14.2v28.8l-12.4-7.3226z" clip-path="url(#d)" fill="#4688b4"/><path transform="rotate(120,26,30.082)" d="m38.4 22.923-12.522-7.0887 0.14178-14.4 24.78 14.166v28.8l-12.522-7.0883z" clip-path="url(#d-5)" fill="#64c0ff"/><path d="m26 30v14.4l12.4-7.3v-14.2z" clip-path="url(#d)" fill="#294e67"/><path d="m13.6 37.1v-14.2l12.4-7.3v-14.177l-24.8 14.177v28.8z" clip-path="url(#d)" fill="#294e67"/><path d="m26 15.6-12.4 7.3 12.4 7.1 12.4-7.1z" clip-path="url(#d)" fill="#64c0ff"/><path d="m13.6 22.9 12.4 7.1v14.4l-12.4-7.3z" clip-path="url(#d)" fill="#4688b4"/></g></g></g></svg>
|
After Width: | Height: | Size: 3.4 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<meta name="viewport" content="width=device-width, user-scalable=no">
|
||||||
|
<title>Online 3D Viewer</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./website/pickr.monolith.min.css">
|
||||||
|
<script type="text/javascript" src="website/pickr.es5.min.js"></script>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Online 3D Viewer">
|
||||||
|
<link rel="stylesheet" type="text/css" href="website/o3dv.website.min.css">
|
||||||
|
<script type="text/javascript" src="website/o3dv.website.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
OV.StartWebsite ('libs');
|
||||||
|
</script>
|
||||||
|
<body>
|
||||||
|
<input type="file" id="open_file" style="display:none;" multiple></input>
|
||||||
|
<div class="header" id="header">
|
||||||
|
<div class="title">
|
||||||
|
|
||||||
|
<div class="title_right" id="header_buttons"></div>
|
||||||
|
<div class="main_file_name only_full_width" id="main_file_name"></div>
|
||||||
|
</div>
|
||||||
|
<div class="toolbar" id="toolbar"></div>
|
||||||
|
</div>
|
||||||
|
<div class="main" id="main">
|
||||||
|
<div class="main_navigator ov_panel_set_container only_full_width" id="main_navigator"></div>
|
||||||
|
<div class="main_splitter only_full_width" id="main_navigator_splitter"></div>
|
||||||
|
<div class="main_viewer" id="main_viewer"></div>
|
||||||
|
<div class="main_splitter only_full_width" id="main_sidebar_splitter"></div>
|
||||||
|
<div class="main_sidebar ov_panel_set_right_container only_full_width" id="main_sidebar"></div>
|
||||||
|
</div>
|
||||||
|
<div class="intro ov_thin_scrollbar" id="intro">
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,118 @@
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(k){var n=0;return function(){return n<k.length?{done:!1,value:k[n++]}:{done:!0}}};$jscomp.arrayIterator=function(k){return{next:$jscomp.arrayIteratorImpl(k)}};$jscomp.makeIterator=function(k){var n="undefined"!=typeof Symbol&&Symbol.iterator&&k[Symbol.iterator];return n?n.call(k):$jscomp.arrayIterator(k)};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
|
||||||
|
$jscomp.ISOLATE_POLYFILLS=!1;$jscomp.FORCE_POLYFILL_PROMISE=!1;$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;$jscomp.getGlobal=function(k){k=["object"==typeof globalThis&&globalThis,k,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var n=0;n<k.length;++n){var l=k[n];if(l&&l.Math==Math)return l}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(k,n,l){if(k==Array.prototype||k==Object.prototype)return k;k[n]=l.value;return k};$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";
|
||||||
|
var $jscomp$lookupPolyfilledValue=function(k,n){var l=$jscomp.propertyToPolyfillSymbol[n];if(null==l)return k[n];l=k[l];return void 0!==l?l:k[n]};$jscomp.polyfill=function(k,n,l,p){n&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(k,n,l,p):$jscomp.polyfillUnisolated(k,n,l,p))};
|
||||||
|
$jscomp.polyfillUnisolated=function(k,n,l,p){l=$jscomp.global;k=k.split(".");for(p=0;p<k.length-1;p++){var h=k[p];if(!(h in l))return;l=l[h]}k=k[k.length-1];p=l[k];n=n(p);n!=p&&null!=n&&$jscomp.defineProperty(l,k,{configurable:!0,writable:!0,value:n})};
|
||||||
|
$jscomp.polyfillIsolated=function(k,n,l,p){var h=k.split(".");k=1===h.length;p=h[0];p=!k&&p in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var A=0;A<h.length-1;A++){var f=h[A];if(!(f in p))return;p=p[f]}h=h[h.length-1];l=$jscomp.IS_SYMBOL_NATIVE&&"es6"===l?p[h]:null;n=n(l);null!=n&&(k?$jscomp.defineProperty($jscomp.polyfills,h,{configurable:!0,writable:!0,value:n}):n!==l&&(void 0===$jscomp.propertyToPolyfillSymbol[h]&&(l=1E9*Math.random()>>>0,$jscomp.propertyToPolyfillSymbol[h]=$jscomp.IS_SYMBOL_NATIVE?
|
||||||
|
$jscomp.global.Symbol(h):$jscomp.POLYFILL_PREFIX+l+"$"+h),$jscomp.defineProperty(p,$jscomp.propertyToPolyfillSymbol[h],{configurable:!0,writable:!0,value:n})))};
|
||||||
|
$jscomp.polyfill("Promise",function(k){function n(){this.batch_=null}function l(f){return f instanceof h?f:new h(function(q,v){q(f)})}if(k&&(!($jscomp.FORCE_POLYFILL_PROMISE||$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&"undefined"===typeof $jscomp.global.PromiseRejectionEvent)||!$jscomp.global.Promise||-1===$jscomp.global.Promise.toString().indexOf("[native code]")))return k;n.prototype.asyncExecute=function(f){if(null==this.batch_){this.batch_=[];var q=this;this.asyncExecuteFunction(function(){q.executeBatch_()})}this.batch_.push(f)};
|
||||||
|
var p=$jscomp.global.setTimeout;n.prototype.asyncExecuteFunction=function(f){p(f,0)};n.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var f=this.batch_;this.batch_=[];for(var q=0;q<f.length;++q){var v=f[q];f[q]=null;try{v()}catch(z){this.asyncThrow_(z)}}}this.batch_=null};n.prototype.asyncThrow_=function(f){this.asyncExecuteFunction(function(){throw f;})};var h=function(f){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];this.isRejectionHandled_=!1;var q=this.createResolveAndReject_();
|
||||||
|
try{f(q.resolve,q.reject)}catch(v){q.reject(v)}};h.prototype.createResolveAndReject_=function(){function f(z){return function(F){v||(v=!0,z.call(q,F))}}var q=this,v=!1;return{resolve:f(this.resolveTo_),reject:f(this.reject_)}};h.prototype.resolveTo_=function(f){if(f===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(f instanceof h)this.settleSameAsPromise_(f);else{a:switch(typeof f){case "object":var q=null!=f;break a;case "function":q=!0;break a;default:q=!1}q?this.resolveToNonPromiseObj_(f):
|
||||||
|
this.fulfill_(f)}};h.prototype.resolveToNonPromiseObj_=function(f){var q=void 0;try{q=f.then}catch(v){this.reject_(v);return}"function"==typeof q?this.settleSameAsThenable_(q,f):this.fulfill_(f)};h.prototype.reject_=function(f){this.settle_(2,f)};h.prototype.fulfill_=function(f){this.settle_(1,f)};h.prototype.settle_=function(f,q){if(0!=this.state_)throw Error("Cannot settle("+f+", "+q+"): Promise already settled in state"+this.state_);this.state_=f;this.result_=q;2===this.state_&&this.scheduleUnhandledRejectionCheck_();
|
||||||
|
this.executeOnSettledCallbacks_()};h.prototype.scheduleUnhandledRejectionCheck_=function(){var f=this;p(function(){if(f.notifyUnhandledRejection_()){var q=$jscomp.global.console;"undefined"!==typeof q&&q.error(f.result_)}},1)};h.prototype.notifyUnhandledRejection_=function(){if(this.isRejectionHandled_)return!1;var f=$jscomp.global.CustomEvent,q=$jscomp.global.Event,v=$jscomp.global.dispatchEvent;if("undefined"===typeof v)return!0;"function"===typeof f?f=new f("unhandledrejection",{cancelable:!0}):
|
||||||
|
"function"===typeof q?f=new q("unhandledrejection",{cancelable:!0}):(f=$jscomp.global.document.createEvent("CustomEvent"),f.initCustomEvent("unhandledrejection",!1,!0,f));f.promise=this;f.reason=this.result_;return v(f)};h.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var f=0;f<this.onSettledCallbacks_.length;++f)A.asyncExecute(this.onSettledCallbacks_[f]);this.onSettledCallbacks_=null}};var A=new n;h.prototype.settleSameAsPromise_=function(f){var q=this.createResolveAndReject_();
|
||||||
|
f.callWhenSettled_(q.resolve,q.reject)};h.prototype.settleSameAsThenable_=function(f,q){var v=this.createResolveAndReject_();try{f.call(q,v.resolve,v.reject)}catch(z){v.reject(z)}};h.prototype.then=function(f,q){function v(P,u){return"function"==typeof P?function(x){try{z(P(x))}catch(D){F(D)}}:u}var z,F,ea=new h(function(P,u){z=P;F=u});this.callWhenSettled_(v(f,z),v(q,F));return ea};h.prototype.catch=function(f){return this.then(void 0,f)};h.prototype.callWhenSettled_=function(f,q){function v(){switch(z.state_){case 1:f(z.result_);
|
||||||
|
break;case 2:q(z.result_);break;default:throw Error("Unexpected state: "+z.state_);}}var z=this;null==this.onSettledCallbacks_?A.asyncExecute(v):this.onSettledCallbacks_.push(v);this.isRejectionHandled_=!0};h.resolve=l;h.reject=function(f){return new h(function(q,v){v(f)})};h.race=function(f){return new h(function(q,v){for(var z=$jscomp.makeIterator(f),F=z.next();!F.done;F=z.next())l(F.value).callWhenSettled_(q,v)})};h.all=function(f){var q=$jscomp.makeIterator(f),v=q.next();return v.done?l([]):new h(function(z,
|
||||||
|
F){function ea(x){return function(D){P[x]=D;u--;0==u&&z(P)}}var P=[],u=0;do P.push(void 0),u++,l(v.value).callWhenSettled_(ea(P.length-1),F),v=q.next();while(!v.done)})};return h},"es6","es3");$jscomp.owns=function(k,n){return Object.prototype.hasOwnProperty.call(k,n)};$jscomp.assign=$jscomp.TRUST_ES6_POLYFILLS&&"function"==typeof Object.assign?Object.assign:function(k,n){for(var l=1;l<arguments.length;l++){var p=arguments[l];if(p)for(var h in p)$jscomp.owns(p,h)&&(k[h]=p[h])}return k};
|
||||||
|
$jscomp.polyfill("Object.assign",function(k){return k||$jscomp.assign},"es6","es3");$jscomp.checkStringArgs=function(k,n,l){if(null==k)throw new TypeError("The 'this' value for String.prototype."+l+" must not be null or undefined");if(n instanceof RegExp)throw new TypeError("First argument to String.prototype."+l+" must not be a regular expression");return k+""};
|
||||||
|
$jscomp.polyfill("String.prototype.startsWith",function(k){return k?k:function(n,l){var p=$jscomp.checkStringArgs(this,n,"startsWith");n+="";var h=p.length,A=n.length;l=Math.max(0,Math.min(l|0,p.length));for(var f=0;f<A&&l<h;)if(p[l++]!=n[f++])return!1;return f>=A}},"es6","es3");
|
||||||
|
$jscomp.polyfill("Array.prototype.copyWithin",function(k){function n(l){l=Number(l);return Infinity===l||-Infinity===l?l:l|0}return k?k:function(l,p,h){var A=this.length;l=n(l);p=n(p);h=void 0===h?A:n(h);l=0>l?Math.max(A+l,0):Math.min(l,A);p=0>p?Math.max(A+p,0):Math.min(p,A);h=0>h?Math.max(A+h,0):Math.min(h,A);if(l<p)for(;p<h;)p in this?this[l++]=this[p++]:(delete this[l++],p++);else for(h=Math.min(h,A+p-l),l+=h-p;h>p;)--h in this?this[--l]=this[h]:delete this[--l];return this}},"es6","es3");
|
||||||
|
$jscomp.typedArrayCopyWithin=function(k){return k?k:Array.prototype.copyWithin};$jscomp.polyfill("Int8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8ClampedArray.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");
|
||||||
|
$jscomp.polyfill("Uint16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float64Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");
|
||||||
|
var DracoDecoderModule=function(){var k="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;"undefined"!==typeof __filename&&(k=k||__filename);return function(n){function l(e){return a.locateFile?a.locateFile(e,U):U+e}function p(e,b,c){var d=b+c;for(c=b;e[c]&&!(c>=d);)++c;if(16<c-b&&e.buffer&&ya)return ya.decode(e.subarray(b,c));for(d="";b<c;){var g=e[b++];if(g&128){var t=e[b++]&63;if(192==(g&224))d+=String.fromCharCode((g&31)<<6|t);else{var X=e[b++]&63;g=224==
|
||||||
|
(g&240)?(g&15)<<12|t<<6|X:(g&7)<<18|t<<12|X<<6|e[b++]&63;65536>g?d+=String.fromCharCode(g):(g-=65536,d+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else d+=String.fromCharCode(g)}return d}function h(e,b){return e?p(fa,e,b):""}function A(e){za=e;a.HEAP8=Y=new Int8Array(e);a.HEAP16=new Int16Array(e);a.HEAP32=ca=new Int32Array(e);a.HEAPU8=fa=new Uint8Array(e);a.HEAPU16=new Uint16Array(e);a.HEAPU32=V=new Uint32Array(e);a.HEAPF32=new Float32Array(e);a.HEAPF64=new Float64Array(e)}function f(e){if(a.onAbort)a.onAbort(e);
|
||||||
|
e="Aborted("+e+")";da(e);Aa=!0;e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info.");oa(e);throw e;}function q(e){try{if(e==Q&&ha)return new Uint8Array(ha);if(pa)return pa(e);throw"both async and sync fetching of the wasm failed";}catch(b){f(b)}}function v(){if(!ha&&(Ba||ia)){if("function"==typeof fetch&&!Q.startsWith("file://"))return fetch(Q,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Q+"'";return e.arrayBuffer()}).catch(function(){return q(Q)});
|
||||||
|
if(qa)return new Promise(function(e,b){qa(Q,function(c){e(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return q(Q)})}function z(e){for(;0<e.length;){var b=e.shift();if("function"==typeof b)b(a);else{var c=b.func;"number"==typeof c?void 0===b.arg?F(c)():F(c)(b.arg):c(void 0===b.arg?null:b.arg)}}}function F(e){var b=ka[e];b||(e>=ka.length&&(ka.length=e+1),ka[e]=b=Ca.get(e));return b}function ea(e){this.excPtr=e;this.ptr=e-24;this.set_type=function(b){V[this.ptr+4>>2]=b};this.get_type=
|
||||||
|
function(){return V[this.ptr+4>>2]};this.set_destructor=function(b){V[this.ptr+8>>2]=b};this.get_destructor=function(){return V[this.ptr+8>>2]};this.set_refcount=function(b){ca[this.ptr>>2]=b};this.set_caught=function(b){Y[this.ptr+12>>0]=b?1:0};this.get_caught=function(){return 0!=Y[this.ptr+12>>0]};this.set_rethrown=function(b){Y[this.ptr+13>>0]=b?1:0};this.get_rethrown=function(){return 0!=Y[this.ptr+13>>0]};this.init=function(b,c){this.set_adjusted_ptr(0);this.set_type(b);this.set_destructor(c);
|
||||||
|
this.set_refcount(0);this.set_caught(!1);this.set_rethrown(!1)};this.add_ref=function(){ca[this.ptr>>2]+=1};this.release_ref=function(){var b=ca[this.ptr>>2];ca[this.ptr>>2]=b-1;return 1===b};this.set_adjusted_ptr=function(b){V[this.ptr+16>>2]=b};this.get_adjusted_ptr=function(){return V[this.ptr+16>>2]};this.get_exception_ptr=function(){if(Da(this.get_type()))return V[this.excPtr>>2];var b=this.get_adjusted_ptr();return 0!==b?b:this.excPtr}}function P(e){function b(){if(!la&&(la=!0,a.calledRun=!0,
|
||||||
|
!Aa)){Ea=!0;z(ra);Fa(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ga.unshift(a.postRun.shift());z(Ga)}}if(!(0<ba)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Ha.unshift(a.preRun.shift());z(Ha);0<ba||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1);b()},1)):b())}}function u(){}function x(e){return(e||u).__cache__}
|
||||||
|
function D(e,b){var c=x(b),d=c[e];if(d)return d;d=Object.create((b||u).prototype);d.ptr=e;return c[e]=d}function aa(e){if("string"===typeof e){for(var b=0,c=0;c<e.length;++c){var d=e.charCodeAt(c);55296<=d&&57343>=d&&(d=65536+((d&1023)<<10)|e.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}b=Array(b+1);c=0;d=b.length;if(0<d){d=c+d-1;for(var g=0;g<e.length;++g){var t=e.charCodeAt(g);if(55296<=t&&57343>=t){var X=e.charCodeAt(++g);t=65536+((t&1023)<<10)|X&1023}if(127>=t){if(c>=d)break;
|
||||||
|
b[c++]=t}else{if(2047>=t){if(c+1>=d)break;b[c++]=192|t>>6}else{if(65535>=t){if(c+2>=d)break;b[c++]=224|t>>12}else{if(c+3>=d)break;b[c++]=240|t>>18;b[c++]=128|t>>12&63}b[c++]=128|t>>6&63}b[c++]=128|t&63}}b[c]=0}e=r.alloc(b,Y);r.copy(b,Y,e);return e}return e}function sa(e){if("object"===typeof e){var b=r.alloc(e,Y);r.copy(e,Y,b);return b}return e}function Z(){throw"cannot construct a VoidPtr, no constructor in IDL";}function S(){this.ptr=Ia();x(S)[this.ptr]=this}function R(){this.ptr=Ja();x(R)[this.ptr]=
|
||||||
|
this}function W(){this.ptr=Ka();x(W)[this.ptr]=this}function w(){this.ptr=La();x(w)[this.ptr]=this}function C(){this.ptr=Ma();x(C)[this.ptr]=this}function G(){this.ptr=Na();x(G)[this.ptr]=this}function H(){this.ptr=Oa();x(H)[this.ptr]=this}function E(){this.ptr=Pa();x(E)[this.ptr]=this}function T(){this.ptr=Qa();x(T)[this.ptr]=this}function B(){throw"cannot construct a Status, no constructor in IDL";}function I(){this.ptr=Ra();x(I)[this.ptr]=this}function J(){this.ptr=Sa();x(J)[this.ptr]=this}function K(){this.ptr=
|
||||||
|
Ta();x(K)[this.ptr]=this}function L(){this.ptr=Ua();x(L)[this.ptr]=this}function M(){this.ptr=Va();x(M)[this.ptr]=this}function N(){this.ptr=Wa();x(N)[this.ptr]=this}function O(){this.ptr=Xa();x(O)[this.ptr]=this}function y(){this.ptr=Ya();x(y)[this.ptr]=this}function m(){this.ptr=Za();x(m)[this.ptr]=this}n=n||{};var a="undefined"!=typeof n?n:{},Fa,oa;a.ready=new Promise(function(e,b){Fa=e;oa=b});var $a=!1,ab=!1;a.onRuntimeInitialized=function(){$a=!0;if(ab&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};
|
||||||
|
a.onModuleParsed=function(){ab=!0;if($a&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(e){if("string"!==typeof e)return!1;e=e.split(".");return 2>e.length||3<e.length?!1:1==e[0]&&0<=e[1]&&5>=e[1]?!0:0!=e[0]||10<e[1]?!1:!0};var bb=Object.assign({},a),Ba="object"==typeof window,ia="function"==typeof importScripts,cb="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,U="",ta,ma;if(cb){U=ia?require("path").dirname(U)+
|
||||||
|
"/":__dirname+"/";var db=function(){ma||(ta=require("fs"),ma=require("path"))};var eb=function(e,b){db();e=ma.normalize(e);return ta.readFileSync(e,b?void 0:"utf8")};var pa=function(e){e=eb(e,!0);e.buffer||(e=new Uint8Array(e));return e};var qa=function(e,b,c){db();e=ma.normalize(e);ta.readFile(e,function(d,g){d?c(d):b(g.buffer)})};1<process.argv.length&&process.argv[1].replace(/\\/g,"/");process.argv.slice(2);a.inspect=function(){return"[Emscripten Module object]"}}else if(Ba||ia)ia?U=self.location.href:
|
||||||
|
"undefined"!=typeof document&&document.currentScript&&(U=document.currentScript.src),k&&(U=k),U=0!==U.indexOf("blob:")?U.substr(0,U.replace(/[?#].*/,"").lastIndexOf("/")+1):"",eb=function(e){var b=new XMLHttpRequest;b.open("GET",e,!1);b.send(null);return b.responseText},ia&&(pa=function(e){var b=new XMLHttpRequest;b.open("GET",e,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),qa=function(e,b,c){var d=new XMLHttpRequest;d.open("GET",e,!0);d.responseType="arraybuffer";
|
||||||
|
d.onload=function(){200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)};var Ad=a.print||console.log.bind(console),da=a.printErr||console.warn.bind(console);Object.assign(a,bb);bb=null;var ha;a.wasmBinary&&(ha=a.wasmBinary);"object"!=typeof WebAssembly&&f("no native wasm support detected");var na,Aa=!1,ya="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,za,Y,fa,ca,V,Ca,Ha=[],ra=[],Ga=[],Ea=!1,ba=0,ua=null,ja=null;var Q="draco_decoder.wasm";Q.startsWith("data:application/octet-stream;base64,")||
|
||||||
|
(Q=l(Q));var ka=[],Bd=0,Cd=[null,[],[]],Dd={c:function(e){return fb(e+24)+24},b:function(e,b,c){(new ea(e)).init(b,c);Bd++;throw e;},a:function(){f("")},h:function(e,b,c){fa.copyWithin(e,b,b+c)},f:function(e){var b=fa.length;e>>>=0;if(2147483648<e)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,e+100663296);var g=Math;d=Math.max(e,d);g=g.min.call(g,2147483648,d+(65536-d%65536)%65536);a:{try{na.grow(g-za.byteLength+65535>>>16);A(na.buffer);var t=1;break a}catch(X){}t=void 0}if(t)return!0}return!1},
|
||||||
|
g:function(e){return 52},e:function(e,b,c,d,g){return 70},d:function(e,b,c,d){for(var g=0,t=0;t<c;t++){var X=V[b>>2],gb=V[b+4>>2];b+=8;for(var va=0;va<gb;va++){var wa=fa[X+va],xa=Cd[e];0===wa||10===wa?((1===e?Ad:da)(p(xa,0)),xa.length=0):xa.push(wa)}g+=gb}V[d>>2]=g;return 0}};(function(){function e(g,t){a.asm=g.exports;na=a.asm.i;A(na.buffer);Ca=a.asm.k;ra.unshift(a.asm.j);ba--;a.monitorRunDependencies&&a.monitorRunDependencies(ba);0==ba&&(null!==ua&&(clearInterval(ua),ua=null),ja&&(g=ja,ja=null,
|
||||||
|
g()))}function b(g){e(g.instance)}function c(g){return v().then(function(t){return WebAssembly.instantiate(t,d)}).then(function(t){return t}).then(g,function(t){da("failed to asynchronously prepare wasm: "+t);f(t)})}var d={a:Dd};ba++;a.monitorRunDependencies&&a.monitorRunDependencies(ba);if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(g){return da("Module.instantiateWasm callback failed with error: "+g),!1}(function(){return ha||"function"!=typeof WebAssembly.instantiateStreaming||Q.startsWith("data:application/octet-stream;base64,")||
|
||||||
|
Q.startsWith("file://")||cb||"function"!=typeof fetch?c(b):fetch(Q,{credentials:"same-origin"}).then(function(g){return WebAssembly.instantiateStreaming(g,d).then(b,function(t){da("wasm streaming compile failed: "+t);da("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(oa);return{}})();a.___wasm_call_ctors=function(){return(a.___wasm_call_ctors=a.asm.j).apply(null,arguments)};var hb=a._emscripten_bind_VoidPtr___destroy___0=function(){return(hb=a._emscripten_bind_VoidPtr___destroy___0=
|
||||||
|
a.asm.l).apply(null,arguments)},Ia=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return(Ia=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=a.asm.m).apply(null,arguments)},ib=a._emscripten_bind_DecoderBuffer_Init_2=function(){return(ib=a._emscripten_bind_DecoderBuffer_Init_2=a.asm.n).apply(null,arguments)},jb=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return(jb=a._emscripten_bind_DecoderBuffer___destroy___0=a.asm.o).apply(null,arguments)},Ja=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=
|
||||||
|
function(){return(Ja=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=a.asm.p).apply(null,arguments)},kb=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return(kb=a._emscripten_bind_AttributeTransformData_transform_type_0=a.asm.q).apply(null,arguments)},lb=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return(lb=a._emscripten_bind_AttributeTransformData___destroy___0=a.asm.r).apply(null,arguments)},Ka=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=
|
||||||
|
function(){return(Ka=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=a.asm.s).apply(null,arguments)},mb=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return(mb=a._emscripten_bind_GeometryAttribute___destroy___0=a.asm.t).apply(null,arguments)},La=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return(La=a._emscripten_bind_PointAttribute_PointAttribute_0=a.asm.u).apply(null,arguments)},nb=a._emscripten_bind_PointAttribute_size_0=function(){return(nb=a._emscripten_bind_PointAttribute_size_0=
|
||||||
|
a.asm.v).apply(null,arguments)},ob=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return(ob=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=a.asm.w).apply(null,arguments)},pb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return(pb=a._emscripten_bind_PointAttribute_attribute_type_0=a.asm.x).apply(null,arguments)},qb=a._emscripten_bind_PointAttribute_data_type_0=function(){return(qb=a._emscripten_bind_PointAttribute_data_type_0=a.asm.y).apply(null,
|
||||||
|
arguments)},rb=a._emscripten_bind_PointAttribute_num_components_0=function(){return(rb=a._emscripten_bind_PointAttribute_num_components_0=a.asm.z).apply(null,arguments)},sb=a._emscripten_bind_PointAttribute_normalized_0=function(){return(sb=a._emscripten_bind_PointAttribute_normalized_0=a.asm.A).apply(null,arguments)},tb=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return(tb=a._emscripten_bind_PointAttribute_byte_stride_0=a.asm.B).apply(null,arguments)},ub=a._emscripten_bind_PointAttribute_byte_offset_0=
|
||||||
|
function(){return(ub=a._emscripten_bind_PointAttribute_byte_offset_0=a.asm.C).apply(null,arguments)},vb=a._emscripten_bind_PointAttribute_unique_id_0=function(){return(vb=a._emscripten_bind_PointAttribute_unique_id_0=a.asm.D).apply(null,arguments)},wb=a._emscripten_bind_PointAttribute___destroy___0=function(){return(wb=a._emscripten_bind_PointAttribute___destroy___0=a.asm.E).apply(null,arguments)},Ma=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return(Ma=
|
||||||
|
a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=a.asm.F).apply(null,arguments)},xb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return(xb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=a.asm.G).apply(null,arguments)},yb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return(yb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=a.asm.H).apply(null,arguments)},
|
||||||
|
zb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return(zb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=a.asm.I).apply(null,arguments)},Ab=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return(Ab=a._emscripten_bind_AttributeQuantizationTransform_range_0=a.asm.J).apply(null,arguments)},Bb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return(Bb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=
|
||||||
|
a.asm.K).apply(null,arguments)},Na=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return(Na=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=a.asm.L).apply(null,arguments)},Cb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return(Cb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=a.asm.M).apply(null,arguments)},Db=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=
|
||||||
|
function(){return(Db=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=a.asm.N).apply(null,arguments)},Eb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return(Eb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=a.asm.O).apply(null,arguments)},Oa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return(Oa=a._emscripten_bind_PointCloud_PointCloud_0=a.asm.P).apply(null,arguments)},Fb=a._emscripten_bind_PointCloud_num_attributes_0=function(){return(Fb=
|
||||||
|
a._emscripten_bind_PointCloud_num_attributes_0=a.asm.Q).apply(null,arguments)},Gb=a._emscripten_bind_PointCloud_num_points_0=function(){return(Gb=a._emscripten_bind_PointCloud_num_points_0=a.asm.R).apply(null,arguments)},Hb=a._emscripten_bind_PointCloud___destroy___0=function(){return(Hb=a._emscripten_bind_PointCloud___destroy___0=a.asm.S).apply(null,arguments)},Pa=a._emscripten_bind_Mesh_Mesh_0=function(){return(Pa=a._emscripten_bind_Mesh_Mesh_0=a.asm.T).apply(null,arguments)},Ib=a._emscripten_bind_Mesh_num_faces_0=
|
||||||
|
function(){return(Ib=a._emscripten_bind_Mesh_num_faces_0=a.asm.U).apply(null,arguments)},Jb=a._emscripten_bind_Mesh_num_attributes_0=function(){return(Jb=a._emscripten_bind_Mesh_num_attributes_0=a.asm.V).apply(null,arguments)},Kb=a._emscripten_bind_Mesh_num_points_0=function(){return(Kb=a._emscripten_bind_Mesh_num_points_0=a.asm.W).apply(null,arguments)},Lb=a._emscripten_bind_Mesh___destroy___0=function(){return(Lb=a._emscripten_bind_Mesh___destroy___0=a.asm.X).apply(null,arguments)},Qa=a._emscripten_bind_Metadata_Metadata_0=
|
||||||
|
function(){return(Qa=a._emscripten_bind_Metadata_Metadata_0=a.asm.Y).apply(null,arguments)},Mb=a._emscripten_bind_Metadata___destroy___0=function(){return(Mb=a._emscripten_bind_Metadata___destroy___0=a.asm.Z).apply(null,arguments)},Nb=a._emscripten_bind_Status_code_0=function(){return(Nb=a._emscripten_bind_Status_code_0=a.asm._).apply(null,arguments)},Ob=a._emscripten_bind_Status_ok_0=function(){return(Ob=a._emscripten_bind_Status_ok_0=a.asm.$).apply(null,arguments)},Pb=a._emscripten_bind_Status_error_msg_0=
|
||||||
|
function(){return(Pb=a._emscripten_bind_Status_error_msg_0=a.asm.aa).apply(null,arguments)},Qb=a._emscripten_bind_Status___destroy___0=function(){return(Qb=a._emscripten_bind_Status___destroy___0=a.asm.ba).apply(null,arguments)},Ra=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return(Ra=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=a.asm.ca).apply(null,arguments)},Rb=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return(Rb=a._emscripten_bind_DracoFloat32Array_GetValue_1=
|
||||||
|
a.asm.da).apply(null,arguments)},Sb=a._emscripten_bind_DracoFloat32Array_size_0=function(){return(Sb=a._emscripten_bind_DracoFloat32Array_size_0=a.asm.ea).apply(null,arguments)},Tb=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return(Tb=a._emscripten_bind_DracoFloat32Array___destroy___0=a.asm.fa).apply(null,arguments)},Sa=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return(Sa=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=a.asm.ga).apply(null,arguments)},Ub=a._emscripten_bind_DracoInt8Array_GetValue_1=
|
||||||
|
function(){return(Ub=a._emscripten_bind_DracoInt8Array_GetValue_1=a.asm.ha).apply(null,arguments)},Vb=a._emscripten_bind_DracoInt8Array_size_0=function(){return(Vb=a._emscripten_bind_DracoInt8Array_size_0=a.asm.ia).apply(null,arguments)},Wb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return(Wb=a._emscripten_bind_DracoInt8Array___destroy___0=a.asm.ja).apply(null,arguments)},Ta=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return(Ta=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=
|
||||||
|
a.asm.ka).apply(null,arguments)},Xb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return(Xb=a._emscripten_bind_DracoUInt8Array_GetValue_1=a.asm.la).apply(null,arguments)},Yb=a._emscripten_bind_DracoUInt8Array_size_0=function(){return(Yb=a._emscripten_bind_DracoUInt8Array_size_0=a.asm.ma).apply(null,arguments)},Zb=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return(Zb=a._emscripten_bind_DracoUInt8Array___destroy___0=a.asm.na).apply(null,arguments)},Ua=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=
|
||||||
|
function(){return(Ua=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=a.asm.oa).apply(null,arguments)},$b=a._emscripten_bind_DracoInt16Array_GetValue_1=function(){return($b=a._emscripten_bind_DracoInt16Array_GetValue_1=a.asm.pa).apply(null,arguments)},ac=a._emscripten_bind_DracoInt16Array_size_0=function(){return(ac=a._emscripten_bind_DracoInt16Array_size_0=a.asm.qa).apply(null,arguments)},bc=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return(bc=a._emscripten_bind_DracoInt16Array___destroy___0=
|
||||||
|
a.asm.ra).apply(null,arguments)},Va=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return(Va=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=a.asm.sa).apply(null,arguments)},cc=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return(cc=a._emscripten_bind_DracoUInt16Array_GetValue_1=a.asm.ta).apply(null,arguments)},dc=a._emscripten_bind_DracoUInt16Array_size_0=function(){return(dc=a._emscripten_bind_DracoUInt16Array_size_0=a.asm.ua).apply(null,arguments)},ec=a._emscripten_bind_DracoUInt16Array___destroy___0=
|
||||||
|
function(){return(ec=a._emscripten_bind_DracoUInt16Array___destroy___0=a.asm.va).apply(null,arguments)},Wa=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return(Wa=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=a.asm.wa).apply(null,arguments)},fc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return(fc=a._emscripten_bind_DracoInt32Array_GetValue_1=a.asm.xa).apply(null,arguments)},gc=a._emscripten_bind_DracoInt32Array_size_0=function(){return(gc=a._emscripten_bind_DracoInt32Array_size_0=
|
||||||
|
a.asm.ya).apply(null,arguments)},hc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return(hc=a._emscripten_bind_DracoInt32Array___destroy___0=a.asm.za).apply(null,arguments)},Xa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return(Xa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=a.asm.Aa).apply(null,arguments)},ic=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return(ic=a._emscripten_bind_DracoUInt32Array_GetValue_1=a.asm.Ba).apply(null,arguments)},
|
||||||
|
jc=a._emscripten_bind_DracoUInt32Array_size_0=function(){return(jc=a._emscripten_bind_DracoUInt32Array_size_0=a.asm.Ca).apply(null,arguments)},kc=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return(kc=a._emscripten_bind_DracoUInt32Array___destroy___0=a.asm.Da).apply(null,arguments)},Ya=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return(Ya=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=a.asm.Ea).apply(null,arguments)},lc=a._emscripten_bind_MetadataQuerier_HasEntry_2=
|
||||||
|
function(){return(lc=a._emscripten_bind_MetadataQuerier_HasEntry_2=a.asm.Fa).apply(null,arguments)},mc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return(mc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=a.asm.Ga).apply(null,arguments)},nc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=function(){return(nc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=a.asm.Ha).apply(null,arguments)},oc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return(oc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=
|
||||||
|
a.asm.Ia).apply(null,arguments)},pc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return(pc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=a.asm.Ja).apply(null,arguments)},qc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return(qc=a._emscripten_bind_MetadataQuerier_NumEntries_1=a.asm.Ka).apply(null,arguments)},rc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return(rc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=a.asm.La).apply(null,arguments)},
|
||||||
|
sc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return(sc=a._emscripten_bind_MetadataQuerier___destroy___0=a.asm.Ma).apply(null,arguments)},Za=a._emscripten_bind_Decoder_Decoder_0=function(){return(Za=a._emscripten_bind_Decoder_Decoder_0=a.asm.Na).apply(null,arguments)},tc=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=function(){return(tc=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=a.asm.Oa).apply(null,arguments)},uc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=function(){return(uc=
|
||||||
|
a._emscripten_bind_Decoder_DecodeArrayToMesh_3=a.asm.Pa).apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return(vc=a._emscripten_bind_Decoder_GetAttributeId_2=a.asm.Qa).apply(null,arguments)},wc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return(wc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=a.asm.Ra).apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return(xc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=
|
||||||
|
a.asm.Sa).apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return(yc=a._emscripten_bind_Decoder_GetAttribute_2=a.asm.Ta).apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return(zc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=a.asm.Ua).apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetMetadata_1=function(){return(Ac=a._emscripten_bind_Decoder_GetMetadata_1=a.asm.Va).apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=
|
||||||
|
function(){return(Bc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=a.asm.Wa).apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return(Cc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=a.asm.Xa).apply(null,arguments)},Dc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return(Dc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=a.asm.Ya).apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return(Ec=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=
|
||||||
|
a.asm.Za).apply(null,arguments)},Fc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=function(){return(Fc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=a.asm._a).apply(null,arguments)},Gc=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return(Gc=a._emscripten_bind_Decoder_GetAttributeFloat_3=a.asm.$a).apply(null,arguments)},Hc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return(Hc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=a.asm.ab).apply(null,
|
||||||
|
arguments)},Ic=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return(Ic=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=a.asm.bb).apply(null,arguments)},Jc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return(Jc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=a.asm.cb).apply(null,arguments)},Kc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return(Kc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=a.asm.db).apply(null,
|
||||||
|
arguments)},Lc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return(Lc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=a.asm.eb).apply(null,arguments)},Mc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return(Mc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=a.asm.fb).apply(null,arguments)},Nc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return(Nc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=
|
||||||
|
a.asm.gb).apply(null,arguments)},Oc=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return(Oc=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=a.asm.hb).apply(null,arguments)},Pc=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return(Pc=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=a.asm.ib).apply(null,arguments)},Qc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return(Qc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=
|
||||||
|
a.asm.jb).apply(null,arguments)},Rc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=function(){return(Rc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=a.asm.kb).apply(null,arguments)},Sc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return(Sc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=a.asm.lb).apply(null,arguments)},Tc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return(Tc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=
|
||||||
|
a.asm.mb).apply(null,arguments)},Uc=a._emscripten_bind_Decoder___destroy___0=function(){return(Uc=a._emscripten_bind_Decoder___destroy___0=a.asm.nb).apply(null,arguments)},Vc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return(Vc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=a.asm.ob).apply(null,arguments)},Wc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return(Wc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=
|
||||||
|
a.asm.pb).apply(null,arguments)},Xc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return(Xc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=a.asm.qb).apply(null,arguments)},Yc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return(Yc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=a.asm.rb).apply(null,arguments)},Zc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=
|
||||||
|
function(){return(Zc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=a.asm.sb).apply(null,arguments)},$c=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return($c=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=a.asm.tb).apply(null,arguments)},ad=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return(ad=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=a.asm.ub).apply(null,arguments)},bd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=
|
||||||
|
function(){return(bd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=a.asm.vb).apply(null,arguments)},cd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return(cd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=a.asm.wb).apply(null,arguments)},dd=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return(dd=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=a.asm.xb).apply(null,arguments)},ed=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=
|
||||||
|
function(){return(ed=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=a.asm.yb).apply(null,arguments)},fd=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return(fd=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=a.asm.zb).apply(null,arguments)},gd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return(gd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=a.asm.Ab).apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_INVALID=
|
||||||
|
function(){return(hd=a._emscripten_enum_draco_DataType_DT_INVALID=a.asm.Bb).apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_INT8=function(){return(id=a._emscripten_enum_draco_DataType_DT_INT8=a.asm.Cb).apply(null,arguments)},jd=a._emscripten_enum_draco_DataType_DT_UINT8=function(){return(jd=a._emscripten_enum_draco_DataType_DT_UINT8=a.asm.Db).apply(null,arguments)},kd=a._emscripten_enum_draco_DataType_DT_INT16=function(){return(kd=a._emscripten_enum_draco_DataType_DT_INT16=a.asm.Eb).apply(null,
|
||||||
|
arguments)},ld=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return(ld=a._emscripten_enum_draco_DataType_DT_UINT16=a.asm.Fb).apply(null,arguments)},md=a._emscripten_enum_draco_DataType_DT_INT32=function(){return(md=a._emscripten_enum_draco_DataType_DT_INT32=a.asm.Gb).apply(null,arguments)},nd=a._emscripten_enum_draco_DataType_DT_UINT32=function(){return(nd=a._emscripten_enum_draco_DataType_DT_UINT32=a.asm.Hb).apply(null,arguments)},od=a._emscripten_enum_draco_DataType_DT_INT64=function(){return(od=
|
||||||
|
a._emscripten_enum_draco_DataType_DT_INT64=a.asm.Ib).apply(null,arguments)},pd=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return(pd=a._emscripten_enum_draco_DataType_DT_UINT64=a.asm.Jb).apply(null,arguments)},qd=a._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return(qd=a._emscripten_enum_draco_DataType_DT_FLOAT32=a.asm.Kb).apply(null,arguments)},rd=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return(rd=a._emscripten_enum_draco_DataType_DT_FLOAT64=a.asm.Lb).apply(null,
|
||||||
|
arguments)},sd=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return(sd=a._emscripten_enum_draco_DataType_DT_BOOL=a.asm.Mb).apply(null,arguments)},td=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return(td=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=a.asm.Nb).apply(null,arguments)},ud=a._emscripten_enum_draco_StatusCode_OK=function(){return(ud=a._emscripten_enum_draco_StatusCode_OK=a.asm.Ob).apply(null,arguments)},vd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return(vd=
|
||||||
|
a._emscripten_enum_draco_StatusCode_DRACO_ERROR=a.asm.Pb).apply(null,arguments)},wd=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return(wd=a._emscripten_enum_draco_StatusCode_IO_ERROR=a.asm.Qb).apply(null,arguments)},xd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return(xd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=a.asm.Rb).apply(null,arguments)},yd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return(yd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=
|
||||||
|
a.asm.Sb).apply(null,arguments)},zd=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return(zd=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=a.asm.Tb).apply(null,arguments)},fb=a._malloc=function(){return(fb=a._malloc=a.asm.Ub).apply(null,arguments)};a._free=function(){return(a._free=a.asm.Vb).apply(null,arguments)};var Da=a.___cxa_is_pointer_type=function(){return(Da=a.___cxa_is_pointer_type=a.asm.Wb).apply(null,arguments)},la;ja=function b(){la||P();la||(ja=b)};a.run=P;if(a.preInit)for("function"==
|
||||||
|
typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();P();u.prototype=Object.create(u.prototype);u.prototype.constructor=u;u.prototype.__class__=u;u.__cache__={};a.WrapperObject=u;a.getCache=x;a.wrapPointer=D;a.castObject=function(b,c){return D(b.ptr,c)};a.NULL=D(0);a.destroy=function(b){if(!b.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";b.__destroy__();delete x(b.__class__)[b.ptr]};a.compare=function(b,c){return b.ptr===c.ptr};a.getPointer=
|
||||||
|
function(b){return b.ptr};a.getClass=function(b){return b.__class__};var r={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(r.needed){for(var b=0;b<r.temps.length;b++)a._free(r.temps[b]);r.temps.length=0;a._free(r.buffer);r.buffer=0;r.size+=r.needed;r.needed=0}r.buffer||(r.size+=128,r.buffer=a._malloc(r.size),r.buffer||f(void 0));r.pos=0},alloc:function(b,c){r.buffer||f(void 0);b=b.length*c.BYTES_PER_ELEMENT;b=b+7&-8;r.pos+b>=r.size?(0<b||f(void 0),r.needed+=b,c=a._malloc(b),r.temps.push(c)):
|
||||||
|
(c=r.buffer+r.pos,r.pos+=b);return c},copy:function(b,c,d){d>>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;break;case 4:d>>>=2;break;case 8:d>>>=3}for(var g=0;g<b.length;g++)c[d+g]=b[g]}};Z.prototype=Object.create(u.prototype);Z.prototype.constructor=Z;Z.prototype.__class__=Z;Z.__cache__={};a.VoidPtr=Z;Z.prototype.__destroy__=Z.prototype.__destroy__=function(){hb(this.ptr)};S.prototype=Object.create(u.prototype);S.prototype.constructor=S;S.prototype.__class__=S;S.__cache__={};a.DecoderBuffer=S;S.prototype.Init=
|
||||||
|
S.prototype.Init=function(b,c){var d=this.ptr;r.prepare();"object"==typeof b&&(b=sa(b));c&&"object"===typeof c&&(c=c.ptr);ib(d,b,c)};S.prototype.__destroy__=S.prototype.__destroy__=function(){jb(this.ptr)};R.prototype=Object.create(u.prototype);R.prototype.constructor=R;R.prototype.__class__=R;R.__cache__={};a.AttributeTransformData=R;R.prototype.transform_type=R.prototype.transform_type=function(){return kb(this.ptr)};R.prototype.__destroy__=R.prototype.__destroy__=function(){lb(this.ptr)};W.prototype=
|
||||||
|
Object.create(u.prototype);W.prototype.constructor=W;W.prototype.__class__=W;W.__cache__={};a.GeometryAttribute=W;W.prototype.__destroy__=W.prototype.__destroy__=function(){mb(this.ptr)};w.prototype=Object.create(u.prototype);w.prototype.constructor=w;w.prototype.__class__=w;w.__cache__={};a.PointAttribute=w;w.prototype.size=w.prototype.size=function(){return nb(this.ptr)};w.prototype.GetAttributeTransformData=w.prototype.GetAttributeTransformData=function(){return D(ob(this.ptr),R)};w.prototype.attribute_type=
|
||||||
|
w.prototype.attribute_type=function(){return pb(this.ptr)};w.prototype.data_type=w.prototype.data_type=function(){return qb(this.ptr)};w.prototype.num_components=w.prototype.num_components=function(){return rb(this.ptr)};w.prototype.normalized=w.prototype.normalized=function(){return!!sb(this.ptr)};w.prototype.byte_stride=w.prototype.byte_stride=function(){return tb(this.ptr)};w.prototype.byte_offset=w.prototype.byte_offset=function(){return ub(this.ptr)};w.prototype.unique_id=w.prototype.unique_id=
|
||||||
|
function(){return vb(this.ptr)};w.prototype.__destroy__=w.prototype.__destroy__=function(){wb(this.ptr)};C.prototype=Object.create(u.prototype);C.prototype.constructor=C;C.prototype.__class__=C;C.__cache__={};a.AttributeQuantizationTransform=C;C.prototype.InitFromAttribute=C.prototype.InitFromAttribute=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return!!xb(c,b)};C.prototype.quantization_bits=C.prototype.quantization_bits=function(){return yb(this.ptr)};C.prototype.min_value=C.prototype.min_value=
|
||||||
|
function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return zb(c,b)};C.prototype.range=C.prototype.range=function(){return Ab(this.ptr)};C.prototype.__destroy__=C.prototype.__destroy__=function(){Bb(this.ptr)};G.prototype=Object.create(u.prototype);G.prototype.constructor=G;G.prototype.__class__=G;G.__cache__={};a.AttributeOctahedronTransform=G;G.prototype.InitFromAttribute=G.prototype.InitFromAttribute=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return!!Cb(c,b)};G.prototype.quantization_bits=
|
||||||
|
G.prototype.quantization_bits=function(){return Db(this.ptr)};G.prototype.__destroy__=G.prototype.__destroy__=function(){Eb(this.ptr)};H.prototype=Object.create(u.prototype);H.prototype.constructor=H;H.prototype.__class__=H;H.__cache__={};a.PointCloud=H;H.prototype.num_attributes=H.prototype.num_attributes=function(){return Fb(this.ptr)};H.prototype.num_points=H.prototype.num_points=function(){return Gb(this.ptr)};H.prototype.__destroy__=H.prototype.__destroy__=function(){Hb(this.ptr)};E.prototype=
|
||||||
|
Object.create(u.prototype);E.prototype.constructor=E;E.prototype.__class__=E;E.__cache__={};a.Mesh=E;E.prototype.num_faces=E.prototype.num_faces=function(){return Ib(this.ptr)};E.prototype.num_attributes=E.prototype.num_attributes=function(){return Jb(this.ptr)};E.prototype.num_points=E.prototype.num_points=function(){return Kb(this.ptr)};E.prototype.__destroy__=E.prototype.__destroy__=function(){Lb(this.ptr)};T.prototype=Object.create(u.prototype);T.prototype.constructor=T;T.prototype.__class__=
|
||||||
|
T;T.__cache__={};a.Metadata=T;T.prototype.__destroy__=T.prototype.__destroy__=function(){Mb(this.ptr)};B.prototype=Object.create(u.prototype);B.prototype.constructor=B;B.prototype.__class__=B;B.__cache__={};a.Status=B;B.prototype.code=B.prototype.code=function(){return Nb(this.ptr)};B.prototype.ok=B.prototype.ok=function(){return!!Ob(this.ptr)};B.prototype.error_msg=B.prototype.error_msg=function(){return h(Pb(this.ptr))};B.prototype.__destroy__=B.prototype.__destroy__=function(){Qb(this.ptr)};I.prototype=
|
||||||
|
Object.create(u.prototype);I.prototype.constructor=I;I.prototype.__class__=I;I.__cache__={};a.DracoFloat32Array=I;I.prototype.GetValue=I.prototype.GetValue=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return Rb(c,b)};I.prototype.size=I.prototype.size=function(){return Sb(this.ptr)};I.prototype.__destroy__=I.prototype.__destroy__=function(){Tb(this.ptr)};J.prototype=Object.create(u.prototype);J.prototype.constructor=J;J.prototype.__class__=J;J.__cache__={};a.DracoInt8Array=J;J.prototype.GetValue=
|
||||||
|
J.prototype.GetValue=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return Ub(c,b)};J.prototype.size=J.prototype.size=function(){return Vb(this.ptr)};J.prototype.__destroy__=J.prototype.__destroy__=function(){Wb(this.ptr)};K.prototype=Object.create(u.prototype);K.prototype.constructor=K;K.prototype.__class__=K;K.__cache__={};a.DracoUInt8Array=K;K.prototype.GetValue=K.prototype.GetValue=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return Xb(c,b)};K.prototype.size=K.prototype.size=
|
||||||
|
function(){return Yb(this.ptr)};K.prototype.__destroy__=K.prototype.__destroy__=function(){Zb(this.ptr)};L.prototype=Object.create(u.prototype);L.prototype.constructor=L;L.prototype.__class__=L;L.__cache__={};a.DracoInt16Array=L;L.prototype.GetValue=L.prototype.GetValue=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return $b(c,b)};L.prototype.size=L.prototype.size=function(){return ac(this.ptr)};L.prototype.__destroy__=L.prototype.__destroy__=function(){bc(this.ptr)};M.prototype=Object.create(u.prototype);
|
||||||
|
M.prototype.constructor=M;M.prototype.__class__=M;M.__cache__={};a.DracoUInt16Array=M;M.prototype.GetValue=M.prototype.GetValue=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return cc(c,b)};M.prototype.size=M.prototype.size=function(){return dc(this.ptr)};M.prototype.__destroy__=M.prototype.__destroy__=function(){ec(this.ptr)};N.prototype=Object.create(u.prototype);N.prototype.constructor=N;N.prototype.__class__=N;N.__cache__={};a.DracoInt32Array=N;N.prototype.GetValue=N.prototype.GetValue=
|
||||||
|
function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return fc(c,b)};N.prototype.size=N.prototype.size=function(){return gc(this.ptr)};N.prototype.__destroy__=N.prototype.__destroy__=function(){hc(this.ptr)};O.prototype=Object.create(u.prototype);O.prototype.constructor=O;O.prototype.__class__=O;O.__cache__={};a.DracoUInt32Array=O;O.prototype.GetValue=O.prototype.GetValue=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return ic(c,b)};O.prototype.size=O.prototype.size=function(){return jc(this.ptr)};
|
||||||
|
O.prototype.__destroy__=O.prototype.__destroy__=function(){kc(this.ptr)};y.prototype=Object.create(u.prototype);y.prototype.constructor=y;y.prototype.__class__=y;y.__cache__={};a.MetadataQuerier=y;y.prototype.HasEntry=y.prototype.HasEntry=function(b,c){var d=this.ptr;r.prepare();b&&"object"===typeof b&&(b=b.ptr);c=c&&"object"===typeof c?c.ptr:aa(c);return!!lc(d,b,c)};y.prototype.GetIntEntry=y.prototype.GetIntEntry=function(b,c){var d=this.ptr;r.prepare();b&&"object"===typeof b&&(b=b.ptr);c=c&&"object"===
|
||||||
|
typeof c?c.ptr:aa(c);return mc(d,b,c)};y.prototype.GetIntEntryArray=y.prototype.GetIntEntryArray=function(b,c,d){var g=this.ptr;r.prepare();b&&"object"===typeof b&&(b=b.ptr);c=c&&"object"===typeof c?c.ptr:aa(c);d&&"object"===typeof d&&(d=d.ptr);nc(g,b,c,d)};y.prototype.GetDoubleEntry=y.prototype.GetDoubleEntry=function(b,c){var d=this.ptr;r.prepare();b&&"object"===typeof b&&(b=b.ptr);c=c&&"object"===typeof c?c.ptr:aa(c);return oc(d,b,c)};y.prototype.GetStringEntry=y.prototype.GetStringEntry=function(b,
|
||||||
|
c){var d=this.ptr;r.prepare();b&&"object"===typeof b&&(b=b.ptr);c=c&&"object"===typeof c?c.ptr:aa(c);return h(pc(d,b,c))};y.prototype.NumEntries=y.prototype.NumEntries=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return qc(c,b)};y.prototype.GetEntryName=y.prototype.GetEntryName=function(b,c){var d=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return h(rc(d,b,c))};y.prototype.__destroy__=y.prototype.__destroy__=function(){sc(this.ptr)};m.prototype=Object.create(u.prototype);
|
||||||
|
m.prototype.constructor=m;m.prototype.__class__=m;m.__cache__={};a.Decoder=m;m.prototype.DecodeArrayToPointCloud=m.prototype.DecodeArrayToPointCloud=function(b,c,d){var g=this.ptr;r.prepare();"object"==typeof b&&(b=sa(b));c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return D(tc(g,b,c,d),B)};m.prototype.DecodeArrayToMesh=m.prototype.DecodeArrayToMesh=function(b,c,d){var g=this.ptr;r.prepare();"object"==typeof b&&(b=sa(b));c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&
|
||||||
|
(d=d.ptr);return D(uc(g,b,c,d),B)};m.prototype.GetAttributeId=m.prototype.GetAttributeId=function(b,c){var d=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return vc(d,b,c)};m.prototype.GetAttributeIdByName=m.prototype.GetAttributeIdByName=function(b,c){var d=this.ptr;r.prepare();b&&"object"===typeof b&&(b=b.ptr);c=c&&"object"===typeof c?c.ptr:aa(c);return wc(d,b,c)};m.prototype.GetAttributeIdByMetadataEntry=m.prototype.GetAttributeIdByMetadataEntry=function(b,c,d){var g=
|
||||||
|
this.ptr;r.prepare();b&&"object"===typeof b&&(b=b.ptr);c=c&&"object"===typeof c?c.ptr:aa(c);d=d&&"object"===typeof d?d.ptr:aa(d);return xc(g,b,c,d)};m.prototype.GetAttribute=m.prototype.GetAttribute=function(b,c){var d=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return D(yc(d,b,c),w)};m.prototype.GetAttributeByUniqueId=m.prototype.GetAttributeByUniqueId=function(b,c){var d=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return D(zc(d,b,
|
||||||
|
c),w)};m.prototype.GetMetadata=m.prototype.GetMetadata=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return D(Ac(c,b),T)};m.prototype.GetAttributeMetadata=m.prototype.GetAttributeMetadata=function(b,c){var d=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return D(Bc(d,b,c),T)};m.prototype.GetFaceFromMesh=m.prototype.GetFaceFromMesh=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&
|
||||||
|
(d=d.ptr);return!!Cc(g,b,c,d)};m.prototype.GetTriangleStripsFromMesh=m.prototype.GetTriangleStripsFromMesh=function(b,c){var d=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return Dc(d,b,c)};m.prototype.GetTrianglesUInt16Array=m.prototype.GetTrianglesUInt16Array=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ec(g,b,c,d)};m.prototype.GetTrianglesUInt32Array=m.prototype.GetTrianglesUInt32Array=
|
||||||
|
function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Fc(g,b,c,d)};m.prototype.GetAttributeFloat=m.prototype.GetAttributeFloat=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Gc(g,b,c,d)};m.prototype.GetAttributeFloatForAllPoints=m.prototype.GetAttributeFloatForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&
|
||||||
|
(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Hc(g,b,c,d)};m.prototype.GetAttributeIntForAllPoints=m.prototype.GetAttributeIntForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ic(g,b,c,d)};m.prototype.GetAttributeInt8ForAllPoints=m.prototype.GetAttributeInt8ForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&
|
||||||
|
(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Jc(g,b,c,d)};m.prototype.GetAttributeUInt8ForAllPoints=m.prototype.GetAttributeUInt8ForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Kc(g,b,c,d)};m.prototype.GetAttributeInt16ForAllPoints=m.prototype.GetAttributeInt16ForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&
|
||||||
|
(d=d.ptr);return!!Lc(g,b,c,d)};m.prototype.GetAttributeUInt16ForAllPoints=m.prototype.GetAttributeUInt16ForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Mc(g,b,c,d)};m.prototype.GetAttributeInt32ForAllPoints=m.prototype.GetAttributeInt32ForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Nc(g,
|
||||||
|
b,c,d)};m.prototype.GetAttributeUInt32ForAllPoints=m.prototype.GetAttributeUInt32ForAllPoints=function(b,c,d){var g=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Oc(g,b,c,d)};m.prototype.GetAttributeDataArrayForAllPoints=m.prototype.GetAttributeDataArrayForAllPoints=function(b,c,d,g,t){var X=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);g&&"object"===typeof g&&
|
||||||
|
(g=g.ptr);t&&"object"===typeof t&&(t=t.ptr);return!!Pc(X,b,c,d,g,t)};m.prototype.SkipAttributeTransform=m.prototype.SkipAttributeTransform=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);Qc(c,b)};m.prototype.GetEncodedGeometryType_Deprecated=m.prototype.GetEncodedGeometryType_Deprecated=function(b){var c=this.ptr;b&&"object"===typeof b&&(b=b.ptr);return Rc(c,b)};m.prototype.DecodeBufferToPointCloud=m.prototype.DecodeBufferToPointCloud=function(b,c){var d=this.ptr;b&&"object"===typeof b&&
|
||||||
|
(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return D(Sc(d,b,c),B)};m.prototype.DecodeBufferToMesh=m.prototype.DecodeBufferToMesh=function(b,c){var d=this.ptr;b&&"object"===typeof b&&(b=b.ptr);c&&"object"===typeof c&&(c=c.ptr);return D(Tc(d,b,c),B)};m.prototype.__destroy__=m.prototype.__destroy__=function(){Uc(this.ptr)};(function(){function b(){a.ATTRIBUTE_INVALID_TRANSFORM=Vc();a.ATTRIBUTE_NO_TRANSFORM=Wc();a.ATTRIBUTE_QUANTIZATION_TRANSFORM=Xc();a.ATTRIBUTE_OCTAHEDRON_TRANSFORM=Yc();a.INVALID=Zc();
|
||||||
|
a.POSITION=$c();a.NORMAL=ad();a.COLOR=bd();a.TEX_COORD=cd();a.GENERIC=dd();a.INVALID_GEOMETRY_TYPE=ed();a.POINT_CLOUD=fd();a.TRIANGULAR_MESH=gd();a.DT_INVALID=hd();a.DT_INT8=id();a.DT_UINT8=jd();a.DT_INT16=kd();a.DT_UINT16=ld();a.DT_INT32=md();a.DT_UINT32=nd();a.DT_INT64=od();a.DT_UINT64=pd();a.DT_FLOAT32=qd();a.DT_FLOAT64=rd();a.DT_BOOL=sd();a.DT_TYPES_COUNT=td();a.OK=ud();a.DRACO_ERROR=vd();a.IO_ERROR=wd();a.INVALID_PARAMETER=xd();a.UNSUPPORTED_VERSION=yd();a.UNKNOWN_VERSION=zd()}Ea?b():ra.unshift(b)})();
|
||||||
|
if("function"===typeof a.onModuleParsed)a.onModuleParsed();a.Decoder.prototype.GetEncodedGeometryType=function(b){if(b.__class__&&b.__class__===a.DecoderBuffer)return a.Decoder.prototype.GetEncodedGeometryType_Deprecated(b);if(8>b.byteLength)return a.INVALID_GEOMETRY_TYPE;switch(b[7]){case 0:return a.POINT_CLOUD;case 1:return a.TRIANGULAR_MESH;default:return a.INVALID_GEOMETRY_TYPE}};return n.ready}}();
|
||||||
|
"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule);
|
|
@ -0,0 +1,15 @@
|
||||||
|
importScripts ('occt-import-js.js');
|
||||||
|
|
||||||
|
onmessage = async function (ev)
|
||||||
|
{
|
||||||
|
let occt = await occtimportjs ();
|
||||||
|
let result = null;
|
||||||
|
if (ev.data.format === 'step') {
|
||||||
|
result = occt.ReadStepFile (ev.data.buffer);
|
||||||
|
} else if (ev.data.format === 'iges') {
|
||||||
|
result = occt.ReadIgesFile (ev.data.buffer);
|
||||||
|
} else if (ev.data.format === 'brep') {
|
||||||
|
result = occt.ReadBrepFile (ev.data.buffer);
|
||||||
|
}
|
||||||
|
postMessage (result);
|
||||||
|
};
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
id="logo"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 14 14"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:docname="checkmark.svg"
|
||||||
|
width="14"
|
||||||
|
height="14"
|
||||||
|
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
|
id="namedview38"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:zoom="25.966667"
|
||||||
|
inkscape:cx="8.9922978"
|
||||||
|
inkscape:cy="11.803594"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="logo"><inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid941" /></sodipodi:namedview><defs
|
||||||
|
id="defs5"><clipPath
|
||||||
|
id="d-5"><path
|
||||||
|
id="use2"
|
||||||
|
d="M -5,-1 H 57 V 61 H -5 Z" /></clipPath></defs><path
|
||||||
|
style="fill:none;stroke:#fafafa;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 3,7 3,3 5,-6"
|
||||||
|
id="path982"
|
||||||
|
sodipodi:nodetypes="ccc" /></svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1,93 @@
|
||||||
|
Copyright 2011 The Quicksand Project Authors (https://github.com/andrew-paglinawan/QuicksandFamily), with Reserved Font Name “Quicksand”.
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
6
server/src/main/resources/static/xmind/css/bootstrap-customized-2821153174.min.css
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html site-mode=en mode=production lang=en>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
|
||||||
|
<meta http-equiv=X-UA-Compatible content="ie=edge">
|
||||||
|
<meta name=author content="Xmind Ltd.">
|
||||||
|
<meta name=renderer content=webkit>
|
||||||
|
<title>Xmind</title>
|
||||||
|
<meta name=description content="Xmind is the most professional and popular mind mapping tool. Millions of people use Xmind to clarify thinking, manage complex information, brainstorming, get work organized, remote and work from home WFH.">
|
||||||
|
<meta name=keywords content="Xmind,mindmap,mind map,mind mapping,mind mapping software,free mind mapping software,work from home,WFH,remote">
|
||||||
|
<link rel=stylesheet href=css/bootstrap-customized-2821153174.min.css>
|
||||||
|
<link rel=stylesheet href=css/index-5376440060.css>
|
||||||
|
<script src=js/jquery-3-c9f5aeeca3.2.1.min.js> </script>
|
||||||
|
<meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
|
||||||
|
<link rel=stylesheet href=css/share-embed-39eba5407f.css> </head>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
window.manifests={snowbrush:"js/snowbrush.js"},window.metadataString=""
|
||||||
|
</script>
|
||||||
|
<script src=js/text-autospace-fed758f4a6.min.js> </script>
|
||||||
|
<script src=js/polyfill-45b9836beb.min.js> </script>
|
||||||
|
<script src=js/js-cookie-a978ac7394.js> </script>
|
||||||
|
<script src=js/popper-135fa9e662.min.js> </script>
|
||||||
|
<script src=js/bootstrap-26779614c4.min.js> </script>
|
||||||
|
<script src=js/base.61517cade8.js> </script>
|
||||||
|
<script src=js/share-embed.68f7476360.js> </script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1 @@
|
||||||
|
(window.wepbackJsonp1667381142044=window.wepbackJsonp1667381142044||[]).push([[120],{592:function(o){o.exports=JSON.parse('{"meta":{"title":"Xmind - Mind Mapping Software","description":"Xmind is the most professional and popular mind mapping tool. Millions of people use Xmind to clarify thinking, manage complex information, brainstorming, get work organized, remote and work from home WFH.","keywords":"Xmind,mindmap,mind map,mind mapping,mind mapping software,free mind mapping software,work from home,WFH,remote"},"og":{"locale":"en_US","site_name":"Xmind"},"_current_xmind_zen_name":"Xmind for Desktop","About Us":"About US","Blog":"Blog","Buy Now":"Buy Now","Cancel":"Cancel","Confirm":"Confirm","_ok":"OK","Continue":"Continue","Download":"Download","Email":"Email","FAQ":"FAQ","Free Download":"Free Download","Mobile":"Mobile","Phone Number":"Phone Number","Price":"Price","Pricing":"Pricing","_xmind_for_mobile":"Xmind for Mobile","_browser_does_not_support_video":"Your browser does not support the video tag.","_colonSign":": ","_features":"Features","_going_2_signin":"Going to the signin page...","_desktop":"Desktop","_mobile_ver":"Mobile","_bundle_name":"Xmind (Desktop + Mobile)","_periodSign":".","_site_map":"Site Map","_terms_of_service":"Terms of Service","month":"month","months":"months","year":"year","years":"years","_comming_soon":"Comming soon...","_all_download":"All Download"}')}}]);
|
|
@ -0,0 +1 @@
|
||||||
|
(window.wepbackJsonp1667381142044=window.wepbackJsonp1667381142044||[]).push([[125],{597:function(e){e.exports=JSON.parse('{"Error":"Error","Success":"Success","_get_profile_failed":"Get profile failed.","_got_a_problem":"Sorry, we got a problem, please try again later","_server_error_try_again_later":"There is a problem with the server, please try again later.","_subscription_not_found_or_expired":"Subscription not found or expired","_enter_a_valid_info":"Please enter a valid value","_something_wrong_contact_us":"There is something wrong, please try again later or contact us: support@xmind.app"}')}}]);
|
|
@ -0,0 +1 @@
|
||||||
|
(window.wepbackJsonp1667381142044=window.wepbackJsonp1667381142044||[]).push([[129],{601:function(e){e.exports=JSON.parse('{"forgot_pwd":{"meta":{"title":"Forgot Password"}},"improve_info":{"meta":{"title":"Improve Information"}},"reset_pwd":{"meta":{"title":"Reset Password"}},"signin":{"meta":{"title":"Sign In"}},"signup":{"meta":{"title":"Sign Up"}},"Continue":"Continue","Email":"Email","Sign In":"Sign In","Sign Up":"Subscription","_account_not_exist":"Your account does not exist","_already_bound":"Already bound","_ask_forgot_password":"Forgot Password?","_associated_with_xmind_id":"is now associated with your Xmind ID","_binding_failed":"Binding failed","_cancel":"Cancel","_choose_verification_method":"Choose verification method","_code_expired_or_used":"Verification code expired or already used.","_confirm_email":"Confirm Email","_confirm_password":"Confirm Password","_create_xmind_id":"Create Xmind ID","_email_address_verified":"Email address verified.","_email_dont_match":"Emails don\'t match.","_email_has_been_registered":"The email address has been registered. Try another one?","_email_or_xmindid":"Email/Xmind ID","_email_verification":"Email Verification","_enter_for_binding":"Enter email/Xmind ID for binding, enter an unregistered email address to quickly register an account.","_enter_new_password":"New Password","_enter_verification_code":"Enter Verification Code","_forget_password":"Forget Password","_go_back_sign_in":"Go back to sign in.","_has_been_occupied":" has been occupied.","_i_dont_have_an_id":"I don\'t have an Xmind ID.","_i_have_xmind_id":"I already have an Xmind ID.","_improve_info":"Improve Information","_invalidPasswordWarning":"The password contains illegal characters, please use characters and non-symbolic characters for password setting.","_invalid_email":"Your email address is invalid.","_invalid_phone":"Invalid phone.","_next_step":"Next","no_account_found":{"main":"No account found with that email or Xmind ID. Please try again or {{- signup_link}}.","signup_text":"sign up"},"_no_data":"No data","_oh_snap":"Oh snap!","_password":"Password","_password_length_tip":"Password length should be between 6 and 32 characters.","_passwords_not_match":"Passwords don\'t match.","_phone":"Phone","_reset":"Reset","_reset_password":"Reset Password","_send_me_news":"Send me tips and news (about monthly).","_send_verification_code":"Get Code","_server_error":"Server error","_sign_up":"Sign Up","_signin":"Sign in","_signin_to_xmind":"Sign in to Xmind","_signup_header1":"Create Your Xmind ID","_signup_success":"Sign Up Success!","_stay_signed_in":"Stay signed in","_thanks_for_verifying_address":"Thank you for verifying your address.","_try_resend_verfication_email":"Please try resend verification email in your account setting.","_u_must_agree_terms":"In order to use our services, you must agree to Xmind\'s Terms of Service.","_user_name_not_match_code":"User name not match verification code.","_verifyByEmail":"Verify by Email: {0}","_verifyByPhone":"Verify by Phone: {0}","_well_done":"Well done!","_wrong_verification_code":"Wrong verification code","_verification_code_has_expired":"The verification code has expired, please get another one","_xmind_id_exists":"Someone already has that Xmind ID. Try another one?","_xmind_id_invalid":"Xmind ID is invalid","_you_cant_leave_this_empty":"You can\'t leave this empty.","terms_and_privacy_required":{"main":"I have read and agree to the {{- terms_service_link}} and {{- privacy_policy_link}}.","terms_service_text":"terms of service","privacy_policy_text":"privacy policy"},"_signinToContinueBuying":"Sign in to Continue","_signinToContinueManageAccount":"Sign in to Continue","current_region_account_required_hint":{"main":"An Xmind ID for {{- xmind_app_link}} is required, you are signing in with an Xmind ID for {{- xmind_cn_link}}.","xmind_app_text":"www.xmind.app","xmind_cn_text":"www.xmind.cn"},"_enter_email_reset_pwd":"Enter your Xmind ID or verified email to reset your password.","_id_or_email":"Xmind ID or Verified Email","create_new_pwd":"Create a new password","dont_have_account":"Don’t have an account?","sign_up_now":"Sign up now.","dont_have_xmind_id":"Do not have an Xmind ID?","other_way_sign_in":"Other way to sign in","forgetpwd_continue":"Continue"}')}}]);
|
|
@ -0,0 +1,165 @@
|
||||||
|
/*!
|
||||||
|
* JavaScript Cookie v2.2.0
|
||||||
|
* https://github.com/js-cookie/js-cookie
|
||||||
|
*
|
||||||
|
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
|
||||||
|
* Released under the MIT license
|
||||||
|
*/
|
||||||
|
;(function (factory) {
|
||||||
|
var registeredInModuleLoader = false;
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
define(factory);
|
||||||
|
registeredInModuleLoader = true;
|
||||||
|
}
|
||||||
|
if (typeof exports === 'object') {
|
||||||
|
module.exports = factory();
|
||||||
|
registeredInModuleLoader = true;
|
||||||
|
}
|
||||||
|
if (!registeredInModuleLoader) {
|
||||||
|
var OldCookies = window.Cookies;
|
||||||
|
var api = window.Cookies = factory();
|
||||||
|
api.noConflict = function () {
|
||||||
|
window.Cookies = OldCookies;
|
||||||
|
return api;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}(function () {
|
||||||
|
function extend () {
|
||||||
|
var i = 0;
|
||||||
|
var result = {};
|
||||||
|
for (; i < arguments.length; i++) {
|
||||||
|
var attributes = arguments[ i ];
|
||||||
|
for (var key in attributes) {
|
||||||
|
result[key] = attributes[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function init (converter) {
|
||||||
|
function api (key, value, attributes) {
|
||||||
|
var result;
|
||||||
|
if (typeof document === 'undefined') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write
|
||||||
|
|
||||||
|
if (arguments.length > 1) {
|
||||||
|
attributes = extend({
|
||||||
|
path: '/'
|
||||||
|
}, api.defaults, attributes);
|
||||||
|
|
||||||
|
if (typeof attributes.expires === 'number') {
|
||||||
|
var expires = new Date();
|
||||||
|
expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
|
||||||
|
attributes.expires = expires;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We're using "expires" because "max-age" is not supported by IE
|
||||||
|
attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
|
||||||
|
|
||||||
|
try {
|
||||||
|
result = JSON.stringify(value);
|
||||||
|
if (/^[\{\[]/.test(result)) {
|
||||||
|
value = result;
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (!converter.write) {
|
||||||
|
value = encodeURIComponent(String(value))
|
||||||
|
.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
|
||||||
|
} else {
|
||||||
|
value = converter.write(value, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
key = encodeURIComponent(String(key));
|
||||||
|
key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
|
||||||
|
key = key.replace(/[\(\)]/g, escape);
|
||||||
|
|
||||||
|
var stringifiedAttributes = '';
|
||||||
|
|
||||||
|
for (var attributeName in attributes) {
|
||||||
|
if (!attributes[attributeName]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stringifiedAttributes += '; ' + attributeName;
|
||||||
|
if (attributes[attributeName] === true) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stringifiedAttributes += '=' + attributes[attributeName];
|
||||||
|
}
|
||||||
|
return (document.cookie = key + '=' + value + stringifiedAttributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read
|
||||||
|
|
||||||
|
if (!key) {
|
||||||
|
result = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// To prevent the for loop in the first place assign an empty array
|
||||||
|
// in case there are no cookies at all. Also prevents odd result when
|
||||||
|
// calling "get()"
|
||||||
|
var cookies = document.cookie ? document.cookie.split('; ') : [];
|
||||||
|
var rdecode = /(%[0-9A-Z]{2})+/g;
|
||||||
|
var i = 0;
|
||||||
|
|
||||||
|
for (; i < cookies.length; i++) {
|
||||||
|
var parts = cookies[i].split('=');
|
||||||
|
var cookie = parts.slice(1).join('=');
|
||||||
|
|
||||||
|
if (!this.json && cookie.charAt(0) === '"') {
|
||||||
|
cookie = cookie.slice(1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
var name = parts[0].replace(rdecode, decodeURIComponent);
|
||||||
|
cookie = converter.read ?
|
||||||
|
converter.read(cookie, name) : converter(cookie, name) ||
|
||||||
|
cookie.replace(rdecode, decodeURIComponent);
|
||||||
|
|
||||||
|
if (this.json) {
|
||||||
|
try {
|
||||||
|
cookie = JSON.parse(cookie);
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key === name) {
|
||||||
|
result = cookie;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!key) {
|
||||||
|
result[name] = cookie;
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
api.set = api;
|
||||||
|
api.get = function (key) {
|
||||||
|
return api.call(api, key);
|
||||||
|
};
|
||||||
|
api.getJSON = function () {
|
||||||
|
return api.apply({
|
||||||
|
json: true
|
||||||
|
}, [].slice.call(arguments));
|
||||||
|
};
|
||||||
|
api.defaults = {};
|
||||||
|
|
||||||
|
api.remove = function (key, attributes) {
|
||||||
|
api(key, '', extend(attributes, {
|
||||||
|
expires: -1
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
api.withConverter = init;
|
||||||
|
|
||||||
|
return api;
|
||||||
|
}
|
||||||
|
|
||||||
|
return init(function () {});
|
||||||
|
}));
|
|
@ -0,0 +1,388 @@
|
||||||
|
!function(e, t) {
|
||||||
|
"object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.XMindEmbedViewer = t() : e.XMindEmbedViewer = t()
|
||||||
|
}(self, (function() {
|
||||||
|
return (()=>{
|
||||||
|
"use strict";
|
||||||
|
var e = {
|
||||||
|
61: function(e, t) {
|
||||||
|
var n = this && this.__awaiter || function(e, t, n, r) {
|
||||||
|
return new (n || (n = Promise))((function(o, i) {
|
||||||
|
function a(e) {
|
||||||
|
try {
|
||||||
|
l(r.next(e))
|
||||||
|
} catch (e) {
|
||||||
|
i(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function s(e) {
|
||||||
|
try {
|
||||||
|
l(r.throw(e))
|
||||||
|
} catch (e) {
|
||||||
|
i(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function l(e) {
|
||||||
|
var t;
|
||||||
|
e.done ? o(e.value) : (t = e.value,
|
||||||
|
t instanceof n ? t : new n((function(e) {
|
||||||
|
e(t)
|
||||||
|
}
|
||||||
|
))).then(a, s)
|
||||||
|
}
|
||||||
|
l((r = r.apply(e, t || [])).next())
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
, r = this && this.__generator || function(e, t) {
|
||||||
|
var n, r, o, i, a = {
|
||||||
|
label: 0,
|
||||||
|
sent: function() {
|
||||||
|
if (1 & o[0])
|
||||||
|
throw o[1];
|
||||||
|
return o[1]
|
||||||
|
},
|
||||||
|
trys: [],
|
||||||
|
ops: []
|
||||||
|
};
|
||||||
|
return i = {
|
||||||
|
next: s(0),
|
||||||
|
throw: s(1),
|
||||||
|
return: s(2)
|
||||||
|
},
|
||||||
|
"function" == typeof Symbol && (i[Symbol.iterator] = function() {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
),
|
||||||
|
i;
|
||||||
|
function s(i) {
|
||||||
|
return function(s) {
|
||||||
|
return function(i) {
|
||||||
|
if (n)
|
||||||
|
throw new TypeError("Generator is already executing.");
|
||||||
|
for (; a; )
|
||||||
|
try {
|
||||||
|
if (n = 1,
|
||||||
|
r && (o = 2 & i[0] ? r.return : i[0] ? r.throw || ((o = r.return) && o.call(r),
|
||||||
|
0) : r.next) && !(o = o.call(r, i[1])).done)
|
||||||
|
return o;
|
||||||
|
switch (r = 0,
|
||||||
|
o && (i = [2 & i[0], o.value]),
|
||||||
|
i[0]) {
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
o = i;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
return a.label++,
|
||||||
|
{
|
||||||
|
value: i[1],
|
||||||
|
done: !1
|
||||||
|
};
|
||||||
|
case 5:
|
||||||
|
a.label++,
|
||||||
|
r = i[1],
|
||||||
|
i = [0];
|
||||||
|
continue;
|
||||||
|
case 7:
|
||||||
|
i = a.ops.pop(),
|
||||||
|
a.trys.pop();
|
||||||
|
continue;
|
||||||
|
default:
|
||||||
|
if (!((o = (o = a.trys).length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) {
|
||||||
|
a = 0;
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) {
|
||||||
|
a.label = i[1];
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (6 === i[0] && a.label < o[1]) {
|
||||||
|
a.label = o[1],
|
||||||
|
o = i;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (o && a.label < o[2]) {
|
||||||
|
a.label = o[2],
|
||||||
|
a.ops.push(i);
|
||||||
|
break
|
||||||
|
}
|
||||||
|
o[2] && a.ops.pop(),
|
||||||
|
a.trys.pop();
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
i = t.call(e, a)
|
||||||
|
} catch (e) {
|
||||||
|
i = [6, e],
|
||||||
|
r = 0
|
||||||
|
} finally {
|
||||||
|
n = o = 0
|
||||||
|
}
|
||||||
|
if (5 & i[0])
|
||||||
|
throw i[1];
|
||||||
|
return {
|
||||||
|
value: i[0] ? i[1] : void 0,
|
||||||
|
done: !0
|
||||||
|
}
|
||||||
|
}([i, s])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
;
|
||||||
|
Object.defineProperty(t, "__esModule", {
|
||||||
|
value: !0
|
||||||
|
}),
|
||||||
|
t.IframeEventChannelController = void 0;
|
||||||
|
var o = function() {
|
||||||
|
function e(e, t) {
|
||||||
|
void 0 === t && (t = "*"),
|
||||||
|
this.channel = new MessageChannel,
|
||||||
|
this.eventIndex = 0,
|
||||||
|
this.handlers = {};
|
||||||
|
var o = e.getIframe();
|
||||||
|
if (o.hasAttribute("data-event-channel-setup"))
|
||||||
|
throw new Error("An embed viewer instance already initialized on the iframe!");
|
||||||
|
o.setAttribute("data-event-channel-setup", "true"),
|
||||||
|
this.channelSetupPromise = n(this, void 0, void 0, (function() {
|
||||||
|
var e = this;
|
||||||
|
return r(this, (function(n) {
|
||||||
|
switch (n.label) {
|
||||||
|
case 0:
|
||||||
|
return [4, new Promise((function(n) {
|
||||||
|
o.addEventListener("load", (function() {
|
||||||
|
var r;
|
||||||
|
e.channel.port1.start();
|
||||||
|
var i = function(t) {
|
||||||
|
"channel-ready" === t.data[0] && (t.preventDefault(),
|
||||||
|
e.channel.port1.removeEventListener("message", i),
|
||||||
|
e.channel.port1.addEventListener("message", e.eventDispatcher.bind(e)),
|
||||||
|
n(void 0))
|
||||||
|
};
|
||||||
|
e.channel.port1.addEventListener("message", i),
|
||||||
|
null === (r = o.contentWindow) || void 0 === r || r.postMessage(["setup-channel", {
|
||||||
|
port: e.channel.port2
|
||||||
|
}], t || "*", [e.channel.port2])
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
))];
|
||||||
|
case 1:
|
||||||
|
return n.sent(),
|
||||||
|
[2]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
return e.prototype.eventDispatcher = function(e) {
|
||||||
|
var t = e.data || []
|
||||||
|
, n = t[0]
|
||||||
|
, r = t[1]
|
||||||
|
, o = t[2];
|
||||||
|
"event" === n && r && this.handlers[r] && this.handlers[r].forEach((function(e) {
|
||||||
|
return e(o)
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.addEventListener = function(e, t) {
|
||||||
|
this.handlers[e] = this.handlers[e] || [],
|
||||||
|
this.handlers[e].includes(t) || this.handlers[e].push(t)
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.removeEventListener = function(e, t) {
|
||||||
|
if (this.handlers[e]) {
|
||||||
|
var n = this.handlers[e].findIndex((function(e) {
|
||||||
|
return e === t
|
||||||
|
}
|
||||||
|
));
|
||||||
|
this.handlers[e].splice(n, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.emit = function(e, t) {
|
||||||
|
return n(this, void 0, void 0, (function() {
|
||||||
|
var n, o = this;
|
||||||
|
return r(this, (function(r) {
|
||||||
|
switch (r.label) {
|
||||||
|
case 0:
|
||||||
|
return [4, this.channelSetupPromise];
|
||||||
|
case 1:
|
||||||
|
return r.sent(),
|
||||||
|
n = "xmind-embed-viewer#" + this.eventIndex++,
|
||||||
|
[4, new Promise((function(r) {
|
||||||
|
var i = function(e) {
|
||||||
|
var t = e.data
|
||||||
|
, a = t[0]
|
||||||
|
, s = t[1];
|
||||||
|
a === n && (o.channel.port1.removeEventListener("message", i),
|
||||||
|
r(s))
|
||||||
|
};
|
||||||
|
o.channel.port1.addEventListener("message", i),
|
||||||
|
o.channel.port1.postMessage([e, t, n])
|
||||||
|
}
|
||||||
|
))];
|
||||||
|
case 2:
|
||||||
|
return r.sent(),
|
||||||
|
[2]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e
|
||||||
|
}();
|
||||||
|
t.IframeEventChannelController = o
|
||||||
|
},
|
||||||
|
860: (e,t)=>{
|
||||||
|
Object.defineProperty(t, "__esModule", {
|
||||||
|
value: !0
|
||||||
|
}),
|
||||||
|
t.IframeController = void 0;
|
||||||
|
var n = function() {
|
||||||
|
function e(e, t) {
|
||||||
|
var n, r = "string" == typeof e ? document.querySelector(e) : e;
|
||||||
|
if (null === r)
|
||||||
|
throw new Error("IFrame or mount element not found by selector " + e);
|
||||||
|
r instanceof HTMLIFrameElement ? n = r : (n = document.createElement("iframe"),
|
||||||
|
r.appendChild(n)),
|
||||||
|
n.setAttribute("frameborder", "0"),
|
||||||
|
n.setAttribute("scrolling", "no"),
|
||||||
|
n.setAttribute("allowfullscreen", "true"),
|
||||||
|
n.setAttribute("allow", "allowfullscreen"),
|
||||||
|
n.setAttribute("crossorigin", "anonymous"),
|
||||||
|
n.setAttribute("src", t),
|
||||||
|
this.iframe = n
|
||||||
|
}
|
||||||
|
return e.prototype.getIframe = function() {
|
||||||
|
return this.iframe
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.setStyles = function(e) {
|
||||||
|
for (var t = this.getIframe(), n = 0, r = Object.entries(e); n < r.length; n++) {
|
||||||
|
var o = r[n]
|
||||||
|
, i = o[0]
|
||||||
|
, a = o[1];
|
||||||
|
t.style[i] = a
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e
|
||||||
|
}();
|
||||||
|
t.IframeController = n
|
||||||
|
}
|
||||||
|
,
|
||||||
|
341: (e,t,n)=>{
|
||||||
|
t.XMindEmbedViewer = void 0;
|
||||||
|
var r = n(61)
|
||||||
|
, o = n(860)
|
||||||
|
, i = function() {
|
||||||
|
function e(e) {
|
||||||
|
var t = this;
|
||||||
|
this.internalState = {
|
||||||
|
sheets: [],
|
||||||
|
zoomScale: 100,
|
||||||
|
currentSheetId: ""
|
||||||
|
};
|
||||||
|
var windowWidth = document.documentElement.clientWidth || document.body.clientWidth;
|
||||||
|
var windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
|
||||||
|
windowWidth = windowWidth-30;
|
||||||
|
windowHeight = windowHeight-30;
|
||||||
|
windowWidth =windowWidth+"px";
|
||||||
|
windowHeight =windowHeight+"px";
|
||||||
|
var n = e.file
|
||||||
|
, i = e.el
|
||||||
|
, a = e.styles
|
||||||
|
, s = void 0 === a ? {
|
||||||
|
height: windowWidth,
|
||||||
|
width: windowHeight
|
||||||
|
} : a
|
||||||
|
, l = new o.IframeController(i,"/xmind/index.html")
|
||||||
|
, u = new r.IframeEventChannelController(l,"");
|
||||||
|
this.iframeController = l,
|
||||||
|
this.iframeEventChannelController = u,
|
||||||
|
u.addEventListener("sheet-switch", (function(e) {
|
||||||
|
return t.internalState.currentSheetId = e
|
||||||
|
}
|
||||||
|
)),
|
||||||
|
u.addEventListener("zoom-change", (function(e) {
|
||||||
|
return t.internalState.zoomScale = e
|
||||||
|
}
|
||||||
|
)),
|
||||||
|
u.addEventListener("sheets-load", (function(e) {
|
||||||
|
return t.internalState.sheets = e
|
||||||
|
}
|
||||||
|
)),
|
||||||
|
this.iframeController.setStyles(s),
|
||||||
|
n && this.load(n)
|
||||||
|
}
|
||||||
|
return e.prototype.addEventListener = function(e, t) {
|
||||||
|
this.iframeEventChannelController.addEventListener(e, t)
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.removeEventListener = function(e, t) {
|
||||||
|
this.iframeEventChannelController.removeEventListener(e, t)
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.setStyles = function(e) {
|
||||||
|
this.iframeController.setStyles(e)
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.load = function(e) {
|
||||||
|
this.iframeEventChannelController.emit("open-file", e)
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.setZoomScale = function(e) {
|
||||||
|
this.iframeEventChannelController.emit("zoom", e)
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.setFitMap = function() {
|
||||||
|
this.iframeEventChannelController.emit("fit-map")
|
||||||
|
}
|
||||||
|
,
|
||||||
|
e.prototype.switchSheet = function(e) {
|
||||||
|
this.iframeEventChannelController.emit("switch-sheet", e)
|
||||||
|
}
|
||||||
|
,
|
||||||
|
Object.defineProperty(e.prototype, "zoom", {
|
||||||
|
get: function() {
|
||||||
|
return this.internalState.zoomScale
|
||||||
|
},
|
||||||
|
enumerable: !1,
|
||||||
|
configurable: !0
|
||||||
|
}),
|
||||||
|
Object.defineProperty(e.prototype, "sheets", {
|
||||||
|
get: function() {
|
||||||
|
return JSON.parse(JSON.stringify(this.internalState.sheets))
|
||||||
|
},
|
||||||
|
enumerable: !1,
|
||||||
|
configurable: !0
|
||||||
|
}),
|
||||||
|
Object.defineProperty(e.prototype, "currentSheetId", {
|
||||||
|
get: function() {
|
||||||
|
return this.internalState.currentSheetId
|
||||||
|
},
|
||||||
|
enumerable: !1,
|
||||||
|
configurable: !0
|
||||||
|
}),
|
||||||
|
e
|
||||||
|
}();
|
||||||
|
t.XMindEmbedViewer = i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, t = {};
|
||||||
|
return function n(r) {
|
||||||
|
if (t[r])
|
||||||
|
return t[r].exports;
|
||||||
|
var o = t[r] = {
|
||||||
|
exports: {}
|
||||||
|
};
|
||||||
|
return e[r].call(o.exports, o, o.exports, n),
|
||||||
|
o.exports
|
||||||
|
}(341)
|
||||||
|
}
|
||||||
|
)().XMindEmbedViewer
|
||||||
|
}
|
||||||
|
));
|
|
@ -0,0 +1,43 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>${file.name}文件预览</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
|
||||||
|
<#include "*/commonHeader.ftl">
|
||||||
|
</head>
|
||||||
|
<#if currentUrl?contains("http://") || currentUrl?contains("https://") || currentUrl?contains("file://")>
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#elseif currentUrl?contains("ftp://") >
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#else>
|
||||||
|
<#assign finalUrl="${baseUrl}${currentUrl}">
|
||||||
|
</#if>
|
||||||
|
<body>
|
||||||
|
<iframe src="" width="100%" frameborder="0"></iframe>
|
||||||
|
</body>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var url = '${finalUrl}';
|
||||||
|
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
||||||
|
if (!url.startsWith(baseUrl)) {
|
||||||
|
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
|
||||||
|
}
|
||||||
|
document.getElementsByTagName('iframe')[0].src = "${baseUrl}eml/index.html?file="+encodeURIComponent(url);
|
||||||
|
document.getElementsByTagName('iframe')[0].height = document.documentElement.clientHeight - 10;
|
||||||
|
/**
|
||||||
|
* 页面变化调整高度
|
||||||
|
*/
|
||||||
|
window.onresize = function () {
|
||||||
|
var fm = document.getElementsByTagName("iframe")[0];
|
||||||
|
fm.height = window.document.documentElement.clientHeight - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*初始化水印*/
|
||||||
|
if (!!window.ActiveXObject || "ActiveXObject" in window)
|
||||||
|
{
|
||||||
|
}else{
|
||||||
|
initWaterMark();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -0,0 +1,137 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>${file.name}文件预览</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
|
||||||
|
<#include "*/commonHeader.ftl">
|
||||||
|
<script src="epub/epub.js"></script>
|
||||||
|
<script src="js/jszip.min.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="epub/examples.css">
|
||||||
|
</head>
|
||||||
|
<#if currentUrl?contains("http://") || currentUrl?contains("https://") || currentUrl?contains("file://")>
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#elseif currentUrl?contains("ftp://") >
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#else>
|
||||||
|
<#assign finalUrl="${baseUrl}${currentUrl}">
|
||||||
|
</#if>
|
||||||
|
<body>
|
||||||
|
<select id="toc"></select>
|
||||||
|
<div id="viewer" class="scrolled"></div>
|
||||||
|
<div id="prev" class="arrow">‹</div>
|
||||||
|
<div id="next" class="arrow">›</div>
|
||||||
|
</body>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var url = '${finalUrl}';
|
||||||
|
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
||||||
|
if (!url.startsWith(baseUrl)) {
|
||||||
|
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
|
||||||
|
}
|
||||||
|
var currentSectionIndex = 100;
|
||||||
|
// Load the opf
|
||||||
|
var book = ePub(url);
|
||||||
|
//var rendition = book.renderTo("viewer", { flow: "scrolled-doc" });
|
||||||
|
var rendition = book.renderTo("viewer", {
|
||||||
|
flow: "scrolled-doc",
|
||||||
|
width: "100%"
|
||||||
|
// height: 600
|
||||||
|
});
|
||||||
|
var params = URLSearchParams && new URLSearchParams(document.location.search.substring(1));
|
||||||
|
var currentSectionIndex = (params && params.get("loc")) ? params.get("loc") : undefined;
|
||||||
|
rendition.display(currentSectionIndex);
|
||||||
|
var next = document.getElementById("next");
|
||||||
|
next.addEventListener("click", function(e){
|
||||||
|
rendition.next();
|
||||||
|
e.preventDefault();
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
var prev = document.getElementById("prev");
|
||||||
|
prev.addEventListener("click", function(e){
|
||||||
|
rendition.prev();
|
||||||
|
e.preventDefault();
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
rendition.on("rendered", function(section){
|
||||||
|
var nextSection = section.next();
|
||||||
|
var prevSection = section.prev();
|
||||||
|
|
||||||
|
if(nextSection) {
|
||||||
|
nextNav = book.navigation.get(nextSection.href);
|
||||||
|
|
||||||
|
if(nextNav) {
|
||||||
|
nextLabel = nextNav.label;
|
||||||
|
} else {
|
||||||
|
nextLabel = "next";
|
||||||
|
}
|
||||||
|
|
||||||
|
next.textContent = " »";
|
||||||
|
} else {
|
||||||
|
next.textContent = "";
|
||||||
|
}
|
||||||
|
if(prevSection) {
|
||||||
|
prevNav = book.navigation.get(prevSection.href);
|
||||||
|
|
||||||
|
if(prevNav) {
|
||||||
|
prevLabel = prevNav.label;
|
||||||
|
} else {
|
||||||
|
prevLabel = "previous";
|
||||||
|
}
|
||||||
|
prev.textContent = "« " ;
|
||||||
|
} else {
|
||||||
|
prev.textContent = "";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
rendition.on("rendered", function(section){
|
||||||
|
var current = book.navigation && book.navigation.get(section.href);
|
||||||
|
|
||||||
|
if (current) {
|
||||||
|
var $select = document.getElementById("toc");
|
||||||
|
var $selected = $select.querySelector("option[selected]");
|
||||||
|
if ($selected) {
|
||||||
|
$selected.removeAttribute("selected");
|
||||||
|
}
|
||||||
|
|
||||||
|
var $options = $select.querySelectorAll("option");
|
||||||
|
for (var i = 0; i < $options.length; ++i) {
|
||||||
|
let selected = $options[i].getAttribute("ref") === current.href;
|
||||||
|
if (selected) {
|
||||||
|
$options[i].setAttribute("selected", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
book.loaded.navigation.then(function(toc){
|
||||||
|
var $select = document.getElementById("toc"),
|
||||||
|
docfrag = document.createDocumentFragment();
|
||||||
|
|
||||||
|
toc.forEach(function(chapter) {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.textContent = chapter.label;
|
||||||
|
option.setAttribute("ref", chapter.href);
|
||||||
|
|
||||||
|
docfrag.appendChild(option);
|
||||||
|
});
|
||||||
|
|
||||||
|
$select.appendChild(docfrag);
|
||||||
|
|
||||||
|
$select.onchange = function(){
|
||||||
|
var index = $select.selectedIndex,
|
||||||
|
url = $select.options[index].getAttribute("ref");
|
||||||
|
rendition.display(url);
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
/*初始化水印*/
|
||||||
|
if (!!window.ActiveXObject || "ActiveXObject" in window)
|
||||||
|
{
|
||||||
|
}else{
|
||||||
|
initWaterMark();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -9,11 +9,15 @@
|
||||||
<script src="js/base64.min.js" type="text/javascript"></script>
|
<script src="js/base64.min.js" type="text/javascript"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<#if currentUrl?contains("http://") || currentUrl?contains("https://")>
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#else>
|
||||||
|
<#assign finalUrl="${baseUrl}${currentUrl}">
|
||||||
|
</#if>
|
||||||
<iframe src="" width="100%" frameborder="0"></iframe>
|
<iframe src="" width="100%" frameborder="0"></iframe>
|
||||||
</body>
|
</body>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var url = '${currentUrl}';
|
var url = '${finalUrl}';
|
||||||
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
||||||
if (!url.startsWith(baseUrl)) {
|
if (!url.startsWith(baseUrl)) {
|
||||||
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
|
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
|
||||||
|
<title>${file.name}3D预览</title>
|
||||||
|
<#include "*/commonHeader.ftl">
|
||||||
|
</head>
|
||||||
|
<#if currentUrl?contains("http://") || currentUrl?contains("https://") || currentUrl?contains("file://")>
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#elseif currentUrl?contains("ftp://") >
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#else>
|
||||||
|
<#assign finalUrl="${baseUrl}${currentUrl}">
|
||||||
|
</#if>
|
||||||
|
<body>
|
||||||
|
<iframe src="" width="100%" frameborder="0"></iframe>
|
||||||
|
</body>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var url = '${finalUrl}';
|
||||||
|
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
||||||
|
if (!url.startsWith(baseUrl)) {
|
||||||
|
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
|
||||||
|
}
|
||||||
|
document.getElementsByTagName('iframe')[0].src = "${baseUrl}website/index.html#model="+ url;
|
||||||
|
document.getElementsByTagName('iframe')[0].height = document.documentElement.clientHeight - 10;
|
||||||
|
/**
|
||||||
|
* 页面变化调整高度
|
||||||
|
*/
|
||||||
|
window.onresize = function () {
|
||||||
|
var fm = document.getElementsByTagName("iframe")[0];
|
||||||
|
fm.height = window.document.documentElement.clientHeight - 10;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
/*初始化水印*/
|
||||||
|
if (!!window.ActiveXObject || "ActiveXObject" in window)
|
||||||
|
{
|
||||||
|
}else{
|
||||||
|
initWaterMark();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -0,0 +1,53 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>${file.name}文件预览</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
||||||
|
<#include "*/commonHeader.ftl">
|
||||||
|
<#if currentUrl?contains("http://") || currentUrl?contains("https://")>
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#elseif currentUrl?contains("ftp://") >
|
||||||
|
<#assign finalUrl="${currentUrl}">
|
||||||
|
<#else>
|
||||||
|
<#assign finalUrl="${baseUrl}${currentUrl}">
|
||||||
|
</#if>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mount">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="xmind/xmind.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var url = '${finalUrl}';
|
||||||
|
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
||||||
|
if (!url.startsWith(baseUrl)) {
|
||||||
|
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
|
||||||
|
}
|
||||||
|
const init = async () => {
|
||||||
|
var windowWidth = document.documentElement.clientWidth || document.body.clientWidth;
|
||||||
|
var windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
|
||||||
|
windowWidth = windowWidth-30;
|
||||||
|
windowHeight = windowHeight-30;
|
||||||
|
windowWidth =windowWidth+"px";
|
||||||
|
windowHeight =windowHeight+"px";
|
||||||
|
const res = await fetch(url)
|
||||||
|
const viewer = new XMindEmbedViewer({
|
||||||
|
el: '#mount',
|
||||||
|
file: await res.arrayBuffer(),
|
||||||
|
styles: {
|
||||||
|
'height': windowHeight,
|
||||||
|
'width': windowWidth
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
init()
|
||||||
|
/*初始化水印*/
|
||||||
|
if (!!window.ActiveXObject || "ActiveXObject" in window)
|
||||||
|
{
|
||||||
|
}else{
|
||||||
|
initWaterMark();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|