update
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
import type { StateCreator, StoreMutatorIdentifier } from 'zustand/vanilla';
|
||||
type Write<T, U> = Omit<T, keyof U> & U;
|
||||
type Combine = <T extends object, U extends object, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = []>(initialState: T, additionalStateCreator: StateCreator<T, Mps, Mcs, U>) => StateCreator<Write<T, U>, Mps, Mcs>;
|
||||
export declare const combine: Combine;
|
||||
export {};
|
||||
@@ -0,0 +1,15 @@
|
||||
/*! simple-concat. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
module.exports = function (stream, cb) {
|
||||
var chunks = []
|
||||
stream.on('data', function (chunk) {
|
||||
chunks.push(chunk)
|
||||
})
|
||||
stream.once('end', function () {
|
||||
if (cb) cb(null, Buffer.concat(chunks))
|
||||
cb = null
|
||||
})
|
||||
stream.once('error', function (err) {
|
||||
if (cb) cb(err)
|
||||
cb = null
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
const basename = require("./getPaths").basename;
|
||||
|
||||
/** @typedef {import("./Resolver")} Resolver */
|
||||
/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */
|
||||
/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */
|
||||
|
||||
module.exports = class CloneBasenamePlugin {
|
||||
/**
|
||||
* @param {string | ResolveStepHook} source source
|
||||
* @param {string | ResolveStepHook} target target
|
||||
*/
|
||||
constructor(source, target) {
|
||||
this.source = source;
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Resolver} resolver the resolver
|
||||
* @returns {void}
|
||||
*/
|
||||
apply(resolver) {
|
||||
const target = resolver.ensureHook(this.target);
|
||||
resolver
|
||||
.getHook(this.source)
|
||||
.tapAsync("CloneBasenamePlugin", (request, resolveContext, callback) => {
|
||||
const requestPath = /** @type {string} */ (request.path);
|
||||
const filename = /** @type {string} */ (basename(requestPath));
|
||||
const filePath = resolver.join(requestPath, filename);
|
||||
/** @type {ResolveRequest} */
|
||||
const obj = {
|
||||
...request,
|
||||
path: filePath,
|
||||
relativePath:
|
||||
request.relativePath &&
|
||||
resolver.join(request.relativePath, filename)
|
||||
};
|
||||
resolver.doResolve(
|
||||
target,
|
||||
obj,
|
||||
"using path: " + filePath,
|
||||
resolveContext,
|
||||
callback
|
||||
);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
||||
const jsxRuntime = require("react/jsx-runtime");
|
||||
const routerCore = require("@tanstack/router-core");
|
||||
const CatchBoundary = require("./CatchBoundary.cjs");
|
||||
const useRouterState = require("./useRouterState.cjs");
|
||||
function CatchNotFound(props) {
|
||||
const resetKey = useRouterState.useRouterState({
|
||||
select: (s) => `not-found-${s.location.pathname}-${s.status}`
|
||||
});
|
||||
return /* @__PURE__ */ jsxRuntime.jsx(
|
||||
CatchBoundary.CatchBoundary,
|
||||
{
|
||||
getResetKey: () => resetKey,
|
||||
onCatch: (error, errorInfo) => {
|
||||
var _a;
|
||||
if (routerCore.isNotFound(error)) {
|
||||
(_a = props.onCatch) == null ? void 0 : _a.call(props, error, errorInfo);
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
errorComponent: ({ error }) => {
|
||||
var _a;
|
||||
if (routerCore.isNotFound(error)) {
|
||||
return (_a = props.fallback) == null ? void 0 : _a.call(props, error);
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
children: props.children
|
||||
}
|
||||
);
|
||||
}
|
||||
function DefaultGlobalNotFound() {
|
||||
return /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Not Found" });
|
||||
}
|
||||
exports.CatchNotFound = CatchNotFound;
|
||||
exports.DefaultGlobalNotFound = DefaultGlobalNotFound;
|
||||
//# sourceMappingURL=not-found.cjs.map
|
||||
@@ -0,0 +1,26 @@
|
||||
/* Copyright 2022 Mozilla Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/* eslint-disable import/no-unresolved */
|
||||
|
||||
import { GlobalWorkerOptions } from "./build/pdf.mjs";
|
||||
|
||||
if (typeof window !== "undefined" && "Worker" in window) {
|
||||
GlobalWorkerOptions.workerPort = new Worker(
|
||||
new URL("./build/pdf.worker.mjs", import.meta.url),
|
||||
{ type: "module" }
|
||||
);
|
||||
}
|
||||
|
||||
export * from "./build/pdf.mjs";
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"16":"K D mC","132":"E F A B"},B:{"132":"C L M G N O P","322":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I"},C:{"2":"1 2 3 4 5 6 7 8 nC LC J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB qC rC","1025":"0 9 sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC","1602":"rB"},D:{"2":"1 2 3 4 5 6 7 8 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","322":"0 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC"},E:{"2":"J PB K D E F A B C L M G sC SC tC uC vC wC TC FC GC xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C"},F:{"2":"1 2 3 4 5 6 7 8 F B C G N O P QB RB SB 4C 5C 6C 7C FC kC 8C GC","322":"0 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E SC 9C lC AD BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC"},H:{"2":"WD"},I:{"2":"LC J XD YD ZD aD lC bD cD","322":"I"},J:{"2":"D A"},K:{"2":"A B C FC kC GC","322":"H"},L:{"322":"I"},M:{"1025":"EC"},N:{"132":"A B"},O:{"322":"HC"},P:{"2":"J","322":"1 2 3 4 5 6 7 8 dD eD fD gD hD TC iD jD kD lD mD IC JC KC nD"},Q:{"322":"oD"},R:{"322":"pD"},S:{"2":"qD","1025":"rD"}},B:4,C:"CSS text-justify",D:true};
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"K D E F A B mC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I","2":"C L M G N O P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 nC LC J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC qC rC"},D:{"1":"0 9 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC","2":"1 2 3 4 5 6 7 8 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB"},E:{"2":"J PB K D E F A B C sC SC tC uC vC wC TC FC","194":"L M G GC xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C"},F:{"1":"0 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB 4C 5C 6C 7C FC kC 8C GC"},G:{"2":"E SC 9C lC AD BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC"},H:{"2":"WD"},I:{"1":"I","2":"LC J XD YD ZD aD lC bD cD"},J:{"2":"D A"},K:{"1":"H","2":"A B C FC kC GC"},L:{"1":"I"},M:{"2":"EC"},N:{"2":"A B"},O:{"1":"HC"},P:{"1":"1 2 3 4 5 6 7 8 hD TC iD jD kD lD mD IC JC KC nD","2":"J dD eD fD gD"},Q:{"1":"oD"},R:{"1":"pD"},S:{"2":"qD rD"}},B:4,C:"CSS Painting API",D:true};
|
||||
@@ -0,0 +1,242 @@
|
||||
/**
|
||||
* @fileoverview Rule to require newlines before `return` statement
|
||||
* @author Kai Cataldo
|
||||
* @deprecated in ESLint v4.0.0
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Rule Definition
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/** @type {import('../shared/types').Rule} */
|
||||
module.exports = {
|
||||
meta: {
|
||||
type: "layout",
|
||||
|
||||
docs: {
|
||||
description: "Require an empty line before `return` statements",
|
||||
recommended: false,
|
||||
url: "https://eslint.org/docs/latest/rules/newline-before-return",
|
||||
},
|
||||
|
||||
fixable: "whitespace",
|
||||
schema: [],
|
||||
messages: {
|
||||
expected: "Expected newline before return statement.",
|
||||
},
|
||||
|
||||
deprecated: {
|
||||
message: "The rule was replaced with a more general rule.",
|
||||
url: "https://eslint.org/blog/2017/06/eslint-v4.0.0-released/",
|
||||
deprecatedSince: "4.0.0",
|
||||
availableUntil: null,
|
||||
replacedBy: [
|
||||
{
|
||||
message: "The new rule moved to a plugin.",
|
||||
url: "https://eslint.org/docs/latest/rules/padding-line-between-statements#examples",
|
||||
plugin: {
|
||||
name: "@stylistic/eslint-plugin-js",
|
||||
url: "https://eslint.style/packages/js",
|
||||
},
|
||||
rule: {
|
||||
name: "padding-line-between-statements",
|
||||
url: "https://eslint.style/rules/js/padding-line-between-statements",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
create(context) {
|
||||
const sourceCode = context.sourceCode;
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Helpers
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Tests whether node is preceded by supplied tokens
|
||||
* @param {ASTNode} node node to check
|
||||
* @param {Array} testTokens array of tokens to test against
|
||||
* @returns {boolean} Whether or not the node is preceded by one of the supplied tokens
|
||||
* @private
|
||||
*/
|
||||
function isPrecededByTokens(node, testTokens) {
|
||||
const tokenBefore = sourceCode.getTokenBefore(node);
|
||||
|
||||
return testTokens.includes(tokenBefore.value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether node is the first node after statement or in block
|
||||
* @param {ASTNode} node node to check
|
||||
* @returns {boolean} Whether or not the node is the first node after statement or in block
|
||||
* @private
|
||||
*/
|
||||
function isFirstNode(node) {
|
||||
const parentType = node.parent.type;
|
||||
|
||||
if (node.parent.body) {
|
||||
return Array.isArray(node.parent.body)
|
||||
? node.parent.body[0] === node
|
||||
: node.parent.body === node;
|
||||
}
|
||||
|
||||
if (parentType === "IfStatement") {
|
||||
return isPrecededByTokens(node, ["else", ")"]);
|
||||
}
|
||||
if (parentType === "DoWhileStatement") {
|
||||
return isPrecededByTokens(node, ["do"]);
|
||||
}
|
||||
if (parentType === "SwitchCase") {
|
||||
return isPrecededByTokens(node, [":"]);
|
||||
}
|
||||
return isPrecededByTokens(node, [")"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of lines of comments that precede the node
|
||||
* @param {ASTNode} node node to check for overlapping comments
|
||||
* @param {number} lineNumTokenBefore line number of previous token, to check for overlapping comments
|
||||
* @returns {number} Number of lines of comments that precede the node
|
||||
* @private
|
||||
*/
|
||||
function calcCommentLines(node, lineNumTokenBefore) {
|
||||
const comments = sourceCode.getCommentsBefore(node);
|
||||
let numLinesComments = 0;
|
||||
|
||||
if (!comments.length) {
|
||||
return numLinesComments;
|
||||
}
|
||||
|
||||
comments.forEach(comment => {
|
||||
numLinesComments++;
|
||||
|
||||
if (comment.type === "Block") {
|
||||
numLinesComments +=
|
||||
comment.loc.end.line - comment.loc.start.line;
|
||||
}
|
||||
|
||||
// avoid counting lines with inline comments twice
|
||||
if (comment.loc.start.line === lineNumTokenBefore) {
|
||||
numLinesComments--;
|
||||
}
|
||||
|
||||
if (comment.loc.end.line === node.loc.start.line) {
|
||||
numLinesComments--;
|
||||
}
|
||||
});
|
||||
|
||||
return numLinesComments;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the line number of the token before the node that is passed in as an argument
|
||||
* @param {ASTNode} node The node to use as the start of the calculation
|
||||
* @returns {number} Line number of the token before `node`
|
||||
* @private
|
||||
*/
|
||||
function getLineNumberOfTokenBefore(node) {
|
||||
const tokenBefore = sourceCode.getTokenBefore(node);
|
||||
let lineNumTokenBefore;
|
||||
|
||||
/**
|
||||
* Global return (at the beginning of a script) is a special case.
|
||||
* If there is no token before `return`, then we expect no line
|
||||
* break before the return. Comments are allowed to occupy lines
|
||||
* before the global return, just no blank lines.
|
||||
* Setting lineNumTokenBefore to zero in that case results in the
|
||||
* desired behavior.
|
||||
*/
|
||||
if (tokenBefore) {
|
||||
lineNumTokenBefore = tokenBefore.loc.end.line;
|
||||
} else {
|
||||
lineNumTokenBefore = 0; // global return at beginning of script
|
||||
}
|
||||
|
||||
return lineNumTokenBefore;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether node is preceded by a newline
|
||||
* @param {ASTNode} node node to check
|
||||
* @returns {boolean} Whether or not the node is preceded by a newline
|
||||
* @private
|
||||
*/
|
||||
function hasNewlineBefore(node) {
|
||||
const lineNumNode = node.loc.start.line;
|
||||
const lineNumTokenBefore = getLineNumberOfTokenBefore(node);
|
||||
const commentLines = calcCommentLines(node, lineNumTokenBefore);
|
||||
|
||||
return lineNumNode - lineNumTokenBefore - commentLines > 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether it is safe to apply a fix to a given return statement.
|
||||
*
|
||||
* The fix is not considered safe if the given return statement has leading comments,
|
||||
* as we cannot safely determine if the newline should be added before or after the comments.
|
||||
* For more information, see: https://github.com/eslint/eslint/issues/5958#issuecomment-222767211
|
||||
* @param {ASTNode} node The return statement node to check.
|
||||
* @returns {boolean} `true` if it can fix the node.
|
||||
* @private
|
||||
*/
|
||||
function canFix(node) {
|
||||
const leadingComments = sourceCode.getCommentsBefore(node);
|
||||
const lastLeadingComment = leadingComments.at(-1);
|
||||
const tokenBefore = sourceCode.getTokenBefore(node);
|
||||
|
||||
if (leadingComments.length === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* if the last leading comment ends in the same line as the previous token and
|
||||
* does not share a line with the `return` node, we can consider it safe to fix.
|
||||
* Example:
|
||||
* function a() {
|
||||
* var b; //comment
|
||||
* return;
|
||||
* }
|
||||
*/
|
||||
if (
|
||||
lastLeadingComment.loc.end.line === tokenBefore.loc.end.line &&
|
||||
lastLeadingComment.loc.end.line !== node.loc.start.line
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Public
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
return {
|
||||
ReturnStatement(node) {
|
||||
if (!isFirstNode(node) && !hasNewlineBefore(node)) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "expected",
|
||||
fix(fixer) {
|
||||
if (canFix(node)) {
|
||||
const tokenBefore =
|
||||
sourceCode.getTokenBefore(node);
|
||||
const newlines =
|
||||
node.loc.start.line ===
|
||||
tokenBefore.loc.end.line
|
||||
? "\n\n"
|
||||
: "\n";
|
||||
|
||||
return fixer.insertTextBefore(node, newlines);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
import { URIRegExps } from "./uri";
|
||||
declare const _default: URIRegExps;
|
||||
export default _default;
|
||||
@@ -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" viewBox="0 0 16 16" height="40" width="40">
|
||||
<path d="M8.156 12.5a.99.99 0 0 0 .707-.294l.523-2.574L10.5 8.499l1.058-1.04 2.65-.601a.996.996 0 0 0 0-1.414l-3.657-3.658a.996.996 0 0 0-1.414 0l-.523 2.576L7.5 5.499 6.442 6.535l-2.65.6a.996.996 0 0 0 0 1.413l3.657 3.658a.999.999 0 0 0 .707.295z"/>
|
||||
<path d="M9.842.996c-.386 0-.77.146-1.06.44a.5.5 0 0 0-.136.251l-.492 2.43-1.008 1.03-.953.933-2.511.566a.5.5 0 0 0-.243.133 1.505 1.505 0 0 0-.002 2.123l1.477 1.477-2.768 2.767a.5.5 0 0 0 0 .707.5.5 0 0 0 .708 0l2.767-2.767 1.475 1.474a1.494 1.494 0 0 0 2.123-.002.5.5 0 0 0 .135-.254l.492-2.427 1.008-1.024.953-.937 2.511-.57a.5.5 0 0 0 .243-.132c.586-.58.583-1.543.002-2.125l-3.659-3.656A1.501 1.501 0 0 0 9.842.996Zm.05 1.025a.394.394 0 0 1 .305.12l3.658 3.657c.18.18.141.432.002.627l-2.41.545a.5.5 0 0 0-.24.131L10.15 8.142a.5.5 0 0 0-.007.006L9.029 9.283a.5.5 0 0 0-.133.25l-.48 2.36c-.082.053-.165.109-.26.109a.492.492 0 0 1-.353-.149L4.145 8.195c-.18-.18-.141-.432-.002-.627l2.41-.545a.5.5 0 0 0 .238-.13L7.85 5.857a.5.5 0 0 0 .007-.008l1.114-1.138a.5.5 0 0 0 .133-.25l.472-2.323a.619.619 0 0 1 .317-.117Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,39 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _index = require("../validators/generated/index.js");
|
||||
var _index2 = require("../builders/generated/index.js");
|
||||
var _default = exports.default = toStatement;
|
||||
function toStatement(node, ignore) {
|
||||
if ((0, _index.isStatement)(node)) {
|
||||
return node;
|
||||
}
|
||||
let mustHaveId = false;
|
||||
let newType;
|
||||
if ((0, _index.isClass)(node)) {
|
||||
mustHaveId = true;
|
||||
newType = "ClassDeclaration";
|
||||
} else if ((0, _index.isFunction)(node)) {
|
||||
mustHaveId = true;
|
||||
newType = "FunctionDeclaration";
|
||||
} else if ((0, _index.isAssignmentExpression)(node)) {
|
||||
return (0, _index2.expressionStatement)(node);
|
||||
}
|
||||
if (mustHaveId && !node.id) {
|
||||
newType = false;
|
||||
}
|
||||
if (!newType) {
|
||||
if (ignore) {
|
||||
return false;
|
||||
} else {
|
||||
throw new Error(`cannot turn ${node.type} to a statement`);
|
||||
}
|
||||
}
|
||||
node.type = newType;
|
||||
return node;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=toStatement.js.map
|
||||
@@ -0,0 +1,120 @@
|
||||
# eslint-visitor-keys
|
||||
|
||||
[](https://www.npmjs.com/package/eslint-visitor-keys)
|
||||
[](http://www.npmtrends.com/eslint-visitor-keys)
|
||||
[](https://github.com/eslint/js/actions)
|
||||
|
||||
Constants and utilities about visitor keys to traverse AST.
|
||||
|
||||
## 💿 Installation
|
||||
|
||||
Use [npm] to install.
|
||||
|
||||
```bash
|
||||
$ npm install eslint-visitor-keys
|
||||
```
|
||||
|
||||
### Requirements
|
||||
|
||||
- [Node.js] `^18.18.0`, `^20.9.0`, or `>=21.1.0`
|
||||
|
||||
## 📖 Usage
|
||||
|
||||
To use in an ESM file:
|
||||
|
||||
```js
|
||||
import * as evk from "eslint-visitor-keys"
|
||||
```
|
||||
|
||||
To use in a CommonJS file:
|
||||
|
||||
```js
|
||||
const evk = require("eslint-visitor-keys")
|
||||
```
|
||||
|
||||
### evk.KEYS
|
||||
|
||||
> type: `{ [type: string]: string[] | undefined }`
|
||||
|
||||
Visitor keys. This keys are frozen.
|
||||
|
||||
This is an object. Keys are the type of [ESTree] nodes. Their values are an array of property names which have child nodes.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
console.log(evk.KEYS.AssignmentExpression) // → ["left", "right"]
|
||||
```
|
||||
|
||||
### evk.getKeys(node)
|
||||
|
||||
> type: `(node: object) => string[]`
|
||||
|
||||
Get the visitor keys of a given AST node.
|
||||
|
||||
This is similar to `Object.keys(node)` of ES Standard, but some keys are excluded: `parent`, `leadingComments`, `trailingComments`, and names which start with `_`.
|
||||
|
||||
This will be used to traverse unknown nodes.
|
||||
|
||||
For example:
|
||||
|
||||
```js
|
||||
const node = {
|
||||
type: "AssignmentExpression",
|
||||
left: { type: "Identifier", name: "foo" },
|
||||
right: { type: "Literal", value: 0 }
|
||||
}
|
||||
console.log(evk.getKeys(node)) // → ["type", "left", "right"]
|
||||
```
|
||||
|
||||
### evk.unionWith(additionalKeys)
|
||||
|
||||
> type: `(additionalKeys: object) => { [type: string]: string[] | undefined }`
|
||||
|
||||
Make the union set with `evk.KEYS` and the given keys.
|
||||
|
||||
- The order of keys is, `additionalKeys` is at first, then `evk.KEYS` is concatenated after that.
|
||||
- It removes duplicated keys as keeping the first one.
|
||||
|
||||
For example:
|
||||
|
||||
```js
|
||||
console.log(evk.unionWith({
|
||||
MethodDefinition: ["decorators"]
|
||||
})) // → { ..., MethodDefinition: ["decorators", "key", "value"], ... }
|
||||
```
|
||||
|
||||
## 📰 Change log
|
||||
|
||||
See [GitHub releases](https://github.com/eslint/js/releases).
|
||||
|
||||
## 🍻 Contributing
|
||||
|
||||
Welcome. See [ESLint contribution guidelines](https://eslint.org/docs/developer-guide/contributing/).
|
||||
|
||||
### Development commands
|
||||
|
||||
- `npm test` runs tests and measures code coverage.
|
||||
- `npm run lint` checks source codes with ESLint.
|
||||
- `npm run test:open-coverage` opens the code coverage report of the previous test with your default browser.
|
||||
|
||||
[npm]: https://www.npmjs.com/
|
||||
[Node.js]: https://nodejs.org/
|
||||
[ESTree]: https://github.com/estree/estree
|
||||
|
||||
<!-- NOTE: This section is autogenerated. Do not manually edit.-->
|
||||
<!--sponsorsstart-->
|
||||
## Sponsors
|
||||
|
||||
The following companies, organizations, and individuals support ESLint's ongoing maintenance and development. [Become a Sponsor](https://eslint.org/donate)
|
||||
to get your logo on our READMEs and [website](https://eslint.org/sponsors).
|
||||
|
||||
<h3>Platinum Sponsors</h3>
|
||||
<p><a href="https://automattic.com"><img src="https://images.opencollective.com/automattic/d0ef3e1/logo.png" alt="Automattic" height="128"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb" height="128"></a></p><h3>Gold Sponsors</h3>
|
||||
<p><a href="https://trunk.io/"><img src="https://images.opencollective.com/trunkio/fb92d60/avatar.png" alt="trunk.io" height="96"></a></p><h3>Silver Sponsors</h3>
|
||||
<p><a href="https://www.jetbrains.com/"><img src="https://images.opencollective.com/jetbrains/fe76f99/logo.png" alt="JetBrains" height="64"></a> <a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/5c4fa84/logo.png" alt="Liftoff" height="64"></a> <a href="https://americanexpress.io"><img src="https://avatars.githubusercontent.com/u/3853301?v=4" alt="American Express" height="64"></a> <a href="https://www.workleap.com"><img src="https://avatars.githubusercontent.com/u/53535748?u=d1e55d7661d724bf2281c1bfd33cb8f99fe2465f&v=4" alt="Workleap" height="64"></a></p><h3>Bronze Sponsors</h3>
|
||||
<p><a href="https://www.wordhint.net/"><img src="https://images.opencollective.com/wordhint/be86813/avatar.png" alt="WordHint" height="32"></a> <a href="https://www.crosswordsolver.org/anagram-solver/"><img src="https://images.opencollective.com/anagram-solver/2666271/logo.png" alt="Anagram Solver" height="32"></a> <a href="https://icons8.com/"><img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8" height="32"></a> <a href="https://discord.com"><img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord" height="32"></a> <a href="https://www.gitbook.com"><img src="https://avatars.githubusercontent.com/u/7111340?v=4" alt="GitBook" height="32"></a> <a href="https://nx.dev"><img src="https://avatars.githubusercontent.com/u/23692104?v=4" alt="Nx" height="32"></a> <a href="https://herocoders.com"><img src="https://avatars.githubusercontent.com/u/37549774?v=4" alt="HeroCoders" height="32"></a></p>
|
||||
<h3>Technology Sponsors</h3>
|
||||
Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.
|
||||
<p><a href="https://netlify.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/netlify-icon.svg" alt="Netlify" height="32"></a> <a href="https://algolia.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/algolia-icon.svg" alt="Algolia" height="32"></a> <a href="https://1password.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/1password-icon.svg" alt="1Password" height="32"></a></p>
|
||||
<!--sponsorsend-->
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"1":"F A B","2":"K D E mC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC","2":"nC LC J PB K D E F A B C qC rC"},D:{"1":"0 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC","2":"1 2 3 4 5 J PB K D E F A B C L M G N O P QB"},E:{"1":"D E F A B C L M G vC wC TC FC GC xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C","2":"J PB K sC SC tC uC"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 6C 7C FC kC 8C GC","2":"F 4C 5C"},G:{"1":"E CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC","2":"SC 9C lC AD BD"},H:{"1":"WD"},I:{"1":"I bD cD","2":"LC J XD YD ZD aD lC"},J:{"1":"A","2":"D"},K:{"1":"B C H FC kC GC","2":"A"},L:{"1":"I"},M:{"1":"EC"},N:{"1":"A B"},O:{"1":"HC"},P:{"1":"1 2 3 4 5 6 7 8 J dD eD fD gD hD TC iD jD kD lD mD IC JC KC nD"},Q:{"1":"oD"},R:{"1":"pD"},S:{"1":"qD rD"}},B:4,C:"CSS background-position edge offsets",D:true};
|
||||
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = _classApplyDescriptorGet;
|
||||
function _classApplyDescriptorGet(receiver, descriptor) {
|
||||
if (descriptor.get) {
|
||||
return descriptor.get.call(receiver);
|
||||
}
|
||||
return descriptor.value;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=classApplyDescriptorGet.js.map
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"K D E F A B mC"},B:{"2":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I"},C:{"2":"0 1 2 3 4 5 6 7 8 9 nC LC J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC qC rC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC"},E:{"2":"J PB K D E F sC SC tC uC vC wC","132":"A B C L M G TC FC GC xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 4C 5C 6C 7C FC kC 8C GC"},G:{"2":"E SC 9C lC AD BD CD DD ED FD","132":"GD HD ID JD KD LD MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC"},H:{"2":"WD"},I:{"2":"LC J I XD YD ZD aD lC bD cD"},J:{"2":"D A"},K:{"2":"A B C H FC kC GC"},L:{"2":"I"},M:{"2":"EC"},N:{"2":"A B"},O:{"2":"HC"},P:{"2":"1 2 3 4 5 6 7 8 J dD eD fD gD hD TC iD jD kD lD mD IC JC KC nD"},Q:{"2":"oD"},R:{"2":"pD"},S:{"2":"qD rD"}},B:4,C:"CSS hanging-punctuation",D:true};
|
||||
@@ -0,0 +1 @@
|
||||
export declare function useCanGoBack(): boolean;
|
||||
@@ -0,0 +1,410 @@
|
||||
export type AnnotationEditor = import("./editor.js").AnnotationEditor;
|
||||
export type AnnotationEditorLayer = import("./annotation_editor_layer.js").AnnotationEditorLayer;
|
||||
/**
|
||||
* A pdf has several pages and each of them when it will rendered
|
||||
* will have an AnnotationEditorLayer which will contain the some
|
||||
* new Annotations associated to an editor in order to modify them.
|
||||
*
|
||||
* This class is used to manage all the different layers, editors and
|
||||
* some action like copy/paste, undo/redo, ...
|
||||
*/
|
||||
export class AnnotationEditorUIManager {
|
||||
static TRANSLATE_SMALL: number;
|
||||
static TRANSLATE_BIG: number;
|
||||
static get _keyboardManager(): any;
|
||||
constructor(container: any, viewer: any, altTextManager: any, eventBus: any, pdfDocument: any, pageColors: any, highlightColors: any, enableHighlightFloatingButton: any, enableUpdatedAddImage: any, enableNewAltTextWhenAddingImage: any, mlManager: any);
|
||||
_signal: AbortSignal;
|
||||
_eventBus: any;
|
||||
viewParameters: {
|
||||
realScale: number;
|
||||
rotation: number;
|
||||
};
|
||||
isShiftKeyDown: boolean;
|
||||
destroy(): void;
|
||||
combinedSignal(ac: any): AbortSignal;
|
||||
get mlManager(): null;
|
||||
get useNewAltTextFlow(): boolean;
|
||||
get useNewAltTextWhenAddingImage(): boolean;
|
||||
get hcmFilter(): any;
|
||||
get direction(): any;
|
||||
get highlightColors(): any;
|
||||
get highlightColorNames(): any;
|
||||
setMainHighlightColorPicker(colorPicker: any): void;
|
||||
editAltText(editor: any, firstTime?: boolean): void;
|
||||
switchToMode(mode: any, callback: any): void;
|
||||
setPreference(name: any, value: any): void;
|
||||
onSetPreference({ name, value }: {
|
||||
name: any;
|
||||
value: any;
|
||||
}): void;
|
||||
onPageChanging({ pageNumber }: {
|
||||
pageNumber: any;
|
||||
}): void;
|
||||
focusMainContainer(): void;
|
||||
findParent(x: any, y: any): any;
|
||||
disableUserSelect(value?: boolean): void;
|
||||
addShouldRescale(editor: any): void;
|
||||
removeShouldRescale(editor: any): void;
|
||||
onScaleChanging({ scale }: {
|
||||
scale: any;
|
||||
}): void;
|
||||
onRotationChanging({ pagesRotation }: {
|
||||
pagesRotation: any;
|
||||
}): void;
|
||||
highlightSelection(methodOfCreation?: string): void;
|
||||
/**
|
||||
* Add an editor in the annotation storage.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
addToAnnotationStorage(editor: AnnotationEditor): void;
|
||||
blur(): void;
|
||||
focus(): void;
|
||||
addEditListeners(): void;
|
||||
removeEditListeners(): void;
|
||||
dragOver(event: any): void;
|
||||
/**
|
||||
* Drop callback.
|
||||
* @param {DragEvent} event
|
||||
*/
|
||||
drop(event: DragEvent): void;
|
||||
/**
|
||||
* Copy callback.
|
||||
* @param {ClipboardEvent} event
|
||||
*/
|
||||
copy(event: ClipboardEvent): void;
|
||||
/**
|
||||
* Cut callback.
|
||||
* @param {ClipboardEvent} event
|
||||
*/
|
||||
cut(event: ClipboardEvent): void;
|
||||
/**
|
||||
* Paste callback.
|
||||
* @param {ClipboardEvent} event
|
||||
*/
|
||||
paste(event: ClipboardEvent): Promise<void>;
|
||||
/**
|
||||
* Keydown callback.
|
||||
* @param {KeyboardEvent} event
|
||||
*/
|
||||
keydown(event: KeyboardEvent): void;
|
||||
/**
|
||||
* Keyup callback.
|
||||
* @param {KeyboardEvent} event
|
||||
*/
|
||||
keyup(event: KeyboardEvent): void;
|
||||
/**
|
||||
* Execute an action for a given name.
|
||||
* For example, the user can click on the "Undo" entry in the context menu
|
||||
* and it'll trigger the undo action.
|
||||
*/
|
||||
onEditingAction({ name }: {
|
||||
name: any;
|
||||
}): void;
|
||||
/**
|
||||
* Set the editing state.
|
||||
* It can be useful to temporarily disable it when the user is editing a
|
||||
* FreeText annotation.
|
||||
* @param {boolean} isEditing
|
||||
*/
|
||||
setEditingState(isEditing: boolean): void;
|
||||
registerEditorTypes(types: any): void;
|
||||
/**
|
||||
* Get an id.
|
||||
* @returns {string}
|
||||
*/
|
||||
getId(): string;
|
||||
get currentLayer(): any;
|
||||
getLayer(pageIndex: any): any;
|
||||
get currentPageIndex(): number;
|
||||
/**
|
||||
* Add a new layer for a page which will contains the editors.
|
||||
* @param {AnnotationEditorLayer} layer
|
||||
*/
|
||||
addLayer(layer: AnnotationEditorLayer): void;
|
||||
/**
|
||||
* Remove a layer.
|
||||
* @param {AnnotationEditorLayer} layer
|
||||
*/
|
||||
removeLayer(layer: AnnotationEditorLayer): void;
|
||||
/**
|
||||
* Change the editor mode (None, FreeText, Ink, ...)
|
||||
* @param {number} mode
|
||||
* @param {string|null} editId
|
||||
* @param {boolean} [isFromKeyboard] - true if the mode change is due to a
|
||||
* keyboard action.
|
||||
*/
|
||||
updateMode(mode: number, editId?: string | null, isFromKeyboard?: boolean | undefined): Promise<void>;
|
||||
addNewEditorFromKeyboard(): void;
|
||||
/**
|
||||
* Update the toolbar if it's required to reflect the tool currently used.
|
||||
* @param {number} mode
|
||||
* @returns {undefined}
|
||||
*/
|
||||
updateToolbar(mode: number): undefined;
|
||||
/**
|
||||
* Update a parameter in the current editor or globally.
|
||||
* @param {number} type
|
||||
* @param {*} value
|
||||
*/
|
||||
updateParams(type: number, value: any): void;
|
||||
showAllEditors(type: any, visible: any, updateButton?: boolean): void;
|
||||
enableWaiting(mustWait?: boolean): void;
|
||||
/**
|
||||
* Get all the editors belonging to a given page.
|
||||
* @param {number} pageIndex
|
||||
* @returns {Array<AnnotationEditor>}
|
||||
*/
|
||||
getEditors(pageIndex: number): Array<AnnotationEditor>;
|
||||
/**
|
||||
* Get an editor with the given id.
|
||||
* @param {string} id
|
||||
* @returns {AnnotationEditor}
|
||||
*/
|
||||
getEditor(id: string): AnnotationEditor;
|
||||
/**
|
||||
* Add a new editor.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
addEditor(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* Remove an editor.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
removeEditor(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* The annotation element with the given id has been deleted.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
addDeletedAnnotationElement(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* Check if the annotation element with the given id has been deleted.
|
||||
* @param {string} annotationElementId
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isDeletedAnnotationElement(annotationElementId: string): boolean;
|
||||
/**
|
||||
* The annotation element with the given id have been restored.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
removeDeletedAnnotationElement(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* Set the given editor as the active one.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
setActiveEditor(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* Update the UI of the active editor.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
updateUI(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* Add or remove an editor the current selection.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
toggleSelected(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* Set the last selected editor.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
setSelected(editor: AnnotationEditor): void;
|
||||
/**
|
||||
* Check if the editor is selected.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
isSelected(editor: AnnotationEditor): boolean;
|
||||
get firstSelectedEditor(): any;
|
||||
/**
|
||||
* Unselect an editor.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
unselect(editor: AnnotationEditor): void;
|
||||
get hasSelection(): boolean;
|
||||
get isEnterHandled(): any;
|
||||
/**
|
||||
* Undo the last command.
|
||||
*/
|
||||
undo(): void;
|
||||
/**
|
||||
* Redo the last undoed command.
|
||||
*/
|
||||
redo(): void;
|
||||
/**
|
||||
* Add a command to execute (cmd) and another one to undo it.
|
||||
* @param {Object} params
|
||||
*/
|
||||
addCommands(params: Object): void;
|
||||
/**
|
||||
* Delete the current editor or all.
|
||||
*/
|
||||
delete(): void;
|
||||
commitOrRemove(): void;
|
||||
hasSomethingToControl(): boolean;
|
||||
/**
|
||||
* Select all the editors.
|
||||
*/
|
||||
selectAll(): void;
|
||||
/**
|
||||
* Unselect all the selected editors.
|
||||
*/
|
||||
unselectAll(): void;
|
||||
translateSelectedEditors(x: any, y: any, noCommit?: boolean): void;
|
||||
/**
|
||||
* Set up the drag session for moving the selected editors.
|
||||
*/
|
||||
setUpDragSession(): void;
|
||||
/**
|
||||
* Ends the drag session.
|
||||
* @returns {boolean} true if at least one editor has been moved.
|
||||
*/
|
||||
endDragSession(): boolean;
|
||||
/**
|
||||
* Drag the set of selected editors.
|
||||
* @param {number} tx
|
||||
* @param {number} ty
|
||||
*/
|
||||
dragSelectedEditors(tx: number, ty: number): void;
|
||||
/**
|
||||
* Rebuild the editor (usually on undo/redo actions) on a potentially
|
||||
* non-rendered page.
|
||||
* @param {AnnotationEditor} editor
|
||||
*/
|
||||
rebuild(editor: AnnotationEditor): void;
|
||||
get isEditorHandlingKeyboard(): any;
|
||||
/**
|
||||
* Is the current editor the one passed as argument?
|
||||
* @param {AnnotationEditor} editor
|
||||
* @returns
|
||||
*/
|
||||
isActive(editor: AnnotationEditor): editor is never;
|
||||
/**
|
||||
* Get the current active editor.
|
||||
* @returns {AnnotationEditor|null}
|
||||
*/
|
||||
getActive(): AnnotationEditor | null;
|
||||
/**
|
||||
* Get the current editor mode.
|
||||
* @returns {number}
|
||||
*/
|
||||
getMode(): number;
|
||||
get imageManager(): any;
|
||||
getSelectionBoxes(textLayer: any): {
|
||||
x: number;
|
||||
y: number;
|
||||
width: number;
|
||||
height: number;
|
||||
}[] | null;
|
||||
addChangedExistingAnnotation({ annotationElementId, id }: {
|
||||
annotationElementId: any;
|
||||
id: any;
|
||||
}): void;
|
||||
removeChangedExistingAnnotation({ annotationElementId }: {
|
||||
annotationElementId: any;
|
||||
}): void;
|
||||
renderAnnotationElement(annotation: any): void;
|
||||
#private;
|
||||
}
|
||||
export function bindEvents(obj: any, element: any, names: any): void;
|
||||
export class ColorManager {
|
||||
static _colorsMapping: Map<string, number[]>;
|
||||
get _colors(): any;
|
||||
/**
|
||||
* In High Contrast Mode, the color on the screen is not always the
|
||||
* real color used in the pdf.
|
||||
* For example in some cases white can appear to be black but when saving
|
||||
* we want to have white.
|
||||
* @param {string} color
|
||||
* @returns {Array<number>}
|
||||
*/
|
||||
convert(color: string): Array<number>;
|
||||
/**
|
||||
* An input element must have its color value as a hex string
|
||||
* and not as color name.
|
||||
* So this function converts a name into an hex string.
|
||||
* @param {string} name
|
||||
* @returns {string}
|
||||
*/
|
||||
getHexCode(name: string): string;
|
||||
}
|
||||
/**
|
||||
* Class to handle undo/redo.
|
||||
* Commands are just saved in a buffer.
|
||||
* If we hit some memory issues we could likely use a circular buffer.
|
||||
* It has to be used as a singleton.
|
||||
*/
|
||||
export class CommandManager {
|
||||
constructor(maxSize?: number);
|
||||
/**
|
||||
* @typedef {Object} addOptions
|
||||
* @property {function} cmd
|
||||
* @property {function} undo
|
||||
* @property {function} [post]
|
||||
* @property {boolean} mustExec
|
||||
* @property {number} type
|
||||
* @property {boolean} overwriteIfSameType
|
||||
* @property {boolean} keepUndo
|
||||
*/
|
||||
/**
|
||||
* Add a new couple of commands to be used in case of redo/undo.
|
||||
* @param {addOptions} options
|
||||
*/
|
||||
add({ cmd, undo, post, mustExec, type, overwriteIfSameType, keepUndo, }: {
|
||||
cmd: Function;
|
||||
undo: Function;
|
||||
post?: Function | undefined;
|
||||
mustExec: boolean;
|
||||
type: number;
|
||||
overwriteIfSameType: boolean;
|
||||
keepUndo: boolean;
|
||||
}): void;
|
||||
/**
|
||||
* Undo the last command.
|
||||
*/
|
||||
undo(): void;
|
||||
/**
|
||||
* Redo the last command.
|
||||
*/
|
||||
redo(): void;
|
||||
/**
|
||||
* Check if there is something to undo.
|
||||
* @returns {boolean}
|
||||
*/
|
||||
hasSomethingToUndo(): boolean;
|
||||
/**
|
||||
* Check if there is something to redo.
|
||||
* @returns {boolean}
|
||||
*/
|
||||
hasSomethingToRedo(): boolean;
|
||||
destroy(): void;
|
||||
#private;
|
||||
}
|
||||
/**
|
||||
* Class to handle the different keyboards shortcuts we can have on mac or
|
||||
* non-mac OSes.
|
||||
*/
|
||||
export class KeyboardManager {
|
||||
/**
|
||||
* Create a new keyboard manager class.
|
||||
* @param {Array<Array>} callbacks - an array containing an array of shortcuts
|
||||
* and a callback to call.
|
||||
* A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.
|
||||
*/
|
||||
constructor(callbacks: Array<any[]>);
|
||||
buffer: any[];
|
||||
callbacks: Map<any, any>;
|
||||
allKeys: Set<any>;
|
||||
/**
|
||||
* Execute a callback, if any, for a given keyboard event.
|
||||
* The self is used as `this` in the callback.
|
||||
* @param {Object} self
|
||||
* @param {KeyboardEvent} event
|
||||
* @returns
|
||||
*/
|
||||
exec(self: Object, event: KeyboardEvent): void;
|
||||
#private;
|
||||
}
|
||||
/**
|
||||
* Convert a number between 0 and 100 into an hex number between 0 and 255.
|
||||
* @param {number} opacity
|
||||
* @return {string}
|
||||
*/
|
||||
export function opacityToHex(opacity: number): string;
|
||||
@@ -0,0 +1,146 @@
|
||||
// Copyright (c) 2010 LearnBoost <tj@learnboost.com>
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cairo.h>
|
||||
#include "CanvasError.h"
|
||||
#include <functional>
|
||||
#include <napi.h>
|
||||
#include <stdint.h> // node < 7 uses libstdc++ on macOS which lacks complete c++11
|
||||
|
||||
#ifdef HAVE_JPEG
|
||||
#include <jpeglib.h>
|
||||
#include <jerror.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GIF
|
||||
#include <gif_lib.h>
|
||||
|
||||
#if GIFLIB_MAJOR > 5 || GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1
|
||||
#define GIF_CLOSE_FILE(gif) DGifCloseFile(gif, NULL)
|
||||
#else
|
||||
#define GIF_CLOSE_FILE(gif) DGifCloseFile(gif)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_RSVG
|
||||
#include <librsvg/rsvg.h>
|
||||
// librsvg <= 2.36.1, identified by undefined macro, needs an extra include
|
||||
#ifndef LIBRSVG_CHECK_VERSION
|
||||
#include <librsvg/rsvg-cairo.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
using JPEGDecodeL = std::function<uint32_t (uint8_t* const src)>;
|
||||
|
||||
class Image : public Napi::ObjectWrap<Image> {
|
||||
public:
|
||||
char *filename;
|
||||
int width, height;
|
||||
int naturalWidth, naturalHeight;
|
||||
Napi::Env env;
|
||||
static Napi::FunctionReference constructor;
|
||||
static void Initialize(Napi::Env& env, Napi::Object& target);
|
||||
Image(const Napi::CallbackInfo& info);
|
||||
Napi::Value GetComplete(const Napi::CallbackInfo& info);
|
||||
Napi::Value GetWidth(const Napi::CallbackInfo& info);
|
||||
Napi::Value GetHeight(const Napi::CallbackInfo& info);
|
||||
Napi::Value GetNaturalWidth(const Napi::CallbackInfo& info);
|
||||
Napi::Value GetNaturalHeight(const Napi::CallbackInfo& info);
|
||||
Napi::Value GetDataMode(const Napi::CallbackInfo& info);
|
||||
void SetDataMode(const Napi::CallbackInfo& info, const Napi::Value& value);
|
||||
void SetWidth(const Napi::CallbackInfo& info, const Napi::Value& value);
|
||||
void SetHeight(const Napi::CallbackInfo& info, const Napi::Value& value);
|
||||
static Napi::Value GetSource(const Napi::CallbackInfo& info);
|
||||
static void SetSource(const Napi::CallbackInfo& info);
|
||||
inline uint8_t *data(){ return cairo_image_surface_get_data(_surface); }
|
||||
inline int stride(){ return cairo_image_surface_get_stride(_surface); }
|
||||
static int isPNG(uint8_t *data);
|
||||
static int isJPEG(uint8_t *data);
|
||||
static int isGIF(uint8_t *data);
|
||||
static int isSVG(uint8_t *data, unsigned len);
|
||||
static int isBMP(uint8_t *data, unsigned len);
|
||||
static cairo_status_t readPNG(void *closure, unsigned char *data, unsigned len);
|
||||
inline int isComplete(){ return COMPLETE == state; }
|
||||
cairo_surface_t *surface();
|
||||
cairo_status_t loadSurface();
|
||||
cairo_status_t loadFromBuffer(uint8_t *buf, unsigned len);
|
||||
cairo_status_t loadPNGFromBuffer(uint8_t *buf);
|
||||
cairo_status_t loadPNG();
|
||||
void clearData();
|
||||
#ifdef HAVE_RSVG
|
||||
cairo_status_t loadSVGFromBuffer(uint8_t *buf, unsigned len);
|
||||
cairo_status_t loadSVG(FILE *stream);
|
||||
cairo_status_t renderSVGToSurface();
|
||||
#endif
|
||||
#ifdef HAVE_GIF
|
||||
cairo_status_t loadGIFFromBuffer(uint8_t *buf, unsigned len);
|
||||
cairo_status_t loadGIF(FILE *stream);
|
||||
#endif
|
||||
#ifdef HAVE_JPEG
|
||||
enum Orientation {
|
||||
NORMAL,
|
||||
MIRROR_HORIZ,
|
||||
MIRROR_VERT,
|
||||
ROTATE_180,
|
||||
ROTATE_90_CW,
|
||||
ROTATE_270_CW,
|
||||
MIRROR_HORIZ_AND_ROTATE_90_CW,
|
||||
MIRROR_HORIZ_AND_ROTATE_270_CW
|
||||
};
|
||||
cairo_status_t loadJPEGFromBuffer(uint8_t *buf, unsigned len);
|
||||
cairo_status_t loadJPEG(FILE *stream);
|
||||
void jpegToARGB(jpeg_decompress_struct* args, uint8_t* data, uint8_t* src, JPEGDecodeL decode);
|
||||
cairo_status_t decodeJPEGIntoSurface(jpeg_decompress_struct *info, Orientation orientation);
|
||||
cairo_status_t decodeJPEGBufferIntoMimeSurface(uint8_t *buf, unsigned len);
|
||||
cairo_status_t assignDataAsMime(uint8_t *data, int len, const char *mime_type);
|
||||
|
||||
class Reader {
|
||||
public:
|
||||
virtual bool hasBytes(unsigned n) const = 0;
|
||||
virtual uint8_t getNext() = 0;
|
||||
virtual void skipBytes(unsigned n) = 0;
|
||||
};
|
||||
Orientation getExifOrientation(Reader& jpeg);
|
||||
void updateDimensionsForOrientation(Orientation orientation);
|
||||
void rotatePixels(uint8_t* pixels, int width, int height, int channels, Orientation orientation);
|
||||
#endif
|
||||
cairo_status_t loadBMPFromBuffer(uint8_t *buf, unsigned len);
|
||||
cairo_status_t loadBMP(FILE *stream);
|
||||
CanvasError errorInfo;
|
||||
void loaded();
|
||||
cairo_status_t load();
|
||||
~Image();
|
||||
|
||||
enum {
|
||||
DEFAULT
|
||||
, LOADING
|
||||
, COMPLETE
|
||||
} state;
|
||||
|
||||
enum data_mode_t {
|
||||
DATA_IMAGE = 1
|
||||
, DATA_MIME = 2
|
||||
} data_mode;
|
||||
|
||||
typedef enum {
|
||||
UNKNOWN
|
||||
, GIF
|
||||
, JPEG
|
||||
, PNG
|
||||
, SVG
|
||||
} type;
|
||||
|
||||
static type extension(const char *filename);
|
||||
|
||||
private:
|
||||
cairo_surface_t *_surface;
|
||||
uint8_t *_data = nullptr;
|
||||
int _data_len;
|
||||
#ifdef HAVE_RSVG
|
||||
RsvgHandle *_rsvg;
|
||||
bool _is_svg;
|
||||
int _svg_last_width;
|
||||
int _svg_last_height;
|
||||
#endif
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
{"version":3,"names":["_parser","data","require","_codeFrame","_missingPluginHelper","parser","pluginPasses","parserOpts","highlightCode","filename","code","results","plugins","plugin","parserOverride","ast","parse","undefined","push","length","then","Error","err","message","loc","missingPlugin","codeFrame","codeFrameColumns","start","line","column","generateMissingPluginMessage"],"sources":["../../src/parser/index.ts"],"sourcesContent":["import type { Handler } from \"gensync\";\nimport { parse, type ParseResult } from \"@babel/parser\";\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport generateMissingPluginMessage from \"./util/missing-plugin-helper.ts\";\nimport type { PluginPasses } from \"../config/index.ts\";\n\nexport type { ParseResult };\n\nexport default function* parser(\n pluginPasses: PluginPasses,\n { parserOpts, highlightCode = true, filename = \"unknown\" }: any,\n code: string,\n): Handler<ParseResult> {\n try {\n const results = [];\n for (const plugins of pluginPasses) {\n for (const plugin of plugins) {\n const { parserOverride } = plugin;\n if (parserOverride) {\n const ast = parserOverride(code, parserOpts, parse);\n\n if (ast !== undefined) results.push(ast);\n }\n }\n }\n\n if (results.length === 0) {\n return parse(code, parserOpts);\n } else if (results.length === 1) {\n // If we want to allow async parsers\n yield* [];\n if (typeof results[0].then === \"function\") {\n throw new Error(\n `You appear to be using an async parser plugin, ` +\n `which your current version of Babel does not support. ` +\n `If you're using a published plugin, you may need to upgrade ` +\n `your @babel/core version.`,\n );\n }\n return results[0];\n }\n // TODO: Add an error code\n throw new Error(\"More than one plugin attempted to override parsing.\");\n } catch (err) {\n if (err.code === \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\") {\n err.message +=\n \"\\nConsider renaming the file to '.mjs', or setting sourceType:module \" +\n \"or sourceType:unambiguous in your Babel config for this file.\";\n // err.code will be changed to BABEL_PARSE_ERROR later.\n }\n\n const { loc, missingPlugin } = err;\n if (loc) {\n const codeFrame = codeFrameColumns(\n code,\n {\n start: {\n line: loc.line,\n column: loc.column + 1,\n },\n },\n {\n highlightCode,\n },\n );\n if (missingPlugin) {\n err.message =\n `${filename}: ` +\n generateMissingPluginMessage(\n missingPlugin[0],\n loc,\n codeFrame,\n filename,\n );\n } else {\n err.message = `${filename}: ${err.message}\\n\\n` + codeFrame;\n }\n err.code = \"BABEL_PARSE_ERROR\";\n }\n throw err;\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,WAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,IAAAG,oBAAA,GAAAF,OAAA;AAKe,UAAUG,MAAMA,CAC7BC,YAA0B,EAC1B;EAAEC,UAAU;EAAEC,aAAa,GAAG,IAAI;EAAEC,QAAQ,GAAG;AAAe,CAAC,EAC/DC,IAAY,EACU;EACtB,IAAI;IACF,MAAMC,OAAO,GAAG,EAAE;IAClB,KAAK,MAAMC,OAAO,IAAIN,YAAY,EAAE;MAClC,KAAK,MAAMO,MAAM,IAAID,OAAO,EAAE;QAC5B,MAAM;UAAEE;QAAe,CAAC,GAAGD,MAAM;QACjC,IAAIC,cAAc,EAAE;UAClB,MAAMC,GAAG,GAAGD,cAAc,CAACJ,IAAI,EAAEH,UAAU,EAAES,eAAK,CAAC;UAEnD,IAAID,GAAG,KAAKE,SAAS,EAAEN,OAAO,CAACO,IAAI,CAACH,GAAG,CAAC;QAC1C;MACF;IACF;IAEA,IAAIJ,OAAO,CAACQ,MAAM,KAAK,CAAC,EAAE;MACxB,OAAO,IAAAH,eAAK,EAACN,IAAI,EAAEH,UAAU,CAAC;IAChC,CAAC,MAAM,IAAII,OAAO,CAACQ,MAAM,KAAK,CAAC,EAAE;MAE/B,OAAO,EAAE;MACT,IAAI,OAAOR,OAAO,CAAC,CAAC,CAAC,CAACS,IAAI,KAAK,UAAU,EAAE;QACzC,MAAM,IAAIC,KAAK,CACb,iDAAiD,GAC/C,wDAAwD,GACxD,8DAA8D,GAC9D,2BACJ,CAAC;MACH;MACA,OAAOV,OAAO,CAAC,CAAC,CAAC;IACnB;IAEA,MAAM,IAAIU,KAAK,CAAC,qDAAqD,CAAC;EACxE,CAAC,CAAC,OAAOC,GAAG,EAAE;IACZ,IAAIA,GAAG,CAACZ,IAAI,KAAK,yCAAyC,EAAE;MAC1DY,GAAG,CAACC,OAAO,IACT,uEAAuE,GACvE,+DAA+D;IAEnE;IAEA,MAAM;MAAEC,GAAG;MAAEC;IAAc,CAAC,GAAGH,GAAG;IAClC,IAAIE,GAAG,EAAE;MACP,MAAME,SAAS,GAAG,IAAAC,6BAAgB,EAChCjB,IAAI,EACJ;QACEkB,KAAK,EAAE;UACLC,IAAI,EAAEL,GAAG,CAACK,IAAI;UACdC,MAAM,EAAEN,GAAG,CAACM,MAAM,GAAG;QACvB;MACF,CAAC,EACD;QACEtB;MACF,CACF,CAAC;MACD,IAAIiB,aAAa,EAAE;QACjBH,GAAG,CAACC,OAAO,GACT,GAAGd,QAAQ,IAAI,GACf,IAAAsB,4BAA4B,EAC1BN,aAAa,CAAC,CAAC,CAAC,EAChBD,GAAG,EACHE,SAAS,EACTjB,QACF,CAAC;MACL,CAAC,MAAM;QACLa,GAAG,CAACC,OAAO,GAAG,GAAGd,QAAQ,KAAKa,GAAG,CAACC,OAAO,MAAM,GAAGG,SAAS;MAC7D;MACAJ,GAAG,CAACZ,IAAI,GAAG,mBAAmB;IAChC;IACA,MAAMY,GAAG;EACX;AACF;AAAC","ignoreList":[]}
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"K D E F A B mC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I","2":"C L M G N O P"},C:{"1":"0 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC","2":"1 2 3 4 5 6 7 8 nC LC J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B qC rC"},D:{"1":"0 9 BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC","2":"1 2 3 4 5 6 7 8 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC"},E:{"1":"L M G GC xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C","2":"J PB K D E F A B C sC SC tC uC vC wC TC FC"},F:{"1":"0 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 4C 5C 6C 7C FC kC 8C GC"},G:{"1":"MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC","2":"E SC 9C lC AD BD CD DD ED FD GD HD ID JD KD LD"},H:{"2":"WD"},I:{"1":"I","2":"LC J XD YD ZD aD lC bD cD"},J:{"2":"D A"},K:{"1":"H","2":"A B C FC kC GC"},L:{"1":"I"},M:{"1":"EC"},N:{"2":"A B"},O:{"1":"HC"},P:{"1":"1 2 3 4 5 6 7 8 jD kD lD mD IC JC KC nD","2":"J dD eD fD gD hD TC iD"},Q:{"1":"oD"},R:{"1":"pD"},S:{"1":"rD","2":"qD"}},B:5,C:"prefers-color-scheme media query",D:true};
|
||||
@@ -0,0 +1,104 @@
|
||||
export interface StartOfSourceMap {
|
||||
file?: string;
|
||||
sourceRoot?: string;
|
||||
}
|
||||
|
||||
export interface RawSourceMap extends StartOfSourceMap {
|
||||
version: string;
|
||||
sources: string[];
|
||||
names: string[];
|
||||
sourcesContent?: string[];
|
||||
mappings: string;
|
||||
}
|
||||
|
||||
export interface Position {
|
||||
line: number;
|
||||
column: number;
|
||||
}
|
||||
|
||||
export interface LineRange extends Position {
|
||||
lastColumn: number;
|
||||
}
|
||||
|
||||
export interface FindPosition extends Position {
|
||||
// SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND
|
||||
bias?: number;
|
||||
}
|
||||
|
||||
export interface SourceFindPosition extends FindPosition {
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface MappedPosition extends Position {
|
||||
source: string;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
export interface MappingItem {
|
||||
source: string | null;
|
||||
generatedLine: number;
|
||||
generatedColumn: number;
|
||||
originalLine: number | null;
|
||||
originalColumn: number | null;
|
||||
name: string | null;
|
||||
}
|
||||
|
||||
export class SourceMapConsumer {
|
||||
static GENERATED_ORDER: number;
|
||||
static ORIGINAL_ORDER: number;
|
||||
|
||||
static GREATEST_LOWER_BOUND: number;
|
||||
static LEAST_UPPER_BOUND: number;
|
||||
|
||||
constructor(rawSourceMap: RawSourceMap);
|
||||
readonly file: string | undefined | null;
|
||||
readonly sourceRoot: string | undefined | null;
|
||||
readonly sourcesContent: readonly string[] | null | undefined;
|
||||
readonly sources: readonly string[]
|
||||
|
||||
computeColumnSpans(): void;
|
||||
originalPositionFor(generatedPosition: FindPosition): MappedPosition;
|
||||
generatedPositionFor(originalPosition: SourceFindPosition): LineRange;
|
||||
allGeneratedPositionsFor(originalPosition: MappedPosition): Position[];
|
||||
hasContentsOfAllSources(): boolean;
|
||||
sourceContentFor(source: string, returnNullOnMissing?: boolean): string | null;
|
||||
eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void;
|
||||
}
|
||||
|
||||
export interface Mapping {
|
||||
generated: Position;
|
||||
original?: Position | null;
|
||||
source?: string | null;
|
||||
name?: string | null;
|
||||
}
|
||||
|
||||
export class SourceMapGenerator {
|
||||
constructor(startOfSourceMap?: StartOfSourceMap);
|
||||
static fromSourceMap(sourceMapConsumer: SourceMapConsumer, startOfSourceMap?: StartOfSourceMap): SourceMapGenerator;
|
||||
addMapping(mapping: Mapping): void;
|
||||
setSourceContent(sourceFile: string, sourceContent: string | null | undefined): void;
|
||||
applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void;
|
||||
toString(): string;
|
||||
toJSON(): RawSourceMap;
|
||||
}
|
||||
|
||||
export interface CodeWithSourceMap {
|
||||
code: string;
|
||||
map: SourceMapGenerator;
|
||||
}
|
||||
|
||||
export class SourceNode {
|
||||
constructor();
|
||||
constructor(line: number, column: number, source: string);
|
||||
constructor(line: number, column: number, source: string, chunk?: string, name?: string);
|
||||
static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode;
|
||||
add(chunk: string): void;
|
||||
prepend(chunk: string): void;
|
||||
setSourceContent(sourceFile: string, sourceContent: string): void;
|
||||
walk(fn: (chunk: string, mapping: MappedPosition) => void): void;
|
||||
walkSourceContents(fn: (file: string, content: string) => void): void;
|
||||
join(sep: string): SourceNode;
|
||||
replaceRight(pattern: string, replacement: string): SourceNode;
|
||||
toString(): string;
|
||||
toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/* globals document, ImageData */
|
||||
|
||||
exports.createCanvas = function (width, height) {
|
||||
return Object.assign(document.createElement('canvas'), { width: width, height: height })
|
||||
}
|
||||
|
||||
exports.createImageData = function (array, width, height) {
|
||||
// Browser implementation of ImageData looks at the number of arguments passed
|
||||
switch (arguments.length) {
|
||||
case 0: return new ImageData()
|
||||
case 1: return new ImageData(array)
|
||||
case 2: return new ImageData(array, width)
|
||||
default: return new ImageData(array, width, height)
|
||||
}
|
||||
}
|
||||
|
||||
exports.loadImage = function (src, options) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
const image = Object.assign(document.createElement('img'), options)
|
||||
|
||||
function cleanup () {
|
||||
image.onload = null
|
||||
image.onerror = null
|
||||
}
|
||||
|
||||
image.onload = function () { cleanup(); resolve(image) }
|
||||
image.onerror = function () { cleanup(); reject(new Error('Failed to load the image "' + src + '"')) }
|
||||
|
||||
image.src = src
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user