pull/91/head
Vladimir Mandic 2021-03-14 13:39:47 -04:00
parent 5c2a6b48dc
commit fdbbfdf739
21 changed files with 2202 additions and 2179 deletions

View File

@ -11,6 +11,7 @@ Repository: **<git+https://github.com/vladmandic/human.git>**
### **HEAD -> main** 2021/03/13 mandic00@live.com ### **HEAD -> main** 2021/03/13 mandic00@live.com
- add typedocs and types
- strong typings - strong typings
### **1.1.2** 2021/03/12 mandic00@live.com ### **1.1.2** 2021/03/12 mandic00@live.com

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

944
dist/human.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

942
dist/human.js vendored

File diff suppressed because one or more lines are too long

6
dist/human.js.map vendored

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

2
dist/human.node.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1176
dist/tfjs.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
import config from '../config'; import config from '../config';
import { TRI468 as triangulation } from './blazeface/coords'; import { TRI468 as triangulation } from './blazeface/coords';
export const options = { export const drawOptions = {
color: <string>'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel color: <string>'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel
labelColor: <string>'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel labelColor: <string>'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel
shadowColor: <string>'black', shadowColor: <string>'black',
@ -21,29 +21,29 @@ export const options = {
}; };
function point(ctx, x, y, z = null) { function point(ctx, x, y, z = null) {
ctx.fillStyle = options.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : options.color; ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;
ctx.beginPath(); ctx.beginPath();
ctx.arc(x, y, options.pointSize, 0, 2 * Math.PI); ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);
ctx.fill(); ctx.fill();
} }
function rect(ctx, x, y, width, height) { function rect(ctx, x, y, width, height) {
ctx.beginPath(); ctx.beginPath();
if (options.useCurves) { if (drawOptions.useCurves) {
const cx = (x + x + width) / 2; const cx = (x + x + width) / 2;
const cy = (y + y + height) / 2; const cy = (y + y + height) / 2;
ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI); ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);
} else { } else {
ctx.lineWidth = options.lineWidth; ctx.lineWidth = drawOptions.lineWidth;
ctx.moveTo(x + options.roundRect, y); ctx.moveTo(x + drawOptions.roundRect, y);
ctx.lineTo(x + width - options.roundRect, y); ctx.lineTo(x + width - drawOptions.roundRect, y);
ctx.quadraticCurveTo(x + width, y, x + width, y + options.roundRect); ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);
ctx.lineTo(x + width, y + height - options.roundRect); ctx.lineTo(x + width, y + height - drawOptions.roundRect);
ctx.quadraticCurveTo(x + width, y + height, x + width - options.roundRect, y + height); ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);
ctx.lineTo(x + options.roundRect, y + height); ctx.lineTo(x + drawOptions.roundRect, y + height);
ctx.quadraticCurveTo(x, y + height, x, y + height - options.roundRect); ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);
ctx.lineTo(x, y + options.roundRect); ctx.lineTo(x, y + drawOptions.roundRect);
ctx.quadraticCurveTo(x, y, x + options.roundRect, y); ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);
ctx.closePath(); ctx.closePath();
} }
ctx.stroke(); ctx.stroke();
@ -54,12 +54,12 @@ function lines(ctx, points: number[] = []) {
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(points[0][0], points[0][1]); ctx.moveTo(points[0][0], points[0][1]);
for (const pt of points) { for (const pt of points) {
ctx.strokeStyle = options.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : options.color; ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;
ctx.fillStyle = options.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : options.color; ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;
ctx.lineTo(pt[0], parseInt(pt[1])); ctx.lineTo(pt[0], parseInt(pt[1]));
} }
ctx.stroke(); ctx.stroke();
if (options.fillPolygons) { if (drawOptions.fillPolygons) {
ctx.closePath(); ctx.closePath();
ctx.fill(); ctx.fill();
} }
@ -67,7 +67,7 @@ function lines(ctx, points: number[] = []) {
function curves(ctx, points: number[] = []) { function curves(ctx, points: number[] = []) {
if (points === undefined || points.length === 0) return; if (points === undefined || points.length === 0) return;
if (!options.useCurves || points.length <= 2) { if (!drawOptions.useCurves || points.length <= 2) {
lines(ctx, points); lines(ctx, points);
return; return;
} }
@ -79,7 +79,7 @@ function curves(ctx, points: number[] = []) {
} }
ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]); ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);
ctx.stroke(); ctx.stroke();
if (options.fillPolygons) { if (drawOptions.fillPolygons) {
ctx.closePath(); ctx.closePath();
ctx.fill(); ctx.fill();
} }
@ -90,8 +90,8 @@ export async function gesture(inCanvas, result) {
if (!(inCanvas instanceof HTMLCanvasElement)) return; if (!(inCanvas instanceof HTMLCanvasElement)) return;
const ctx = inCanvas.getContext('2d'); const ctx = inCanvas.getContext('2d');
if (!ctx) return; if (!ctx) return;
ctx.font = options.font; ctx.font = drawOptions.font;
ctx.fillStyle = options.color; ctx.fillStyle = drawOptions.color;
let i = 1; let i = 1;
for (let j = 0; j < result.length; j++) { for (let j = 0; j < result.length; j++) {
let where:any[] = []; let where:any[] = [];
@ -100,12 +100,12 @@ export async function gesture(inCanvas, result) {
if ((what.length > 1) && (what[1].length > 0)) { if ((what.length > 1) && (what[1].length > 0)) {
const person = where[1] > 0 ? `#${where[1]}` : ''; const person = where[1] > 0 ? `#${where[1]}` : '';
const label = `${where[0]} ${person}: ${what[1]}`; const label = `${where[0]} ${person}: ${what[1]}`;
if (options.shadowColor && options.shadowColor !== '') { if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {
ctx.fillStyle = options.shadowColor; ctx.fillStyle = drawOptions.shadowColor;
ctx.fillText(label, 8, 2 + (i * options.lineHeight)); ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));
} }
ctx.fillStyle = options.labelColor; ctx.fillStyle = drawOptions.labelColor;
ctx.fillText(label, 6, 0 + (i * options.lineHeight)); ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));
i += 1; i += 1;
} }
} }
@ -117,10 +117,10 @@ export async function face(inCanvas, result) {
const ctx = inCanvas.getContext('2d'); const ctx = inCanvas.getContext('2d');
if (!ctx) return; if (!ctx) return;
for (const f of result) { for (const f of result) {
ctx.font = options.font; ctx.font = drawOptions.font;
ctx.strokeStyle = options.color; ctx.strokeStyle = drawOptions.color;
ctx.fillStyle = options.color; ctx.fillStyle = drawOptions.color;
if (options.drawBoxes) { if (drawOptions.drawBoxes) {
rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]); rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);
// rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]); // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);
} }
@ -137,24 +137,24 @@ export async function face(inCanvas, result) {
} }
if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`); if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);
if (labels.length === 0) labels.push('face'); if (labels.length === 0) labels.push('face');
ctx.fillStyle = options.color; ctx.fillStyle = drawOptions.color;
for (let i = labels.length - 1; i >= 0; i--) { for (let i = labels.length - 1; i >= 0; i--) {
const x = Math.max(f.box[0], 0); const x = Math.max(f.box[0], 0);
const y = i * options.lineHeight + f.box[1]; const y = i * drawOptions.lineHeight + f.box[1];
if (options.shadowColor && options.shadowColor !== '') { if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {
ctx.fillStyle = options.shadowColor; ctx.fillStyle = drawOptions.shadowColor;
ctx.fillText(labels[i], x + 5, y + 16); ctx.fillText(labels[i], x + 5, y + 16);
} }
ctx.fillStyle = options.labelColor; ctx.fillStyle = drawOptions.labelColor;
ctx.fillText(labels[i], x + 4, y + 15); ctx.fillText(labels[i], x + 4, y + 15);
} }
ctx.lineWidth = 1; ctx.lineWidth = 1;
if (f.mesh) { if (f.mesh) {
if (options.drawPoints) { if (drawOptions.drawPoints) {
for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]); for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);
// for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]); // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);
} }
if (options.drawPolygons) { if (drawOptions.drawPolygons) {
ctx.lineWidth = 1; ctx.lineWidth = 1;
for (let i = 0; i < triangulation.length / 3; i++) { for (let i = 0; i < triangulation.length / 3; i++) {
const points = [ const points = [
@ -166,26 +166,26 @@ export async function face(inCanvas, result) {
} }
// iris: array[center, left, top, right, bottom] // iris: array[center, left, top, right, bottom]
if (f.annotations && f.annotations.leftEyeIris) { if (f.annotations && f.annotations.leftEyeIris) {
ctx.strokeStyle = options.useDepth ? 'rgba(255, 200, 255, 0.3)' : options.color; ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;
ctx.beginPath(); ctx.beginPath();
const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2; const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;
const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2; const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;
ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI); ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);
ctx.stroke(); ctx.stroke();
if (options.fillPolygons) { if (drawOptions.fillPolygons) {
ctx.fillStyle = options.useDepth ? 'rgba(255, 255, 200, 0.3)' : options.color; ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;
ctx.fill(); ctx.fill();
} }
} }
if (f.annotations && f.annotations.rightEyeIris) { if (f.annotations && f.annotations.rightEyeIris) {
ctx.strokeStyle = options.useDepth ? 'rgba(255, 200, 255, 0.3)' : options.color; ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;
ctx.beginPath(); ctx.beginPath();
const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2; const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;
const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2; const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;
ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI); ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);
ctx.stroke(); ctx.stroke();
if (options.fillPolygons) { if (drawOptions.fillPolygons) {
ctx.fillStyle = options.useDepth ? 'rgba(255, 255, 200, 0.3)' : options.color; ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;
ctx.fill(); ctx.fill();
} }
} }
@ -203,13 +203,13 @@ export async function body(inCanvas, result) {
ctx.lineJoin = 'round'; ctx.lineJoin = 'round';
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
// result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5); // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);
if (!lastDrawnPose[i] && options.bufferedOutput) lastDrawnPose[i] = { ...result[i] }; if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };
ctx.strokeStyle = options.color; ctx.strokeStyle = drawOptions.color;
ctx.lineWidth = options.lineWidth; ctx.lineWidth = drawOptions.lineWidth;
if (options.drawPoints) { if (drawOptions.drawPoints) {
for (let pt = 0; pt < result[i].keypoints.length; pt++) { for (let pt = 0; pt < result[i].keypoints.length; pt++) {
ctx.fillStyle = options.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : options.color; ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;
if (options.bufferedOutput) { if (drawOptions.bufferedOutput) {
lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2; lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;
lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2; lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;
point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]); point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);
@ -218,14 +218,14 @@ export async function body(inCanvas, result) {
} }
} }
} }
if (options.drawLabels) { if (drawOptions.drawLabels) {
ctx.font = options.font; ctx.font = drawOptions.font;
for (const pt of result[i].keypoints) { for (const pt of result[i].keypoints) {
ctx.fillStyle = options.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : options.color; ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;
ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4); ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);
} }
} }
if (options.drawPolygons) { if (drawOptions.drawPolygons) {
let part; let part;
const points: any[] = []; const points: any[] = [];
// torso // torso
@ -300,35 +300,35 @@ export async function hand(inCanvas, result) {
const ctx = inCanvas.getContext('2d'); const ctx = inCanvas.getContext('2d');
if (!ctx) return; if (!ctx) return;
ctx.lineJoin = 'round'; ctx.lineJoin = 'round';
ctx.font = options.font; ctx.font = drawOptions.font;
for (const h of result) { for (const h of result) {
if (options.drawBoxes) { if (drawOptions.drawBoxes) {
ctx.strokeStyle = options.color; ctx.strokeStyle = drawOptions.color;
ctx.fillStyle = options.color; ctx.fillStyle = drawOptions.color;
rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]); rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);
if (options.shadowColor && options.shadowColor !== '') { if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {
ctx.fillStyle = options.shadowColor; ctx.fillStyle = drawOptions.shadowColor;
ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + options.lineHeight, h.box[2]); ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);
} }
ctx.fillStyle = options.labelColor; ctx.fillStyle = drawOptions.labelColor;
ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + options.lineHeight, h.box[2]); ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);
ctx.stroke(); ctx.stroke();
} }
if (options.drawPoints) { if (drawOptions.drawPoints) {
if (h.landmarks && h.landmarks.length > 0) { if (h.landmarks && h.landmarks.length > 0) {
for (const pt of h.landmarks) { for (const pt of h.landmarks) {
ctx.fillStyle = options.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : options.color; ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;
point(ctx, pt[0], pt[1]); point(ctx, pt[0], pt[1]);
} }
} }
} }
if (options.drawPolygons) { if (drawOptions.drawPolygons) {
const addPart = (part) => { const addPart = (part) => {
if (!part) return; if (!part) return;
for (let i = 0; i < part.length; i++) { for (let i = 0; i < part.length; i++) {
ctx.lineWidth = options.lineWidth; ctx.lineWidth = drawOptions.lineWidth;
ctx.beginPath(); ctx.beginPath();
ctx.strokeStyle = options.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : options.color; ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;
ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]); ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);
ctx.lineTo(part[i][0], part[i][1]); ctx.lineTo(part[i][0], part[i][1]);
ctx.stroke(); ctx.stroke();

View File

@ -88,7 +88,7 @@ export class Human {
image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement }; image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };
// classes // classes
tf: typeof tf; tf: typeof tf;
draw: { options?: typeof draw.options, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function }; draw: { options?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };
// models // models
models: { models: {
face: facemesh.MediaPipeFaceMesh | null, face: facemesh.MediaPipeFaceMesh | null,

View File

@ -1,3 +1,25 @@
:root {
--color-background: #fdfdfd;
--color-text: #222;
--color-text-aside: #707070;
--color-link: #4da6ff;
--color-menu-divider: #eee;
--color-menu-divider-focus: #000;
--color-menu-label: #707070;
--color-panel: #fff;
--color-panel-divider: #eee;
--color-comment-tag: #707070;
--color-comment-tag-text: #fff;
--color-code-background: rgba(#000, 0.04);
--color-ts: #9600ff;
--color-ts-interface: #647f1b;
--color-ts-enum: #937210;
--color-ts-class: #0672de;
--color-ts-private: #707070;
--color-toolbar: #fff;
--color-toolbar-text: #333;
}
/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ /*! normalize.css v1.1.3 | MIT License | git.io/normalize */
/* ========================================================================== /* ==========================================================================
* * HTML5 display definitions * * HTML5 display definitions
@ -1585,14 +1607,14 @@ ul.tsd-descriptions > li > :last-child > :last-child > :last-child,
} }
} }
body { body {
background: #fdfdfd; background: var(--color-background);
font-family: "Segoe UI", sans-serif; font-family: "Segoe UI", sans-serif;
font-size: 16px; font-size: 16px;
color: #222; color: var(--color-text);
} }
a { a {
color: #4da6ff; color: var(--color-link);
text-decoration: none; text-decoration: none;
} }
a:hover { a:hover {
@ -1604,7 +1626,7 @@ code, pre {
padding: 0.2em; padding: 0.2em;
margin: 0; margin: 0;
font-size: 14px; font-size: 14px;
background-color: rgba(0, 0, 0, 0.04); background-color: var(--color-code-background);
} }
pre { pre {
@ -1670,7 +1692,7 @@ blockquote {
padding: 20px 20px 0 0; padding: 20px 20px 0 0;
max-width: 450px; max-width: 450px;
visibility: hidden; visibility: hidden;
background-color: #fff; background-color: var(--color-panel);
transform: translate(100%, 0); transform: translate(100%, 0);
} }
html.default .col-menu > *:last-child { html.default .col-menu > *:last-child {
@ -1730,7 +1752,7 @@ html.default.has-menu .col-content {
.tsd-page-title { .tsd-page-title {
padding: 70px 0 20px 0; padding: 70px 0 20px 0;
margin: 0 0 40px 0; margin: 0 0 40px 0;
background: #fff; background: var(--color-panel);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
} }
.tsd-page-title h1 { .tsd-page-title h1 {
@ -1740,10 +1762,10 @@ html.default.has-menu .col-content {
.tsd-breadcrumb { .tsd-breadcrumb {
margin: 0; margin: 0;
padding: 0; padding: 0;
color: #707070; color: var(--color-text-aside);
} }
.tsd-breadcrumb a { .tsd-breadcrumb a {
color: #707070; color: var(--color-text-aside);
text-decoration: none; text-decoration: none;
} }
.tsd-breadcrumb a:hover { .tsd-breadcrumb a:hover {
@ -1816,8 +1838,8 @@ dl.tsd-comment-tags dt {
padding: 1px 5px; padding: 1px 5px;
margin: 0 10px 0 0; margin: 0 10px 0 0;
border-radius: 4px; border-radius: 4px;
border: 1px solid #707070; border: 1px solid var(--color-comment-tag);
color: #707070; color: var(--color-comment-tag);
font-size: 0.8em; font-size: 0.8em;
font-weight: normal; font-weight: normal;
} }
@ -1887,7 +1909,7 @@ dl.tsd-comment-tags p {
top: 40px; top: 40px;
right: 20px; right: 20px;
height: auto; height: auto;
background-color: #fff; background-color: var(--color-panel);
visibility: hidden; visibility: hidden;
transform: translate(50%, 0); transform: translate(50%, 0);
box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
@ -1909,11 +1931,11 @@ dl.tsd-comment-tags p {
} }
footer { footer {
border-top: 1px solid #eee; border-top: 1px solid var(--color-panel-divider);
background-color: #fff; background-color: var(--color-panel);
} }
footer.with-border-bottom { footer.with-border-bottom {
border-bottom: 1px solid #eee; border-bottom: 1px solid var(--color-panel-divider);
} }
footer .tsd-legend-group { footer .tsd-legend-group {
font-size: 0; font-size: 0;
@ -1951,7 +1973,7 @@ footer .tsd-legend {
.tsd-index-panel h3 { .tsd-index-panel h3 {
margin: 0 -20px 10px -20px; margin: 0 -20px 10px -20px;
padding: 0 20px 10px 20px; padding: 0 20px 10px 20px;
border-bottom: 1px solid #eee; border-bottom: 1px solid var(--color-panel-divider);
} }
.tsd-index-panel ul.tsd-index-list { .tsd-index-panel ul.tsd-index-list {
-webkit-column-count: 3; -webkit-column-count: 3;
@ -1995,39 +2017,39 @@ footer .tsd-legend {
} }
.tsd-index-panel a, .tsd-index-panel a,
.tsd-index-panel .tsd-parent-kind-module a { .tsd-index-panel .tsd-parent-kind-module a {
color: #9600ff; color: var(--color-ts);
} }
.tsd-index-panel .tsd-parent-kind-interface a { .tsd-index-panel .tsd-parent-kind-interface a {
color: #647F1B; color: var(--color-ts-interface);
} }
.tsd-index-panel .tsd-parent-kind-enum a { .tsd-index-panel .tsd-parent-kind-enum a {
color: #937210; color: var(--color-ts-enum);
} }
.tsd-index-panel .tsd-parent-kind-class a { .tsd-index-panel .tsd-parent-kind-class a {
color: #0672DE; color: var(--color-ts-class);
} }
.tsd-index-panel .tsd-kind-module a { .tsd-index-panel .tsd-kind-module a {
color: #9600ff; color: var(--color-ts);
} }
.tsd-index-panel .tsd-kind-interface a { .tsd-index-panel .tsd-kind-interface a {
color: #647F1B; color: var(--color-ts-interface);
} }
.tsd-index-panel .tsd-kind-enum a { .tsd-index-panel .tsd-kind-enum a {
color: #937210; color: var(--color-ts-enum);
} }
.tsd-index-panel .tsd-kind-class a { .tsd-index-panel .tsd-kind-class a {
color: #0672DE; color: var(--color-ts-class);
} }
.tsd-index-panel .tsd-is-private a { .tsd-index-panel .tsd-is-private a {
color: #707070; color: var(--color-ts-private);
} }
.tsd-flag { .tsd-flag {
display: inline-block; display: inline-block;
padding: 1px 5px; padding: 1px 5px;
border-radius: 4px; border-radius: 4px;
color: #fff; color: var(--color-comment-tag-text);
background-color: #707070; background-color: var(--color-comment-tag);
text-indent: 0; text-indent: 0;
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
@ -2047,19 +2069,19 @@ footer .tsd-legend {
border-bottom: none; border-bottom: none;
} }
.tsd-member a[data-tsd-kind] { .tsd-member a[data-tsd-kind] {
color: #9600ff; color: var(--color-ts);
} }
.tsd-member a[data-tsd-kind=Interface] { .tsd-member a[data-tsd-kind=Interface] {
color: #647F1B; color: var(--color-ts-interface);
} }
.tsd-member a[data-tsd-kind=Enum] { .tsd-member a[data-tsd-kind=Enum] {
color: #937210; color: var(--color-ts-enum);
} }
.tsd-member a[data-tsd-kind=Class] { .tsd-member a[data-tsd-kind=Class] {
color: #0672DE; color: var(--color-ts-class);
} }
.tsd-member a[data-tsd-kind=Private] { .tsd-member a[data-tsd-kind=Private] {
color: #707070; color: var(--color-ts-private);
} }
.tsd-navigation { .tsd-navigation {
@ -2070,7 +2092,7 @@ footer .tsd-legend {
padding-top: 2px; padding-top: 2px;
padding-bottom: 2px; padding-bottom: 2px;
border-left: 2px solid transparent; border-left: 2px solid transparent;
color: #222; color: var(--color-text);
text-decoration: none; text-decoration: none;
transition: border-left-color 0.1s; transition: border-left-color 0.1s;
} }
@ -2113,10 +2135,10 @@ footer .tsd-legend {
padding-left: 105px; padding-left: 105px;
} }
.tsd-navigation.primary > ul { .tsd-navigation.primary > ul {
border-bottom: 1px solid #eee; border-bottom: 1px solid var(--color-panel-divider);
} }
.tsd-navigation.primary li { .tsd-navigation.primary li {
border-top: 1px solid #eee; border-top: 1px solid var(--color-panel-divider);
} }
.tsd-navigation.primary li.current > a { .tsd-navigation.primary li.current > a {
font-weight: bold; font-weight: bold;
@ -2124,7 +2146,7 @@ footer .tsd-legend {
.tsd-navigation.primary li.label span { .tsd-navigation.primary li.label span {
display: block; display: block;
padding: 20px 0 6px 5px; padding: 20px 0 6px 5px;
color: #707070; color: var(--color-menu-label);
} }
.tsd-navigation.primary li.globals + li > span, .tsd-navigation.primary li.globals + li > a { .tsd-navigation.primary li.globals + li > span, .tsd-navigation.primary li.globals + li > a {
padding-top: 20px; padding-top: 20px;
@ -2164,16 +2186,16 @@ footer .tsd-legend {
padding-left: 125px; padding-left: 125px;
} }
.tsd-navigation.secondary ul.current a { .tsd-navigation.secondary ul.current a {
border-left-color: #eee; border-left-color: var(--color-panel-divider);
} }
.tsd-navigation.secondary li.focus > a, .tsd-navigation.secondary li.focus > a,
.tsd-navigation.secondary ul.current li.focus > a { .tsd-navigation.secondary ul.current li.focus > a {
border-left-color: #000; border-left-color: var(--color-menu-divider-focus);
} }
.tsd-navigation.secondary li.current { .tsd-navigation.secondary li.current {
margin-top: 20px; margin-top: 20px;
margin-bottom: 20px; margin-bottom: 20px;
border-left-color: #eee; border-left-color: var(--color-panel-divider);
} }
.tsd-navigation.secondary li.current > a { .tsd-navigation.secondary li.current > a {
font-weight: bold; font-weight: bold;
@ -2188,7 +2210,7 @@ footer .tsd-legend {
.tsd-panel { .tsd-panel {
margin: 20px 0; margin: 20px 0;
padding: 20px; padding: 20px;
background-color: #fff; background-color: var(--color-panel);
box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
} }
.tsd-panel:empty { .tsd-panel:empty {
@ -2197,7 +2219,7 @@ footer .tsd-legend {
.tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { .tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 {
margin: 1.5em -20px 10px -20px; margin: 1.5em -20px 10px -20px;
padding: 0 20px 10px 20px; padding: 0 20px 10px 20px;
border-bottom: 1px solid #eee; border-bottom: 1px solid var(--color-panel-divider);
} }
.tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { .tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature {
margin-bottom: 0; margin-bottom: 0;
@ -2259,7 +2281,7 @@ footer .tsd-legend {
outline: 0; outline: 0;
border: 0; border: 0;
background: transparent; background: transparent;
color: #222; color: var(--color-text);
} }
#tsd-search .field label { #tsd-search .field label {
position: absolute; position: absolute;
@ -2282,17 +2304,17 @@ footer .tsd-legend {
} }
#tsd-search .results li { #tsd-search .results li {
padding: 0 10px; padding: 0 10px;
background-color: #fdfdfd; background-color: var(--color-background);
} }
#tsd-search .results li:nth-child(even) { #tsd-search .results li:nth-child(even) {
background-color: #fff; background-color: var(--color-panel);
} }
#tsd-search .results li.state { #tsd-search .results li.state {
display: none; display: none;
} }
#tsd-search .results li.current, #tsd-search .results li.current,
#tsd-search .results li:hover { #tsd-search .results li:hover {
background-color: #eee; background-color: var(--color-panel-divider);
} }
#tsd-search .results a { #tsd-search .results a {
display: block; display: block;
@ -2301,11 +2323,11 @@ footer .tsd-legend {
top: 10px; top: 10px;
} }
#tsd-search .results span.parent { #tsd-search .results span.parent {
color: #707070; color: var(--color-text-aside);
font-weight: normal; font-weight: normal;
} }
#tsd-search.has-focus { #tsd-search.has-focus {
background-color: #eee; background-color: var(--color-panel-divider);
} }
#tsd-search.has-focus .field input { #tsd-search.has-focus .field input {
top: 0; top: 0;
@ -2328,7 +2350,7 @@ footer .tsd-legend {
.tsd-signature { .tsd-signature {
margin: 0 0 1em 0; margin: 0 0 1em 0;
padding: 10px; padding: 10px;
border: 1px solid #eee; border: 1px solid var(--color-panel-divider);
font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: 14px; font-size: 14px;
overflow-x: auto; overflow-x: auto;
@ -2353,7 +2375,7 @@ footer .tsd-legend {
} }
.tsd-signature-symbol { .tsd-signature-symbol {
color: #707070; color: var(--color-text-aside);
font-weight: normal; font-weight: normal;
} }
@ -2365,7 +2387,7 @@ footer .tsd-legend {
.tsd-signatures { .tsd-signatures {
padding: 0; padding: 0;
margin: 0 0 1em 0; margin: 0 0 1em 0;
border: 1px solid #eee; border: 1px solid var(--color-panel-divider);
} }
.tsd-signatures .tsd-signature { .tsd-signatures .tsd-signature {
margin: 0; margin: 0;
@ -2376,7 +2398,7 @@ footer .tsd-legend {
border-top-width: 0; border-top-width: 0;
} }
.tsd-signatures .tsd-signature.current { .tsd-signatures .tsd-signature.current {
background-color: #eee; background-color: var(--color-panel-divider);
} }
.tsd-signatures.active > .tsd-signature { .tsd-signatures.active > .tsd-signature {
cursor: pointer; cursor: pointer;
@ -2450,11 +2472,11 @@ ul.tsd-type-parameters .tsd-comment {
.tsd-sources { .tsd-sources {
font-size: 14px; font-size: 14px;
color: #707070; color: var(--color-text-aside);
margin: 0 0 1em 0; margin: 0 0 1em 0;
} }
.tsd-sources a { .tsd-sources a {
color: #707070; color: var(--color-text-aside);
text-decoration: underline; text-decoration: underline;
} }
.tsd-sources ul, .tsd-sources p { .tsd-sources ul, .tsd-sources p {
@ -2472,13 +2494,13 @@ ul.tsd-type-parameters .tsd-comment {
left: 0; left: 0;
width: 100%; width: 100%;
height: 40px; height: 40px;
color: #333; color: var(--color-toolbar-text);
background: #fff; background: var(--color-toolbar);
border-bottom: 1px solid #eee; border-bottom: 1px solid var(--color-panel-divider);
transition: transform 0.3s linear; transition: transform 0.3s linear;
} }
.tsd-page-toolbar a { .tsd-page-toolbar a {
color: #333; color: var(--color-toolbar-text);
text-decoration: none; text-decoration: none;
} }
.tsd-page-toolbar a.title { .tsd-page-toolbar a.title {
@ -2538,7 +2560,7 @@ ul.tsd-type-parameters .tsd-comment {
} }
.tsd-widget.active { .tsd-widget.active {
opacity: 1; opacity: 1;
background-color: #eee; background-color: var(--color-panel-divider);
} }
.tsd-widget.no-caption { .tsd-widget.no-caption {
width: 40px; width: 40px;
@ -2607,16 +2629,16 @@ input[type=checkbox]:checked + .tsd-widget:before {
} }
.tsd-select .tsd-select-list li { .tsd-select .tsd-select-list li {
padding: 0 20px 0 0; padding: 0 20px 0 0;
background-color: #fdfdfd; background-color: var(--color-background);
} }
.tsd-select .tsd-select-list li:before { .tsd-select .tsd-select-list li:before {
background-position: 40px 0; background-position: 40px 0;
} }
.tsd-select .tsd-select-list li:nth-child(even) { .tsd-select .tsd-select-list li:nth-child(even) {
background-color: #fff; background-color: var(--color-panel);
} }
.tsd-select .tsd-select-list li:hover { .tsd-select .tsd-select-list li:hover {
background-color: #eee; background-color: var(--color-panel-divider);
} }
.tsd-select .tsd-select-list li.selected:before { .tsd-select .tsd-select-list li.selected:before {
background-position: -200px 0; background-position: -200px 0;

View File

@ -136,7 +136,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict"; "use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Viewport\": () => /* binding */ Viewport\n/* harmony export */ });\n/* harmony import */ var _EventTarget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../EventTarget */ \"./default/assets/js/src/typedoc/EventTarget.ts\");\n/* harmony import */ var _utils_trottle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/trottle */ \"./default/assets/js/src/typedoc/utils/trottle.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * A global service that monitors the window size and scroll position.\n */\nvar Viewport = /** @class */ (function (_super) {\n __extends(Viewport, _super);\n /**\n * Create new Viewport instance.\n */\n function Viewport() {\n var _this = _super.call(this) || this;\n /**\n * The current scroll position.\n */\n _this.scrollTop = 0;\n /**\n * The previous scrollTop.\n */\n _this.lastY = 0;\n /**\n * The width of the window.\n */\n _this.width = 0;\n /**\n * The height of the window.\n */\n _this.height = 0;\n /**\n * Boolean indicating whether the toolbar is shown.\n */\n _this.showToolbar = true;\n _this.toolbar = (document.querySelector(\".tsd-page-toolbar\"));\n _this.secondaryNav = (document.querySelector(\".tsd-navigation.secondary\"));\n window.addEventListener(\"scroll\", (0,_utils_trottle__WEBPACK_IMPORTED_MODULE_1__.throttle)(function () { return _this.onScroll(); }, 10));\n window.addEventListener(\"resize\", (0,_utils_trottle__WEBPACK_IMPORTED_MODULE_1__.throttle)(function () { return _this.onResize(); }, 10));\n _this.onResize();\n _this.onScroll();\n return _this;\n }\n /**\n * Trigger a resize event.\n */\n Viewport.prototype.triggerResize = function () {\n var event = new CustomEvent(\"resize\", {\n detail: {\n width: this.width,\n height: this.height,\n },\n });\n this.dispatchEvent(event);\n };\n /**\n * Triggered when the size of the window has changed.\n */\n Viewport.prototype.onResize = function () {\n this.width = window.innerWidth || 0;\n this.height = window.innerHeight || 0;\n var event = new CustomEvent(\"resize\", {\n detail: {\n width: this.width,\n height: this.height,\n },\n });\n this.dispatchEvent(event);\n };\n /**\n * Triggered when the user scrolled the viewport.\n */\n Viewport.prototype.onScroll = function () {\n this.scrollTop = window.scrollY || 0;\n var event = new CustomEvent(\"scroll\", {\n detail: {\n scrollTop: this.scrollTop,\n },\n });\n this.dispatchEvent(event);\n this.hideShowToolbar();\n };\n /**\n * Handle hiding/showing of the toolbar.\n */\n Viewport.prototype.hideShowToolbar = function () {\n var isShown = this.showToolbar;\n this.showToolbar = this.lastY >= this.scrollTop || this.scrollTop === 0;\n if (isShown !== this.showToolbar) {\n this.toolbar.classList.toggle(\"tsd-page-toolbar--hide\");\n this.secondaryNav.classList.toggle(\"tsd-navigation--toolbar-hide\");\n }\n this.lastY = this.scrollTop;\n };\n Viewport.instance = new Viewport();\n return Viewport;\n}(_EventTarget__WEBPACK_IMPORTED_MODULE_0__.EventTarget));\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/services/Viewport.ts?"); eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Viewport\": () => /* binding */ Viewport\n/* harmony export */ });\n/* harmony import */ var _EventTarget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../EventTarget */ \"./default/assets/js/src/typedoc/EventTarget.ts\");\n/* harmony import */ var _utils_trottle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/trottle */ \"./default/assets/js/src/typedoc/utils/trottle.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * A global service that monitors the window size and scroll position.\n */\nvar Viewport = /** @class */ (function (_super) {\n __extends(Viewport, _super);\n /**\n * Create new Viewport instance.\n */\n function Viewport() {\n var _this = _super.call(this) || this;\n /**\n * The current scroll position.\n */\n _this.scrollTop = 0;\n /**\n * The previous scrollTop.\n */\n _this.lastY = 0;\n /**\n * The width of the window.\n */\n _this.width = 0;\n /**\n * The height of the window.\n */\n _this.height = 0;\n /**\n * Boolean indicating whether the toolbar is shown.\n */\n _this.showToolbar = true;\n _this.toolbar = (document.querySelector(\".tsd-page-toolbar\"));\n _this.secondaryNav = (document.querySelector(\".tsd-navigation.secondary\"));\n window.addEventListener(\"scroll\", (0,_utils_trottle__WEBPACK_IMPORTED_MODULE_1__.throttle)(function () { return _this.onScroll(); }, 10));\n window.addEventListener(\"resize\", (0,_utils_trottle__WEBPACK_IMPORTED_MODULE_1__.throttle)(function () { return _this.onResize(); }, 10));\n _this.onResize();\n _this.onScroll();\n return _this;\n }\n /**\n * Trigger a resize event.\n */\n Viewport.prototype.triggerResize = function () {\n var event = new CustomEvent(\"resize\", {\n detail: {\n width: this.width,\n height: this.height,\n },\n });\n this.dispatchEvent(event);\n };\n /**\n * Triggered when the size of the window has changed.\n */\n Viewport.prototype.onResize = function () {\n this.width = window.innerWidth || 0;\n this.height = window.innerHeight || 0;\n var event = new CustomEvent(\"resize\", {\n detail: {\n width: this.width,\n height: this.height,\n },\n });\n this.dispatchEvent(event);\n };\n /**\n * Triggered when the user scrolled the viewport.\n */\n Viewport.prototype.onScroll = function () {\n this.scrollTop = window.scrollY || 0;\n var event = new CustomEvent(\"scroll\", {\n detail: {\n scrollTop: this.scrollTop,\n },\n });\n this.dispatchEvent(event);\n this.hideShowToolbar();\n };\n /**\n * Handle hiding/showing of the toolbar.\n */\n Viewport.prototype.hideShowToolbar = function () {\n var isShown = this.showToolbar;\n this.showToolbar = this.lastY >= this.scrollTop || this.scrollTop <= 0;\n if (isShown !== this.showToolbar) {\n this.toolbar.classList.toggle(\"tsd-page-toolbar--hide\");\n this.secondaryNav.classList.toggle(\"tsd-navigation--toolbar-hide\");\n }\n this.lastY = this.scrollTop;\n };\n Viewport.instance = new Viewport();\n return Viewport;\n}(_EventTarget__WEBPACK_IMPORTED_MODULE_0__.EventTarget));\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/services/Viewport.ts?");
/***/ }), /***/ }),

2
types/src/draw.d.ts vendored
View File

@ -1,4 +1,4 @@
export declare const options: { export declare const drawOptions: {
color: string; color: string;
labelColor: string; labelColor: string;
shadowColor: string; shadowColor: string;

View File

@ -70,7 +70,7 @@ export declare class Human {
}; };
tf: typeof tf; tf: typeof tf;
draw: { draw: {
options?: typeof draw.options; options?: typeof draw.drawOptions;
gesture: Function; gesture: Function;
face: Function; face: Function;
body: Function; body: Function;