Merge pull request #309 from gitchenjh/master

处理Issues
pull/35/head
gitchenjh 2021-11-25 14:07:33 +08:00 committed by GitHub
commit 8af157b848
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
265 changed files with 90324 additions and 84677 deletions

View File

@ -22,9 +22,15 @@ office.plugin.server.ports = 2001,2002
## office task ## office task
office.plugin.task.timeout = 5m office.plugin.task.timeout = 5m
#file #file
#file.dir = D:\\kkFileview\\ #file.dir = D:\\kkFileview\\
file.dir = ${KK_FILE_DIR:default} file.dir = ${KK_FILE_DIR:default}
#
#file.dir = D:\\kkFileview\\
local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default}
#openoffice home #openoffice home
#office.home = C:\\Program Files (x86)\\OpenOffice 4 #office.home = C:\\Program Files (x86)\\OpenOffice 4
office.home = ${KK_OFFICE_HOME:default} office.home = ${KK_OFFICE_HOME:default}
@ -66,7 +72,7 @@ office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image}
office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false} office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false}
#pdf #pdf
pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true} pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:false}
# #
file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false} file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false}

View File

@ -33,6 +33,7 @@ public class ConfigConstants {
private static String ftpControlEncoding; private static String ftpControlEncoding;
private static String baseUrl; private static String baseUrl;
private static String fileDir = ConfigUtils.getHomePath() + File.separator + "file" + File.separator; private static String fileDir = ConfigUtils.getHomePath() + File.separator + "file" + File.separator;
private static String localPreviewDir;
private static CopyOnWriteArraySet<String> trustHostSet; private static CopyOnWriteArraySet<String> trustHostSet;
private static String pdfDownloadDisable; private static String pdfDownloadDisable;
private static Boolean fileUploadDisable; private static Boolean fileUploadDisable;
@ -47,6 +48,7 @@ public class ConfigConstants {
public static final String DEFAULT_FTP_CONTROL_ENCODING = "UTF-8"; public static final String DEFAULT_FTP_CONTROL_ENCODING = "UTF-8";
public static final String DEFAULT_BASE_URL = "default"; public static final String DEFAULT_BASE_URL = "default";
public static final String DEFAULT_FILE_DIR_VALUE = "default"; public static final String DEFAULT_FILE_DIR_VALUE = "default";
public static final String DEFAULT_LOCAL_PREVIEW_DIR_VALUE = "default";
public static final String DEFAULT_TRUST_HOST = "default"; public static final String DEFAULT_TRUST_HOST = "default";
public static final String DEFAULT_PDF_DOWNLOAD_DISABLE = "true"; public static final String DEFAULT_PDF_DOWNLOAD_DISABLE = "true";
public static final String DEFAULT_FILE_UPLOAD_DISABLE = "false"; public static final String DEFAULT_FILE_UPLOAD_DISABLE = "false";
@ -203,6 +205,24 @@ public class ConfigConstants {
} }
} }
public static String getLocalPreviewDir() {
return localPreviewDir;
}
@Value("${local.preview.dir:default}")
public void setLocalPreviewDir(String localPreviewDir) {
setLocalPreviewDirValue(localPreviewDir);
}
public static void setLocalPreviewDirValue(String localPreviewDir) {
if (!DEFAULT_LOCAL_PREVIEW_DIR_VALUE.equals(localPreviewDir)) {
if (!localPreviewDir.endsWith(File.separator)) {
localPreviewDir = localPreviewDir + File.separator;
}
}
ConfigConstants.localPreviewDir = localPreviewDir;
}
@Value("${trust.host:default}") @Value("${trust.host:default}")
public void setTrustHost(String trustHost) { public void setTrustHost(String trustHost) {
setTrustHostValue(trustHost); setTrustHostValue(trustHost);

View File

@ -81,6 +81,14 @@ public class WebUtils {
* @return * @return
*/ */
public static String getFileNameFromURL(String url) { public static String getFileNameFromURL(String url) {
if (url.toLowerCase().startsWith("file:")) {
try {
URL urlObj = new URL(url);
url = urlObj.getPath().substring(1);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
// 因为url的参数中可能会存在/的情况所以直接url.lastIndexOf("/")会有问题 // 因为url的参数中可能会存在/的情况所以直接url.lastIndexOf("/")会有问题
// 所以先从处将url截断然后运用url.lastIndexOf("/")获取文件名 // 所以先从处将url截断然后运用url.lastIndexOf("/")获取文件名
String noQueryUrl = url.substring(0, url.contains("?") ? url.indexOf("?") : url.length()); String noQueryUrl = url.substring(0, url.contains("?") ? url.indexOf("?") : url.length());

View File

@ -1,5 +1,6 @@
package cn.keking.web.controller; package cn.keking.web.controller;
import cn.keking.config.ConfigConstants;
import cn.keking.model.FileAttribute; import cn.keking.model.FileAttribute;
import cn.keking.service.FilePreview; import cn.keking.service.FilePreview;
import cn.keking.service.FilePreviewFactory; import cn.keking.service.FilePreviewFactory;
@ -12,6 +13,7 @@ import fr.opensagres.xdocreport.core.io.IOUtils;
import io.mola.galimatias.GalimatiasParseException; import io.mola.galimatias.GalimatiasParseException;
import jodd.io.NetUtil; import jodd.io.NetUtil;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.artofsolving.jodconverter.util.PlatformUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -25,9 +27,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Locale;
import static cn.keking.service.FilePreview.PICTURE_FILE_PREVIEW_PAGE; import static cn.keking.service.FilePreview.PICTURE_FILE_PREVIEW_PAGE;
@ -61,6 +65,9 @@ public class OnlinePreviewController {
String errorMsg = String.format(BASE64_DECODE_ERROR_MSG, "url"); String errorMsg = String.format(BASE64_DECODE_ERROR_MSG, "url");
return otherFilePreview.notSupportedFile(model, errorMsg); return otherFilePreview.notSupportedFile(model, errorMsg);
} }
if (!allowPreview(fileUrl)) {
return otherFilePreview.notSupportedFile(model, "该文件不允许预览:" + fileUrl);
}
FileAttribute fileAttribute = fileHandlerService.getFileAttribute(fileUrl, req); FileAttribute fileAttribute = fileHandlerService.getFileAttribute(fileUrl, req);
model.addAttribute("file", fileAttribute); model.addAttribute("file", fileAttribute);
FilePreview filePreview = previewFactory.get(fileAttribute); FilePreview filePreview = previewFactory.get(fileAttribute);
@ -86,8 +93,14 @@ public class OnlinePreviewController {
String currentUrl = req.getParameter("currentUrl"); String currentUrl = req.getParameter("currentUrl");
if (StringUtils.hasText(currentUrl)) { if (StringUtils.hasText(currentUrl)) {
String decodedCurrentUrl = new String(Base64.decodeBase64(currentUrl)); String decodedCurrentUrl = new String(Base64.decodeBase64(currentUrl));
if (!allowPreview(decodedCurrentUrl)) {
return otherFilePreview.notSupportedFile(model, "该文件不允许预览:" + decodedCurrentUrl);
}
model.addAttribute("currentUrl", decodedCurrentUrl); model.addAttribute("currentUrl", decodedCurrentUrl);
} else { } else {
if (!allowPreview(imgUrls.get(0))) {
return otherFilePreview.notSupportedFile(model, "该文件不允许预览:" + imgUrls.get(0));
}
model.addAttribute("currentUrl", imgUrls.get(0)); model.addAttribute("currentUrl", imgUrls.get(0));
} }
return PICTURE_FILE_PREVIEW_PAGE; return PICTURE_FILE_PREVIEW_PAGE;
@ -105,6 +118,12 @@ public class OnlinePreviewController {
logger.info("下载跨域pdf文件url{}", urlPath); logger.info("下载跨域pdf文件url{}", urlPath);
try { try {
URL url = WebUtils.normalizedURL(urlPath); URL url = WebUtils.normalizedURL(urlPath);
if (!allowPreview(urlPath)) {
response.setHeader("content-type", "text/html;charset=utf-8");
response.getOutputStream().println("forbidden");
response.setStatus(401);
return;
}
byte[] bytes = NetUtil.downloadBytes(url.toString()); byte[] bytes = NetUtil.downloadBytes(url.toString());
IOUtils.write(bytes, response.getOutputStream()); IOUtils.write(bytes, response.getOutputStream());
} catch (IOException | GalimatiasParseException e) { } catch (IOException | GalimatiasParseException e) {
@ -125,4 +144,24 @@ public class OnlinePreviewController {
return "success"; return "success";
} }
private boolean allowPreview(String urlPath) {
try {
URL url = WebUtils.normalizedURL(urlPath);
if ("file".equals(url.getProtocol().toLowerCase(Locale.ROOT))) {
String filePath = URLDecoder.decode(url.getPath(), StandardCharsets.UTF_8.name());
if (PlatformUtils.isWindows()) {
filePath = filePath.replaceAll("/", "\\\\");
}
filePath = filePath.substring(1);
if (!filePath.startsWith(ConfigConstants.getFileDir()) && !filePath.startsWith(ConfigConstants.getLocalPreviewDir())) {
return false;
}
}
return true;
} catch (IOException | GalimatiasParseException e) {
logger.error("解析URL异常url{}", urlPath, e);
return false;
}
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12,14 +12,14 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
/* eslint-disable no-var */
"use strict"; "use strict";
// eslint-disable-next-line no-var
var FontInspector = (function FontInspectorClosure() { var FontInspector = (function FontInspectorClosure() {
var fonts; let fonts;
var active = false; let active = false;
var fontAttribute = "data-font-name"; const fontAttribute = "data-font-name";
function removeSelection() { function removeSelection() {
const divs = document.querySelectorAll(`span[${fontAttribute}]`); const divs = document.querySelectorAll(`span[${fontAttribute}]`);
for (const div of divs) { for (const div of divs) {
@ -47,10 +47,10 @@ var FontInspector = (function FontInspectorClosure() {
) { ) {
return; return;
} }
var fontName = e.target.dataset.fontName; const fontName = e.target.dataset.fontName;
var selects = document.getElementsByTagName("input"); const selects = document.getElementsByTagName("input");
for (var i = 0; i < selects.length; ++i) { for (let i = 0; i < selects.length; ++i) {
var select = selects[i]; const select = selects[i];
if (select.dataset.fontName !== fontName) { if (select.dataset.fontName !== fontName) {
continue; continue;
} }
@ -66,8 +66,8 @@ var FontInspector = (function FontInspectorClosure() {
panel: null, panel: null,
manager: null, manager: null,
init: function init(pdfjsLib) { init: function init(pdfjsLib) {
var panel = this.panel; const panel = this.panel;
var tmp = document.createElement("button"); const tmp = document.createElement("button");
tmp.addEventListener("click", resetSelection); tmp.addEventListener("click", resetSelection);
tmp.textContent = "Refresh"; tmp.textContent = "Refresh";
panel.appendChild(tmp); panel.appendChild(tmp);
@ -95,27 +95,27 @@ var FontInspector = (function FontInspectorClosure() {
// FontInspector specific functions. // FontInspector specific functions.
fontAdded: function fontAdded(fontObj, url) { fontAdded: function fontAdded(fontObj, url) {
function properties(obj, list) { function properties(obj, list) {
var moreInfo = document.createElement("table"); const moreInfo = document.createElement("table");
for (var i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
var tr = document.createElement("tr"); const tr = document.createElement("tr");
var td1 = document.createElement("td"); const td1 = document.createElement("td");
td1.textContent = list[i]; td1.textContent = list[i];
tr.appendChild(td1); tr.appendChild(td1);
var td2 = document.createElement("td"); const td2 = document.createElement("td");
td2.textContent = obj[list[i]].toString(); td2.textContent = obj[list[i]].toString();
tr.appendChild(td2); tr.appendChild(td2);
moreInfo.appendChild(tr); moreInfo.appendChild(tr);
} }
return moreInfo; return moreInfo;
} }
var moreInfo = properties(fontObj, ["name", "type"]); const moreInfo = properties(fontObj, ["name", "type"]);
const fontName = fontObj.loadedName; const fontName = fontObj.loadedName;
var font = document.createElement("div"); const font = document.createElement("div");
var name = document.createElement("span"); const name = document.createElement("span");
name.textContent = fontName; name.textContent = fontName;
var download = document.createElement("a"); const download = document.createElement("a");
if (url) { if (url) {
url = /url\(['"]?([^\)"']+)/.exec(url); url = /url\(['"]?([^)"']+)/.exec(url);
download.href = url[1]; download.href = url[1];
} else if (fontObj.data) { } else if (fontObj.data) {
download.href = URL.createObjectURL( download.href = URL.createObjectURL(
@ -123,17 +123,17 @@ var FontInspector = (function FontInspectorClosure() {
); );
} }
download.textContent = "Download"; download.textContent = "Download";
var logIt = document.createElement("a"); const logIt = document.createElement("a");
logIt.href = ""; logIt.href = "";
logIt.textContent = "Log"; logIt.textContent = "Log";
logIt.addEventListener("click", function(event) { logIt.addEventListener("click", function (event) {
event.preventDefault(); event.preventDefault();
console.log(fontObj); console.log(fontObj);
}); });
const select = document.createElement("input"); const select = document.createElement("input");
select.setAttribute("type", "checkbox"); select.setAttribute("type", "checkbox");
select.dataset.fontName = fontName; select.dataset.fontName = fontName;
select.addEventListener("click", function() { select.addEventListener("click", function () {
selectFont(fontName, select.checked); selectFont(fontName, select.checked);
}); });
font.appendChild(select); font.appendChild(select);
@ -155,15 +155,17 @@ var FontInspector = (function FontInspectorClosure() {
}; };
})(); })();
var opMap; let opMap;
// Manages all the page steppers. // Manages all the page steppers.
//
// eslint-disable-next-line no-var
var StepperManager = (function StepperManagerClosure() { var StepperManager = (function StepperManagerClosure() {
var steppers = []; let steppers = [];
var stepperDiv = null; let stepperDiv = null;
var stepperControls = null; let stepperControls = null;
var stepperChooser = null; let stepperChooser = null;
var breakPoints = Object.create(null); let breakPoints = Object.create(null);
return { return {
// Properties/functions needed by PDFBug. // Properties/functions needed by PDFBug.
id: "Stepper", id: "Stepper",
@ -171,10 +173,10 @@ var StepperManager = (function StepperManagerClosure() {
panel: null, panel: null,
manager: null, manager: null,
init: function init(pdfjsLib) { init: function init(pdfjsLib) {
var self = this; const self = this;
stepperControls = document.createElement("div"); stepperControls = document.createElement("div");
stepperChooser = document.createElement("select"); stepperChooser = document.createElement("select");
stepperChooser.addEventListener("change", function(event) { stepperChooser.addEventListener("change", function (event) {
self.selectStepper(this.value); self.selectStepper(this.value);
}); });
stepperControls.appendChild(stepperChooser); stepperControls.appendChild(stepperChooser);
@ -186,7 +188,7 @@ var StepperManager = (function StepperManagerClosure() {
} }
opMap = Object.create(null); opMap = Object.create(null);
for (var key in pdfjsLib.OPS) { for (const key in pdfjsLib.OPS) {
opMap[pdfjsLib.OPS[key]] = key; opMap[pdfjsLib.OPS[key]] = key;
} }
}, },
@ -199,17 +201,17 @@ var StepperManager = (function StepperManagerClosure() {
active: false, active: false,
// Stepper specific functions. // Stepper specific functions.
create: function create(pageIndex) { create: function create(pageIndex) {
var debug = document.createElement("div"); const debug = document.createElement("div");
debug.id = "stepper" + pageIndex; debug.id = "stepper" + pageIndex;
debug.setAttribute("hidden", true); debug.hidden = true;
debug.className = "stepper"; debug.className = "stepper";
stepperDiv.appendChild(debug); stepperDiv.appendChild(debug);
var b = document.createElement("option"); const b = document.createElement("option");
b.textContent = "Page " + (pageIndex + 1); b.textContent = "Page " + (pageIndex + 1);
b.value = pageIndex; b.value = pageIndex;
stepperChooser.appendChild(b); stepperChooser.appendChild(b);
var initBreakPoints = breakPoints[pageIndex] || []; const initBreakPoints = breakPoints[pageIndex] || [];
var stepper = new Stepper(debug, pageIndex, initBreakPoints); const stepper = new Stepper(debug, pageIndex, initBreakPoints);
steppers.push(stepper); steppers.push(stepper);
if (steppers.length === 1) { if (steppers.length === 1) {
this.selectStepper(pageIndex, false); this.selectStepper(pageIndex, false);
@ -217,22 +219,18 @@ var StepperManager = (function StepperManagerClosure() {
return stepper; return stepper;
}, },
selectStepper: function selectStepper(pageIndex, selectPanel) { selectStepper: function selectStepper(pageIndex, selectPanel) {
var i; let i;
pageIndex = pageIndex | 0; pageIndex |= 0;
if (selectPanel) { if (selectPanel) {
this.manager.selectPanel(this); this.manager.selectPanel(this);
} }
for (i = 0; i < steppers.length; ++i) { for (i = 0; i < steppers.length; ++i) {
var stepper = steppers[i]; const stepper = steppers[i];
if (stepper.pageIndex === pageIndex) { stepper.panel.hidden = stepper.pageIndex !== pageIndex;
stepper.panel.removeAttribute("hidden");
} else {
stepper.panel.setAttribute("hidden", true);
}
} }
var options = stepperChooser.options; const options = stepperChooser.options;
for (i = 0; i < options.length; ++i) { for (i = 0; i < options.length; ++i) {
var option = options[i]; const option = options[i];
option.selected = (option.value | 0) === pageIndex; option.selected = (option.value | 0) === pageIndex;
} }
}, },
@ -243,11 +241,11 @@ var StepperManager = (function StepperManagerClosure() {
}; };
})(); })();
// The stepper for each page's IRQueue. // The stepper for each page's operatorList.
var Stepper = (function StepperClosure() { const Stepper = (function StepperClosure() {
// Shorter way to create element and optionally set textContent. // Shorter way to create element and optionally set textContent.
function c(tag, textContent) { function c(tag, textContent) {
var d = document.createElement(tag); const d = document.createElement(tag);
if (textContent) { if (textContent) {
d.textContent = textContent; d.textContent = textContent;
} }
@ -256,7 +254,7 @@ var Stepper = (function StepperClosure() {
function simplifyArgs(args) { function simplifyArgs(args) {
if (typeof args === "string") { if (typeof args === "string") {
var MAX_STRING_LENGTH = 75; const MAX_STRING_LENGTH = 75;
return args.length <= MAX_STRING_LENGTH return args.length <= MAX_STRING_LENGTH
? args ? args
: args.substring(0, MAX_STRING_LENGTH) + "..."; : args.substring(0, MAX_STRING_LENGTH) + "...";
@ -266,10 +264,9 @@ var Stepper = (function StepperClosure() {
} }
if ("length" in args) { if ("length" in args) {
// array // array
var simpleArgs = [], const MAX_ITEMS = 10,
i, simpleArgs = [];
ii; let i, ii;
var MAX_ITEMS = 10;
for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) { for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) {
simpleArgs.push(simplifyArgs(args[i])); simpleArgs.push(simplifyArgs(args[i]));
} }
@ -278,30 +275,32 @@ var Stepper = (function StepperClosure() {
} }
return simpleArgs; return simpleArgs;
} }
var simpleObj = {}; const simpleObj = {};
for (var key in args) { for (const key in args) {
simpleObj[key] = simplifyArgs(args[key]); simpleObj[key] = simplifyArgs(args[key]);
} }
return simpleObj; return simpleObj;
} }
function Stepper(panel, pageIndex, initialBreakPoints) { // eslint-disable-next-line no-shadow
this.panel = panel; class Stepper {
this.breakPoint = 0; constructor(panel, pageIndex, initialBreakPoints) {
this.nextBreakPoint = null; this.panel = panel;
this.pageIndex = pageIndex; this.breakPoint = 0;
this.breakPoints = initialBreakPoints; this.nextBreakPoint = null;
this.currentIdx = -1; this.pageIndex = pageIndex;
this.operatorListIdx = 0; this.breakPoints = initialBreakPoints;
} this.currentIdx = -1;
Stepper.prototype = { this.operatorListIdx = 0;
init: function init(operatorList) { }
var panel = this.panel;
var content = c("div", "c=continue, s=step"); init(operatorList) {
var table = c("table"); const panel = this.panel;
const content = c("div", "c=continue, s=step");
const table = c("table");
content.appendChild(table); content.appendChild(table);
table.cellSpacing = 0; table.cellSpacing = 0;
var headerRow = c("tr"); const headerRow = c("tr");
table.appendChild(headerRow); table.appendChild(headerRow);
headerRow.appendChild(c("th", "Break")); headerRow.appendChild(c("th", "Break"));
headerRow.appendChild(c("th", "Idx")); headerRow.appendChild(c("th", "Idx"));
@ -310,12 +309,13 @@ var Stepper = (function StepperClosure() {
panel.appendChild(content); panel.appendChild(content);
this.table = table; this.table = table;
this.updateOperatorList(operatorList); this.updateOperatorList(operatorList);
}, }
updateOperatorList: function updateOperatorList(operatorList) {
var self = this; updateOperatorList(operatorList) {
const self = this;
function cboxOnClick() { function cboxOnClick() {
var x = +this.dataset.idx; const x = +this.dataset.idx;
if (this.checked) { if (this.checked) {
self.breakPoints.push(x); self.breakPoints.push(x);
} else { } else {
@ -324,26 +324,26 @@ var Stepper = (function StepperClosure() {
StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints); StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints);
} }
var MAX_OPERATORS_COUNT = 15000; const MAX_OPERATORS_COUNT = 15000;
if (this.operatorListIdx > MAX_OPERATORS_COUNT) { if (this.operatorListIdx > MAX_OPERATORS_COUNT) {
return; return;
} }
var chunk = document.createDocumentFragment(); const chunk = document.createDocumentFragment();
var operatorsToDisplay = Math.min( const operatorsToDisplay = Math.min(
MAX_OPERATORS_COUNT, MAX_OPERATORS_COUNT,
operatorList.fnArray.length operatorList.fnArray.length
); );
for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) { for (let i = this.operatorListIdx; i < operatorsToDisplay; i++) {
var line = c("tr"); const line = c("tr");
line.className = "line"; line.className = "line";
line.dataset.idx = i; line.dataset.idx = i;
chunk.appendChild(line); chunk.appendChild(line);
var checked = this.breakPoints.includes(i); const checked = this.breakPoints.includes(i);
var args = operatorList.argsArray[i] || []; const args = operatorList.argsArray[i] || [];
var breakCell = c("td"); const breakCell = c("td");
var cbox = c("input"); const cbox = c("input");
cbox.type = "checkbox"; cbox.type = "checkbox";
cbox.className = "points"; cbox.className = "points";
cbox.checked = checked; cbox.checked = checked;
@ -353,81 +353,92 @@ var Stepper = (function StepperClosure() {
breakCell.appendChild(cbox); breakCell.appendChild(cbox);
line.appendChild(breakCell); line.appendChild(breakCell);
line.appendChild(c("td", i.toString())); line.appendChild(c("td", i.toString()));
var fn = opMap[operatorList.fnArray[i]]; const fn = opMap[operatorList.fnArray[i]];
var decArgs = args; let decArgs = args;
if (fn === "showText") { if (fn === "showText") {
var glyphs = args[0]; const glyphs = args[0];
var newArgs = []; const charCodeRow = c("tr");
var str = []; const fontCharRow = c("tr");
for (var j = 0; j < glyphs.length; j++) { const unicodeRow = c("tr");
var glyph = glyphs[j]; for (let j = 0; j < glyphs.length; j++) {
const glyph = glyphs[j];
if (typeof glyph === "object" && glyph !== null) { if (typeof glyph === "object" && glyph !== null) {
str.push(glyph.fontChar); charCodeRow.appendChild(c("td", glyph.originalCharCode));
fontCharRow.appendChild(c("td", glyph.fontChar));
unicodeRow.appendChild(c("td", glyph.unicode));
} else { } else {
if (str.length > 0) { // null or number
newArgs.push(str.join("")); const advanceEl = c("td", glyph);
str = []; advanceEl.classList.add("advance");
} charCodeRow.appendChild(advanceEl);
newArgs.push(glyph); // null or number fontCharRow.appendChild(c("td"));
unicodeRow.appendChild(c("td"));
} }
} }
if (str.length > 0) { decArgs = c("td");
newArgs.push(str.join("")); const table = c("table");
} table.classList.add("showText");
decArgs = [newArgs]; decArgs.appendChild(table);
table.appendChild(charCodeRow);
table.appendChild(fontCharRow);
table.appendChild(unicodeRow);
} }
line.appendChild(c("td", fn)); line.appendChild(c("td", fn));
line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs)))); if (decArgs instanceof HTMLElement) {
line.appendChild(decArgs);
} else {
line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs))));
}
} }
if (operatorsToDisplay < operatorList.fnArray.length) { if (operatorsToDisplay < operatorList.fnArray.length) {
line = c("tr"); const lastCell = c("td", "...");
var lastCell = c("td", "...");
lastCell.colspan = 4; lastCell.colspan = 4;
chunk.appendChild(lastCell); chunk.appendChild(lastCell);
} }
this.operatorListIdx = operatorList.fnArray.length; this.operatorListIdx = operatorList.fnArray.length;
this.table.appendChild(chunk); this.table.appendChild(chunk);
}, }
getNextBreakPoint: function getNextBreakPoint() {
this.breakPoints.sort(function(a, b) { getNextBreakPoint() {
this.breakPoints.sort(function (a, b) {
return a - b; return a - b;
}); });
for (var i = 0; i < this.breakPoints.length; i++) { for (let i = 0; i < this.breakPoints.length; i++) {
if (this.breakPoints[i] > this.currentIdx) { if (this.breakPoints[i] > this.currentIdx) {
return this.breakPoints[i]; return this.breakPoints[i];
} }
} }
return null; return null;
}, }
breakIt: function breakIt(idx, callback) {
breakIt(idx, callback) {
StepperManager.selectStepper(this.pageIndex, true); StepperManager.selectStepper(this.pageIndex, true);
var self = this; this.currentIdx = idx;
var dom = document;
self.currentIdx = idx; const listener = evt => {
var listener = function(e) { switch (evt.keyCode) {
switch (e.keyCode) {
case 83: // step case 83: // step
dom.removeEventListener("keydown", listener); document.removeEventListener("keydown", listener);
self.nextBreakPoint = self.currentIdx + 1; this.nextBreakPoint = this.currentIdx + 1;
self.goTo(-1); this.goTo(-1);
callback(); callback();
break; break;
case 67: // continue case 67: // continue
dom.removeEventListener("keydown", listener); document.removeEventListener("keydown", listener);
var breakPoint = self.getNextBreakPoint(); this.nextBreakPoint = this.getNextBreakPoint();
self.nextBreakPoint = breakPoint; this.goTo(-1);
self.goTo(-1);
callback(); callback();
break; break;
} }
}; };
dom.addEventListener("keydown", listener); document.addEventListener("keydown", listener);
self.goTo(idx); this.goTo(idx);
}, }
goTo: function goTo(idx) {
var allRows = this.panel.getElementsByClassName("line"); goTo(idx) {
for (var x = 0, xx = allRows.length; x < xx; ++x) { const allRows = this.panel.getElementsByClassName("line");
var row = allRows[x]; for (let x = 0, xx = allRows.length; x < xx; ++x) {
const row = allRows[x];
if ((row.dataset.idx | 0) === idx) { if ((row.dataset.idx | 0) === idx) {
row.style.backgroundColor = "rgb(251,250,207)"; row.style.backgroundColor = "rgb(251,250,207)";
row.scrollIntoView(); row.scrollIntoView();
@ -435,20 +446,21 @@ var Stepper = (function StepperClosure() {
row.style.backgroundColor = null; row.style.backgroundColor = null;
} }
} }
}, }
}; }
return Stepper; return Stepper;
})(); })();
// eslint-disable-next-line no-var
var Stats = (function Stats() { var Stats = (function Stats() {
var stats = []; let stats = [];
function clear(node) { function clear(node) {
while (node.hasChildNodes()) { while (node.hasChildNodes()) {
node.removeChild(node.lastChild); node.removeChild(node.lastChild);
} }
} }
function getStatIndex(pageNumber) { function getStatIndex(pageNumber) {
for (var i = 0, ii = stats.length; i < ii; ++i) { for (let i = 0, ii = stats.length; i < ii; ++i) {
if (stats[i].pageNumber === pageNumber) { if (stats[i].pageNumber === pageNumber) {
return i; return i;
} }
@ -469,27 +481,27 @@ var Stats = (function Stats() {
if (!stat) { if (!stat) {
return; return;
} }
var statsIndex = getStatIndex(pageNumber); const statsIndex = getStatIndex(pageNumber);
if (statsIndex !== false) { if (statsIndex !== false) {
const b = stats[statsIndex]; const b = stats[statsIndex];
this.panel.removeChild(b.div); this.panel.removeChild(b.div);
stats.splice(statsIndex, 1); stats.splice(statsIndex, 1);
} }
var wrapper = document.createElement("div"); const wrapper = document.createElement("div");
wrapper.className = "stats"; wrapper.className = "stats";
var title = document.createElement("div"); const title = document.createElement("div");
title.className = "title"; title.className = "title";
title.textContent = "Page: " + pageNumber; title.textContent = "Page: " + pageNumber;
var statsDiv = document.createElement("div"); const statsDiv = document.createElement("div");
statsDiv.textContent = stat.toString(); statsDiv.textContent = stat.toString();
wrapper.appendChild(title); wrapper.appendChild(title);
wrapper.appendChild(statsDiv); wrapper.appendChild(statsDiv);
stats.push({ pageNumber, div: wrapper }); stats.push({ pageNumber, div: wrapper });
stats.sort(function(a, b) { stats.sort(function (a, b) {
return a.pageNumber - b.pageNumber; return a.pageNumber - b.pageNumber;
}); });
clear(this.panel); clear(this.panel);
for (var i = 0, ii = stats.length; i < ii; ++i) { for (let i = 0, ii = stats.length; i < ii; ++i) {
this.panel.appendChild(stats[i].div); this.panel.appendChild(stats[i].div);
} }
}, },
@ -502,30 +514,27 @@ var Stats = (function Stats() {
// Manages all the debugging tools. // Manages all the debugging tools.
window.PDFBug = (function PDFBugClosure() { window.PDFBug = (function PDFBugClosure() {
var panelWidth = 300; const panelWidth = 300;
var buttons = []; const buttons = [];
var activePanel = null; let activePanel = null;
return { return {
tools: [FontInspector, StepperManager, Stats], tools: [FontInspector, StepperManager, Stats],
enable(ids) { enable(ids) {
var all = false, const all = ids.length === 1 && ids[0] === "all";
tools = this.tools; const tools = this.tools;
if (ids.length === 1 && ids[0] === "all") { for (let i = 0; i < tools.length; ++i) {
all = true; const tool = tools[i];
}
for (var i = 0; i < tools.length; ++i) {
var tool = tools[i];
if (all || ids.includes(tool.id)) { if (all || ids.includes(tool.id)) {
tool.enabled = true; tool.enabled = true;
} }
} }
if (!all) { if (!all) {
// Sort the tools by the order they are enabled. // Sort the tools by the order they are enabled.
tools.sort(function(a, b) { tools.sort(function (a, b) {
var indexA = ids.indexOf(a.id); let indexA = ids.indexOf(a.id);
indexA = indexA < 0 ? tools.length : indexA; indexA = indexA < 0 ? tools.length : indexA;
var indexB = ids.indexOf(b.id); let indexB = ids.indexOf(b.id);
indexB = indexB < 0 ? tools.length : indexB; indexB = indexB < 0 ? tools.length : indexB;
return indexA - indexB; return indexA - indexB;
}); });
@ -541,14 +550,14 @@ window.PDFBug = (function PDFBugClosure() {
* Panel * Panel
* ... * ...
*/ */
var ui = document.createElement("div"); const ui = document.createElement("div");
ui.id = "PDFBug"; ui.id = "PDFBug";
var controls = document.createElement("div"); const controls = document.createElement("div");
controls.setAttribute("class", "controls"); controls.setAttribute("class", "controls");
ui.appendChild(controls); ui.appendChild(controls);
var panels = document.createElement("div"); const panels = document.createElement("div");
panels.setAttribute("class", "panels"); panels.setAttribute("class", "panels");
ui.appendChild(panels); ui.appendChild(panels);
@ -556,17 +565,17 @@ window.PDFBug = (function PDFBugClosure() {
container.style.right = panelWidth + "px"; container.style.right = panelWidth + "px";
// Initialize all the debugging tools. // Initialize all the debugging tools.
var tools = this.tools; const tools = this.tools;
var self = this; const self = this;
for (var i = 0; i < tools.length; ++i) { for (let i = 0; i < tools.length; ++i) {
var tool = tools[i]; const tool = tools[i];
var panel = document.createElement("div"); const panel = document.createElement("div");
var panelButton = document.createElement("button"); const panelButton = document.createElement("button");
panelButton.textContent = tool.name; panelButton.textContent = tool.name;
panelButton.addEventListener( panelButton.addEventListener(
"click", "click",
(function(selected) { (function (selected) {
return function(event) { return function (event) {
event.preventDefault(); event.preventDefault();
self.selectPanel(selected); self.selectPanel(selected);
}; };
@ -592,7 +601,7 @@ window.PDFBug = (function PDFBugClosure() {
this.selectPanel(0); this.selectPanel(0);
}, },
cleanup() { cleanup() {
for (var i = 0, ii = this.tools.length; i < ii; i++) { for (let i = 0, ii = this.tools.length; i < ii; i++) {
if (this.tools[i].enabled) { if (this.tools[i].enabled) {
this.tools[i].cleanup(); this.tools[i].cleanup();
} }
@ -606,17 +615,12 @@ window.PDFBug = (function PDFBugClosure() {
return; return;
} }
activePanel = index; activePanel = index;
var tools = this.tools; const tools = this.tools;
for (var j = 0; j < tools.length; ++j) { for (let j = 0; j < tools.length; ++j) {
if (j === index) { const isActive = j === index;
buttons[j].setAttribute("class", "active"); buttons[j].classList.toggle("active", isActive);
tools[j].active = true; tools[j].active = isActive;
tools[j].panel.removeAttribute("hidden"); tools[j].panel.hidden = !isActive;
} else {
buttons[j].setAttribute("class", "");
tools[j].active = false;
tools[j].panel.setAttribute("hidden", "true");
}
} }
}, },
}; };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M8 12a1 1 0 0 1-.707-.293l-5-5a1 1 0 0 1 1.414-1.414L8 9.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5A1 1 0 0 1 8 12z"></path></svg>

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M13 11a1 1 0 0 1-.707-.293L8 6.414l-4.293 4.293a1 1 0 0 1-1.414-1.414l5-5a1 1 0 0 1 1.414 0l5 5A1 1 0 0 1 13 11z"></path></svg>

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"
fill="rgba(255,255,255,1)" style="animation:spinLoadingIcon 1s steps(12,end)
infinite"><style>@keyframes
spinLoadingIcon{to{transform:rotate(360deg)}}</style><path
d="M7 3V1s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z"/><path d="M4.63
4.1l-1-1.73S3.13 1.5 4 1c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37
1.37c-.87.57-1.37-.37-1.37-.37z" fill-opacity=".93"/><path
d="M3.1 6.37l-1.73-1S.5 4.87 1 4c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37
1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".86"/><path d="M3
9H1S0 9 0 8s1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".79"/><path d="M4.1 11.37l-1.73 1S1.5 12.87 1
12c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z"
fill-opacity=".72"/><path d="M3.63 13.56l1-1.73s.5-.87
1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z"
fill-opacity=".65"/><path d="M7 15v-2s0-1 1-1 1 1 1 1v2s0 1-1
1-1-1-1-1z" fill-opacity=".58"/><path d="M10.63
14.56l-1-1.73s-.5-.87.37-1.37c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37
1.37c-.87.5-1.37-.37-1.37-.37z" fill-opacity=".51"/><path
d="M13.56 12.37l-1.73-1s-.87-.5-.37-1.37c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37
1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".44"/><path d="M15
9h-2s-1 0-1-1 1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".37"/><path d="M14.56 5.37l-1.73
1s-.87.5-1.37-.37c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37
1.37z" fill-opacity=".3"/><path d="M9.64 3.1l.98-1.66s.5-.874
1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z"
fill-opacity=".23"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" style="animation:spinLoadingIcon 1s steps(12,end) infinite"><style>@keyframes spinLoadingIcon{to{transform:rotate(360deg)}}</style><path d="M7 3V1s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z"/><path d="M4.63 4.1l-1-1.73S3.13 1.5 4 1c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.57-1.37-.37-1.37-.37z" fill-opacity=".93"/><path d="M3.1 6.37l-1.73-1S.5 4.87 1 4c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".86"/><path d="M3 9H1S0 9 0 8s1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".79"/><path d="M4.1 11.37l-1.73 1S1.5 12.87 1 12c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z" fill-opacity=".72"/><path d="M3.63 13.56l1-1.73s.5-.87 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" fill-opacity=".65"/><path d="M7 15v-2s0-1 1-1 1 1 1 1v2s0 1-1 1-1-1-1-1z" fill-opacity=".58"/><path d="M10.63 14.56l-1-1.73s-.5-.87.37-1.37c.87-.5 1.37.37 1.37.37l1 1.73s.5.87-.37 1.37c-.87.5-1.37-.37-1.37-.37z" fill-opacity=".51"/><path d="M13.56 12.37l-1.73-1s-.87-.5-.37-1.37c.5-.87 1.37-.37 1.37-.37l1.73 1s.87.5.37 1.37c-.5.87-1.37.37-1.37.37z" fill-opacity=".44"/><path d="M15 9h-2s-1 0-1-1 1-1 1-1h2s1 0 1 1-1 1-1 1z" fill-opacity=".37"/><path d="M14.56 5.37l-1.73 1s-.87.5-1.37-.37c-.5-.87.37-1.37.37-1.37l1.73-1s.87-.5 1.37.37c.5.87-.37 1.37-.37 1.37z" fill-opacity=".3"/><path d="M9.64 3.1l.98-1.66s.5-.874 1.37-.37c.87.5.37 1.37.37 1.37l-1 1.73s-.5.87-1.37.37c-.87-.5-.37-1.37-.37-1.37z" fill-opacity=".23"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,15 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16
16">
<path
d="M8 16a8 8 0 1 1 8-8 8.009 8.009 0 0 1-8 8zM8 2a6 6 0 1 0 6 6 6.006 6.006 0 0 0-6-6z">
</path>
<path
d="M8 7a1 1 0 0 0-1 1v3a1 1 0 0 0 2 0V8a1 1 0 0 0-1-1z">
</path>
<circle
cx="8" cy="5" r="1.188">
</circle>
</svg>

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13 13c-.3 0-.5-.1-.7-.3L8 8.4l-4.3 4.3c-.9.9-2.3-.5-1.4-1.4l5-5c.4-.4 1-.4 1.4 0l5 5c.6.6.2 1.7-.7 1.7zm0-11H3C1.7 2 1.7 4 3 4h10c1.3 0 1.3-2 0-2z"/></svg>

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M15 3.7V13c0 1.5-1.53 3-3 3H7.13c-.72 0-1.63-.5-2.13-1l-5-5s.84-1 .87-1c.13-.1.33-.2.53-.2.1 0 .3.1.4.2L4 10.6V2.7c0-.6.4-1 1-1s1 .4 1 1v4.6h1V1c0-.6.4-1 1-1s1 .4 1 1v6.3h1V1.7c0-.6.4-1 1-1s1 .4 1 1v5.7h1V3.7c0-.6.4-1 1-1s1 .4 1 1z"/></svg>

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 10c-.3 0-.5-.1-.7-.3l-5-5c-.9-.9.5-2.3 1.4-1.4L8 7.6l4.3-4.3c.9-.9 2.3.5 1.4 1.4l-5 5c-.2.2-.4.3-.7.3zm5 2H3c-1.3 0-1.3 2 0 2h10c1.3 0 1.3-2 0-2z"/></svg>

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M1 1a1 1 0 011 1v2.4A7 7 0 118 15a7 7 0 01-4.9-2 1 1 0 011.4-1.5 5 5 0 10-1-5.5H6a1 1 0 010 2H1a1 1 0 01-1-1V2a1 1 0 011-1z"/></svg>

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M15 1a1 1 0 0 0-1 1v2.418A6.995 6.995 0 1 0 8 15a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.019 5.019 0 1 1 12.549 6H10a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"></path></svg>

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M0 4h1.5c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5H0zM9.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C5 4.5 5.5 4 6.5 4zM16 4h-1.5c-1 0-1.5.5-1.5 1.5v5c0 1 .5 1.5 1.5 1.5H16z"/></svg>

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M9.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C5 4.5 5.5 4 6.5 4zM11 0v.5c0 1-.5 1.5-1.5 1.5h-3C5.5 2 5 1.5 5 .5V0h6zM11 16v-.5c0-1-.5-1.5-1.5-1.5h-3c-1 0-1.5.5-1.5 1.5v.5h6z"/></svg>

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M5.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C1 4.5 1.5 4 2.5 4zM7 0v.5C7 1.5 6.5 2 5.5 2h-3C1.5 2 1 1.5 1 .5V0h6zM7 16v-.5c0-1-.5-1.5-1.5-1.5h-3c-1 0-1.5.5-1.5 1.5v.5h6zM13.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5c0-1 .5-1.5 1.5-1.5zM15 0v.5c0 1-.5 1.5-1.5 1.5h-3C9.5 2 9 1.5 9 .5V0h6zM15 16v-.507c0-1-.5-1.5-1.5-1.5h-3C9.5 14 9 14.5 9 15.5v.5h6z"/></svg>

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M12.408 8.217l-8.083-6.7A.2.2 0 0 0 4 1.672V12.3a.2.2 0 0 0 .333.146l2.56-2.372 1.857 3.9A1.125 1.125 0 1 0 10.782 13L8.913 9.075l3.4-.51a.2.2 0 0 0 .095-.348z"></path></svg>

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M1.5 3.5C.5 3.5 0 4 0 5v6.5c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm2 1.2c.8 0 1.4.2 1.8.6.5.4.7 1 .7 1.7 0 .5-.2 1-.5 1.4-.2.3-.5.7-1 1l-.6.4c-.4.3-.6.4-.75.56-.15.14-.25.24-.35.44H6v1.3H1c0-.6.1-1.1.3-1.5.3-.6.7-1 1.5-1.6.7-.4 1.1-.8 1.28-1 .32-.3.42-.6.42-1 0-.3-.1-.6-.23-.8-.17-.2-.37-.3-.77-.3s-.7.1-.9.5c-.04.2-.1.5-.1.9H1.1c0-.6.1-1.1.3-1.5.4-.7 1.1-1.1 2.1-1.1zM10.54 3.54C9.5 3.54 9 4 9 5v6.5c0 1 .5 1.5 1.54 1.5h4c.96 0 1.46-.5 1.46-1.5V5c0-1-.5-1.46-1.5-1.46zm1.9.95c.7 0 1.3.2 1.7.5.4.4.6.8.6 1.4 0 .4-.1.8-.4 1.1-.2.2-.3.3-.5.4.1 0 .3.1.6.3.4.3.5.8.5 1.4 0 .6-.2 1.2-.6 1.6-.4.5-1.1.7-1.9.7-1 0-1.8-.3-2.2-1-.14-.29-.24-.69-.24-1.29h1.4c0 .3 0 .5.1.7.2.4.5.5 1 .5.3 0 .5-.1.7-.3.2-.2.3-.5.3-.8 0-.5-.2-.8-.6-.95-.2-.05-.5-.15-1-.15v-1c.5 0 .8-.1 1-.14.3-.1.5-.4.5-.9 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.7-.3-.3 0-.6.1-.75.3-.2.2-.2.5-.2.86h-1.34c0-.4.1-.7.19-1.1 0-.12.2-.32.4-.62.2-.2.4-.3.7-.4.3-.1.6-.1 1-.1z"/></svg>

After

Width:  |  Height:  |  Size: 1022 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M6 3c-1 0-1.5.5-1.5 1.5v7c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5v-7c0-1-.5-1.5-1.5-1.5z"/></svg>

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M10.56 3.5C9.56 3.5 9 4 9 5v6.5c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm1.93 1.2c.8 0 1.4.2 1.8.64.5.4.7 1 .7 1.7 0 .5-.2 1-.5 1.44-.2.3-.6.6-1 .93l-.6.4c-.4.3-.6.4-.7.55-.1.1-.2.2-.3.4h3.2v1.27h-5c0-.5.1-1 .3-1.43.2-.49.7-1 1.5-1.54.7-.5 1.1-.8 1.3-1.02.3-.3.4-.7.4-1.05 0-.3-.1-.6-.3-.77-.2-.2-.4-.3-.7-.3-.4 0-.7.2-.9.5-.1.2-.1.5-.2.9h-1.4c0-.6.2-1.1.3-1.5.4-.7 1.1-1.1 2-1.1zM1.54 3.5C.54 3.5 0 4 0 5v6.5c0 1 .5 1.5 1.54 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm1.8 1.125H4.5V12H3V6.9H1.3v-1c.5 0 .8 0 .97-.03.33-.07.53-.17.73-.37.1-.2.2-.3.25-.5.05-.2.05-.3.05-.3z"/></svg>

After

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M4 16V2s0-1 1-1h6s1 0 1 1v14l-4-5z"/></svg>

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="m14 9h-6c-1.3 0-1.3 2 0 2h6c1.3 0 1.3-2 0-2zm-5.2-8h-3.8c-1.3 0-1.3 2 0 2h1.7zm-6.8 0c-1 0-1.3 1-0.7 1.7 0.7 0.6 1.7 0.3 1.7-0.7 0-0.5-0.4-1-1-1zm3 8c-1 0-1.3 1-0.7 1.7 0.6 0.6 1.7 0.2 1.7-0.7 0-0.5-0.4-1-1-1zm0.3-4h-0.3c-1.4 0-1.4 2 0 2h2.3zm-3.3 0c-0.9 0-1.4 1-0.7 1.7 0.7 0.6 1.7 0.2 1.7-0.7 0-0.6-0.5-1-1-1zm12 8h-9c-1.3 0-1.3 2 0 2h9c1.3 0 1.3-2 0-2zm-12 0c-1 0-1.3 1-0.7 1.7 0.7 0.6 1.7 0.2 1.7-0.712 0-0.5-0.4-1-1-1z"/><path d="m7.37 4.838 3.93-3.911v2.138h3.629v3.546h-3.629v2.138l-3.93-3.911"/></svg>

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M14 3h-2v2h2v8H2V5h7V3h-.849L6.584 1.538A2 2 0 0 0 5.219 1H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM2 3h3.219l1.072 1H2z"></path><path d="M8.146 6.146a.5.5 0 0 0 0 .707l2 2a.5.5 0 0 0 .707 0l2-2a.5.5 0 1 0-.707-.707L11 7.293V.5a.5.5 0 0 0-1 0v6.793L8.854 6.146a.5.5 0 0 0-.708 0z"></path></svg>

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

View File

@ -0,0 +1 @@
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8 11a1 1 0 01-.707-.293l-2.99-2.99c-.91-.942.471-2.324 1.414-1.414L8 8.586l2.283-2.283c.943-.91 2.324.472 1.414 1.414l-2.99 2.99A1 1 0 018 11z"/></svg>

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M14.859 3.2a1.335 1.335 0 0 1-1.217.8H13v1h1v8H2V5h8V4h-.642a1.365 1.365 0 0 1-1.325-1.11L6.584 1.538A2 2 0 0 0 5.219 1H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-1.141-1.8zM2 3h3.219l1.072 1H2zm7.854-.146L11 1.707V8.5a.5.5 0 0 0 1 0V1.707l1.146 1.146a.5.5 0 1 0 .707-.707l-2-2a.5.5 0 0 0-.707 0l-2 2a.5.5 0 0 0 .707.707z"></path></svg>

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@ -0,0 +1,7 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16
16"><path transform='rotate(90) translate(0, -16)'
d="M15.707 7.293l-6-6a1 1 0 0 0-1.414 1.414L12.586 7H1a1 1 0 0 0 0 2h11.586l-4.293
4.293a1 1 0 1 0 1.414 1.414l6-6a1 1 0 0 0 0-1.414z"></path></svg>

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

View File

@ -0,0 +1,12 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16
16">
<path
transform='rotate(90) translate(0, -16)'
d="M15 7H3.414l4.293-4.293a1 1 0 0
0-1.414-1.414l-6 6a1 1 0 0 0 0 1.414l6 6a1 1 0 0 0 1.414-1.414L3.414 9H15a1 1 0 0
0 0-2z">
</path>
</svg>

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M.5 1H7s0-1 1-1 1 1 1 1h6.5s.5 0 .5.5-.5.5-.5.5H.5S0 2 0 1.5.5 1 .5 1zM1 3h14v7c0 2-1 2-2 2H3c-1 0-2 0-2-2zm5 1v7l6-3.5zM3.72 15.33l.53-2s0-.5.65-.35c.51.13.38.63.38.63l-.53 2s0 .5-.64.35c-.53-.13-.39-.63-.39-.63zM11.24 15.61l-.53-1.99s0-.5.38-.63c.51-.13.64.35.64.35l.53 2s0 .5-.38.63c-.5.13-.64-.35-.65-.35z"/></svg>

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M14 5h-1V1a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v4H2a2 2 0 0 0-2 2v5h3v3a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-3h3V7a2 2 0 0 0-2-2zM2.5 8a.5.5 0 1 1 .5-.5.5.5 0 0 1-.5.5zm9.5 7H4v-5h8zm0-10H4V1h8zm-6.5 7h4a.5.5 0 0 0 0-1h-4a.5.5 0 1 0 0 1zm0 2h5a.5.5 0 0 0 0-1h-5a.5.5 0 1 0 0 1z"></path></svg>

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

View File

@ -0,0 +1,4 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M15.707 14.293l-4.822-4.822a6.019 6.019 0 1 0-1.414 1.414l4.822 4.822a1 1 0 0 0 1.414-1.414zM6 10a4 4 0 1 1 4-4 4 4 0 0 1-4 4z"></path></svg>

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Some files were not shown because too many files have changed in this diff Show More