diff --git a/src/Factory.ts b/src/Factory.ts index b1af978d..4d90a1f7 100644 --- a/src/Factory.ts +++ b/src/Factory.ts @@ -70,7 +70,7 @@ export const Factory = { attr: U, def?: Value ) { - var method = GET + Util._capitalize(attr); + const method = GET + Util._capitalize(attr); constructor.prototype[method] = constructor.prototype[method] || @@ -86,7 +86,7 @@ export const Factory = { validator?: ValidatorFunc>, after?: AfterFunc ) { - var method = SET + Util._capitalize(attr); + const method = SET + Util._capitalize(attr); if (!constructor.prototype[method]) { Factory.overWriteSetter(constructor, attr, validator, after); @@ -99,7 +99,7 @@ export const Factory = { validator?: ValidatorFunc>, after?: AfterFunc ) { - var method = SET + Util._capitalize(attr); + const method = SET + Util._capitalize(attr); constructor.prototype[method] = function (val) { if (validator && val !== undefined && val !== null) { val = validator.call(this, val, attr); @@ -180,7 +180,7 @@ export const Factory = { constructor: T, attr: U ) { - var capitalizedAttr = Util._capitalize(attr), + const capitalizedAttr = Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr; diff --git a/src/Validators.ts b/src/Validators.ts index a8534b3b..ffb457d7 100644 --- a/src/Validators.ts +++ b/src/Validators.ts @@ -72,8 +72,8 @@ export function getNumberOrArrayOfNumbersValidator(noOfElements: number) { export function getNumberOrAutoValidator() { if (Konva.isUnminified) { return function (val: T, attr: string): T { - var isNumber = Util._isNumber(val); - var isAuto = val === 'auto'; + const isNumber = Util._isNumber(val); + const isAuto = val === 'auto'; if (!(isNumber || isAuto)) { Util.warn( @@ -175,7 +175,7 @@ export function getNumberArrayValidator() { export function getBooleanValidator() { if (Konva.isUnminified) { return function (val: T, attr: string): T { - var isBool = val === true || val === false; + const isBool = val === true || val === false; if (!isBool) { Util.warn( _formatValue(val) + diff --git a/src/filters/Blur.ts b/src/filters/Blur.ts index 4998e8e7..cbd9632c 100644 --- a/src/filters/Blur.ts +++ b/src/filters/Blur.ts @@ -96,11 +96,7 @@ function filterGaussBlurRGBA(imageData, radius) { width = imageData.width, height = imageData.height; - let x, - y, - i, - p, - yp, + let p, yi, yw, r_sum, @@ -135,7 +131,7 @@ function filterGaussBlurRGBA(imageData, radius) { stackIn: any = null, stackOut: any = null; - for (i = 1; i < div; i++) { + for (let i = 1; i < div; i++) { stack = stack.next = new BlurStack(); if (i === radiusPlus1) { stackEnd = stack; @@ -146,7 +142,7 @@ function filterGaussBlurRGBA(imageData, radius) { yw = yi = 0; - for (y = 0; y < height; y++) { + for (let y = 0; y < height; y++) { r_in_sum = g_in_sum = b_in_sum = @@ -169,7 +165,7 @@ function filterGaussBlurRGBA(imageData, radius) { stack = stackStart; - for (i = 0; i < radiusPlus1; i++) { + for (let i = 0; i < radiusPlus1; i++) { stack.r = pr; stack.g = pg; stack.b = pb; @@ -177,7 +173,7 @@ function filterGaussBlurRGBA(imageData, radius) { stack = stack.next; } - for (i = 1; i < radiusPlus1; i++) { + for (let i = 1; i < radiusPlus1; i++) { p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2); r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i); g_sum += (stack.g = pg = pixels[p + 1]) * rbs; @@ -194,7 +190,7 @@ function filterGaussBlurRGBA(imageData, radius) { stackIn = stackStart; stackOut = stackEnd; - for (x = 0; x < width; x++) { + for (let x = 0; x < width; x++) { pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum; if (pa !== 0) { pa = 255 / pa; @@ -246,7 +242,7 @@ function filterGaussBlurRGBA(imageData, radius) { yw += width; } - for (x = 0; x < width; x++) { + for (let x = 0; x < width; x++) { g_in_sum = b_in_sum = a_in_sum = @@ -270,7 +266,7 @@ function filterGaussBlurRGBA(imageData, radius) { stack = stackStart; - for (i = 0; i < radiusPlus1; i++) { + for (let i = 0; i < radiusPlus1; i++) { stack.r = pr; stack.g = pg; stack.b = pb; @@ -278,9 +274,9 @@ function filterGaussBlurRGBA(imageData, radius) { stack = stack.next; } - yp = width; + let yp = width; - for (i = 1; i <= radius; i++) { + for (let i = 1; i <= radius; i++) { yi = (yp + x) << 2; r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i); @@ -303,7 +299,7 @@ function filterGaussBlurRGBA(imageData, radius) { yi = x; stackIn = stackStart; stackOut = stackEnd; - for (y = 0; y < height; y++) { + for (let y = 0; y < height; y++) { p = yi << 2; pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum; if (pa > 0) { diff --git a/src/filters/Enhance.ts b/src/filters/Enhance.ts index d92d6834..58908a95 100644 --- a/src/filters/Enhance.ts +++ b/src/filters/Enhance.ts @@ -94,15 +94,12 @@ export const Enhance: Filter = function (imageData) { bMin = 0; } - let rMid, - rGoalMax, - rGoalMin, - gMid, - gGoalMax, - gGoalMin, - bMid, - bGoalMax, - bGoalMin; + let rGoalMax: number, + rGoalMin: number, + gGoalMax: number, + gGoalMin: number, + bGoalMax: number, + bGoalMin: number; // If the enhancement is positive - stretch the histogram if (enhanceAmount > 0) { @@ -114,13 +111,13 @@ export const Enhance: Filter = function (imageData) { bGoalMin = bMin - enhanceAmount * (bMin - 0); // If the enhancement is negative - compress the histogram } else { - rMid = (rMax + rMin) * 0.5; + const rMid = (rMax + rMin) * 0.5; rGoalMax = rMax + enhanceAmount * (rMax - rMid); rGoalMin = rMin + enhanceAmount * (rMin - rMid); - gMid = (gMax + gMin) * 0.5; + const gMid = (gMax + gMin) * 0.5; gGoalMax = gMax + enhanceAmount * (gMax - gMid); gGoalMin = gMin + enhanceAmount * (gMin - gMid); - bMid = (bMax + bMin) * 0.5; + const bMid = (bMax + bMin) * 0.5; bGoalMax = bMax + enhanceAmount * (bMax - bMid); bGoalMin = bMin + enhanceAmount * (bMin - bMid); } diff --git a/src/filters/HSV.ts b/src/filters/HSV.ts index 855f6644..5dc5a302 100644 --- a/src/filters/HSV.ts +++ b/src/filters/HSV.ts @@ -1,5 +1,5 @@ import { Factory } from '../Factory'; -import { Node, Filter } from '../Node'; +import { Filter, Node } from '../Node'; import { getNumberValidator } from '../Validators'; /** @@ -46,13 +46,11 @@ export const HSV: Filter = function (imageData) { bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw; - let r, g, b, a; - for (let i = 0; i < nPixels; i += 4) { - r = data[i + 0]; - g = data[i + 1]; - b = data[i + 2]; - a = data[i + 3]; + const r = data[i + 0]; + const g = data[i + 1]; + const b = data[i + 2]; + const a = data[i + 3]; data[i + 0] = rr * r + rg * g + rb * b; data[i + 1] = gr * r + gg * g + gb * b; diff --git a/src/filters/Mask.ts b/src/filters/Mask.ts index 0668c0d5..ef9e1af2 100644 --- a/src/filters/Mask.ts +++ b/src/filters/Mask.ts @@ -2,7 +2,7 @@ import { Factory } from '../Factory'; import { Filter, Node } from '../Node'; import { getNumberValidator } from '../Validators'; -function pixelAt(idata, x, y) { +function pixelAt(idata, x: number, y: number) { let idx = (y * idata.width + x) * 4; const d: Array = []; d.push( @@ -137,7 +137,7 @@ function dilateMask(mask, sw, sh) { return maskResult; } -function smoothEdgeMask(mask, sw, sh) { +function smoothEdgeMask(mask, sw: number, sh: number) { const weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9]; const side = Math.round(Math.sqrt(weights.length)); const halfSide = Math.floor(side / 2); diff --git a/src/filters/Pixelate.ts b/src/filters/Pixelate.ts index 31dc2727..882def3e 100644 --- a/src/filters/Pixelate.ts +++ b/src/filters/Pixelate.ts @@ -1,4 +1,3 @@ - import { Factory } from '../Factory'; import { Util } from '../Util'; import { Node, Filter } from '../Node'; @@ -22,23 +21,9 @@ export const Pixelate: Filter = function (imageData) { let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, - x, - y, - i, //pixelsPerBin = pixelSize * pixelSize, - red, - green, - blue, - alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), - xBinStart, - xBinEnd, - yBinStart, - yBinEnd, - xBin, - yBin, - pixelsInBin, data = imageData.data; if (pixelSize <= 0) { @@ -46,31 +31,31 @@ export const Pixelate: Filter = function (imageData) { return; } - for (xBin = 0; xBin < nBinsX; xBin += 1) { - for (yBin = 0; yBin < nBinsY; yBin += 1) { + for (let xBin = 0; xBin < nBinsX; xBin += 1) { + for (let yBin = 0; yBin < nBinsY; yBin += 1) { // Initialize the color accumlators to 0 - red = 0; - green = 0; - blue = 0; - alpha = 0; + let red = 0; + let green = 0; + let blue = 0; + let alpha = 0; // Determine which pixels are included in this bin - xBinStart = xBin * pixelSize; - xBinEnd = xBinStart + pixelSize; - yBinStart = yBin * pixelSize; - yBinEnd = yBinStart + pixelSize; + const xBinStart = xBin * pixelSize; + const xBinEnd = xBinStart + pixelSize; + const yBinStart = yBin * pixelSize; + const yBinEnd = yBinStart + pixelSize; // Add all of the pixels to this bin! - pixelsInBin = 0; - for (x = xBinStart; x < xBinEnd; x += 1) { + let pixelsInBin = 0; + for (let x = xBinStart; x < xBinEnd; x += 1) { if (x >= width) { continue; } - for (y = yBinStart; y < yBinEnd; y += 1) { + for (let y = yBinStart; y < yBinEnd; y += 1) { if (y >= height) { continue; } - i = (width * y + x) * 4; + const i = (width * y + x) * 4; red += data[i + 0]; green += data[i + 1]; blue += data[i + 2]; @@ -86,15 +71,15 @@ export const Pixelate: Filter = function (imageData) { alpha = alpha / pixelsInBin; // Draw this bin - for (x = xBinStart; x < xBinEnd; x += 1) { + for (let x = xBinStart; x < xBinEnd; x += 1) { if (x >= width) { continue; } - for (y = yBinStart; y < yBinEnd; y += 1) { + for (let y = yBinStart; y < yBinEnd; y += 1) { if (y >= height) { continue; } - i = (width * y + x) * 4; + const i = (width * y + x) * 4; data[i + 0] = red; data[i + 1] = green; data[i + 2] = blue; diff --git a/src/shapes/Path.ts b/src/shapes/Path.ts index d1a4f319..cde0c37b 100644 --- a/src/shapes/Path.ts +++ b/src/shapes/Path.ts @@ -73,7 +73,7 @@ export class Path extends Shape { context.quadraticCurveTo(p[0], p[1], p[2], p[3]); break; case 'A': - var cx = p[0], + const cx = p[0], cy = p[1], rx = p[2], ry = p[3], @@ -82,9 +82,9 @@ export class Path extends Shape { psi = p[6], fs = p[7]; - var r = rx > ry ? rx : ry; - var scaleX = rx > ry ? 1 : rx / ry; - var scaleY = rx > ry ? ry / rx : 1; + const r = rx > ry ? rx : ry; + const scaleX = rx > ry ? 1 : rx / ry; + const scaleY = rx > ry ? ry / rx : 1; context.translate(cx, cy); context.rotate(psi); @@ -313,13 +313,13 @@ export class Path extends Shape { p[3] ); case 'A': - var cx = p[0], + const cx = p[0], cy = p[1], rx = p[2], ry = p[3], - theta = p[4], dTheta = p[5], psi = p[6]; + let theta = p[4]; theta += (dTheta * length) / cp.pathLength; return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi); } @@ -491,7 +491,7 @@ export class Path extends Shape { // convert white spaces to commas cs = cs.replace(new RegExp(' ', 'g'), ','); // create pipes so that we can split the data - for (var n = 0; n < cc.length; n++) { + for (let n = 0; n < cc.length; n++) { cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]); } // create array @@ -504,7 +504,7 @@ export class Path extends Shape { const re = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi; let match; - for (n = 1; n < arr.length; n++) { + for (let n = 1; n < arr.length; n++) { let str = arr[n]; let c = str.charAt(0); str = str.slice(1); diff --git a/src/shapes/Text.ts b/src/shapes/Text.ts index 129ff3af..0289f1a7 100644 --- a/src/shapes/Text.ts +++ b/src/shapes/Text.ts @@ -242,9 +242,6 @@ export class Text extends Shape { lineHeightPx / 2; } - var lineTranslateX = 0; - var lineTranslateY = 0; - if (direction === RTL) { context.setAttr('direction', direction); } @@ -266,15 +263,12 @@ export class Text extends Shape { // draw text lines for (n = 0; n < textArrLen; n++) { - var lineTranslateX = 0; - var lineTranslateY = 0; - var obj = textArr[n], + let lineTranslateX = 0; + let lineTranslateY = 0; + const obj = textArr[n], text = obj.text, width = obj.width, - lastLine = obj.lastInParagraph, - spacesNumber, - oneWord, - lineWidth; + lastLine = obj.lastInParagraph; // horizontal alignment context.save(); @@ -294,9 +288,7 @@ export class Text extends Shape { const x = lineTranslateX; const y = translateY + lineTranslateY + yOffset; context.moveTo(x, y); - spacesNumber = text.split(' ').length - 1; - oneWord = spacesNumber === 0; - lineWidth = + const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width; context.lineTo(x + Math.round(lineWidth), y); @@ -314,9 +306,7 @@ export class Text extends Shape { context.beginPath(); const yOffset = Konva._fixTextRendering ? -Math.round(fontSize / 4) : 0; context.moveTo(lineTranslateX, translateY + lineTranslateY + yOffset); - spacesNumber = text.split(' ').length - 1; - oneWord = spacesNumber === 0; - lineWidth = + const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width; context.lineTo( lineTranslateX + Math.round(lineWidth), @@ -333,7 +323,7 @@ export class Text extends Shape { // be supported otherwise. if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) { // var words = text.split(' '); - spacesNumber = text.split(' ').length - 1; + const spacesNumber = text.split(' ').length - 1; const array = stringToArray(text); for (let li = 0; li < array.length; li++) { const letter = array[li];