diff --git a/.eslintrc.json b/.eslintrc.json index e414b74d..4dc25875 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -64,7 +64,10 @@ "max-len": "off", "no-console": "off", "no-extra-boolean-cast": "off", - "no-var": "error" + "no-var": "error", + "prefer-const": ["error", { + "destructuring": "all" + }] }, "ignorePatterns": [ "/modules/math/optim/*.js", diff --git a/modules/brep/brep-primitives.js b/modules/brep/brep-primitives.js index c1b394f5..3186f64c 100644 --- a/modules/brep/brep-primitives.js +++ b/modules/brep/brep-primitives.js @@ -24,12 +24,12 @@ export function box(w, h, d, tr) { export function cylinder(r, h, tr) { tr = tr || IDENTITY; - let normal = tr.apply(AXIS.Z); - let plane = new Plane(normal, h); - let csys = CSys.fromNormalAndDir(normal.multiply(h), normal, plane.basis()[0]); + const normal = tr.apply(AXIS.Z); + const plane = new Plane(normal, h); + const csys = CSys.fromNormalAndDir(normal.multiply(h), normal, plane.basis()[0]); - let circle1 = new Circle(-1, new Point(0,0,0), r).toNurbs(csys); - let circle2 = circle1.translate(tr.apply(new Point(0,0,-h))); + const circle1 = new Circle(-1, new Point(0,0,0), r).toNurbs(csys); + const circle2 = circle1.translate(tr.apply(new Point(0,0,-h))); return enclose([circle1], [circle2]); } diff --git a/modules/brep/brep-validator.js b/modules/brep/brep-validator.js index aa7f6e51..ccb9bf76 100644 --- a/modules/brep/brep-validator.js +++ b/modules/brep/brep-validator.js @@ -5,7 +5,7 @@ export class BREPValidator { } validateShell(shell) { - for (let face of shell.faces) { + for (const face of shell.faces) { if (face.shell !== shell) { this.addError('FACE_REFERS_TO_WRONG_SHELL', "face refers to a shell it doesn't belong to", {face, shell}); } @@ -14,7 +14,7 @@ export class BREPValidator { } validateFace(face) { - for (let loop of [face.outerLoop, ...face.innerLoops]) { + for (const loop of [face.outerLoop, ...face.innerLoops]) { if (face !== loop.face) { this.addError('LOOP_REFERS_TO_WRONG_FACE', 'loop refers to different face it belongs to', {loop, face}); } @@ -72,7 +72,7 @@ BREPValidator.validateToConsole = function(shell) { const brepValidator = new BREPValidator(); brepValidator.validateShell(shell); - for (let brepError of brepValidator.errors) { + for (const brepError of brepValidator.errors) { console.warn(brepError.message); } if (brepValidator.errors.length === 0) { @@ -81,7 +81,7 @@ BREPValidator.validateToConsole = function(shell) { }; BREPValidator.validate = function(shell) { - let validator = new BREPValidator(); + const validator = new BREPValidator(); validator.validateShell(shell); return validator.errors; }; diff --git a/modules/brep/debug/brep-debug.js b/modules/brep/debug/brep-debug.js index 18abcce6..d3877968 100644 --- a/modules/brep/debug/brep-debug.js +++ b/modules/brep/debug/brep-debug.js @@ -38,7 +38,7 @@ class BRepDebug { } booleanLoopDetectionSuccess(loop) { - let ld = last(this.currentBooleanSession.loopDetection); + const ld = last(this.currentBooleanSession.loopDetection); ld.detectedLoops.push(loop); ld.steps.push({type: 'LOOP_FOUND'}); } diff --git a/modules/brep/debug/debugger/brepDebugger.jsx b/modules/brep/debug/debugger/brepDebugger.jsx index e91ce3bd..0c655964 100644 --- a/modules/brep/debug/debugger/brepDebugger.jsx +++ b/modules/brep/debug/debugger/brepDebugger.jsx @@ -13,10 +13,10 @@ import {FaceIntersectionsExplorer} from "./faceIntersectionsExplorer"; export default class BrepDebugger extends React.PureComponent { render() { - let {booleanSessions} = BREP_DEBUG; - let {brepDebugGroup} = this.props; + const {booleanSessions} = BREP_DEBUG; + const {brepDebugGroup} = this.props; function hideAll() { - for (let obj of brepDebugGroup.children) { + for (const obj of brepDebugGroup.children) { obj.visible = false; } __DEBUG__.render(); diff --git a/modules/brep/debug/debugger/edgeTransferExplorer.jsx b/modules/brep/debug/debugger/edgeTransferExplorer.jsx index 38acbd08..ba8ab966 100644 --- a/modules/brep/debug/debugger/edgeTransferExplorer.jsx +++ b/modules/brep/debug/debugger/edgeTransferExplorer.jsx @@ -9,11 +9,11 @@ import { export function EdgeTransferExplorer({edge, face, chosenEdge, index, group3d}) { - let category='edge-transfer'; + const category='edge-transfer'; - let chosenFace = chosenEdge ? chosenEdge.loop.face : null; - let discardedFace = chosenEdge ? chosenEdge.twin().loop.face : null; - let context = {edge, face, chosenEdge, chosenFace, discardedFace}; + const chosenFace = chosenEdge ? chosenEdge.loop.face : null; + const discardedFace = chosenEdge ? chosenEdge.twin().loop.face : null; + const context = {edge, face, chosenEdge, chosenFace, discardedFace}; return diff --git a/modules/brep/debug/debugger/faceFilterExplorer.jsx b/modules/brep/debug/debugger/faceFilterExplorer.jsx index bfe0a669..224e65f9 100644 --- a/modules/brep/debug/debugger/faceFilterExplorer.jsx +++ b/modules/brep/debug/debugger/faceFilterExplorer.jsx @@ -9,9 +9,9 @@ import { export function FaceFilterExplorer({connectedToAffectedFaces, allFaces, group3d}) { connectedToAffectedFaces = connectedToAffectedFaces || []; allFaces = allFaces || []; - let notConnectedToAffectedFaces = allFaces.filter(f => connectedToAffectedFaces.indexOf(f) === -1); - let category = 'face-filter'; - let context = {connectedToAffectedFaces, notConnectedToAffectedFaces}; + const notConnectedToAffectedFaces = allFaces.filter(f => connectedToAffectedFaces.indexOf(f) === -1); + const category = 'face-filter'; + const context = {connectedToAffectedFaces, notConnectedToAffectedFaces}; return diff --git a/modules/brep/debug/debugger/faceIntersectionsExplorer.jsx b/modules/brep/debug/debugger/faceIntersectionsExplorer.jsx index 93fa9282..1445bc7d 100644 --- a/modules/brep/debug/debugger/faceIntersectionsExplorer.jsx +++ b/modules/brep/debug/debugger/faceIntersectionsExplorer.jsx @@ -7,9 +7,9 @@ import { export function FaceIntersectionsExplorer({faceIntersection, id, group3d}) { - let category='face-intersections'; - let context = faceIntersection; - let {faceA, faceB, curve, nodes} = faceIntersection; + const category='face-intersections'; + const context = faceIntersection; + const {faceA, faceB, curve, nodes} = faceIntersection; return diff --git a/modules/brep/debug/debugger/faceMergeExplorer.jsx b/modules/brep/debug/debugger/faceMergeExplorer.jsx index f1467d9e..01427f0c 100644 --- a/modules/brep/debug/debugger/faceMergeExplorer.jsx +++ b/modules/brep/debug/debugger/faceMergeExplorer.jsx @@ -7,13 +7,13 @@ import { export function FaceMergeExplorer({overlappingFacesGroups, group3d}) { - let category = 'overlapping-faces'; - let context = {overlappingFacesGroups}; + const category = 'overlapping-faces'; + const context = {overlappingFacesGroups}; return { overlappingFacesGroups.map((group, groupIndex) => { - let [groupA, groupB] = group; + const [groupA, groupB] = group; return detectedEdges.add(e)); } - let step = steps[this.state.step]; + const step = steps[this.state.step]; if (!step) { return null; } @@ -39,12 +39,12 @@ export default class LoopDetectionExplorer extends React.PureComponent { function backTrack(stepIdx) { - let looped = new Set(); - let used = new Set(); + const looped = new Set(); + const used = new Set(); let active = []; for (let i = 0; i < stepIdx + 1; i++) { - let step = steps[i]; + const step = steps[i]; switch (step.type) { case 'TRY_LOOP': { if (active.length !== 0) { @@ -64,7 +64,7 @@ export default class LoopDetectionExplorer extends React.PureComponent { } } } - let lastActive = active[active.length - 1]; + const lastActive = active[active.length - 1]; active = new Set(active); return { active, used, looped, lastActive @@ -72,11 +72,11 @@ export default class LoopDetectionExplorer extends React.PureComponent { } function color(stepIdx) { - let step = steps[stepIdx]; - let {active, used, looped, lastActive} = backTrack(stepIdx); + const step = steps[stepIdx]; + const {active, used, looped, lastActive} = backTrack(stepIdx); setViewObjectsColor(getGraphViewObjects, group3d, 'loop-detection', detectedEdges, graph, vo => { vo.visible = true; - let o = vo.__tcad_debug_topoObj; + const o = vo.__tcad_debug_topoObj; if (step.type === 'NEXT_STEP_ANALYSIS') { if (step.winner === o){ return YELLOW @@ -100,7 +100,7 @@ export default class LoopDetectionExplorer extends React.PureComponent { } const doStep = nextStepIdx => { - let nextStep = steps[nextStepIdx]; + const nextStep = steps[nextStepIdx]; if (nextStep !== undefined) { color(nextStepIdx); this.setState({step: nextStepIdx}); @@ -115,20 +115,20 @@ export default class LoopDetectionExplorer extends React.PureComponent { doStep(this.state.step - 1); }; - let ctrlProps = { + const ctrlProps = { viewObjectsProvider: getGraphViewObjects, topoObj: graph, group3d, category: 'loop-detection', context: detectedEdges }; - let begin = this.state.step === 0; - let end = this.state.step === steps.length - 1; + const begin = this.state.step === 0; + const end = this.state.step === steps.length - 1; - let controls = + const controls = back next step: {this.state.step || '-'} ; - let name = loop detection {id}; + const name = loop detection {id}; return
{candidates} @@ -143,11 +143,11 @@ export default class LoopDetectionExplorer extends React.PureComponent { export function GraphExplorer({graph, group3d, context}) { - let ctrlProps = { + const ctrlProps = { viewObjectsProvider: getGraphViewObjects, topoObj: graph, group3d, category: 'loop-detection', context }; - let controls = ; - let name = graph; + const controls = ; + const name = graph; return
{mapIterable(graph, edge => )} @@ -156,8 +156,8 @@ export function GraphExplorer({graph, group3d, context}) { export function DiscardedExplorer({detectedEdges, graph, group3d}) { - let discardedEdges = new Set(graph); - for (let edge of detectedEdges) { + const discardedEdges = new Set(graph); + for (const edge of detectedEdges) { discardedEdges.delete(edge); } return (discardedEdges.size !== 0 ? {acc[v.edge] = v; return acc}, {}); - let edges = markedEdges.map(e => e.edge); + const category='marked-edges'; + const context = markedEdges.reduce((acc, v) => {acc[v.edge] = v; return acc}, {}); + const edges = markedEdges.map(e => e.edge); return diff --git a/modules/brep/debug/debugger/section.jsx b/modules/brep/debug/debugger/section.jsx index 1a909328..dd05703c 100644 --- a/modules/brep/debug/debugger/section.jsx +++ b/modules/brep/debug/debugger/section.jsx @@ -12,8 +12,8 @@ export default class Section extends React.PureComponent { } render() { - let {name, tabs, closable, defaultClosed, accent, children, captionStyles, controls} = this.props; - let closed = this.isClosed(); + const {name, tabs, closable, defaultClosed, accent, children, captionStyles, controls} = this.props; + const closed = this.isClosed(); return
@@ -26,7 +26,7 @@ export default class Section extends React.PureComponent { } isClosed() { - let {closable, defaultClosed} = this.props; + const {closable, defaultClosed} = this.props; if (!closable) return false; return closable && (this.state.closed === null ? defaultClosed : this.state.closed) } @@ -38,7 +38,7 @@ export default class Section extends React.PureComponent { } function mapIterator(it, fn) { - for (let i of it) { + for (const i of it) { fn(i); } } diff --git a/modules/brep/debug/debugger/shellExplorer.jsx b/modules/brep/debug/debugger/shellExplorer.jsx index ce1ac0a2..56a48ffc 100644 --- a/modules/brep/debug/debugger/shellExplorer.jsx +++ b/modules/brep/debug/debugger/shellExplorer.jsx @@ -11,11 +11,11 @@ import { export default class ShellExplorer extends React.PureComponent { render() { - let {shell, group3d} = this.props; + const {shell, group3d} = this.props; - let category='default'; - let context = null; - let faces = shell ? shell.faces : []; + const category='default'; + const context = null; + const faces = shell ? shell.faces : []; return @@ -29,18 +29,18 @@ export function FaceExplorer({face, group3d, customName, category, context}) { } export function LoopsExplorer({loops, group3d, name, category, context}) { - let ctrlProps = { + const ctrlProps = { viewObjectsProvider: getLoopsViewObjects, topoObj: loops, group3d, category, context }; - let controls = ; - let nameComp = {name}; + const controls = ; + const nameComp = {name}; return
{mapIterable(loops, loop => )}
} export function LoopExplorer({loop, group3d, customName, category, context}) { - let highlightProps = { + const highlightProps = { viewObjectsProvider: getEdgesViewObjects, topoObj: loop.halfEdges, group3d, category, context }; @@ -52,11 +52,11 @@ export function LoopExplorer({loop, group3d, customName, category, context}) { } export function EdgesExplorer({edges, group3d, name, category, context}) { - let ctrlProps = { + const ctrlProps = { viewObjectsProvider: getEdgesViewObjects, topoObj: edges, group3d, category, context }; - let controls = ; - let nameCtrl = {name}; + const controls = ; + const nameCtrl = {name}; return
{mapIterable(edges, edge => )} @@ -64,12 +64,12 @@ export function EdgesExplorer({edges, group3d, name, category, context}) { } export function EdgeExplorer({edge, group3d, customName, category, context}) { - let ctrlProps = { + const ctrlProps = { viewObjectsProvider: getEdgeViewObjects, topoObj: edge, group3d, category, context }; - let controls = ; - let name = {getName('edge', customName, edge)}; - let twin = edge.twin(); + const controls = ; + const name = {getName('edge', customName, edge)}; + const twin = edge.twin(); return
{twin && @@ -86,11 +86,11 @@ export function EdgeExplorer({edge, group3d, customName, category, context}) { } export function VertexExplorer({vertex, group3d, customName, category, context}) { - let ctrlProps = { + const ctrlProps = { viewObjectsProvider: getVertexViewObjects, topoObj: vertex, group3d, category, context }; - let controls = ; - let name = {getName('vertex', customName, vertex)}; + const controls = ; + const name = {getName('vertex', customName, vertex)}; return
} diff --git a/modules/brep/debug/debugger/utils.jsx b/modules/brep/debug/debugger/utils.jsx index eff6989d..1f2a0f21 100644 --- a/modules/brep/debug/debugger/utils.jsx +++ b/modules/brep/debug/debugger/utils.jsx @@ -29,9 +29,9 @@ export function getEdgesViewObjects(group3d, category, context, out, edges) { export function getViewObjectsComposite(providers) { return function (group3d, category, context, out, objects) { for (let i = 0; i < providers.length; i++) { - let obj = objects[i]; + const obj = objects[i]; if (obj) { - let provider = providers[i]; + const provider = providers[i]; provider(group3d, category, context, out, obj); } } @@ -39,7 +39,7 @@ export function getViewObjectsComposite(providers) { } export const getEdgeViewObjects = findOrCreate.bind(null, (edge, color) => { - let points = edge.edge.curve.tessellate(); + const points = edge.edge.curve.tessellate(); if (edge.inverted) { points.reverse(); } @@ -47,23 +47,23 @@ export const getEdgeViewObjects = findOrCreate.bind(null, (edge, color) => { }); export const getCurveViewObjects = findOrCreate.bind(null, (curve, color) => { - let points = curve.tessellate(); - let end = curve.point(curve.uMax); + const points = curve.tessellate(); + const end = curve.point(curve.uMax); return createDirectedCurve(points, curve.tangentAtPoint(end), end, color) }); function createDirectedCurve(points, arrowDir, arrowTipPos, color) { - let obj = new THREE.Object3D(); + const obj = new THREE.Object3D(); obj.__tcad_debug_materials = []; - let material = new THREE.LineBasicMaterial({color, linewidth: 10}); + const material = new THREE.LineBasicMaterial({color, linewidth: 10}); const vertices = []; let edgeLength = 0; for (let i = 1; i < points.length; ++i) { - let a = points[i - 1]; - let b = points[i]; + const a = points[i - 1]; + const b = points[i]; vertices.push(a.three()); vertices.push(b.three()); edgeLength += distanceAB3(a, b); @@ -76,14 +76,14 @@ function createDirectedCurve(points, arrowDir, arrowTipPos, color) { let arrowLength = 15; - let arrowWidth = 0.2 * arrowLength; + const arrowWidth = 0.2 * arrowLength; if (arrowLength > edgeLength * 0.5) { arrowLength = edgeLength * 0.5; } - let dir = arrowDir; - let pos = arrowTipPos.minus(dir.multiply(arrowLength * 0.5)); - let cone = new THREE.CylinderGeometry( 0, arrowWidth, arrowLength, 10, 1 ); - let arrow = new THREE.Mesh( cone, new THREE.MeshBasicMaterial( { color} ) ); + const dir = arrowDir; + const pos = arrowTipPos.minus(dir.multiply(arrowLength * 0.5)); + const cone = new THREE.CylinderGeometry( 0, arrowWidth, arrowLength, 10, 1 ); + const arrow = new THREE.Mesh( cone, new THREE.MeshBasicMaterial( { color} ) ); if ( dir.y > 0.99999 ) { arrow.quaternion.set( 0, 0, 0, 1 ); } else if ( dir.y < - 0.99999 ) { @@ -107,9 +107,9 @@ export const getPointViewObjects = findOrCreate.bind(null, ({x,y,z}, color) => { }); function createPoint(x,y,z, color) { - let geometry = new THREE.SphereGeometry( 5, 16, 16 ); - let material = new THREE.MeshBasicMaterial( {color} ); - let sphere = new THREE.Mesh(geometry, material); + const geometry = new THREE.SphereGeometry( 5, 16, 16 ); + const material = new THREE.MeshBasicMaterial( {color} ); + const sphere = new THREE.Mesh(geometry, material); sphere.position.x = x; sphere.position.y = y; sphere.position.z = z; @@ -136,7 +136,7 @@ export function setViewObjectsColor(objectsProvider, group3d, category, context, } export function fetchViewObjects(objectsProvider, group3d, category, context, topoObj) { - let objs = []; + const objs = []; objectsProvider(group3d, category, context, objs, topoObj); return objs; } @@ -150,7 +150,7 @@ export function getInitColor(category, obj, context) { return context.has(obj) ? DETECTED_EDGE : DISCARDED_EDGE; } case 'edge-transfer': { - let {edge, face, chosenFace, discardedFace, chosenEdge} = context; + const {edge, face, chosenFace, discardedFace, chosenEdge} = context; if (obj === edge) { return RED; } else if (obj.loop.face === face) { @@ -166,7 +166,7 @@ export function getInitColor(category, obj, context) { } } case 'face-filter': { - let {connectedToAffectedFaces, notConnectedToAffectedFaces} = context; + const {connectedToAffectedFaces, notConnectedToAffectedFaces} = context; if (connectedToAffectedFaces.indexOf(obj.loop.face) > -1) { return WHITE; } else { @@ -174,11 +174,11 @@ export function getInitColor(category, obj, context) { } } case 'marked-edges': { - let color = context[obj].color; + const color = context[obj].color; return color === undefined ? YELLOW : color; } case 'face-intersections': { - let {faceA, faceB} = context; + const {faceA, faceB} = context; if (obj.constructor.name === 'HalfEdge') { return faceContainsEdge(faceA, obj) ? AQUA : YELLOW; } else if (obj.constructor.name === 'Vector') { @@ -197,7 +197,7 @@ export function getInitColor(category, obj, context) { } function faceContainsEdge(face, edge) { - for (let e of face.edges) { + for (const e of face.edges) { if (e === edge) { return true; } @@ -207,23 +207,23 @@ function faceContainsEdge(face, edge) { export function mapIterable(it, fn) { const out = []; - for (let i of it) { + for (const i of it) { out.push(fn(i)); } return out; } export function forEach(it, fn) { - for (let i of it) { + for (const i of it) { fn(i); } } export function createObjectsUpdater(viewObjectsProvider, group3d, category, context, topoObj) { - let getObjects = out => viewObjectsProvider.bind(null, group3d, category, context, out, topoObj)(); + const getObjects = out => viewObjectsProvider.bind(null, group3d, category, context, out, topoObj)(); return function (func) { - let out = []; + const out = []; getObjects(out); out.forEach(func); __DEBUG__.render(); @@ -231,7 +231,7 @@ export function createObjectsUpdater(viewObjectsProvider, group3d, category, con } export function Controls({viewObjectsProvider, group3d, category, context, topoObj}) { - let applyToAll = createObjectsUpdater(viewObjectsProvider, group3d, category, context, topoObj); + const applyToAll = createObjectsUpdater(viewObjectsProvider, group3d, category, context, topoObj); function tweak() { let toState = null; applyToAll(o => { @@ -251,7 +251,7 @@ export function Controls({viewObjectsProvider, group3d, category, context, topoO } export function ActiveLabel({viewObjectsProvider, group3d, category, context, topoObj, children, ...props}) { - let applyToAll = createObjectsUpdater(viewObjectsProvider, group3d, category, context, topoObj); + const applyToAll = createObjectsUpdater(viewObjectsProvider, group3d, category, context, topoObj); function onMouseEnter() { applyToAll(o => { if (o.__tcad_debug_last_visible === undefined) { @@ -280,9 +280,9 @@ export function ActiveLabel({viewObjectsProvider, group3d, category, context, to } export function InteractiveSection({viewObjectsProvider, topoObj, group3d, category, context, name, closable, defaultClosed, children}) { - let ctrlProps = {viewObjectsProvider, topoObj, group3d, category, context}; - let controls = ; - let nameCtrl = {name}; + const ctrlProps = {viewObjectsProvider, topoObj, group3d, category, context}; + const controls = ; + const nameCtrl = {name}; return
{children}
diff --git a/modules/brep/operations/boolean.js b/modules/brep/operations/boolean.js index eafa80f1..f86ea3f4 100644 --- a/modules/brep/operations/boolean.js +++ b/modules/brep/operations/boolean.js @@ -59,7 +59,7 @@ export function BooleanAlgorithm( shellA, shellB, type ) { type = TYPE.INTERSECT; } - let workingFaces = collectFaces(shellA, shellB); + const workingFaces = collectFaces(shellA, shellB); initOperationData(workingFaces); @@ -67,23 +67,23 @@ export function BooleanAlgorithm( shellA, shellB, type ) { initVertexFactory(shellA, shellB); intersectEdges(shellA, shellB); - let mergedFaces = mergeOverlappingFaces(shellA, shellB, type); + const mergedFaces = mergeOverlappingFaces(shellA, shellB, type); intersectFaces(shellA, shellB, type); replaceMergedFaces(workingFaces, mergedFaces); - for (let workingFace of workingFaces) { + for (const workingFace of workingFaces) { workingFace.op.initGraph(); } checkFaceDataForError(workingFaces); - for (let face of workingFaces) { + for (const face of workingFaces) { face.op.detectedLoops = detectLoops(face.surface, face.op); } - for (let face of workingFaces) { - for (let loop of face.op.detectedLoops) { + for (const face of workingFaces) { + for (const loop of face.op.detectedLoops) { loop.link(); } } @@ -92,7 +92,7 @@ export function BooleanAlgorithm( shellA, shellB, type ) { let faces = []; - for (let face of workingFaces) { + for (const face of workingFaces) { loopsToFaces(face, face.op.detectedLoops, faces); } @@ -114,9 +114,9 @@ export function BooleanAlgorithm( shellA, shellB, type ) { } function removeInvalidLoops(faces) { - let detectedLoopsSet = new Set(); - for (let face of faces) { - for (let loop of face.op.detectedLoops) { + const detectedLoopsSet = new Set(); + for (const face of faces) { + for (const loop of face.op.detectedLoops) { detectedLoopsSet.add(loop); } } @@ -126,7 +126,7 @@ function removeInvalidLoops(faces) { return !detectedLoopsSet.has(loop); } - for (let face of faces) { + for (const face of faces) { face.op.detectedLoops = face.op.detectedLoops.filter( loop => loop.halfEdges.find(e => isLoopInvalid(e.twin().loop)) === undefined); } @@ -134,7 +134,7 @@ function removeInvalidLoops(faces) { function replaceMergedFaces(workingFaces, mergedFaces) { function addDecayed(he, out) { - let decayed = EdgeSolveData.get(he).decayed; + const decayed = EdgeSolveData.get(he).decayed; if (decayed) { decayed.forEach(de => addDecayed(de, out)); } else { @@ -144,11 +144,11 @@ function replaceMergedFaces(workingFaces, mergedFaces) { filterInPlace(workingFaces, face => mergedFaces.find(({originFaces}) => originFaces.indexOf(face) > -1) === undefined ); - for (let {facePrototypes, originFaces} of mergedFaces) { - for (let {loops, surface} of facePrototypes) { - let fakeFace = new Face(surface); - for (let loop of loops) { - let actualHalfEdges = []; + for (const {facePrototypes, originFaces} of mergedFaces) { + for (const {loops, surface} of facePrototypes) { + const fakeFace = new Face(surface); + for (const loop of loops) { + const actualHalfEdges = []; loop.halfEdges.forEach(he => addDecayed(he, actualHalfEdges)); loop.halfEdges = actualHalfEdges; fakeFace.innerLoops.push(loop); @@ -157,7 +157,7 @@ function replaceMergedFaces(workingFaces, mergedFaces) { } initOperationDataForFace(fakeFace); workingFaces.push(fakeFace); - for (let originFace of originFaces) { + for (const originFace of originFaces) { originFace.op.newEdges.forEach(e => addNewEdge(fakeFace, e)); } } @@ -165,7 +165,7 @@ function replaceMergedFaces(workingFaces, mergedFaces) { } function prepareWorkingCopy(_shell) { - let workingCopy = _shell.clone(); + const workingCopy = _shell.clone(); setAnalysisFace(_shell, workingCopy); cleanUpOperationData(workingCopy); return workingCopy; @@ -224,7 +224,7 @@ function findOverlappingFaces(shellA, shellB) { function pointOnFace(face, pt) { return face.env2D().pip(face.surface.workingPoint(pt)).inside; } - for (let e1 of face1.edges) { + for (const e1 of face1.edges) { if (pointOnFace(face2, e1.vertexA.point)) { return true; } @@ -232,8 +232,8 @@ function findOverlappingFaces(shellA, shellB) { } function overlaps(face1, face2) { - let ss1 = face1.surface.simpleSurface; - let ss2 = face2.surface.simpleSurface; + const ss1 = face1.surface.simpleSurface; + const ss2 = face2.surface.simpleSurface; if (ss1 !== null && ss2 !== null && ss1.TYPE === 'plane' && ss1.TYPE === ss2.TYPE && ss1.coplanarUnsigned(ss2)) { return overlapsImpl(face1, face2) || overlapsImpl(face2, face1); @@ -241,10 +241,10 @@ function findOverlappingFaces(shellA, shellB) { return false; } - let overlapGroups = []; + const overlapGroups = []; - for (let faceA of shellA.faces) { - for (let faceB of shellB.faces) { + for (const faceA of shellA.faces) { + for (const faceB of shellB.faces) { if (DEBUG.FACE_MERGE) { __DEBUG__.Clear(); __DEBUG__.AddFace(faceA, 0x0000ff); @@ -267,28 +267,28 @@ function findOverlappingFaces(shellA, shellB) { } function mergeOverlappingFaces(shellA, shellB, opType) { - let groups = findOverlappingFaces(shellA, shellB); + const groups = findOverlappingFaces(shellA, shellB); BREP_DEBUG.setOverlappingFaces(groups); - let mergedFaces = []; - for (let [groupA, groupB] of groups) { - let faceMergeInfo = mergeFaces(Array.from(groupA), Array.from(groupB), opType); + const mergedFaces = []; + for (const [groupA, groupB] of groups) { + const faceMergeInfo = mergeFaces(Array.from(groupA), Array.from(groupB), opType); mergedFaces.push(faceMergeInfo); } return mergedFaces; } function mergeFaces(facesA, facesB, opType) { - let originFaces = [...facesA, ...facesB]; - let allPoints = []; + const originFaces = [...facesA, ...facesB]; + const allPoints = []; - for (let face of originFaces) { - for (let e of face.edges) { + for (const face of originFaces) { + for (const e of face.edges) { allPoints.push(e.vertexA.point); } } - let valid = new Set(); - let invalid = new Set(); + const valid = new Set(); + const invalid = new Set(); function classify(inside, testee) { if (inside && opType === TYPE.INTERSECT) { @@ -310,7 +310,7 @@ function mergeFaces(facesA, facesB, opType) { function invalidate(faceA, faceB) { - let coincidentEdges = new Set(); + const coincidentEdges = new Set(); function checkCoincidentEdges(edgeA, edgeB) { if (isSameEdge(edgeA, edgeB)) { @@ -322,8 +322,8 @@ function mergeFaces(facesA, facesB, opType) { if (edgeA.vertexA === edgeB.vertexA) { // chooseBetweenEqualEdges(); // canEdgeBeTransferred(edge, face, opType) - let faceAAdjacent = edgeA.twin().loop.face; - let faceBAdjacent = edgeB.twin().loop.face; + const faceAAdjacent = edgeA.twin().loop.face; + const faceBAdjacent = edgeB.twin().loop.face; if (faceAAdjacent.op.overlaps && faceAAdjacent.op.overlaps.has(faceBAdjacent)) { invalid.add(edgeB); } else { @@ -345,7 +345,7 @@ function mergeFaces(facesA, facesB, opType) { function invalidateEdge(face, edge) { - let pt = edge.edge.curve.middlePoint(); + const pt = edge.edge.curve.middlePoint(); if (face.rayCast(pt).inside) { markEdgeTransferred(edge.edge); if (canEdgeBeTransferred(edge.twin(), face, opType)) { @@ -357,7 +357,7 @@ function mergeFaces(facesA, facesB, opType) { } function invalidateEdges(faceX, faceY) { - for (let edgeX of faceX.edges) { + for (const edgeX of faceX.edges) { if (coincidentEdges.has(edgeX)) { continue; } @@ -365,8 +365,8 @@ function mergeFaces(facesA, facesB, opType) { } } - for (let edgeA of faceA.edges) { - for (let edgeB of faceB.edges) { + for (const edgeA of faceA.edges) { + for (const edgeB of faceB.edges) { checkCoincidentEdges(edgeA, edgeB); } } @@ -375,21 +375,21 @@ function mergeFaces(facesA, facesB, opType) { invalidateEdges(faceB, faceA); } - for (let faceA of facesA) { - for (let faceB of facesB) { + for (const faceA of facesA) { + for (const faceB of facesB) { invalidate(faceA, faceB); } } - let facePrototypes = []; + const facePrototypes = []; let leftovers = null; - for (let referenceFace of originFaces) { + for (const referenceFace of originFaces) { - let graph = new EdgeGraph(); - for (let face of originFaces) { - for (let edge of face.edges) { + const graph = new EdgeGraph(); + for (const face of originFaces) { + for (const edge of face.edges) { if (!invalid.has(edge) && (leftovers == null || leftovers.has(edge))) { graph.add(edge); } @@ -397,10 +397,10 @@ function mergeFaces(facesA, facesB, opType) { } leftovers = new Set(graph.graphEdges); - let detectedLoops = detectLoops(referenceFace.surface, graph); + const detectedLoops = detectLoops(referenceFace.surface, graph); - for (let loop of detectedLoops) { - for (let edge of loop.halfEdges) { + for (const loop of detectedLoops) { + for (const edge of loop.halfEdges) { // EdgeSolveData.setPriority(edge, 1); leftovers.delete(edge); } @@ -423,16 +423,16 @@ function mergeFaces(facesA, facesB, opType) { export function mergeVertices(shell1, shell2) { const toSwap = new Map(); - for (let v1 of shell1.vertices) { - for (let v2 of shell2.vertices) { + for (const v1 of shell1.vertices) { + for (const v2 of shell2.vertices) { if (veq(v1.point, v2.point)) { toSwap.set(v2, v1); } } } - for (let face of shell2.faces) { - for (let h of face.edges) { + for (const face of shell2.faces) { + for (const h of face.edges) { const aSwap = toSwap.get(h.vertexA); const bSwap = toSwap.get(h.vertexB); if (aSwap) { @@ -448,7 +448,7 @@ export function mergeVertices(shell1, shell2) { function filterFaces(faces) { function doesFaceContainNewEdge(face) { - for (let e of face.edges) { + for (const e of face.edges) { if (getPriority(e) > 0 || getPriority(e.twin()) > 0 || EdgeSolveData.get(e).affected === true) { return true; @@ -458,7 +458,7 @@ function filterFaces(faces) { } const resultSet = new Set(); - for (let face of faces) { + for (const face of faces) { // __DEBUG__.Clear(); // __DEBUG__.AddFace(face); traverseFaces(face, (it) => { @@ -483,9 +483,9 @@ function traverseFaces(face, callback) { if (callback(face) === true) { return; } - for (let loop of face.loops) { - for (let halfEdge of loop.halfEdges) { - let twinFace = halfEdge.twin().loop.face; + for (const loop of face.loops) { + for (const halfEdge of loop.halfEdges) { + const twinFace = halfEdge.twin().loop.face; if (twinFace === null) { //this happened because there is no face created for a valid and legit detected loop throw new CadError({ @@ -503,25 +503,25 @@ function traverseFaces(face, callback) { export function loopsToFaces(originFace, loops, out) { const newFaces = evolveFace(originFace, loops); - for (let newFace of newFaces) { + for (const newFace of newFaces) { out.push(newFace); } } function collectFaces(shellA, shellB) { function collect(shell, out) { - for (let face of shell.faces) { + for (const face of shell.faces) { out.push(face); } } - let out = []; + const out = []; collect(shellA, out); collect(shellB, out); return out; } function initOperationData(faces) { - for (let face of faces) { + for (const face of faces) { initOperationDataForFace(face); } } @@ -531,9 +531,9 @@ function initOperationDataForFace(face) { } function cleanUpOperationData(shell) { - for (let face of shell.faces) { + for (const face of shell.faces) { face.op = null; - for (let he of face.edges) { + for (const he of face.edges) { EdgeSolveData.clear(he); delete he.edge.data[MY]; } @@ -548,7 +548,7 @@ function findMaxTurningLeft(pivotEdge, edges, surface) { const pivot = pivotEdge.tangent(pivotEdge.vertexB.point).negate(); const normal = surface.normal(pivotEdge.vertexB.point); edges.sort((e1, e2) => { - let delta = leftTurningMeasure(pivot, edgeVector(e1), normal) - leftTurningMeasure(pivot, edgeVector(e2), normal); + const delta = leftTurningMeasure(pivot, edgeVector(e1), normal) - leftTurningMeasure(pivot, edgeVector(e2), normal); if (ueq(delta, 0)) { return getPriority(e2) - getPriority(e1); } @@ -571,18 +571,18 @@ function leftTurningMeasure(v1, v2, normal) { } function intersectEdges(shell1, shell2) { - let isecs = new Map(); + const isecs = new Map(); function addIsesc(e, params) { - let allParams = isecs.get(e); + const allParams = isecs.get(e); if (!allParams) { isecs.set(e, params); } else { params.forEach(p => allParams.push(p)); } } - for (let e1 of shell1.edges) { - for (let e2 of shell2.edges) { - let points = e1.curve.intersectCurve(e2.curve, TOLERANCE); + for (const e1 of shell1.edges) { + for (const e2 of shell2.edges) { + const points = e1.curve.intersectCurve(e2.curve, TOLERANCE); if (points.length !== 0) { const vertexHolder = []; addIsesc(e1, points.map( ({u0: u, p0: p}) => ({u, p, vertexHolder}) )); @@ -590,17 +590,17 @@ function intersectEdges(shell1, shell2) { } } } - for (let [e, points] of isecs) { + for (const [e, points] of isecs) { points.sort((p1, p2) => p1.u - p2.u); - for (let {u, vertexHolder} of points ) { + for (const {u, vertexHolder} of points ) { if (!vertexHolder[0]) { vertexHolder[0] = vertexFactory.create(e.curve.point(u)); } } } for (let [e, points] of isecs) { - for (let {vertexHolder} of points ) { - let split = splitEdgeByVertex(e, vertexHolder[0]); + for (const {vertexHolder} of points ) { + const split = splitEdgeByVertex(e, vertexHolder[0]); if (split !== null) { e = split[1]; } @@ -609,17 +609,17 @@ function intersectEdges(shell1, shell2) { } function fixCurveDirection(curve, surface1, surface2, operationType) { - let point = curve.middlePoint(); - let tangent = curve.tangentAtPoint(point); - let normal1 = surface1.normal(point); - let normal2 = surface2.normal(point); + const point = curve.middlePoint(); + const tangent = curve.tangentAtPoint(point); + const normal1 = surface1.normal(point); + const normal2 = surface2.normal(point); - let expectedDirection = normal1.cross(normal2); + const expectedDirection = normal1.cross(normal2); if (operationType === TYPE.UNION) { expectedDirection._negate(); } - let sameAsExpected = expectedDirection.dot(tangent) > 0; + const sameAsExpected = expectedDirection.dot(tangent) > 0; if (!sameAsExpected) { curve = curve.invert(); } @@ -628,8 +628,8 @@ function fixCurveDirection(curve, surface1, surface2, operationType) { //TODO: extract to a unit test function newEdgeDirectionValidityTest(e, curve) { - let point = e.halfEdge1.vertexA.point; - let tangent = curve.tangentAtPoint(point); + const point = e.halfEdge1.vertexA.point; + const tangent = curve.tangentAtPoint(point); assert('tangent of originated curve and first halfEdge should be the same', vectorsEqual(tangent, e.halfEdge1.tangent(point))); assert('tangent of originated curve and second halfEdge should be the opposite', vectorsEqual(tangent._negate(), e.halfEdge2.tangent(point))); } @@ -653,7 +653,7 @@ function intersectFaces(shellA, shellB, operationType) { } } - let curves = faceA.surface.intersectSurface(faceB.surface); + const curves = faceA.surface.intersectSurface(faceB.surface); for (let curve of curves) { if (DEBUG.FACE_FACE_INTERSECTION) { @@ -687,25 +687,25 @@ function intersectFaces(shellA, shellB, operationType) { } function chooseBetweenEqualEdges(edgeA, edgeB, operationType) { - let twinA = edgeA.twin(); - let twinB = edgeB.twin(); + const twinA = edgeA.twin(); + const twinB = edgeB.twin(); } function canEdgeBeTransferred(edge, face, operationType) { - let testPoint = edge.edge.curve.middlePoint(); - let edgeTangent = edge.tangent(testPoint); - let edgeFaceNormal = edge.loop.face.surface.normal(testPoint); - let edgeFaceDir = edgeFaceNormal.cross(edgeTangent); - let faceNormal = face.surface.normal(testPoint); - let outsideMeasure = edgeFaceDir.dot(faceNormal); + const testPoint = edge.edge.curve.middlePoint(); + const edgeTangent = edge.tangent(testPoint); + const edgeFaceNormal = edge.loop.face.surface.normal(testPoint); + const edgeFaceDir = edgeFaceNormal.cross(edgeTangent); + const faceNormal = face.surface.normal(testPoint); + const outsideMeasure = edgeFaceDir.dot(faceNormal); if (eq(outsideMeasure, 0)) { throw 'this case should be considered before calling this method'; // return undefined; } - let outside = outsideMeasure > 0; + const outside = outsideMeasure > 0; return (operationType === TYPE.INTERSECT) !== outside; } @@ -714,15 +714,15 @@ export function chooseValidEdge(edge, face, operationType) { } function transferEdges(faceSource, faceDest, operationType) { - for (let loop of faceSource.loops) { - for (let edge of loop.halfEdges) { + for (const loop of faceSource.loops) { + for (const edge of loop.halfEdges) { if (isEdgeTransferred(edge.edge)) { continue; } if (edgeCollinearToFace(edge, faceDest)) { - let validEdge = chooseValidEdge(edge, faceDest, operationType); + const validEdge = chooseValidEdge(edge, faceDest, operationType); BREP_DEBUG.transferEdge(edge, faceDest, validEdge); - let twin = validEdge.twin(); + const twin = validEdge.twin(); twin.loop.face.op.markTransferredFrom(twin); markEdgeTransferred(twin.edge); addNewEdge(faceDest, twin); @@ -750,7 +750,7 @@ function nodeByPoint(nodes, point, u, curve, vertex) { } function hasCoincidentEdge(curve, face) { - for (let edge of face.edges) { + for (const edge of face.edges) { if (curveAndEdgeCoincident(curve, edge)) { return true; } @@ -759,24 +759,24 @@ function hasCoincidentEdge(curve, face) { } function collectNodesOfIntersectionOfFace(curve, face, nodes, operand) { - for (let loop of face.loops) { + for (const loop of face.loops) { collectNodesOfIntersection(curve, loop, nodes, operand); } } function collectNodesOfIntersection(curve, loop, nodes, operand) { // __DEBUG__.AddCurve(curve, 0xffffff); - let skippedEnclosures = new Set(); + const skippedEnclosures = new Set(); - let encloses = loop.encloses; - for (let [a, b, v] of encloses) { + const encloses = loop.encloses; + for (const [a, b, v] of encloses) { if (skippedEnclosures.has(v)) { continue; } if (curve.passesThrough(v.point)) { - let classification = isCurveEntersEnclose(curve, a, b); + const classification = isCurveEntersEnclose(curve, a, b); if (classification === ENCLOSE_CLASSIFICATION.ENTERS || classification === ENCLOSE_CLASSIFICATION.LEAVES) { - let node = nodeByPoint(nodes, v.point, undefined, curve, v); + const node = nodeByPoint(nodes, v.point, undefined, curve, v); if (classification === ENCLOSE_CLASSIFICATION.ENTERS) { node.enters[operand] = true; } else { @@ -785,7 +785,7 @@ function collectNodesOfIntersection(curve, loop, nodes, operand) { } } } - for (let edge of loop.halfEdges) { + for (const edge of loop.halfEdges) { intersectCurveWithEdge(curve, edge, nodes, operand); } } @@ -794,16 +794,16 @@ function intersectCurveWithEdge(curve, edge, nodes, operand) { // __DEBUG__.AddCurve(curve, 0xffffff); // __DEBUG__.AddHalfEdge(edge, 0xff00ff); const points = edge.edge.curve.intersectCurve(curve); - for (let point of points) { + for (const point of points) { const {u0, u1} = point; - let existing = vertexFactory.find(point.p0); + const existing = vertexFactory.find(point.p0); if (existing !== null) { // vertex already exists, means either we hit an end of edge and this case is handled by enclosure analysis // continue; } - let node = nodeByPoint(nodes, point.p0, u1, undefined, null); + const node = nodeByPoint(nodes, point.p0, u1, undefined, null); if (isCurveEntersEdgeAtPoint(curve, edge, node.point)) { node.enters[operand] = true; } else { @@ -821,7 +821,7 @@ function split(nodes, curve, result, faceA, faceB) { nodes.sort((n1, n2) => n1.u - n2.u); - let initNode = nodes[0]; + const initNode = nodes[0]; // __DEBUG__.Clear(); // __DEBUG__.AddFace(faceA); @@ -831,15 +831,15 @@ function split(nodes, curve, result, faceA, faceB) { let insideA = faceA.analysisFace.rayCast(initNode.point).strictInside; let insideB = faceB.analysisFace.rayCast(initNode.point).strictInside; let inNode = null; - let edgesToSplits = new Map(); + const edgesToSplits = new Map(); function checkNodeForEdgeSplit(node) { if (node.edgeSplitInfo !== null) { addToListInMap(edgesToSplits, node.edgeSplitInfo.edge.edge, node); } } - for (let node of nodes) { - let wasInside = insideA && insideB; + for (const node of nodes) { + const wasInside = insideA && insideB; let hadLeft = false; if (node.enters[A] === true) { insideA = true; @@ -860,8 +860,8 @@ function split(nodes, curve, result, faceA, faceB) { if (wasInside && hadLeft) { let edgeCurve = curve; - let vertexA = inNode.vertex(); - let vertexB = node.vertex(); + const vertexA = inNode.vertex(); + const vertexB = node.vertex(); if (!ueq(inNode.u, curve.uMin)) { [,edgeCurve] = edgeCurve.split(vertexA.point); } @@ -877,7 +877,7 @@ function split(nodes, curve, result, faceA, faceB) { for (let [edge, nodes] of edgesToSplits) { nodes.sort(({edgeSplitInfo:{u}}) => u); - for (let node of nodes) { + for (const node of nodes) { [,edge] = splitEdgeByVertex(edge, node.vertex()); } } @@ -894,7 +894,7 @@ function splitEdgeByVertex(edge, vertex) { const edge2 = new Edge(curves[1], vertex, edge.halfEdge1.vertexB); function updateInLoop(halfEdge, h1, h2) { - let halfEdges = halfEdge.loop.halfEdges; + const halfEdges = halfEdge.loop.halfEdges; halfEdges.splice(halfEdges.indexOf(halfEdge), 1, h1, h2); h1.loop = halfEdge.loop; h2.loop = halfEdge.loop; @@ -913,7 +913,7 @@ function splitEdgeByVertex(edge, vertex) { updateInLoop(edge.halfEdge2, edge2.halfEdge2, edge1.halfEdge2); function transferPriority(from, to) { - let priority = getPriority(from); + const priority = getPriority(from); if (priority !== 0) { EdgeSolveData.setPriority(to, priority); } @@ -946,15 +946,15 @@ export function isInsideEnclose(normal, testee, inVec, outVec, strict){ }); } - let pivot = inVec.negate(); + const pivot = inVec.negate(); if (strict && veq(pivot, testee)) { //TODO: improve error report throw new CadError({ relatedTopoObjects: [testee] }); } - let enclosureAngle = leftTurningMeasure(pivot, outVec, normal); - let testeeAngle = leftTurningMeasure(pivot, testee, normal); + const enclosureAngle = leftTurningMeasure(pivot, outVec, normal); + const testeeAngle = leftTurningMeasure(pivot, testee, normal); return testeeAngle < enclosureAngle; } @@ -967,25 +967,25 @@ export const ENCLOSE_CLASSIFICATION = { }; export function isCurveEntersEnclose(curve, a, b) { - let pt = a.vertexB.point; - let normal = a.loop.face.surface.normal(pt); + const pt = a.vertexB.point; + const normal = a.loop.face.surface.normal(pt); - let testee = curve.tangentAtPoint(pt); - let inVec = a.tangentAtEnd(); - let outVec = b.tangentAtStart(); + const testee = curve.tangentAtPoint(pt); + const inVec = a.tangentAtEnd(); + const outVec = b.tangentAtStart(); - let coiIn = veqNeg(inVec, testee); - let coiOut = veq(outVec, testee); + const coiIn = veqNeg(inVec, testee); + const coiOut = veq(outVec, testee); if (coiIn && coiOut) { return ENCLOSE_CLASSIFICATION.UNDEFINED; } - let testeeNeg = testee.negate(); + const testeeNeg = testee.negate(); - let coiInNeg = veqNeg(inVec, testeeNeg); - let coiOutNeg = veq(outVec, testeeNeg); + const coiInNeg = veqNeg(inVec, testeeNeg); + const coiOutNeg = veq(outVec, testeeNeg); if (coiInNeg || coiOutNeg) { return ENCLOSE_CLASSIFICATION.UNDEFINED; @@ -993,11 +993,11 @@ export function isCurveEntersEnclose(curve, a, b) { let result = ENCLOSE_CLASSIFICATION.UNDEFINED; if (coiIn || coiOut) { - let insideEncloseNeg = isInsideEnclose(normal, testeeNeg, inVec, outVec); + const insideEncloseNeg = isInsideEnclose(normal, testeeNeg, inVec, outVec); return insideEncloseNeg ? ENCLOSE_CLASSIFICATION.LEAVES : ENCLOSE_CLASSIFICATION.ENTERS; } else { - let insideEnclose = isInsideEnclose(normal, testee, inVec, outVec); - let insideEncloseNeg = isInsideEnclose(normal, testeeNeg, inVec, outVec); + const insideEnclose = isInsideEnclose(normal, testee, inVec, outVec); + const insideEncloseNeg = isInsideEnclose(normal, testeeNeg, inVec, outVec); if (insideEnclose === insideEncloseNeg) { result = ENCLOSE_CLASSIFICATION.TANGENTS; } else { @@ -1078,7 +1078,7 @@ function markEdgeTransferred(edge) { } function isEdgeTransferred(edge) { - let data = edge.data[MY]; + const data = edge.data[MY]; return data && data.transfered; } @@ -1112,13 +1112,13 @@ class VertexFactory { } addVertices(vertices) { - for (let v of vertices) { + for (const v of vertices) { this.vertices.push(v); } } find(point) { - for (let vertex of this.vertices) { + for (const vertex of this.vertices) { if (veq(point, vertex.point)) { return vertex; } @@ -1168,10 +1168,10 @@ class FaceOperationData extends EdgeGraph { initGraph() { this.vertexToEdge.clear(); - for (let he of this.face.edges) { + for (const he of this.face.edges) { this.addToGraph(he); } - for (let he of this.newEdges) { + for (const he of this.newEdges) { this.addToGraph(he); } } @@ -1187,7 +1187,7 @@ class FaceOperationData extends EdgeGraph { return; } - let opp = this.findOppositeEdge(he); + const opp = this.findOppositeEdge(he); if (opp) { this.collidedEdges.push(opp, he); } @@ -1197,7 +1197,7 @@ class FaceOperationData extends EdgeGraph { list = []; this.vertexToEdge.set(he.vertexA, list); } else { - for (let ex of list) { + for (const ex of list) { if (he.vertexB === ex.vertexB && isSameEdge(he, ex)) { this.collidedEdges.push(ex, he); // ex.attachManifold(he); @@ -1210,9 +1210,9 @@ class FaceOperationData extends EdgeGraph { } findOppositeEdge(e1) { - let others = this.vertexToEdge.get(e1.vertexB); + const others = this.vertexToEdge.get(e1.vertexB); if (others) { - for (let e2 of others) { + for (const e2 of others) { if (e1.vertexA === e2.vertexB && isSameEdge(e1, e2)) { return e2; } @@ -1223,7 +1223,7 @@ class FaceOperationData extends EdgeGraph { } function removeFromListInMap(map, key, value) { - let list = map.get(key); + const list = map.get(key); if (list) { const idx = list.indexOf(value); if (idx !== -1) { @@ -1233,17 +1233,17 @@ function removeFromListInMap(map, key, value) { } function edgesHaveSameEnds(e1, e2) { - let a1 = e1.vertexA; - let b1 = e1.vertexB; - let a2 = e2.vertexA; - let b2 = e2.vertexB; + const a1 = e1.vertexA; + const b1 = e1.vertexB; + const a2 = e2.vertexA; + const b2 = e2.vertexB; return (a1 === a2 && b1 === b2) || (a1 === b2 && b1 === a2) } function isSameEdge(e1, e2) { - let tess = e1.tessellate(); - for (let pt1 of tess) { - let pt2 = e2.edge.curve.point(e2.edge.curve.param(pt1)); + const tess = e1.tessellate(); + for (const pt1 of tess) { + const pt2 = e2.edge.curve.point(e2.edge.curve.param(pt1)); if (!veq(pt1, pt2)) { return false; } @@ -1252,12 +1252,12 @@ function isSameEdge(e1, e2) { } function curveAndEdgeCoincident(curve, edge) { - let tess = edge.tessellate(); + const tess = edge.tessellate(); //Do reverse to optimize a bit because the first point is usually checked let touches = 0; for (let i = tess.length - 1; i >= 0; i--) { - let pt1 = tess[i]; - let pt2 = curve.point(curve.param(pt1)); + const pt1 = tess[i]; + const pt2 = curve.point(curve.param(pt1)); if (!veq(pt1, pt2)) { if (touches > 1) { //partial tangency should be handled before face-face intersection analysis @@ -1275,11 +1275,11 @@ function curveAndEdgeCoincident(curve, edge) { } function edgeCollinearToFace(edge, face) { - let tess = edge.tessellate(); + const tess = edge.tessellate(); for (let i = 0; i < tess.length; ++i) { - let pt1 = tess[i]; - let [u, v] = face.surface.param(pt1); - let pt2 = face.surface.point(u, v); + const pt1 = tess[i]; + const [u, v] = face.surface.param(pt1); + const pt2 = face.surface.point(u, v); if (!veq(pt1, pt2)) { return false; } @@ -1289,9 +1289,9 @@ function edgeCollinearToFace(edge, face) { function checkFaceDataForError(workingFaces) { if (workingFaces.find(f => f.op.collidedEdges.length !== 0)) { - let relatedTopoObjects = []; - for (let face of workingFaces) { - for (let err of face.op.collidedEdges) { + const relatedTopoObjects = []; + for (const face of workingFaces) { + for (const err of face.op.collidedEdges) { relatedTopoObjects.push(err); } } diff --git a/modules/brep/operations/brep-enclose.js b/modules/brep/operations/brep-enclose.js index 4086860f..565af71e 100644 --- a/modules/brep/operations/brep-enclose.js +++ b/modules/brep/operations/brep-enclose.js @@ -35,7 +35,7 @@ export function createPrism(basePoints, height) { const lidPath = []; for (let i = 0; i < basePoints.length; i++) { - let j = (i + 1) % basePoints.length; + const j = (i + 1) % basePoints.length; basePath.push(BrepCurve.createLinearCurve(basePoints[i], basePoints[j])); lidPath.push(BrepCurve.createLinearCurve(lidPoints[i], lidPoints[j])); } @@ -71,24 +71,24 @@ function assemble(walls, basePlane, lidPlane) { const baseEdges = []; const lidEdges = []; - for (let w of walls) { - let wallEdge = Edge.fromCurve(w.isoCurveAlignV(0)); + for (const w of walls) { + const wallEdge = Edge.fromCurve(w.isoCurveAlignV(0)); wallEdges.push(wallEdge); } for (let i = 0; i < wallEdges.length; ++i) { - let j = (i + 1) % wallEdges.length; - let curr = wallEdges[i]; - let next = wallEdges[j]; - let wall = walls[i]; + const j = (i + 1) % wallEdges.length; + const curr = wallEdges[i]; + const next = wallEdges[j]; + const wall = walls[i]; - let baseEdge = new Edge(wall.isoCurveAlignU(1), curr.halfEdge1.vertexB, next.halfEdge1.vertexB); - let lidEdge = new Edge(wall.isoCurveAlignU(0), curr.halfEdge1.vertexA, next.halfEdge1.vertexA); + const baseEdge = new Edge(wall.isoCurveAlignU(1), curr.halfEdge1.vertexB, next.halfEdge1.vertexB); + const lidEdge = new Edge(wall.isoCurveAlignU(0), curr.halfEdge1.vertexA, next.halfEdge1.vertexA); baseEdges.push(baseEdge); lidEdges.push(lidEdge); - let wallFace = new Face(wall); + const wallFace = new Face(wall); wallFace.outerLoop.halfEdges.push(baseEdge.halfEdge2, curr.halfEdge2, lidEdge.halfEdge1, next.halfEdge1); wallFace.outerLoop.link(); shell.faces.push(wallFace); diff --git a/modules/brep/operations/evolve-face.js b/modules/brep/operations/evolve-face.js index eb5aa52b..77f051c2 100644 --- a/modules/brep/operations/evolve-face.js +++ b/modules/brep/operations/evolve-face.js @@ -5,7 +5,7 @@ import PIP from '../../../web/app/cad/tess/pip'; import {isCCW} from "geom/euclidean"; export function evolveFace(originFace, loops) { - let out = []; + const out = []; const originSurface = originFace.surface; let invertedSurface = null; function invertSurface() { @@ -32,7 +32,7 @@ export function evolveFace(originFace, loops) { loop.face = newFace; out.push(newFace); - for (let child of nestedLoop.nesting) { + for (const child of nestedLoop.nesting) { if (child.level == level + 2) { createFaces(child, level + 2); } else if (child.level == level + 1) { @@ -46,7 +46,7 @@ export function evolveFace(originFace, loops) { } } const nestedLoops = getNestedLoops(originFace, loops); - for (let nestedLoop of nestedLoops) { + for (const nestedLoop of nestedLoops) { if (nestedLoop.level == 0) { createFaces(nestedLoop, 0); } @@ -69,7 +69,7 @@ function getNestedLoops(face, brepLoops) { const loops = brepLoops.map(loop => new NestedLoop(loop)); function contains(loop, other) { - for (let point of other.workingPolygon) { + for (const point of other.workingPolygon) { if (!loop.pip(point).inside) { return false; } diff --git a/modules/brep/operations/stitching.js b/modules/brep/operations/stitching.js index a7316bf0..70710ad3 100644 --- a/modules/brep/operations/stitching.js +++ b/modules/brep/operations/stitching.js @@ -47,19 +47,19 @@ export class StitchedCurve { export function update(shell) { const index = new DoubleKeyMap(); - for (let face of shell.faces) { + for (const face of shell.faces) { const stitchedSurface = face.data[FACE_CHUNK]; if (stitchedSurface) { stitchedSurface.clear(); } } - for (let face of shell.faces) { + for (const face of shell.faces) { const stitchedSurface = face.data[FACE_CHUNK]; if (stitchedSurface) { stitchedSurface.addFace(face); } } - for (let e of shell.edges) { + for (const e of shell.edges) { const face1 = e.halfEdge1.loop.face; const face2 = e.halfEdge2.loop.face; const stitchedSurface1 = face1.data[FACE_CHUNK]; diff --git a/modules/brep/utils/pickPointInPolygon.js b/modules/brep/utils/pickPointInPolygon.js index 0f8e1b83..62a088ed 100644 --- a/modules/brep/utils/pickPointInPolygon.js +++ b/modules/brep/utils/pickPointInPolygon.js @@ -6,7 +6,7 @@ export default function pickPointInside2dPolygon(polygon) { tr.points[tr.counter] = data; tr.counter ++; if (tr.counter === 3) { - let trArea = Math.abs(area(tr.points)); + const trArea = Math.abs(area(tr.points)); if (trArea > tr.bestArea) { tr.bestArea = trArea; tr.bestTr = Array.from(tr.points); @@ -26,9 +26,9 @@ export default function pickPointInside2dPolygon(polygon) { }; tessy.gluTessBeginPolygon(tracker); - for (let path of polygon) { + for (const path of polygon) { tessy.gluTessBeginContour(); - for (let p of path) { + for (const p of path) { tessy.gluTessVertex([p.x, p.y, 0], p); } tessy.gluTessEndContour(); @@ -39,7 +39,7 @@ export default function pickPointInside2dPolygon(polygon) { return null; } - let center = tracker.bestTr[0].copy(); + const center = tracker.bestTr[0].copy(); center._plus(tracker.bestTr[1]); center._plus(tracker.bestTr[2]); center._divide(3); diff --git a/modules/brep/utils/vector-petrub.js b/modules/brep/utils/vector-petrub.js index db81dc8e..3c710902 100644 --- a/modules/brep/utils/vector-petrub.js +++ b/modules/brep/utils/vector-petrub.js @@ -1,11 +1,11 @@ export default function pertrub([x, y, z]) { - let s = x + y + z; + const s = x + y + z; x = pertrubFloat(x + 3 + s); y = pertrubFloat(y + 5 + s); z = pertrubFloat(z + 7 + s); - let r = Math.sqrt(x*x + y*y + z*z); + const r = Math.sqrt(x*x + y*y + z*z); return [ x/r, diff --git a/modules/bus/index.js b/modules/bus/index.js index 2f659e13..1703f24e 100644 --- a/modules/bus/index.js +++ b/modules/bus/index.js @@ -38,7 +38,7 @@ export default class Bus { tokens = [tokens]; } - let connection = () => { + const connection = () => { callback(this.tokensToStates(tokens)); }; tokens.forEach(token => { @@ -57,7 +57,7 @@ export default class Bus { } updateStates(tokens, updater) { - let updated = updater(this.tokensToStates(tokens)); + const updated = updater(this.tokensToStates(tokens)); for (let i = 0; i < tokens.length; ++i) { this.dispatch(tokens[i], updated[i]); } @@ -90,7 +90,7 @@ export default class Bus { } this.lock.add(key); try { - let listenerList = this.listeners[key]; + const listenerList = this.listeners[key]; if (listenerList !== undefined) { for (let i = 0; i < listenerList.length; i++) { const callback = listenerList[i]; diff --git a/modules/engine/impl/wasm/interact.js b/modules/engine/impl/wasm/interact.js index 424c70f7..c84f11ba 100644 --- a/modules/engine/impl/wasm/interact.js +++ b/modules/engine/impl/wasm/interact.js @@ -1,12 +1,12 @@ export function toCString(str) { - let buffer = Module._malloc(str.length + 1); + const buffer = Module._malloc(str.length + 1); writeAsciiToMemory(str, buffer); return buffer; } export function callEngine(request, engineFunc) { - let toCStringRequest = toCString(JSON.stringify(request)); + const toCStringRequest = toCString(JSON.stringify(request)); engineFunc(toCStringRequest); Module._free(toCStringRequest); return __E0_ENGINE_EXCHANGE_VAL; diff --git a/modules/gems/camelCaseSplit.js b/modules/gems/camelCaseSplit.js index 513978e5..36ec487b 100644 --- a/modules/gems/camelCaseSplit.js +++ b/modules/gems/camelCaseSplit.js @@ -25,7 +25,7 @@ export default function camelCaseSplit(str) { } export function camelCaseSplitToStr(str) { - let words = camelCaseSplit(str); + const words = camelCaseSplit(str); if (words.length !== 0) { return words.map(w => w.toLowerCase()).join(' '); } diff --git a/modules/gems/joints.js b/modules/gems/joints.js index 5022c79a..55753324 100644 --- a/modules/gems/joints.js +++ b/modules/gems/joints.js @@ -23,7 +23,7 @@ export default class Joints { } connected(a, b) { - let set = this.map.get(a); + const set = this.map.get(a); if (!set) { return false; } @@ -31,7 +31,7 @@ export default class Joints { } master(node) { - let tuple = this.map.get(node); + const tuple = this.map.get(node); if (!tuple) { return node; } diff --git a/modules/gems/linkedMap.js b/modules/gems/linkedMap.js index c06b6b6e..8fcffd02 100644 --- a/modules/gems/linkedMap.js +++ b/modules/gems/linkedMap.js @@ -26,7 +26,7 @@ export class OrderedMap { delete(key) { this.map.delete(key); - let index = this.order.indexOf(key); + const index = this.order.indexOf(key); if (index !== -1) { this.order.splice(index, 1); } diff --git a/modules/gems/shallowEqual.js b/modules/gems/shallowEqual.js index d50a39d6..cfd050eb 100644 --- a/modules/gems/shallowEqual.js +++ b/modules/gems/shallowEqual.js @@ -3,16 +3,16 @@ export default function shallowEqual(objA, objB) { return true; } - let aKeys = Object.keys(objA); - let bKeys = Object.keys(objB); - let len = aKeys.length; + const aKeys = Object.keys(objA); + const bKeys = Object.keys(objB); + const len = aKeys.length; if (bKeys.length !== len) { return false; } for (let i = 0; i < len; i++) { - let key = aKeys[i]; + const key = aKeys[i]; if (objA[key] !== objB[key]) { return false; diff --git a/modules/geom/curves/closestPoint.js b/modules/geom/curves/closestPoint.js index 0b30d215..5da5ee24 100644 --- a/modules/geom/curves/closestPoint.js +++ b/modules/geom/curves/closestPoint.js @@ -3,22 +3,22 @@ import newtonIterations, {newtonIterationsOnInterval} from './newtonIterations'; import {curveTessParams} from '../impl/curve/curve-tess'; export function closestToCurveParam(curve, pt) { - let [intMin, intMax] = findClosestToCurveInterval(curve, pt) + const [intMin, intMax] = findClosestToCurveInterval(curve, pt) return solveClosestToCurveParamExactly(curve, pt, intMin, intMax) } export function findClosestToCurveInterval(curve, pt) { - let [uMin, uMax] = curve.domain(); - let chunks = curveTessParams(curve, uMin, uMax, 10); + const [uMin, uMax] = curve.domain(); + const chunks = curveTessParams(curve, uMin, uMax, 10); let heroDist = -1; let hero = -1; for (let i = 1; i < chunks.length; ++i) { - let startParam = chunks[i - 1]; - let endParam = chunks[i]; - let a = curve.point(startParam); - let b = curve.point(endParam); + const startParam = chunks[i - 1]; + const endParam = chunks[i]; + const a = curve.point(startParam); + const b = curve.point(endParam); - let dist = distanceSqToSegment(a, b, pt); + const dist = distanceSqToSegment(a, b, pt); if (hero === -1 || dist < heroDist) { heroDist = dist; hero = i; @@ -28,17 +28,17 @@ export function findClosestToCurveInterval(curve, pt) { } function distanceSqToSegment(a, b, pt) { - let ab = vec.sub(b, a); - let test = vec.sub(pt, a); - let abLength = vec.length(ab); - let abUnit = vec._div(ab, abLength); - let proj = vec.dot(abUnit, test); + const ab = vec.sub(b, a); + const test = vec.sub(pt, a); + const abLength = vec.length(ab); + const abUnit = vec._div(ab, abLength); + const proj = vec.dot(abUnit, test); if (proj <= 0) { return vec.distanceSq(a, pt); } else if (proj >= abLength) { return vec.distanceSq(b, pt); } else { - let projV = vec._mul(abUnit, proj); + const projV = vec._mul(abUnit, proj); return vec.distanceSq(test, projV) } } @@ -56,13 +56,13 @@ export function solveClosestToCurveParamExactly(curve, pt, intMin, intMax, tol) const X=0, Y=1, Z=2; function squareDistanceFn(u) { - let [f, d1, d2] = curve.eval(u, 2); + const [f, d1, d2] = curve.eval(u, 2); - let r1Comp = i => 2 * f[i] * d1[i] - 2 * pt[i] * d1[i]; - let r2Comp = i => 2 * f[i] * d2[i] + 2 * d1[i] * d1[i] - 2 * pt[i] * d2[i]; + const r1Comp = i => 2 * f[i] * d1[i] - 2 * pt[i] * d1[i]; + const r2Comp = i => 2 * f[i] * d2[i] + 2 * d1[i] * d1[i] - 2 * pt[i] * d2[i]; - let r1 = r1Comp(X) + r1Comp(Y) + r1Comp(Z); - let r2 = r2Comp(X) + r2Comp(Y) + r2Comp(Z); + const r1 = r1Comp(X) + r1Comp(Y) + r1Comp(Z); + const r2 = r2Comp(X) + r2Comp(Y) + r2Comp(Z); return [r1, r2]; } diff --git a/modules/geom/curves/cubicHermiteIntepolation.js b/modules/geom/curves/cubicHermiteIntepolation.js index 0e540ea5..24d887cc 100644 --- a/modules/geom/curves/cubicHermiteIntepolation.js +++ b/modules/geom/curves/cubicHermiteIntepolation.js @@ -4,17 +4,17 @@ import {closestToCurveParam} from './closestPoint'; import InvertedCurve from './invertedCurve'; export default function CubicHermiteInterpolation(points, tangents) { - let n = points.length; - let knots = new Array(n).fill().map((e,i) => i); - let beziers = []; + const n = points.length; + const knots = new Array(n).fill().map((e,i) => i); + const beziers = []; for (let i = 1; i < n; i++) { - let p0 = points[i - 1]; - let p3 = points[i]; - let tangent1 = tangents[i - 1]; - let tangent2 = tangents[i]; - let length = vec.length(vec.sub(p3, p0)) * 0.5; - let p1 = vec.add(p0, vec.mul(tangent1, length)); - let p2 = vec.sub(p3, vec.mul(tangent2, length)); + const p0 = points[i - 1]; + const p3 = points[i]; + const tangent1 = tangents[i - 1]; + const tangent2 = tangents[i]; + const length = vec.length(vec.sub(p3, p0)) * 0.5; + const p1 = vec.add(p0, vec.mul(tangent1, length)); + const p2 = vec.sub(p3, vec.mul(tangent2, length)); beziers.push({p0, p1, p2, p3}); } @@ -43,9 +43,9 @@ export default function CubicHermiteInterpolation(points, tangents) { } function evaluate(u, num) { - let [pieceIndex, uL] = localizeParam(u); - let {p0, p1, p2, p3} = beziers[pieceIndex]; - let out = []; + const [pieceIndex, uL] = localizeParam(u); + const {p0, p1, p2, p3} = beziers[pieceIndex]; + const out = []; for (let i = 0; i <= num; ++i) { out.push(evalPatch(p0, p1, p2, p3, uL, i)); } @@ -53,8 +53,8 @@ export default function CubicHermiteInterpolation(points, tangents) { } function point(u) { - let [pieceIndex, uL] = localizeParam(u); - let {p0, p1, p2, p3} = beziers[pieceIndex]; + const [pieceIndex, uL] = localizeParam(u); + const {p0, p1, p2, p3} = beziers[pieceIndex]; return cubicBezierPoint(p0, p1, p2, p3, uL); } diff --git a/modules/geom/curves/frenetFrame.js b/modules/geom/curves/frenetFrame.js index a4bdbda6..3def2f15 100644 --- a/modules/geom/curves/frenetFrame.js +++ b/modules/geom/curves/frenetFrame.js @@ -2,21 +2,21 @@ import * as vec from 'math/vec'; import {perpendicularVector} from "../euclidean"; export function frenetFrame(D1, D2) { - let T = vec.normalize(D1); - let N = vec.normalize(D2); - let B = vec.cross(T, N); + const T = vec.normalize(D1); + const N = vec.normalize(D2); + const B = vec.cross(T, N); return [T, N, B]; } export function pseudoFrenetFrame(D1) { - let T = vec.normalize(D1); - let N = perpendicularVector(T); - let B = vec.cross(T, N); + const T = vec.normalize(D1); + const N = perpendicularVector(T); + const B = vec.cross(T, N); return [T, N, B]; } export function advancePseudoFrenetFrame(refFrame, T) { - let B = vec._normalize(vec.cross(T, refFrame[1])); - let N = vec.cross(B, T); + const B = vec._normalize(vec.cross(T, refFrame[1])); + const N = vec.cross(B, T); return [T, N, B]; } \ No newline at end of file diff --git a/modules/geom/curves/intersectionCurve.js b/modules/geom/curves/intersectionCurve.js index e455649a..233e6137 100644 --- a/modules/geom/curves/intersectionCurve.js +++ b/modules/geom/curves/intersectionCurve.js @@ -12,12 +12,12 @@ export class IntersectionCurve { fixDirection(exactPoints, surfaceA, surfaceB); - let tangents = []; + const tangents = []; for (let i = 0; i < exactPoints.length; i++) { - let pt = exactPoints[i]; - let auxInverse = i === exactPoints.length - 1; - let auxPt = auxInverse ? exactPoints[i - 1] : exactPoints[i + 1]; - let tangent = curveSSTangent(pt, surfaceA, surfaceB, auxPt, auxInverse); + const pt = exactPoints[i]; + const auxInverse = i === exactPoints.length - 1; + const auxPt = auxInverse ? exactPoints[i - 1] : exactPoints[i + 1]; + const tangent = curveSSTangent(pt, surfaceA, surfaceB, auxPt, auxInverse); tangents.push(tangent); } @@ -26,8 +26,8 @@ export class IntersectionCurve { this.approx = new CubicHermiteInterpolation(exactPoints, tangents); this.exactify = (pt) => { - let uvA = surfaceClosestParam(surfaceA, pt); - let uvB = surfaceClosestParam(surfaceB, pt); + const uvA = surfaceClosestParam(surfaceA, pt); + const uvB = surfaceClosestParam(surfaceB, pt); return verb.eval.Intersect.surfacesAtPointWithEstimate(surfaceA,surfaceB,uvA,uvB,TOLERANCE).point; }; @@ -42,13 +42,13 @@ export class IntersectionCurve { } eval(u, num) { - let pt = this.point(u); + const pt = this.point(u); // let [uA, vA] = surfaceClosestParam(this.surfaceA, pt); // let [uB, vB] = surfaceClosestParam(this.surfaceB, pt); - let out = []; - let approxEval = this.approx.eval(u, num); + const out = []; + const approxEval = this.approx.eval(u, num); for (let i = 0; i < num + 1; ++i) { if (i === 0) { out.push(pt); @@ -64,7 +64,7 @@ export class IntersectionCurve { } point(u) { - let pt = this.approx.point(u); + const pt = this.approx.point(u); return this.exactify(pt); } @@ -102,23 +102,23 @@ export class IntersectionCurve { } function curveSSTangent(pt, surfaceA, surfaceB, auxPt, auxInverse) { - let [uA, vA] = surfaceClosestParam(surfaceA, pt); - let [uB, vB] = surfaceClosestParam(surfaceB, pt); + const [uA, vA] = surfaceClosestParam(surfaceA, pt); + const [uB, vB] = surfaceClosestParam(surfaceB, pt); - let dA = verb.eval.Eval.rationalSurfaceDerivatives(surfaceA, uA, vA, 1); - let dB = verb.eval.Eval.rationalSurfaceDerivatives(surfaceB, uB, vB, 1); + const dA = verb.eval.Eval.rationalSurfaceDerivatives(surfaceA, uA, vA, 1); + const dB = verb.eval.Eval.rationalSurfaceDerivatives(surfaceB, uB, vB, 1); - let nA = vec.normalize(vec.cross(dA[1][0], dA[0][1])); - let nB = vec.normalize(vec.cross(dB[1][0], dB[0][1])); + const nA = vec.normalize(vec.cross(dA[1][0], dA[0][1])); + const nB = vec.normalize(vec.cross(dB[1][0], dB[0][1])); if (veq3(nA, nB)) { - let segV = vec.sub(auxPt, pt); - let dV = vec.mul(nA, - vec.dot(nA, segV)); - let projectionOntoTangentPlane = vec._add(dV, auxPt); + const segV = vec.sub(auxPt, pt); + const dV = vec.mul(nA, - vec.dot(nA, segV)); + const projectionOntoTangentPlane = vec._add(dV, auxPt); if (auxInverse) { vec._negate(projectionOntoTangentPlane); } - let estimatedTangent = vec._normalize(vec._sub(projectionOntoTangentPlane, pt)); + const estimatedTangent = vec._normalize(vec._sub(projectionOntoTangentPlane, pt)); return estimatedTangent; } else { return vec._normalize(vec.cross(nA, nB)); @@ -127,29 +127,29 @@ function curveSSTangent(pt, surfaceA, surfaceB, auxPt, auxInverse) { function fixDirection(points, surfaceA, surfaceB) { for (let i = 0; i < points.length; i++) { - let pt = points[i]; + const pt = points[i]; - let [uA, vA] = surfaceClosestParam(surfaceA, pt); - let [uB, vB] = surfaceClosestParam(surfaceB, pt); + const [uA, vA] = surfaceClosestParam(surfaceA, pt); + const [uB, vB] = surfaceClosestParam(surfaceB, pt); - let dA = verb.eval.Eval.rationalSurfaceDerivatives(surfaceA, uA, vA, 1); - let dB = verb.eval.Eval.rationalSurfaceDerivatives(surfaceB, uB, vB, 1); + const dA = verb.eval.Eval.rationalSurfaceDerivatives(surfaceA, uA, vA, 1); + const dB = verb.eval.Eval.rationalSurfaceDerivatives(surfaceB, uB, vB, 1); - let nA = vec.normalize(vec.cross(dA[1][0], dA[0][1])); - let nB = vec.normalize(vec.cross(dB[1][0], dB[0][1])); + const nA = vec.normalize(vec.cross(dA[1][0], dA[0][1])); + const nB = vec.normalize(vec.cross(dB[1][0], dB[0][1])); if (!veq3(nA, nB)) { - let tangent = vec._normalize((vec.cross(nA, nB))); - let auxInverse = i === points.length - 1; - let auxPt = auxInverse ? points[i - 1] : points[i + 1]; + const tangent = vec._normalize((vec.cross(nA, nB))); + const auxInverse = i === points.length - 1; + const auxPt = auxInverse ? points[i - 1] : points[i + 1]; - let segV = vec.sub(auxPt, pt); - let dV = vec.mul(nA, - vec.dot(nA, segV)); - let projectionOntoTangentPlane = vec._add(dV, auxPt); + const segV = vec.sub(auxPt, pt); + const dV = vec.mul(nA, - vec.dot(nA, segV)); + const projectionOntoTangentPlane = vec._add(dV, auxPt); if (auxInverse) { vec._negate(projectionOntoTangentPlane); } - let estimatedTangent = vec._normalize(vec._sub(projectionOntoTangentPlane, pt)); + const estimatedTangent = vec._normalize(vec._sub(projectionOntoTangentPlane, pt)); if (vec.dot(tangent, estimatedTangent) < 0) { points.reverse(); } diff --git a/modules/geom/curves/newtonIterations.js b/modules/geom/curves/newtonIterations.js index 145c8616..250be661 100644 --- a/modules/geom/curves/newtonIterations.js +++ b/modules/geom/curves/newtonIterations.js @@ -15,7 +15,7 @@ export default function newtonIterations(fnEval, x0, tol) { let x = x0; for (let i = 0; i < MAX_IT; i++) { - let [fValue, dValue] = fnEval(x); + const [fValue, dValue] = fnEval(x); if (Math.abs(fValue) <= tol) { return x; } @@ -31,7 +31,7 @@ export function newtonIterationsOnInterval(fnEval, a, b, tol) { let x = a + (b - a) * 0.5; for (let i = 0; i < MAX_IT; i++) { - let [fValue, dValue] = fnEval(x); + const [fValue, dValue] = fnEval(x); if (Math.abs(fValue) <= tol) { return x; } @@ -53,7 +53,7 @@ export function newtonIterationsOnIntervalExcluding(fnEval, a, b, tol) { const xFn = t => a + (b-a)/(1 + Math.exp(-t)); const xDer = t => { - let et = Math.exp(-t); + const et = Math.exp(-t); return et*(b-a)/sq(et+1); }; @@ -61,7 +61,7 @@ export function newtonIterationsOnIntervalExcluding(fnEval, a, b, tol) { let t = 0; let x = xFn(t); for (let i = 0; i < MAX_IT; i++) { - let [fValue, dValue] = fnEval(x); + const [fValue, dValue] = fnEval(x); if (Math.abs(fValue) <= tol) { return x; diff --git a/modules/geom/impl/curve/curve-tess.js b/modules/geom/impl/curve/curve-tess.js index 71bf5bef..67bd5370 100644 --- a/modules/geom/impl/curve/curve-tess.js +++ b/modules/geom/impl/curve/curve-tess.js @@ -6,12 +6,12 @@ export default function curveTess(curve, min, max, tessTol, scale) { export function curveTessParams(curve, min, max, tessTol, scale) { - let out = []; - let knots = curve.knots(); + const out = []; + const knots = curve.knots(); - let splits = [min]; + const splits = [min]; - for (let split of knots) { + for (const split of knots) { if (split > min && split < max) { splits.push(split); } @@ -20,14 +20,14 @@ export function curveTessParams(curve, min, max, tessTol, scale) { function refine(u1, u2, step) { if (step < u2 - u1) { - let mid = u1 + (u2 - u1) * 0.5; + const mid = u1 + (u2 - u1) * 0.5; refine(u1, mid, step); out.push(mid); refine(mid, u2, curveStep(curve, mid, tessTol, scale)); } } for (let i = 1; i < splits.length; ++i) { - let u1 = splits[i - 1]; + const u1 = splits[i - 1]; out.push(u1); refine(u1, splits[i], curveStep(curve, u1, tessTol, scale)); } @@ -39,16 +39,16 @@ export function curveTessParams(curve, min, max, tessTol, scale) { export function curveStep(curve, u, tessTol, scale) { tessTol = tessTol || 1; scale = scale || 1; - let ders = curve.eval(u, 2); - let r1 = ders[1]; - let r2 = ders[2]; + const ders = curve.eval(u, 2); + const r1 = ders[1]; + const r2 = ders[2]; - let r1lsq = vec.lengthSq(r1); - let r1l = Math.sqrt(r1lsq); + const r1lsq = vec.lengthSq(r1); + const r1l = Math.sqrt(r1lsq); - let r = r1lsq * r1l / vec.length(vec.cross(r1, r2)); - let tol = tessTol / scale; + const r = r1lsq * r1l / vec.length(vec.cross(r1, r2)); + const tol = tessTol / scale; - let step = 2 * Math.sqrt(tol*(2*r - tol)) / r1l; + const step = 2 * Math.sqrt(tol*(2*r - tol)) / r1l; return step; } \ No newline at end of file diff --git a/modules/geom/impl/curve/curves-isec.js b/modules/geom/impl/curve/curves-isec.js index 02dded72..829224fa 100644 --- a/modules/geom/impl/curve/curves-isec.js +++ b/modules/geom/impl/curve/curves-isec.js @@ -5,20 +5,20 @@ import {areEqual} from "math/equality"; export default function curveIntersect(curve1, curve2, isecRange1, isecRange2, tesselator) { - let result = []; - let segs1 = tesselator(curve1, isecRange1[0], isecRange1[1]); - let segs2 = tesselator(curve2, isecRange2[0], isecRange2[1]); + const result = []; + const segs1 = tesselator(curve1, isecRange1[0], isecRange1[1]); + const segs2 = tesselator(curve2, isecRange2[0], isecRange2[1]); for (let i = 0; i < segs1.length - 1; i++) { - let a1 = segs1[i]; - let b1 = segs1[i + 1]; + const a1 = segs1[i]; + const b1 = segs1[i + 1]; for (let j = 0; j < segs2.length - 1; j++) { - let a2 = segs2[j]; - let b2 = segs2[j + 1]; + const a2 = segs2[j]; + const b2 = segs2[j + 1]; - let isec = intersectSegs(a1, b1, a2, b2, TOLERANCE); + const isec = intersectSegs(a1, b1, a2, b2, TOLERANCE); if (isec !== null) { - let {point1, point2, l1, l2} = isec; + const {point1, point2, l1, l2} = isec; let u1 = curve1.param(point1); let u2 = curve2.param(point2); @@ -52,19 +52,19 @@ function curveExactIntersection(curve1, curve2, u1, u2) { return vec.lengthSq( vec.sub(curve1.point(u1), curve2.point(u2))); } function grad([u1, u2]) { - let d1 = curve1.eval( u1, 1); - let d2 = curve2.eval( u2, 1); - let r = vec.sub(d1[0], d2[0]); - let drdu = d1[1]; - let drdt = vec.mul(-1, d2[1]); + const d1 = curve1.eval( u1, 1); + const d2 = curve2.eval( u2, 1); + const r = vec.sub(d1[0], d2[0]); + const drdu = d1[1]; + const drdt = vec.mul(-1, d2[1]); return [2 * vec.dot(drdu, r), 2 * vec.dot(drdt,r)]; } - let params = [u1, u2]; + const params = [u1, u2]; return fmin_bfgs(f, params, TOLERANCE_SQ, grad).solution; } function lineLineIntersection(p1, p2, v1, v2) { - let zAx = vec.cross(v1, v2); + const zAx = vec.cross(v1, v2); const n1 = vec._normalize(vec.cross(zAx, v1)); const n2 = vec._normalize(vec.cross(zAx, v2)); return { @@ -74,18 +74,18 @@ function lineLineIntersection(p1, p2, v1, v2) { } function intersectSegs(a1, b1, a2, b2) { - let v1 = vec.sub(b1, a1); - let v2 = vec.sub(b2, a2); - let l1 = vec.length(v1); - let l2 = vec.length(v2); + const v1 = vec.sub(b1, a1); + const v2 = vec.sub(b2, a2); + const l1 = vec.length(v1); + const l2 = vec.length(v2); vec._div(v1, l1); vec._div(v2, l2); - let {u1, u2} = lineLineIntersection(a1, a2, v1, v2); - let point1 = vec.add(a1, vec.mul(v1, u1)); - let point2 = vec.add(a2, vec.mul(v2, u2)); - let p2p = vec.lengthSq(vec.sub(point1, point2)); - let eq = (a, b) => areEqual(a, b, TOLERANCE); + const {u1, u2} = lineLineIntersection(a1, a2, v1, v2); + const point1 = vec.add(a1, vec.mul(v1, u1)); + const point2 = vec.add(a2, vec.mul(v2, u2)); + const p2p = vec.lengthSq(vec.sub(point1, point2)); + const eq = (a, b) => areEqual(a, b, TOLERANCE); if (u1 !== Infinity && u2 !== Infinity && areEqual(p2p, 0, TOLERANCE_SQ) && ((u1 >0 && u1 < l1) || eq(u1, 0) || eq(u1, l1)) && ((u2 >0 && u2 < l2) || eq(u2, 0) || eq(u2, l2)) diff --git a/modules/geom/intersection/surfaceSurface.js b/modules/geom/intersection/surfaceSurface.js index dd07a91c..a6974c96 100644 --- a/modules/geom/intersection/surfaceSurface.js +++ b/modules/geom/intersection/surfaceSurface.js @@ -9,9 +9,9 @@ export function surfaceIntersect(surfaceA, surfaceB) { function fixTessNaNPoitns(s, tess) { for (let i = 0; i < tess.points.length; i++) { - let pt = tess.points[i]; + const pt = tess.points[i]; if (Number.isNaN(pt[0]) || Number.isNaN(pt[1]) || Number.isNaN(pt[2])) { - let [u, v] = tess.uvs[i]; + const [u, v] = tess.uvs[i]; tess.points[i] = verb.eval.Eval.rationalSurfacePoint(s, u, v); } } @@ -25,8 +25,8 @@ export function surfaceIntersect(surfaceA, surfaceB) { verb.eval.Intersect.surfacesAtPointWithEstimate(surfaceA, surfaceB, inter.uv0, inter.uv1, NUMERICAL_SOLVE_TOL) )); - let curves = []; - for (let pl of exactPls) { + const curves = []; + for (const pl of exactPls) { let points = pl.map(ip => ip.point); points = removeSuperfluousPoints(points, 30*30); //5*5 @@ -39,25 +39,25 @@ export function surfaceIntersect(surfaceA, surfaceB) { //it's Douglas–Peucker and it's not well suited here function removeSuperfluousPoints(points, tolSq) { - let out = []; - let stack = [[0, points.length - 1]]; + const out = []; + const stack = [[0, points.length - 1]]; out.push(points[0]); while (stack.length !== 0) { - let stackItem = stack.pop(); + const stackItem = stack.pop(); if (!Array.isArray(stackItem)) { out.push(points[stackItem]); continue; } - let [from, to] = stackItem; + const [from, to] = stackItem; let maxDistSq = tolSq; let hero = -1; - let v = vec._normalize(vec.sub(points[to], points[from])); + const v = vec._normalize(vec.sub(points[to], points[from])); for (let i = from + 1; i < to; i ++) { - let proj = vec.dot(v, vec.sub(points[i], points[from])); - let vA = vec.add(points[from], vec.mul(v, proj)); - let vX = vec.sub(points[i], vA); - let perpDistSq = vec.lengthSq(vX); + const proj = vec.dot(v, vec.sub(points[i], points[from])); + const vA = vec.add(points[from], vec.mul(v, proj)); + const vX = vec.sub(points[i], vA); + const perpDistSq = vec.lengthSq(vX); if (perpDistSq > maxDistSq) { hero = i; maxDistSq = perpDistSq; diff --git a/modules/geom/intersection/surfaceSurfaceStablePoints.js b/modules/geom/intersection/surfaceSurfaceStablePoints.js index 75cd5dab..21536a77 100644 --- a/modules/geom/intersection/surfaceSurfaceStablePoints.js +++ b/modules/geom/intersection/surfaceSurfaceStablePoints.js @@ -14,19 +14,19 @@ export function surfaceSurfaceStablePoints(surfaceA, surfaceB) { const X=0, Y=1, Z=2; function squareDistanceFn(u) { - let [f, d1, d2] = curve.eval(u, 2); + const [f, d1, d2] = curve.eval(u, 2); - let r1Comp = i => 2 * f[i] * d1[i] - 2 * f[i] * d1[i]; - let r2Comp = i => 2 * f[i] * d2[i] + 2 * d1[i] * d1[i] - 2 * f[i] * d2[i]; + const r1Comp = i => 2 * f[i] * d1[i] - 2 * f[i] * d1[i]; + const r2Comp = i => 2 * f[i] * d2[i] + 2 * d1[i] * d1[i] - 2 * f[i] * d2[i]; - let r1 = r1Comp(X) + r1Comp(Y) + r1Comp(Z); - let r2 = r2Comp(X) + r2Comp(Y) + r2Comp(Z); + const r1 = r1Comp(X) + r1Comp(Y) + r1Comp(Z); + const r2 = r2Comp(X) + r2Comp(Y) + r2Comp(Z); return [r1, r2]; } - let intMin = 0; - let intMax = 0; + const intMin = 0; + const intMax = 0; return newtonIterationsOnInterval(squareDistanceFn, intMin, intMax, 1e-5); } diff --git a/modules/geom/surfaces/nurbsTiling.js b/modules/geom/surfaces/nurbsTiling.js index a7e5021f..2ee82111 100644 --- a/modules/geom/surfaces/nurbsTiling.js +++ b/modules/geom/surfaces/nurbsTiling.js @@ -14,7 +14,7 @@ class Tree { if (this.isLeaf()) { callback(this); } else { - for (let child of this.children) { + for (const child of this.children) { child.leafs(callback); } } @@ -230,14 +230,14 @@ export function refine(tiles, opts) { } if (tile.children != null) { - for (let subTile of tile.children) { + for (const subTile of tile.children) { check(subTile, uLevel, vLevel); } } } - for (let row of tiles) { - for (let tile of row) { + for (const row of tiles) { + for (const tile of row) { check(tile, 0, 0); } } diff --git a/modules/lstream/base.js b/modules/lstream/base.js index ca189e76..1df1d805 100644 --- a/modules/lstream/base.js +++ b/modules/lstream/base.js @@ -22,7 +22,7 @@ export class StreamBase { if (!usingStream) { usingStream = StateStream; } - let stateStream = new usingStream(initialValue); + const stateStream = new usingStream(initialValue); this.attach(v => stateStream.next(v)); return stateStream; } diff --git a/modules/lstream/combine.js b/modules/lstream/combine.js index f84700a6..12041d7b 100644 --- a/modules/lstream/combine.js +++ b/modules/lstream/combine.js @@ -16,7 +16,7 @@ export class CombineStream extends StreamBase { } attach(observer) { - let detachers = new Array(this.streams.length); + const detachers = new Array(this.streams.length); this.streams.forEach((s, i) => { detachers[i] = s.attach(value => { this.values[i] = value; @@ -32,7 +32,7 @@ export class CombineStream extends StreamBase { } isReady() { - for (let val of this.values) { + for (const val of this.values) { if (val === NOT_INITIALIZED) { return false; } diff --git a/modules/lstream/merge.js b/modules/lstream/merge.js index cc448084..d61c4e6f 100644 --- a/modules/lstream/merge.js +++ b/modules/lstream/merge.js @@ -8,7 +8,7 @@ export class MergeStream extends StreamBase { } attach(observer) { - let detachers = new Array(this.streams.length); + const detachers = new Array(this.streams.length); this.streams.forEach((s, i) => { detachers[i] = s.attach(observer); }); diff --git a/modules/renders/index.js b/modules/renders/index.js index 52f85e54..8456094d 100644 --- a/modules/renders/index.js +++ b/modules/renders/index.js @@ -13,10 +13,10 @@ export function pointAsText(point) { export function renderPointImpl(point, renderer) { if (Array.isArray(point)) { - let [x, y, z] = point; + const [x, y, z] = point; return renderer(x, y, z); } else { - let {x, y, z} = point; + const {x, y, z} = point; return renderer(x, y, z); } } @@ -26,7 +26,7 @@ function toInt(num) { } const hex = v => { - let r = toInt(v) % 255; + const r = toInt(v) % 255; let s = r.toString(16); if (s.length === 1) { s = '0' + s; diff --git a/modules/scene/cameraControlRenderer.js b/modules/scene/cameraControlRenderer.js index 5b516466..d60907da 100644 --- a/modules/scene/cameraControlRenderer.js +++ b/modules/scene/cameraControlRenderer.js @@ -17,14 +17,14 @@ export default function(container) { }); } - let xAxis = createBasisArrow(AXIS.X, 0xFF0000); - let yAxis = createBasisArrow(AXIS.Y, 0x00FF00); - let zAxis = createBasisArrow(AXIS.Z, 0x0000FF); + const xAxis = createBasisArrow(AXIS.X, 0xFF0000); + const yAxis = createBasisArrow(AXIS.Y, 0x00FF00); + const zAxis = createBasisArrow(AXIS.Z, 0x0000FF); - let root = SceneGraph.createGroup(); - let csys = SceneGraph.createGroup(); + const root = SceneGraph.createGroup(); + const csys = SceneGraph.createGroup(); - let scene = new Scene(); + const scene = new Scene(); csys.add(xAxis); csys.add(yAxis); csys.add(zAxis); @@ -32,20 +32,20 @@ export default function(container) { root.add(csys); scene.add(root); - let ambientLight = new AmbientLight(0x0f0f0f); + const ambientLight = new AmbientLight(0x0f0f0f); scene.add(ambientLight); - let spotLight = new SpotLight(0xffffff); + const spotLight = new SpotLight(0xffffff); spotLight.position.set(0, 0, 5); spotLight.castShadow = true; scene.add(spotLight); - let camera = new PerspectiveCamera( 25, 1, 0.1, 2000 ); + const camera = new PerspectiveCamera( 25, 1, 0.1, 2000 ); camera.position.x = 0; camera.position.y = 0; camera.position.z = 5; - let renderer = new WebGLRenderer({ alpha: true }); + const renderer = new WebGLRenderer({ alpha: true }); renderer.setPixelRatio(DPR); // renderer.setClearColor(0x000000, 1); // renderer.setClearAlpha(0); diff --git a/modules/scene/controls/CADTrackballControls.js b/modules/scene/controls/CADTrackballControls.js index 43773054..a7cbc23d 100644 --- a/modules/scene/controls/CADTrackballControls.js +++ b/modules/scene/controls/CADTrackballControls.js @@ -12,8 +12,8 @@ export function CADTrackballControls( object, domElement ) { - let _this = this; - let STATE = { NONE: - 1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 }; + const _this = this; + const STATE = { NONE: - 1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 }; this.object = object; this.domElement = ( domElement !== undefined ) ? domElement : document; @@ -47,9 +47,9 @@ export function CADTrackballControls( object, domElement ) { this.projectionChanged = false; this.projectionZoomSpeed = 0.5; - let EPS = 0.000001; + const EPS = 0.000001; - let lastPosition = new THREE.Vector3(); + const lastPosition = new THREE.Vector3(); let _state = STATE.NONE, _prevState = STATE.NONE, @@ -79,8 +79,8 @@ export function CADTrackballControls( object, domElement ) { // events - let startEvent = { type: 'start' }; - let endEvent = { type: 'end' }; + const startEvent = { type: 'start' }; + const endEvent = { type: 'end' }; // methods @@ -96,9 +96,9 @@ export function CADTrackballControls( object, domElement ) { } else { - let box = this.domElement.getBoundingClientRect(); + const box = this.domElement.getBoundingClientRect(); // adjustments come from similar code in the jquery offset() function - let d = this.domElement.ownerDocument.documentElement; + const d = this.domElement.ownerDocument.documentElement; this.screen.left = box.left + window.pageXOffset - d.clientLeft; this.screen.top = box.top + window.pageYOffset - d.clientTop; this.screen.width = box.width; @@ -118,9 +118,9 @@ export function CADTrackballControls( object, domElement ) { }; - let getMouseOnScreen = ( function () { + const getMouseOnScreen = ( function () { - let vector = new THREE.Vector2(); + const vector = new THREE.Vector2(); return function getMouseOnScreen( pageX, pageY ) { @@ -135,9 +135,9 @@ export function CADTrackballControls( object, domElement ) { }() ); - let getMouseOnCircle = ( function () { + const getMouseOnCircle = ( function () { - let vector = new THREE.Vector2(); + const vector = new THREE.Vector2(); return function getMouseOnCircle( pageX, pageY ) { @@ -249,7 +249,7 @@ export function CADTrackballControls( object, domElement ) { this.panCamera = ( function() { - let mouseChange = new THREE.Vector2(), + const mouseChange = new THREE.Vector2(), objectUp = new THREE.Vector3(), pan = new THREE.Vector3(); diff --git a/modules/scene/objects/auxiliary.js b/modules/scene/objects/auxiliary.js index 4e2dddaf..0a8bcd32 100644 --- a/modules/scene/objects/auxiliary.js +++ b/modules/scene/objects/auxiliary.js @@ -3,7 +3,7 @@ import {ArrowHelper, CylinderBufferGeometry, Mesh, MeshBasicMaterial, Object3D, import {createMeshLineGeometry} from './meshLine'; export function createArrow(length, arrowLength, arrowHead, axis, color, opacity, materialMixins) { - let arrow = new ArrowHelper(new Vector3().copy(axis), new Vector3(0, 0, 0), length, color, arrowLength, arrowHead); + const arrow = new ArrowHelper(new Vector3().copy(axis), new Vector3(0, 0, 0), length, color, arrowLength, arrowHead); arrow.updateMatrix(); arrow.line.material.linewidth = 1 / DPR; if (opacity !== undefined) { @@ -42,11 +42,11 @@ export class MeshArrow extends Object3D { // dir is assumed to be normalized - let cone = new Mesh(tipGeometry, materialCreate({color})); + const cone = new Mesh(tipGeometry, materialCreate({color})); cone.matrixAutoUpdate = false; this.add(cone); - let line = new Mesh(lineGeometry, materialCreate({color})); + const line = new Mesh(lineGeometry, materialCreate({color})); line.matrixAutoUpdate = false; this.add(line); @@ -62,7 +62,7 @@ export class MeshArrow extends Object3D { } else if (dir.y < -0.99999) { this.quaternion.set(1, 0, 0, 0); } else { - let axis = new Vector3(); + const axis = new Vector3(); let radians; axis.set(dir.z, 0, -dir.x).normalize(); radians = Math.acos(dir.y); diff --git a/modules/scene/objects/meshLine.js b/modules/scene/objects/meshLine.js index d4ca9263..5f8c930c 100644 --- a/modules/scene/objects/meshLine.js +++ b/modules/scene/objects/meshLine.js @@ -9,11 +9,11 @@ export function createMeshLineGeometry(points, width) { let base = null; for (let i = 1; i < points.length; i++) { - let a = points[i - 1]; - let b = points[i]; - let ab = vec._normalize(vec.sub(b, a)); + const a = points[i - 1]; + const b = points[i]; + const ab = vec._normalize(vec.sub(b, a)); - let dirs = []; + const dirs = []; dirs[0] = perpendicularVector(ab); dirs[1] = vec.cross(ab, dirs[0]); dirs[2] = vec.negate(dirs[0]); @@ -23,9 +23,9 @@ export function createMeshLineGeometry(points, width) { if (base === null) { base = dirs.map(d => vec.add(a, d)); } - let lid = dirs.map(d => vec.add(b, d)); + const lid = dirs.map(d => vec.add(b, d)); - let off = vertices.length; + const off = vertices.length; base.forEach(p => vertices.push(...p)); lid.forEach(p => vertices.push(...p)); base = lid; diff --git a/modules/scene/objects/raycastabeArea.js b/modules/scene/objects/raycastabeArea.js index 4c097194..3a8c1985 100644 --- a/modules/scene/objects/raycastabeArea.js +++ b/modules/scene/objects/raycastabeArea.js @@ -11,14 +11,14 @@ export default class RaycastableArea extends Object3D { raycast(raycaster, intersects ) { //need to apply world matrix - let center = this.getCenter(); - let radius = this.getRadius(); - let ray = raycaster.ray; - let vec = this._vec; - let proj = vec.copy(center).subtract(ray.center).dot(ray.dir); + const center = this.getCenter(); + const radius = this.getRadius(); + const ray = raycaster.ray; + const vec = this._vec; + const proj = vec.copy(center).subtract(ray.center).dot(ray.dir); vec.copy(ray.dir).multiplyScalar(proj).add(ray.center); - let distSq = vec.distanceToSquared(center); + const distSq = vec.distanceToSquared(center); if (distSq <= radius * this) { intersects.push({ distance: Math.sqrt(distSq), diff --git a/modules/scene/objects/scalableLine.js b/modules/scene/objects/scalableLine.js index 740ac900..7d5467e1 100644 --- a/modules/scene/objects/scalableLine.js +++ b/modules/scene/objects/scalableLine.js @@ -52,7 +52,7 @@ function createMaterial(sceneSetup, color, width, opacity, ambient, offset) { function createGeometry(tessellation) { const positions = []; - for ( let point of tessellation ) { + for ( const point of tessellation ) { positions.push( ...point ); } const geometry = new LineGeometry(); diff --git a/modules/scene/objects/transform.js b/modules/scene/objects/transform.js index 51967986..bb7ee130 100644 --- a/modules/scene/objects/transform.js +++ b/modules/scene/objects/transform.js @@ -1,16 +1,16 @@ export function setBasisToObject3D(obj, basis, depth) { obj.matrix.identity(); - let mx = new THREE.Matrix4(); + const mx = new THREE.Matrix4(); mx.makeBasis(basis[0].three(), basis[1].three(), basis[2].three()); - let depthOff = new THREE.Vector3(0, 0, depth); + const depthOff = new THREE.Vector3(0, 0, depth); depthOff.applyMatrix4(mx); mx.setPosition(depthOff); obj.applyMatrix(mx); } export function setCadToViewMatrix(cadMatrix, threeMatrix) { - let cm = cadMatrix; + const cm = cadMatrix; threeMatrix.set( cm.mxx, cm.mxy, cm.mxz, cm.tx, cm.myx, cm.myy, cm.myz, cm.ty, diff --git a/modules/scene/scaleHelper.js b/modules/scene/scaleHelper.js index 497f5a9e..d324c6ac 100644 --- a/modules/scene/scaleHelper.js +++ b/modules/scene/scaleHelper.js @@ -2,21 +2,21 @@ import {Object3D, Vector3} from 'three'; import DPR from '../dpr'; export function viewScaleFactor(sceneSetup, origin, SIZE_PX, SIZE_MODEL) { - let container = sceneSetup.container; - let viewHeight = container.clientHeight; - let camera = sceneSetup.camera; + const container = sceneSetup.container; + const viewHeight = container.clientHeight; + const camera = sceneSetup.camera; if (camera.isOrthographicCamera) { return viewHeight / (camera.top - camera.bottom) / camera.zoom * 2 * DPR * SIZE_PX / SIZE_MODEL; } else { - let p = new Vector3().copy(origin); - let cp = new Vector3().copy(camera.position); - let z = p.sub(cp).length(); - let tanHFov = Math.atan((camera.fov / 2) / 180 * Math.PI); - let fitUnits = tanHFov * z * 2; + const p = new Vector3().copy(origin); + const cp = new Vector3().copy(camera.position); + const z = p.sub(cp).length(); + const tanHFov = Math.atan((camera.fov / 2) / 180 * Math.PI); + const fitUnits = tanHFov * z * 2; - let modelTakingPart = SIZE_MODEL / fitUnits; - let modelActualSizePx = viewHeight * modelTakingPart; + const modelTakingPart = SIZE_MODEL / fitUnits; + const modelActualSizePx = viewHeight * modelTakingPart; return SIZE_PX / modelActualSizePx; } } @@ -38,7 +38,7 @@ export class ConstantScaleGroup extends Object3D { updateMatrix() { // let {origin: o, x, y, z} = this.csys; // - let k = viewScaleFactor(this.sceneSetup, this.getOrigin(), this.sizePx, this.sizeModel); + const k = viewScaleFactor(this.sceneSetup, this.getOrigin(), this.sizePx, this.sizeModel); this.scale.set(k,k,k); super.updateMatrix(); diff --git a/modules/scene/sceneGraph.js b/modules/scene/sceneGraph.js index 104478c9..2fd71785 100644 --- a/modules/scene/sceneGraph.js +++ b/modules/scene/sceneGraph.js @@ -33,7 +33,7 @@ export function clearGroup(group) { export function findAncestor( obj, predicate, includeItself ) { - let parent = includeItself ? obj : obj.parent; + const parent = includeItself ? obj : obj.parent; if ( parent !== null ) { if (predicate(parent)) { return parent; diff --git a/modules/ui/components/AdjustableAbs.jsx b/modules/ui/components/AdjustableAbs.jsx index d09e1e8b..da6c8c2d 100644 --- a/modules/ui/components/AdjustableAbs.jsx +++ b/modules/ui/components/AdjustableAbs.jsx @@ -13,9 +13,9 @@ export class Adjuster extends React.Component { if (!this.el) { return; } - let w = this.el.clientWidth; - let h = this.el.clientHeight; - let holder = document.documentElement; + const w = this.el.clientWidth; + const h = this.el.clientHeight; + const holder = document.documentElement; const fit = (prop, pos, dim, holderDim) => { if (pos !== undefined) { @@ -59,7 +59,7 @@ export class Adjuster extends React.Component { } render() { - let {left, top, right, bottom, children, style, zIndex, visible, centered, ...props} = this.props; + const {left, top, right, bottom, children, style, zIndex, visible, centered, ...props} = this.props; return
this.el = el} style={{ visibility: 'hidden', diff --git a/modules/ui/components/Folder.jsx b/modules/ui/components/Folder.jsx index 6f3bb0d9..22b5af30 100644 --- a/modules/ui/components/Folder.jsx +++ b/modules/ui/components/Folder.jsx @@ -9,7 +9,7 @@ export function InnerFolder(props) { const [closed, setClosed] = useState(null) function isClosed(){ - let {closable, defaultClosed} = props; + const {closable, defaultClosed} = props; if (!closable) return false; return closable && (closed === null ? defaultClosed : closed) } diff --git a/modules/ui/components/Menu.jsx b/modules/ui/components/Menu.jsx index 20921e5b..57a0a721 100644 --- a/modules/ui/components/Menu.jsx +++ b/modules/ui/components/Menu.jsx @@ -37,7 +37,7 @@ export function MenuItem({icon, label, hotKey, style, disabled, onClick, childre hotKey = null; } } - let clickHandler = disabled ? undefined : (e) => { + const clickHandler = disabled ? undefined : (e) => { closeAllUpPopups(); onClick(e); }; diff --git a/modules/ui/components/Section.jsx b/modules/ui/components/Section.jsx index 8be6ab45..530c1448 100644 --- a/modules/ui/components/Section.jsx +++ b/modules/ui/components/Section.jsx @@ -14,8 +14,8 @@ export class Section extends React.PureComponent { } render() { - let {label, nonClosable, children} = this.props; - let closed = this.isClosed(); + const {label, nonClosable, children} = this.props; + const closed = this.isClosed(); return { tabs =>
@@ -34,7 +34,7 @@ export class Section extends React.PureComponent { } isClosed() { - let {nonClosable} = this.props; + const {nonClosable} = this.props; if (nonClosable) return false; return this.state.closed; } diff --git a/modules/ui/components/controls/CheckboxControl.jsx b/modules/ui/components/controls/CheckboxControl.jsx index 7353db42..5913ab8c 100644 --- a/modules/ui/components/controls/CheckboxControl.jsx +++ b/modules/ui/components/controls/CheckboxControl.jsx @@ -2,7 +2,7 @@ import React, {useContext} from 'react'; import {FieldId} from "ui/components/controls/Field"; export default function CheckboxControl(props) { - let {onChange, value} = props; + const {onChange, value} = props; const fieldId = useContext(FieldId); return { onChange(e.target.value); }; const onWheel = (e) => { - let delta = e.shiftKey ? e.deltaX : e.deltaY; - let step = baseStep * (e.shiftKey ? accelerator : 1); + const delta = e.shiftKey ? e.deltaX : e.deltaY; + const step = baseStep * (e.shiftKey ? accelerator : 1); let val = parseFloat(e.target.value); if (isNaN(val)) val = 0; val = val + (delta < 0 ? -step : step); diff --git a/modules/ui/components/controls/RadioButtons.jsx b/modules/ui/components/controls/RadioButtons.jsx index abaf1dde..f240fc23 100644 --- a/modules/ui/components/controls/RadioButtons.jsx +++ b/modules/ui/components/controls/RadioButtons.jsx @@ -21,7 +21,7 @@ export default class RadioButtons extends React.Component { } export function RadioButton({value, label}, {radioButtonsGroupName, radioButtonsValue, radioButtonsOnChange}) { - let onChange = e => { + const onChange = e => { radioButtonsOnChange(e.target.value) }; label = label || value; diff --git a/modules/ui/components/controls/ReadOnlyValueControl.jsx b/modules/ui/components/controls/ReadOnlyValueControl.jsx index 782ad4c6..e4f66c70 100644 --- a/modules/ui/components/controls/ReadOnlyValueControl.jsx +++ b/modules/ui/components/controls/ReadOnlyValueControl.jsx @@ -3,7 +3,7 @@ import React from 'react'; export default class ReadOnlyValueControl extends React.Component { render() { - let {value, placeholder} = this.props; + const {value, placeholder} = this.props; return {value||placeholder}; } } diff --git a/modules/ui/components/controls/TextControl.jsx b/modules/ui/components/controls/TextControl.jsx index 2379eb03..32758099 100644 --- a/modules/ui/components/controls/TextControl.jsx +++ b/modules/ui/components/controls/TextControl.jsx @@ -5,7 +5,7 @@ import InputControl from './InputControl'; export default class TextControl extends React.Component { render() { - let {onChange, value, onFocus} = this.props; + const {onChange, value, onFocus} = this.props; return onChange(e.target.value)} onFocus={onFocus} /> diff --git a/modules/ui/connect.js b/modules/ui/connect.js index be536f20..a79005fe 100644 --- a/modules/ui/connect.js +++ b/modules/ui/connect.js @@ -8,7 +8,7 @@ export default function connect(streamProvider) { state = {hasError: false, streamProps: {}}; UNSAFE_componentWillMount() { - let stream = streamProvider(context.streams, this.props); + const stream = streamProvider(context.streams, this.props); this.detacher = stream.attach(data => { this.setState({ hasError: false, diff --git a/modules/ui/decoratorChain.js b/modules/ui/decoratorChain.js index 4ee20e46..6df58bc7 100644 --- a/modules/ui/decoratorChain.js +++ b/modules/ui/decoratorChain.js @@ -1,5 +1,5 @@ export default function decoratorChain() { - let decorators = Array.from(arguments); + const decorators = Array.from(arguments); return function(Component) { for (let i = decorators.length - 1; i >= 0; i --) { Component = decorators[i](Component); diff --git a/modules/ui/mapContext.js b/modules/ui/mapContext.js index 9715dd20..810775ac 100644 --- a/modules/ui/mapContext.js +++ b/modules/ui/mapContext.js @@ -4,7 +4,7 @@ import context from 'cad/context'; export default function mapContext(mapper) { return function (Component) { return function ContextMapper(props) { - let actions = mapper(context, props); + const actions = mapper(context, props); return } } diff --git a/modules/ui/positionUtils.js b/modules/ui/positionUtils.js index e7c095a1..532446da 100644 --- a/modules/ui/positionUtils.js +++ b/modules/ui/positionUtils.js @@ -1,5 +1,5 @@ export function aboveElement(el) { - let r = el.getBoundingClientRect(); + const r = el.getBoundingClientRect(); return { x: r.left, y: r.top diff --git a/web/app/cad/actions/anonHint.js b/web/app/cad/actions/anonHint.js index fe5c2c15..77a53fb7 100644 --- a/web/app/cad/actions/anonHint.js +++ b/web/app/cad/actions/anonHint.js @@ -2,7 +2,7 @@ export function enableAnonymousActionHint(ctx) { return function(actionId) { const {services, actionService} = ctx; - let {left, top} = services.dom.viewerContainer.getBoundingClientRect(); + const {left, top} = services.dom.viewerContainer.getBoundingClientRect(); actionService.showHintFor({ actionId, x: left + 100, @@ -10,7 +10,7 @@ export function enableAnonymousActionHint(ctx) { requester: 'anonymous' }); setTimeout(() => { - let value = actionService.hint$.value; + const value = actionService.hint$.value; if (value && value.requester !== 'anonymous') { actionService.showHintFor(null); } diff --git a/web/app/cad/actions/coreActions.js b/web/app/cad/actions/coreActions.js index 4287f254..7cac581e 100644 --- a/web/app/cad/actions/coreActions.js +++ b/web/app/cad/actions/coreActions.js @@ -136,7 +136,7 @@ export default [ info: 'switch camera mode between perspective and orthographic', }, invoke: context => { - let viewer = context.services.viewer; + const viewer = context.services.viewer; viewer.toggleCamera(); viewer.render(); } diff --git a/web/app/cad/actions/usabilityActions.js b/web/app/cad/actions/usabilityActions.js index 1469040f..47ea7166 100644 --- a/web/app/cad/actions/usabilityActions.js +++ b/web/app/cad/actions/usabilityActions.js @@ -10,13 +10,13 @@ const DIR_3_WAY_VIEW = new Vector(1, 1, 1).normalize(); const DIR_3_WAY_BACK_VIEW = new Vector(-1, 1, -1).normalize(); export function lookAtFace(viewer, face, currFace) { - let dist = currFace ? currFace.csys.origin.distanceTo(viewer.sceneSetup.camera.position) : undefined; + const dist = currFace ? currFace.csys.origin.distanceTo(viewer.sceneSetup.camera.position) : undefined; viewer.lookAt(face.csys.origin, face.csys.z, face.csys.y, dist); viewer.requestRender(); } function faceAt(shells, shell, pos) { - let shellIndex = shells.indexOf(shell); + const shellIndex = shells.indexOf(shell); if (pos >= shell.faces.length) { let i = shellIndex; do { @@ -37,9 +37,9 @@ function faceAt(shells, shell, pos) { } function getCurrentSelectedOrFirstFace(ctx) { - let face = ctx.services.selection.face.single; + const face = ctx.services.selection.face.single; if (!face) { - for (let shell of ctx.services.cadRegistry.shells) { + for (const shell of ctx.services.cadRegistry.shells) { if (shell.faces.length !== 0) { return shell.faces[0]; } @@ -72,7 +72,7 @@ export default [ }, invoke: ctx => { - let face = ctx.services.selection.face.single; + const face = ctx.services.selection.face.single; if (face) { lookAtFace(ctx.services.viewer, face); } @@ -81,10 +81,10 @@ export default [ { id: 'CycleFacesNext', invoke: ctx => { - let face = getCurrentSelectedOrFirstFace(ctx); + const face = getCurrentSelectedOrFirstFace(ctx); if (face) { - let index = face.shell.faces.indexOf(face); - let nextFace = faceAt(ctx.services.cadRegistry.shells, face.shell, index + 1); + const index = face.shell.faces.indexOf(face); + const nextFace = faceAt(ctx.services.cadRegistry.shells, face.shell, index + 1); ctx.services.pickControl.pick(nextFace); lookAtFace(ctx.services.viewer, nextFace, face); } @@ -93,10 +93,10 @@ export default [ { id: 'CycleFacesPrev', invoke: ctx => { - let face = getCurrentSelectedOrFirstFace(ctx); + const face = getCurrentSelectedOrFirstFace(ctx); if (face) { - let index = face.shell.faces.indexOf(face); - let prevFace = faceAt(ctx.services.cadRegistry.shells, face.shell, index - 1); + const index = face.shell.faces.indexOf(face); + const prevFace = faceAt(ctx.services.cadRegistry.shells, face.shell, index - 1); ctx.services.pickControl.pick(prevFace); lookAtFace(ctx.services.viewer, prevFace, face); } diff --git a/web/app/cad/cad-utils.js b/web/app/cad/cad-utils.js index 570163cb..f16b1578 100644 --- a/web/app/cad/cad-utils.js +++ b/web/app/cad/cad-utils.js @@ -71,15 +71,15 @@ export function createPoint0(x, y, z) { // return line; material = new THREE.SpriteMaterial( { color: 0xffffff, fog: false } ); - let sprite = new THREE.Sprite( material ); + const sprite = new THREE.Sprite( material ); sprite.position.set( x, y, z ); return sprite; } export function createPoint1(x, y, z) { - let geometry = new THREE.SphereGeometry( 5, 16, 16 ); - let material = new THREE.MeshBasicMaterial( {color: 0xff0000} ); - let sphere = new THREE.Mesh(geometry, material); + const geometry = new THREE.SphereGeometry( 5, 16, 16 ); + const material = new THREE.MeshBasicMaterial( {color: 0xff0000} ); + const sphere = new THREE.Mesh(geometry, material); sphere.position.x = x; sphere.position.y = y; sphere.position.z = z; @@ -87,7 +87,7 @@ export function createPoint1(x, y, z) { } export function createLine(a, b, color) { - let material = new THREE.LineBasicMaterial({ + const material = new THREE.LineBasicMaterial({ color: color, linewidth: 1 }); @@ -113,16 +113,16 @@ export function createSolidMaterial() { } export function intercept(obj, methodName, aspect) { - let originFunc = obj[methodName]; + const originFunc = obj[methodName]; obj[methodName] = function() { - let $this = this; + const $this = this; aspect(function() {originFunc.apply($this, arguments)}, arguments); } } export function fixCCW(path, normal) { - let _2DTransformation = new Matrix3x4().setBasis(someBasis(path, normal)).invert(); - let path2D = []; + const _2DTransformation = new Matrix3x4().setBasis(someBasis(path, normal)).invert(); + const path2D = []; for (let i = 0; i < path.length; ++i) { path2D[i] = _2DTransformation.apply(path[i]); } @@ -135,27 +135,27 @@ export function fixCCW(path, normal) { } export function someBasis2(normal) { - let x = normal.cross(normal.randomNonParallelVector()); - let y = normal.cross(x).unit(); + const x = normal.cross(normal.randomNonParallelVector()); + const y = normal.cross(x).unit(); return [x, y, normal]; } export function someBasis(twoPointsOnPlane, normal) { - let a = twoPointsOnPlane[0]; - let b = twoPointsOnPlane[1]; + const a = twoPointsOnPlane[0]; + const b = twoPointsOnPlane[1]; - let x = b.minus(a).normalize(); - let y = normal.cross(x).normalize(); + const x = b.minus(a).normalize(); + const y = normal.cross(x).normalize(); return [x, y, normal]; } export function normalOfCCWSeq(ccwSequence) { - let a = ccwSequence[0]; - let b = ccwSequence[1]; + const a = ccwSequence[0]; + const b = ccwSequence[1]; for (let i = 2; i < ccwSequence.length; ++i) { - let c = ccwSequence[i]; - let normal = b.minus(a).cross(c.minus(a)).normalize(); + const c = ccwSequence[i]; + const normal = b.minus(a).cross(c.minus(a)).normalize(); if (!equal(normal.length(), 0)) { return normal; } @@ -164,37 +164,37 @@ export function normalOfCCWSeq(ccwSequence) { } export function normalOfCCWSeqTHREE(ccwSequence) { - let a = ccwSequence[0]; - let b = ccwSequence[1].clone(); - let c = ccwSequence[2].clone(); + const a = ccwSequence[0]; + const b = ccwSequence[1].clone(); + const c = ccwSequence[2].clone(); return b.sub(a).cross(c.sub(a)).normalize(); } export function calculateExtrudedLid(sourcePolygon, normal, direction, expansionFactor) { - let lid = []; - let length = sourcePolygon.length; + const lid = []; + const length = sourcePolygon.length; let work; let si; if (!!expansionFactor && expansionFactor != 1) { if (expansionFactor < 0.001) expansionFactor = 0.0001; - let source2d = []; + const source2d = []; work = []; - let _3dTr = new Matrix3x4().setBasis(someBasis2(new CSG.Vector3D(normal))); // use passed basis - let _2dTr = _3dTr.invert(); - let sourceBBox = new BBox(); - let workBBox = new BBox(); + const _3dTr = new Matrix3x4().setBasis(someBasis2(new CSG.Vector3D(normal))); // use passed basis + const _2dTr = _3dTr.invert(); + const sourceBBox = new BBox(); + const workBBox = new BBox(); for (si = 0; si < length; ++si) { - let sourcePoint = _2dTr.apply(sourcePolygon[si]); + const sourcePoint = _2dTr.apply(sourcePolygon[si]); source2d[si] = sourcePoint; work[si] = sourcePoint.multiply(expansionFactor); work[si].z = source2d[si].z = 0; sourceBBox.checkBounds(sourcePoint.x, sourcePoint.y); workBBox.checkBounds(work[si].x, work[si].y) } - let alignVector = workBBox.center().minus(sourceBBox.center()); - let depth = normal.dot(sourcePolygon[0]); + const alignVector = workBBox.center().minus(sourceBBox.center()); + const depth = normal.dot(sourcePolygon[0]); for (si = 0; si < length; ++si) { work[si] = work[si].minus(alignVector); work[si].z = depth; @@ -212,14 +212,14 @@ export function calculateExtrudedLid(sourcePolygon, normal, direction, expansion } export function triangulate(path, normal) { - let _3dTransformation = new Matrix3x4().setBasis(someBasis2(normal)); - let _2dTransformation = _3dTransformation.invert(); + const _3dTransformation = new Matrix3x4().setBasis(someBasis2(normal)); + const _2dTransformation = _3dTransformation.invert(); let i; - let shell = []; + const shell = []; for (i = 0; i < path.length; ++i) { shell[i] = _2dTransformation.apply(path[i].pos); } - let myTriangulator = new PNLTRI.Triangulator(); + const myTriangulator = new PNLTRI.Triangulator(); return myTriangulator.triangulate_polygon( [ shell ] ); // return THREE.Shape.utils.triangulateShape( f2d.shell, f2d.holes ); } @@ -246,7 +246,7 @@ export function Polygon(shell, holes, normal) { } else { shell = fixCCW(shell, normal); if (holes.length > 0) { - let neg = normal.negate(); + const neg = normal.negate(); for (h = 0; h < holes.length; ++h) { holes[h] = fixCCW(holes[h], neg); } @@ -260,7 +260,7 @@ export function Polygon(shell, holes, normal) { } Polygon.prototype.reverse = function(triangle) { - let first = triangle[0]; + const first = triangle[0]; triangle[0] = triangle[2]; triangle[2] = first; }; @@ -270,12 +270,12 @@ Polygon.prototype.flip = function() { }; Polygon.prototype.shift = function(target) { - let shell = []; + const shell = []; let i; for (i = 0; i < this.shell.length; ++i) { shell[i] = this.shell[i].plus(target); } - let holes = []; + const holes = []; for (let h = 0; h < this.holes.length; ++h) { holes[h] = []; for (i = 0; i < this.holes[h].length; ++i) { @@ -286,18 +286,18 @@ Polygon.prototype.shift = function(target) { }; Polygon.prototype.get2DTransformation = function() { - let _3dTransformation = new Matrix3x4().setBasis(someBasis(this.shell, this.normal)); - let _2dTransformation = _3dTransformation.invert(); + const _3dTransformation = new Matrix3x4().setBasis(someBasis(this.shell, this.normal)); + const _2dTransformation = _3dTransformation.invert(); return _2dTransformation; }; Polygon.prototype.to2D = function() { - let _2dTransformation = this.get2DTransformation(); + const _2dTransformation = this.get2DTransformation(); let i, h; - let shell = []; - let holes = []; + const shell = []; + const holes = []; for (i = 0; i < this.shell.length; ++i) { shell[i] = _2dTransformation.apply(this.shell[i]); } @@ -318,12 +318,12 @@ Polygon.prototype.collectPaths = function(paths) { Polygon.prototype.triangulate = function() { function triangulateShape( contour, holes ) { - let myTriangulator = new PNLTRI.Triangulator(); + const myTriangulator = new PNLTRI.Triangulator(); return myTriangulator.triangulate_polygon( [ contour ].concat(holes) ); } let i, h; - let f2d = this.to2D(); + const f2d = this.to2D(); for (i = 0; i < f2d.shell.length; ++i) { f2d.shell[i] = f2d.shell[i].three(); @@ -357,8 +357,8 @@ export function Sketch() { export function iteratePath(path, shift, callback) { let p, q, n = path.length; for (p = n - 1,q = 0;q < n; p = q++) { - let ai = (p + shift) % n; - let bi = (q + shift) % n; + const ai = (p + shift) % n; + const bi = (q + shift) % n; if (!callback(path[ai], path[bi], ai, bi, q, path)) { break } @@ -372,7 +372,7 @@ export function addAll(arr, arrToAdd) { } export function arrFlatten1L(arr) { - let result = []; + const result = []; for (let i = 0; i < arr.length; i++) { addAll(result, arr[i]); } diff --git a/web/app/cad/craft/booleanOperation.js b/web/app/cad/craft/booleanOperation.js index 85273dbe..701c9ff7 100644 --- a/web/app/cad/craft/booleanOperation.js +++ b/web/app/cad/craft/booleanOperation.js @@ -15,7 +15,7 @@ export function BooleanOperation(face, solid, operand, operationType) { if (solid instanceof MBrepShell) { const op = BoolOpMap[operationType]; result = op(solid.shell, operand); - for (let newFace of result.faces) { + for (const newFace of result.faces) { if (newFace.id === face.id) { newFace.id = undefined; } diff --git a/web/app/cad/craft/craftHistoryUtils.js b/web/app/cad/craft/craftHistoryUtils.js index 23cbd0c8..f9747da8 100644 --- a/web/app/cad/craft/craftHistoryUtils.js +++ b/web/app/cad/craft/craftHistoryUtils.js @@ -1,6 +1,6 @@ export function addModification({history, pointer}, request) { - let changingHistory = pointer !== history.length - 1; + const changingHistory = pointer !== history.length - 1; if (changingHistory) { history = [ ...history.slice(0, pointer+1), diff --git a/web/app/cad/craft/datum/create/createDatumOperation.js b/web/app/cad/craft/datum/create/createDatumOperation.js index 0cfb24a8..fb7d0a3f 100644 --- a/web/app/cad/craft/datum/create/createDatumOperation.js +++ b/web/app/cad/craft/datum/create/createDatumOperation.js @@ -19,7 +19,7 @@ function updateCSys(csys, params, findFace) { } (params.rotations||[]).forEach(r => { - let axis = csys[r.axis.toLowerCase()]; + const axis = csys[r.axis.toLowerCase()]; applyRotation(csys, csys, r.angle, axis); }); @@ -30,7 +30,7 @@ function updateCSys(csys, params, findFace) { } function create(params, {cadRegistry}) { - let csys = CSys.origin(); + const csys = CSys.origin(); updateCSys(csys, params, cadRegistry.findFace); return { @@ -41,7 +41,7 @@ function create(params, {cadRegistry}) { function previewer(ctx, initialParams, updateParams) { - let datum3D = new DatumObject3D(CSys.origin(), ctx.services.viewer); + const datum3D = new DatumObject3D(CSys.origin(), ctx.services.viewer); datum3D.onMove = (begin, end, delta) => { updateParams(params => { @@ -50,7 +50,7 @@ function previewer(ctx, initialParams, updateParams) { let y = end.y; let z = end.z; if (params.originatingFace) { - let face = ctx.services.cadRegistry.findFace(params.originatingFace); + const face = ctx.services.cadRegistry.findFace(params.originatingFace); if (face) { x -= face.csys.origin.x; y -= face.csys.origin.y; diff --git a/web/app/cad/craft/datum/csysObject.js b/web/app/cad/craft/datum/csysObject.js index 3fcb5651..2f092bee 100644 --- a/web/app/cad/craft/datum/csysObject.js +++ b/web/app/cad/craft/datum/csysObject.js @@ -12,7 +12,7 @@ export default class CSysObject3D extends Object3D { this.sceneSetup = sceneSetup; function createBasisArrow(name, axis, color) { - let meshArrow = new MeshArrow({ + const meshArrow = new MeshArrow({ dir: axis, color, length: CSYS_SIZE_MODEL, @@ -36,9 +36,9 @@ export default class CSysObject3D extends Object3D { } updateMatrix() { - let {origin: o, x, y, z} = this.csys; + const {origin: o, x, y, z} = this.csys; - let k = viewScaleFactor(this.sceneSetup, this.csys.origin, SIZE_PX, CSYS_SIZE_MODEL); + const k = viewScaleFactor(this.sceneSetup, this.csys.origin, SIZE_PX, CSYS_SIZE_MODEL); this.matrix.set( k*x.x, k*y.x, k*z.x, o.x, k*x.y, k*y.y, k*z.y, o.y, diff --git a/web/app/cad/craft/datum/datumObject.js b/web/app/cad/craft/datum/datumObject.js index 7ecb7b60..09029047 100644 --- a/web/app/cad/craft/datum/datumObject.js +++ b/web/app/cad/craft/datum/datumObject.js @@ -53,7 +53,7 @@ export default class DatumObject3D extends Object3D { this.beingDraggedAxis = dir; - let ext = dir.multiply(this.viewer.sceneSetup.workingSphere); + const ext = dir.multiply(this.viewer.sceneSetup.workingSphere); const material = new LineBasicMaterial({color}); const geometry = new BufferGeometry().setFromPoints( [ @@ -61,7 +61,7 @@ export default class DatumObject3D extends Object3D { new Vector3().copy(this.csys.origin.plus(ext)) ]); - let line = new Line(geometry, material); + const line = new Line(geometry, material); this.add(line); this.exitEditMode = () => { @@ -96,23 +96,23 @@ export default class DatumObject3D extends Object3D { dragMove({mouseEvent: e}) { if (this.beingDraggedAxis) { - let dir = this.beingDraggedAxis; + const dir = this.beingDraggedAxis; - let traveledX = e.offsetX - this.dragInfo.startX; - let traveledY = e.offsetY - this.dragInfo.startY; + const traveledX = e.offsetX - this.dragInfo.startX; + const traveledY = e.offsetY - this.dragInfo.startY; - let raycaster = this.viewer.sceneSetup.createRaycaster(this.dragInfo.originViewCoord.x + traveledX, this.dragInfo.originViewCoord.y + traveledY); + const raycaster = this.viewer.sceneSetup.createRaycaster(this.dragInfo.originViewCoord.x + traveledX, this.dragInfo.originViewCoord.y + traveledY); this.csys.origin.setV(this.dragInfo.csysOrigin); //see nurbs-ext - rays intersection - let zRef = dir.cross(raycaster.ray.direction); + const zRef = dir.cross(raycaster.ray.direction); - let n2 = zRef.cross(raycaster.ray.direction)._normalize(); + const n2 = zRef.cross(raycaster.ray.direction)._normalize(); - let u = n2.dot(this.csys.origin.minus(raycaster.ray.origin)._negate()) / n2.dot(dir); + const u = n2.dot(this.csys.origin.minus(raycaster.ray.origin)._negate()) / n2.dot(dir); - let delta = dir.multiply(u); + const delta = dir.multiply(u); this.csys.origin._plus(delta); if (e.shiftKey) { @@ -141,7 +141,7 @@ export default class DatumObject3D extends Object3D { function addOnHoverBehaviour(handle, viewer) { handle.onMouseDown = function(e) { - let datum = this.parent.parent.parent; + const datum = this.parent.parent.parent; if (datum.freezeDragging) { return; } @@ -149,8 +149,8 @@ function addOnHoverBehaviour(handle, viewer) { datum.dragStart(e.mouseEvent, this.parent); }; - let defaultColor = handle.material.color.getHex(); - let setColor = createExpensiveSetter(color => handle.material.color.setHex(color)); + const defaultColor = handle.material.color.getHex(); + const setColor = createExpensiveSetter(color => handle.material.color.setHex(color)); const handleState = createReactiveState({ selected: null, diff --git a/web/app/cad/craft/datum/move/moveDatumOperation.js b/web/app/cad/craft/datum/move/moveDatumOperation.js index 1c8e33b8..d89d7df7 100644 --- a/web/app/cad/craft/datum/move/moveDatumOperation.js +++ b/web/app/cad/craft/datum/move/moveDatumOperation.js @@ -9,9 +9,9 @@ import {DatumParamsRenderer} from '../DatumParamsRenderer'; function move(params, {cadRegistry}) { - let mDatum = cadRegistry.findDatum(params.datum); + const mDatum = cadRegistry.findDatum(params.datum); - let csys = mDatum.csys.clone(); + const csys = mDatum.csys.clone(); csys.origin.x += params.x; csys.origin.y += params.y; csys.origin.z += params.z; @@ -24,16 +24,16 @@ function move(params, {cadRegistry}) { function previewer(ctx, initialParams, updateParams) { - let mDatum = ctx.services.cadRegistry.findDatum(initialParams.datum); + const mDatum = ctx.services.cadRegistry.findDatum(initialParams.datum); if (!mDatum) { return null; } - let view = mDatum.ext.view; + const view = mDatum.ext.view; if (!view) { return null; } - let datum3D = view.rootGroup; + const datum3D = view.rootGroup; datum3D.beginOperation(); datum3D.onMove = (begin, end, delta) => { updateParams(params => { diff --git a/web/app/cad/craft/datum/rotate/rotateDatumOperation.js b/web/app/cad/craft/datum/rotate/rotateDatumOperation.js index f2383b8d..f78b4452 100644 --- a/web/app/cad/craft/datum/rotate/rotateDatumOperation.js +++ b/web/app/cad/craft/datum/rotate/rotateDatumOperation.js @@ -8,11 +8,11 @@ import {ORIGIN} from "math/vector"; function rotate(params, {cadRegistry}) { - let mDatum = cadRegistry.findDatum(params.datum); + const mDatum = cadRegistry.findDatum(params.datum); - let axis = mDatum.csys[params.axis.toLowerCase()]; + const axis = mDatum.csys[params.axis.toLowerCase()]; - let csys = mDatum.csys.clone(); + const csys = mDatum.csys.clone(); applyRotation(mDatum.csys, csys, params.angle, axis); @@ -22,25 +22,25 @@ function rotate(params, {cadRegistry}) { } } -let auxMatrix = new Matrix3x4(); +const auxMatrix = new Matrix3x4(); function previewer(ctx, initialParams) { - let mDatum = ctx.services.cadRegistry.findDatum(initialParams.datum); + const mDatum = ctx.services.cadRegistry.findDatum(initialParams.datum); if (!mDatum) { return null; } - let view = mDatum.ext.view; + const view = mDatum.ext.view; if (!view) { return null; } - let datum3D = view.rootGroup; + const datum3D = view.rootGroup; datum3D.beginOperation(true); function update(params) { - let axis = mDatum.csys[params.axis.toLowerCase()]; + const axis = mDatum.csys[params.axis.toLowerCase()]; applyRotation(mDatum.csys, datum3D.csys, params.angle, axis); } diff --git a/web/app/cad/craft/e0/common.js b/web/app/cad/craft/e0/common.js index d281dd9f..7777996c 100644 --- a/web/app/cad/craft/e0/common.js +++ b/web/app/cad/craft/e0/common.js @@ -8,8 +8,8 @@ export function singleShellRespone(oldShell, newShellData) { throw 'operation failed'; } - let consumed = [oldShell]; - let created = readShellData(newShellData, consumed, oldShell.csys); + const consumed = [oldShell]; + const created = readShellData(newShellData, consumed, oldShell.csys); return { consumed: consumed, created: [created] @@ -17,29 +17,29 @@ export function singleShellRespone(oldShell, newShellData) { } export function readShellData(data, consumed, csys) { - let exposure = __CAD_APP.services.exposure; - let model = new exposure.scene.readShellEntityFromJson(data, consumed, csys); + const exposure = __CAD_APP.services.exposure; + const model = new exposure.scene.readShellEntityFromJson(data, consumed, csys); model.brepShell.data.externals.engine = 'e0'; return model; } export function managedByE0(mShell) { - let externals = mShell.brepShell && mShell.brepShell.data && mShell.brepShell.data.externals; + const externals = mShell.brepShell && mShell.brepShell.data && mShell.brepShell.data.externals; return externals && externals.engine === 'e0'; } export function readSketchContour(contour, face) { - let tr = face.csys.outTransformation; - let path = []; + const tr = face.csys.outTransformation; + const path = []; contour.segments.forEach(s => { if (s.isCurve) { if (s.constructor.name === 'Circle') { const dir = face.csys.z.data(); path.push({TYPE: PRIMITIVE_TYPES.CIRCLE, c: tr.apply(s.c).data(), dir, r: s.r}); } else if (s.constructor.name === 'Arc') { - let a = s.inverted ? s.b : s.a; - let b = s.inverted ? s.a : s.b; - let tangent = tr._apply(s.c.minus(a))._cross(face.csys.z)._normalize(); + const a = s.inverted ? s.b : s.a; + const b = s.inverted ? s.a : s.b; + const tangent = tr._apply(s.c.minus(a))._cross(face.csys.z)._normalize(); if (s.inverted) { tangent._negate(); } @@ -50,7 +50,7 @@ export function readSketchContour(contour, face) { tangent: tangent.data() }); } else { - let nurbs = s.toNurbs(face.csys).impl; + const nurbs = s.toNurbs(face.csys).impl; path.push(Object.assign({TYPE: PRIMITIVE_TYPES.B_SPLINE}, nurbs.serialize())); } } else { @@ -67,7 +67,7 @@ export function readSketchContour(contour, face) { } export function readSketch(face, request, sketchStorageService) { - let sketch = sketchStorageService.readSketch(face.id); + const sketch = sketchStorageService.readSketch(face.id); if (!sketch) throw 'sketch not found for the face ' + face.id; return sketch.fetchContours().map(c => readSketchContour(c, face)); } diff --git a/web/app/cad/craft/e0/interact.js b/web/app/cad/craft/e0/interact.js index 722ba6bf..1d976ad7 100644 --- a/web/app/cad/craft/e0/interact.js +++ b/web/app/cad/craft/e0/interact.js @@ -1,22 +1,22 @@ export function toCString(str) { - let buffer = _malloc(str.length + 1); + const buffer = _malloc(str.length + 1); writeAsciiToMemory(str, buffer); return buffer; } export function CallCommand(command, args) { - let c_strings = args.map(x => toCString(x)); + const c_strings = args.map(x => toCString(x)); - let c_arr = _malloc(c_strings.length * 4); // 4-bytes per pointer + const c_arr = _malloc(c_strings.length * 4); // 4-bytes per pointer c_strings.forEach(function (x, i) { Module.setValue(c_arr + i * 4, x, "i32"); }); const commandPtr = toCString(command); - let rc = Module._CallCommand(commandPtr, c_strings.length, c_arr); + const rc = Module._CallCommand(commandPtr, c_strings.length, c_arr); // c_strings.forEach(_free); diff --git a/web/app/cad/craft/extensionsBundle.js b/web/app/cad/craft/extensionsBundle.js index 1e3bc612..d4d914fd 100644 --- a/web/app/cad/craft/extensionsBundle.js +++ b/web/app/cad/craft/extensionsBundle.js @@ -7,8 +7,8 @@ const EXTENSIONS_STORAGE_PREFIX = `${STORAGE_GLOBAL_PREFIX}.Extensions`; let extensions = []; export function activate(ctx) { - let {services} = ctx; - let extensionsStr = services.storage.get(EXTENSIONS_STORAGE_PREFIX); + const {services} = ctx; + const extensionsStr = services.storage.get(EXTENSIONS_STORAGE_PREFIX); if (extensionsStr) { extensions = JSON.parse(extensionsStr); } @@ -20,7 +20,7 @@ export function activate(ctx) { } function extensionReady(id, activate) { - let extension = extensions.find(e => e.id === id); + const extension = extensions.find(e => e.id === id); if (!extension) { console.warn(`extension "${id}" not registered`); } else { @@ -31,7 +31,7 @@ export function activate(ctx) { } function allExtensionsReady() { - for (let e of extensions) { + for (const e of extensions) { if (e.activate === NO_OP) { return false; } @@ -40,7 +40,7 @@ export function activate(ctx) { } function activateAllExtensions() { - for (let e of extensions) { + for (const e of extensions) { e.activate(ctx); } } @@ -60,7 +60,7 @@ export function activate(ctx) { function loadExtension({id, url}) { console.info(`starting extension "${id}"...`); - let extensionScript = document.createElement('script'); + const extensionScript = document.createElement('script'); extensionScript.setAttribute('src', url); document.head.appendChild(extensionScript); } diff --git a/web/app/cad/craft/primitives/plane/planeOperation.js b/web/app/cad/craft/primitives/plane/planeOperation.js index 423880fa..0a3101f3 100644 --- a/web/app/cad/craft/primitives/plane/planeOperation.js +++ b/web/app/cad/craft/primitives/plane/planeOperation.js @@ -10,7 +10,7 @@ const WIDTH = 750; const HEIGHT = 750; function createPlane(params, services) { - let mDatum = services.cadRegistry.findDatum(params.datum); + const mDatum = services.cadRegistry.findDatum(params.datum); return { consumed: [mDatum], @@ -19,20 +19,20 @@ function createPlane(params, services) { } function previewGeomProvider(params, services) { - let mDatum = services.cadRegistry.findDatum(params.datum); + const mDatum = services.cadRegistry.findDatum(params.datum); if (!mDatum) { return null; } - let tr = mDatum.csys.outTransformation; + const tr = mDatum.csys.outTransformation; const a = tr._apply(new Vector(0, 0, 0)); const b = tr._apply(new Vector(WIDTH, 0, 0)); const c = tr._apply(new Vector(WIDTH, HEIGHT, 0)); const d = tr._apply(new Vector(0, HEIGHT, 0)); - let trs = [[a, b, c], [a, c, d]]; + const trs = [[a, b, c], [a, c, d]]; return createMeshGeometry(trs); } diff --git a/web/app/cad/craft/primitives/simplePlane/simplePlaneOperation.js b/web/app/cad/craft/primitives/simplePlane/simplePlaneOperation.js index 1c74fb6c..042fd947 100644 --- a/web/app/cad/craft/primitives/simplePlane/simplePlaneOperation.js +++ b/web/app/cad/craft/primitives/simplePlane/simplePlaneOperation.js @@ -35,15 +35,15 @@ function createPlane(params, {cadRegistry}) { } function previewGeomProvider(params, {cadRegistry}) { - let plane = paramsToPlane(params, cadRegistry); - let tr = plane.get3DTransformation(); + const plane = paramsToPlane(params, cadRegistry); + const tr = plane.get3DTransformation(); const w = 375, h = 375; const a = tr._apply(new Vector(-w, -h, 0)); const b = tr._apply(new Vector( w, -h, 0)); const c = tr._apply(new Vector( w, h, 0)); const d = tr._apply(new Vector(-w, h, 0)); - let trs = [[a, b, c], [a, c, d]]; + const trs = [[a, b, c], [a, c, d]]; return createMeshGeometry(trs); } diff --git a/web/app/cad/craft/ui/HistoryTimeline.jsx b/web/app/cad/craft/ui/HistoryTimeline.jsx index a1b22acb..118169aa 100644 --- a/web/app/cad/craft/ui/HistoryTimeline.jsx +++ b/web/app/cad/craft/ui/HistoryTimeline.jsx @@ -29,9 +29,9 @@ import {menuAboveElementHint} from "cad/dom/menu/menuUtils"; export default class HistoryTimeline extends React.Component { render() { - let {history, pointer, setHistoryPointer, rebuild, getOperation, inProgressOperation} = this.props; + const {history, pointer, setHistoryPointer, rebuild, getOperation, inProgressOperation} = this.props; let scrolly; - let eof = history.length-1; + const eof = history.length-1; return
scrolly.scrollLeft -= 60}>
@@ -65,11 +65,11 @@ export default class HistoryTimeline extends React.Component { componentDidUpdate() { // this.scrollInProgressToVisibleRequest = false; setTimeout(() => { - let item = this.el.querySelector(`.${ls.history} .${ls.inProgress}`); + const item = this.el.querySelector(`.${ls.history} .${ls.inProgress}`); if (item) { item.scrollIntoView({behavior: "smooth", inline: "center", block: "end"}); } else { - let history = this.el.querySelector(`.${ls.history}`); + const history = this.el.querySelector(`.${ls.history}`); history.scrollLeft = history.scrollWidth; } }) diff --git a/web/app/cad/craft/ui/ObjectExplorer.jsx b/web/app/cad/craft/ui/ObjectExplorer.jsx index 0d801d1a..77e2bfec 100644 --- a/web/app/cad/craft/ui/ObjectExplorer.jsx +++ b/web/app/cad/craft/ui/ObjectExplorer.jsx @@ -71,10 +71,10 @@ const ModelSection = decoratorChain( connect((streams, props) => (streams.selection[props.type] || constant([])).map(selection => ({selection})))) ( // eslint-disable-line no-unexpected-multiline function ModelSection({model, type, typeLabel, selection, select, ...props}) { - let labelClasses = cx(ls.modelLabel, { + const labelClasses = cx(ls.modelLabel, { [ls.selected]: selection.indexOf(model.id) !== -1 }); - let label = + const label = {typeLabel||type} {model.id} ; return
; diff --git a/web/app/cad/craft/ui/OperationHistory.jsx b/web/app/cad/craft/ui/OperationHistory.jsx index 1cf1c82f..b8ab0625 100644 --- a/web/app/cad/craft/ui/OperationHistory.jsx +++ b/web/app/cad/craft/ui/OperationHistory.jsx @@ -13,12 +13,12 @@ import decoratorChain from 'ui/decoratorChain'; import {EMPTY_OBJECT} from 'gems/objects'; function OperationHistory({history, pointer, setHistoryPointer, remove, getOperation}) { - let lastMod = history.length - 1; + const lastMod = history.length - 1; return {history.map(({type, params}, index) => { - let {appearance, label, paramsInfo, paramsInfoComponent: PIComp} = getOperation(type)||EMPTY_OBJECT; + const {appearance, label, paramsInfo, paramsInfoComponent: PIComp} = getOperation(type)||EMPTY_OBJECT; return
setHistoryPointer(index - 1)} className={cx(ls.item, pointer + 1 === index && ls.selected)}> {appearance && } diff --git a/web/app/cad/craft/ui/SelectedModificationInfo.jsx b/web/app/cad/craft/ui/SelectedModificationInfo.jsx index 6bcae4b5..110e3335 100644 --- a/web/app/cad/craft/ui/SelectedModificationInfo.jsx +++ b/web/app/cad/craft/ui/SelectedModificationInfo.jsx @@ -31,19 +31,19 @@ function SelectedModificationInfo({ history, index, ctx.domService.viewerContainer.removeEventListener('click', clickAwayHandler); } }, []); - let m = history[index]; - let visible = !!m; + const m = history[index]; + const visible = !!m; if (!visible) { return null; } - let op = operationRegistry[m.type]; + const op = operationRegistry[m.type]; if (!op) { console.warn('unknown operation ' + m.type); return; } const appearance = resolveAppearance(op, m.params); - let indexNumber = index + 1; + const indexNumber = index + 1; return { - let {value, onChange} = props; + const {value, onChange} = props; if (Array.isArray(value)) { onChange(produce(value, value => removeInPlace(value, entityId))); } else { diff --git a/web/app/cad/craft/wizard/components/form/MultiEntity.jsx b/web/app/cad/craft/wizard/components/form/MultiEntity.jsx index 5fb87e17..7bbc5b02 100644 --- a/web/app/cad/craft/wizard/components/form/MultiEntity.jsx +++ b/web/app/cad/craft/wizard/components/form/MultiEntity.jsx @@ -11,8 +11,8 @@ import initializeBySchema from '../../../schema/initializeBySchema'; export default class MultiEntity extends React.Component { selectionChanged = selection => { - let {itemField, schema, context} = this.props; - let value = selection.map(id => { + const {itemField, schema, context} = this.props; + const value = selection.map(id => { let item = this.props.value.find(i => i[itemField] === id); if (!item) { item = initializeBySchema(schema, context); @@ -24,8 +24,8 @@ export default class MultiEntity extends React.Component { }; componentDidMount() { - let {streams, entity} = this.props; - let selection$ = streams.selection[entity]; + const {streams, entity} = this.props; + const selection$ = streams.selection[entity]; this.selectionChanged(selection$.value); this.detacher = selection$.attach(this.selectionChanged); } @@ -39,7 +39,7 @@ export default class MultiEntity extends React.Component { return { ctx => this.props.value.map(data => { - let subContext = { + const subContext = { data, updateParam: (name, value) => { data[name] = value; @@ -47,8 +47,8 @@ export default class MultiEntity extends React.Component { }, ...ctx }; - let {itemField} = this.props; - let entityId = data[itemField]; + const {itemField} = this.props; + const entityId = data[itemField]; return
{itemField}: {entityId}
diff --git a/web/app/cad/debugBundle.js b/web/app/cad/debugBundle.js index f8b600c5..e36c6403 100644 --- a/web/app/cad/debugBundle.js +++ b/web/app/cad/debugBundle.js @@ -80,7 +80,7 @@ function addGlobalDebugActions({viewer, cadScene, cadRegistry}) { }, AddPointPolygons: (polygons, color) => { - for (let points of polygons) { + for (const points of polygons) { for (let i = 0; i < points.length; i ++) { debugGroup.add(createLine(points[i], points[(i + 1) % points.length], color)); } @@ -109,10 +109,10 @@ function addGlobalDebugActions({viewer, cadScene, cadRegistry}) { window.__DEBUG__.AddPolyLine(points, color); }, AddFace: (face, color) => { - for (let e of face.edges) __DEBUG__.AddHalfEdge(e, color); + for (const e of face.edges) __DEBUG__.AddHalfEdge(e, color); }, AddLoop: (loop, color) => { - for (let e of loop.halfEdges) __DEBUG__.AddHalfEdge(e, color); + for (const e of loop.halfEdges) __DEBUG__.AddHalfEdge(e, color); }, AddVolume: (shell, color) => { color = color || 0xffffff; @@ -136,7 +136,7 @@ function addGlobalDebugActions({viewer, cadScene, cadRegistry}) { AddWireframe: (shell, color) => { color = color || 0xffffff; const visited = new Set(); - for (let e of shell.edges) { + for (const e of shell.edges) { const vertices = [] vertices.push(e.halfEdge1.vertexA.point.three()); vertices.push(e.halfEdge2.vertexA.point.three()); @@ -164,7 +164,7 @@ function addGlobalDebugActions({viewer, cadScene, cadRegistry}) { __DEBUG__.AddPolyLine( curve.tessellate(undefined, scale), color); }, AddParametricCurve: (curve, color, scale) => { - let [uMin, uMax] = curve.domain(); + const [uMin, uMax] = curve.domain(); __DEBUG__.AddPolyLine3(curveTess(curve, uMin, uMax, undefined, scale), color); }, AddVerbCurve: (curve, color) => { @@ -285,9 +285,9 @@ export function createPoint(x, y, z, color) { x = x.x; } color = color || 0x00ff00; - let geometry = new THREE.SphereGeometry( 5, 16, 16 ); - let material = new THREE.MeshBasicMaterial( {color} ); - let sphere = new THREE.Mesh(geometry, material); + const geometry = new THREE.SphereGeometry( 5, 16, 16 ); + const material = new THREE.MeshBasicMaterial( {color} ); + const sphere = new THREE.Mesh(geometry, material); sphere.position.x = x; sphere.position.y = y; sphere.position.z = z; @@ -328,7 +328,7 @@ const DebugActions = [ listens: ctx => ctx.streams.selection.face, update: checkForSelectedFaces(1), invoke: ({services: {selection}}) => { - let s = selection.face.single; + const s = selection.face.single; console.log(JSON.stringify({ polygons: s.csgGroup.polygons, basis: s._basis @@ -364,8 +364,8 @@ const DebugActions = [ const sketch = JSON.parse(localStorage.getItem(project.faceStorageKey(faceId))); const layers = sketch.layers.filter(l => l.name !== '__bounds__'); const data = []; - for (let l of layers) { - for (let d of l.data) { + for (const l of layers) { + for (const d of l.data) { data.push(d); } } diff --git a/web/app/cad/dom/actionInfo/ActionInfo.jsx b/web/app/cad/dom/actionInfo/ActionInfo.jsx index c1cfbcd8..734117b5 100644 --- a/web/app/cad/dom/actionInfo/ActionInfo.jsx +++ b/web/app/cad/dom/actionInfo/ActionInfo.jsx @@ -6,7 +6,7 @@ import connect from 'ui/connect'; import {combine} from 'lstream'; function ActionInfo({actionId, x, y, info, hint, hotKey}) { - let visible = !!(actionId && (info || hint || hotKey)); + const visible = !!(actionId && (info || hint || hotKey)); return diff --git a/web/app/cad/dom/components/FloatView.jsx b/web/app/cad/dom/components/FloatView.jsx index 5fc658db..4573f109 100644 --- a/web/app/cad/dom/components/FloatView.jsx +++ b/web/app/cad/dom/components/FloatView.jsx @@ -23,7 +23,7 @@ export default class FloatView extends React.Component { render() { - let {views, getDescriptor} = this.props; + const {views, getDescriptor} = this.props; function renderedIcon(icon) { if (typeof icon === 'string') { @@ -35,7 +35,7 @@ export default class FloatView extends React.Component { } function view(id) { - let {title, icon, Component} = getDescriptor(id); + const {title, icon, Component} = getDescriptor(id); return {renderedIcon(icon)} {title}}> @@ -45,7 +45,7 @@ export default class FloatView extends React.Component { - let selected = this.state.selected; + const selected = this.state.selected; return
diff --git a/web/app/cad/dom/components/PlugableControlBar.jsx b/web/app/cad/dom/components/PlugableControlBar.jsx index 48524117..fc5fc8d9 100644 --- a/web/app/cad/dom/components/PlugableControlBar.jsx +++ b/web/app/cad/dom/components/PlugableControlBar.jsx @@ -15,7 +15,7 @@ export default function PlugableControlBar() { function ButtonGroup({actions}) { return actions.map(actionRef => { - let [id, overrides] = toIdAndOverrides(actionRef); + const [id, overrides] = toIdAndOverrides(actionRef); return ; }); } @@ -23,14 +23,14 @@ function ButtonGroup({actions}) { class ActionButton extends React.Component { render() { - let {label, cssIcons, icon, enabled, visible, actionId, ...props} = this.props; + const {label, cssIcons, icon, enabled, visible, actionId, ...props} = this.props; if (!visible) { return null; } const Icon = icon ? icon : null; if (isMenuAction(actionId)) { - let onClick = props.onClick; + const onClick = props.onClick; props.onClick = e => onClick(menuAboveElementHint(this.el)); } diff --git a/web/app/cad/dom/components/PlugableToolbar.jsx b/web/app/cad/dom/components/PlugableToolbar.jsx index 14c8d007..86aac87d 100644 --- a/web/app/cad/dom/components/PlugableToolbar.jsx +++ b/web/app/cad/dom/components/PlugableToolbar.jsx @@ -29,7 +29,7 @@ export function ToolbarActionButtons({actions, showTitles, size}) {
; } - let [id, overrides] = toIdAndOverrides(actionRef); + const [id, overrides] = toIdAndOverrides(actionRef); return }); } @@ -39,7 +39,7 @@ function ActionButton({label, icon, icon96, icon32, cssIcons, symbol, size = 'la return null; } - let smallOrMedium = size === 'medium' || size === 'small'; + const smallOrMedium = size === 'medium' || size === 'small'; if (icon) { const Icon = icon; icon = ; diff --git a/web/app/cad/dom/components/Socket.jsx b/web/app/cad/dom/components/Socket.jsx index 709bfa55..22c65076 100644 --- a/web/app/cad/dom/components/Socket.jsx +++ b/web/app/cad/dom/components/Socket.jsx @@ -16,11 +16,11 @@ import {state} from 'lstream'; }) export default class Socket extends React.Component { render() { - let {getComponent, componentId, ...props} = this.props; + const {getComponent, componentId, ...props} = this.props; if (!componentId) { return null; } - let Component = getComponent(componentId); + const Component = getComponent(componentId); if (!Component) { return null; } diff --git a/web/app/cad/dom/menu/MenuHolder.jsx b/web/app/cad/dom/menu/MenuHolder.jsx index b035ea12..fa32da7f 100644 --- a/web/app/cad/dom/menu/MenuHolder.jsx +++ b/web/app/cad/dom/menu/MenuHolder.jsx @@ -36,7 +36,7 @@ function ActionMenuItem({label, cssIcons, icon, icon32, icon96, enabled, hotKey, renderedIcon = ; } else { if (icon32 || icon96) { - let size = 16; + const size = 16; renderedIcon = ; style = { backgroundImage: `url(${icon32 || icon96})`, diff --git a/web/app/cad/dom/menu/menuBundle.js b/web/app/cad/dom/menu/menuBundle.js index a993eb35..746d74ad 100644 --- a/web/app/cad/dom/menu/menuBundle.js +++ b/web/app/cad/dom/menu/menuBundle.js @@ -13,10 +13,10 @@ export function activate(ctx) { }; function registerMenus(menus) { - let menusToAdd = []; - let showMenuActions = []; + const menusToAdd = []; + const showMenuActions = []; menus.forEach(({id, actions, ...appearance}) => { - let menuState = state({ + const menuState = state({ visible: false, orientationUp: false, x: undefined, diff --git a/web/app/cad/dom/menu/menuUtils.js b/web/app/cad/dom/menu/menuUtils.js index 8df7c511..adcb28e2 100644 --- a/web/app/cad/dom/menu/menuUtils.js +++ b/web/app/cad/dom/menu/menuUtils.js @@ -1,5 +1,5 @@ export const menuAboveElementHint = el => { - let {top, left, bottom} = el.getBoundingClientRect(); + const {top, left, bottom} = el.getBoundingClientRect(); return ({ orientationUp: true, flatBottom: true, diff --git a/web/app/cad/exportBundle.js b/web/app/cad/exportBundle.js index 66d209fc..16813a41 100644 --- a/web/app/cad/exportBundle.js +++ b/web/app/cad/exportBundle.js @@ -16,15 +16,15 @@ export function activate(ctx) { } function imagePng() { - let auxVisible = ctx.services.cadScene.auxGroup.visible; + const auxVisible = ctx.services.cadScene.auxGroup.visible; ctx.services.cadScene.auxGroup.visible = false; - let renderer = ctx.services.viewer.sceneSetup.renderer; - let clearAlpha = renderer.getClearAlpha(); + const renderer = ctx.services.viewer.sceneSetup.renderer; + const clearAlpha = renderer.getClearAlpha(); renderer.setClearAlpha(0); renderer.preserveDrawingBuffer = true; ctx.services.viewer.sceneSetup.render(); - let link = document.getElementById("downloader"); + const link = document.getElementById("downloader"); link.href = renderer.domElement.toDataURL('image/png'); link.download = ctx.projectService.id + "-snapshot.png"; link.click(); diff --git a/web/app/cad/init/startApplication.js b/web/app/cad/init/startApplication.js index 40760a41..76df1bd6 100644 --- a/web/app/cad/init/startApplication.js +++ b/web/app/cad/init/startApplication.js @@ -44,7 +44,7 @@ import {BundleSystem} from "bundler/bundleSystem"; export default function startApplication(callback) { - let preUIBundles = [ + const preUIBundles = [ LifecycleBundle, ProjectBundle, StorageBundle, @@ -68,7 +68,7 @@ export default function startApplication(callback) { ProjectManagerBundle ]; - let bundles = [ + const bundles = [ DomBundle, SceneBundle, MouseEventSystemBundle, diff --git a/web/app/cad/keyboard/keyboardBundle.js b/web/app/cad/keyboard/keyboardBundle.js index d2f2f543..b5f924d5 100644 --- a/web/app/cad/keyboard/keyboardBundle.js +++ b/web/app/cad/keyboard/keyboardBundle.js @@ -10,9 +10,9 @@ export function activate(ctx) { const {services, streams} = ctx; streams.ui.keymap = state(DefaultKeymap); - let keymap = DefaultKeymap; + const keymap = DefaultKeymap; //to attach to a dom element: Mousetrap(domElement).bind(... - for (let action of Object.keys(keymap)) { + for (const action of Object.keys(keymap)) { const dataProvider = getDataProvider(action, services); Mousetrap.bind(keymap[action], () => ctx.actionService.run(action, dataProvider ? dataProvider() : undefined)); } @@ -22,7 +22,7 @@ export function activate(ctx) { function getDataProvider(action, services) { if (isMenuAction(action)) { return function() { - let {left, top, width, height} = services.dom.viewerContainer.getBoundingClientRect(); + const {left, top, width, height} = services.dom.viewerContainer.getBoundingClientRect(); return { x: left + width * 0.5, y: top + height * 0.5, diff --git a/web/app/cad/legacy/mesh/workbench.js b/web/app/cad/legacy/mesh/workbench.js index 4ac68c7f..3ddcbcf3 100644 --- a/web/app/cad/legacy/mesh/workbench.js +++ b/web/app/cad/legacy/mesh/workbench.js @@ -13,7 +13,7 @@ export function sortPolygons(polygons) { this.level = 0; } function contains(polygon, other) { - for (let point of other._2D) { + for (const point of other._2D) { if (!isPointInsidePolygon(point, polygon._2D)) { return false; } @@ -39,7 +39,7 @@ export function sortPolygons(polygons) { if (shells.length == 0) { return; } - for (let shell of shells) { + for (const shell of shells) { shell.nesting = shell.nesting.filter(l => l.level == level + 1); allShells.push(shell); } @@ -51,20 +51,20 @@ export function sortPolygons(polygons) { function _pointOnLine(p, a, b) { - let ab = a.minus(b); - let ap = a.minus(p); + const ab = a.minus(b); + const ap = a.minus(p); - let dp = ab.dot(ap); + const dp = ab.dot(ap); - let abLength = ab.length(); - let apLength = ap.length(); + const abLength = ab.length(); + const apLength = ap.length(); return apLength > 0 && apLength < abLength && areEqual(abLength * apLength, dp, 1E-6); } export function polygonsToSegments(polygons) { function selfIntersecting(a, b, c) { - let f = _pointOnLine; + const f = _pointOnLine; return f(c, a, b) || f(a, b, c) || f(b, c, a); } //polygons.filter(function(p) { @@ -76,14 +76,14 @@ export function polygonsToSegments(polygons) { //continue; //} - let segmentsByPolygon = []; + const segmentsByPolygon = []; for (let pi = 0; pi < polygons.length; pi++) { - let segments = []; - let poly = polygons[pi]; + const segments = []; + const poly = polygons[pi]; let p, q, n = poly.vertices.length; for(p = n - 1, q = 0; q < n; p = q ++) { - let a = poly.vertices[p]; - let b = poly.vertices[q]; + const a = poly.vertices[p]; + const b = poly.vertices[q]; segments.push([a.pos, b.pos]); } segmentsByPolygon.push(segments); @@ -93,12 +93,12 @@ export function polygonsToSegments(polygons) { export function reconstructSketchBounds(csg, face, strict) { strict = strict || false; - let polygons = csg.toPolygons(); - let plane = face.csgGroup.plane; - let outerEdges = []; - let planePolygons = []; + const polygons = csg.toPolygons(); + const plane = face.csgGroup.plane; + const outerEdges = []; + const planePolygons = []; for (let pi = 0; pi < polygons.length; pi++) { - let poly = polygons[pi]; + const poly = polygons[pi]; if (equal(poly.plane.normal.dot(plane.normal), 1)) { if (equal(plane.w, poly.plane.w) && (!strict || !!poly.shared.__tcad && poly.shared.__tcad.faceId === face.id)) { planePolygons.push(poly); @@ -107,18 +107,18 @@ export function reconstructSketchBounds(csg, face, strict) { } let p, q, n = poly.vertices.length; for(p = n - 1, q = 0; q < n; p = q ++) { - let a = poly.vertices[p]; - let b = poly.vertices[q]; - let pointAOnPlane = equal(plane.signedDistanceToPoint(a.pos), 0); + const a = poly.vertices[p]; + const b = poly.vertices[q]; + const pointAOnPlane = equal(plane.signedDistanceToPoint(a.pos), 0); if (!pointAOnPlane) continue; - let pointBOnPlane = equal(plane.signedDistanceToPoint(b.pos), 0); + const pointBOnPlane = equal(plane.signedDistanceToPoint(b.pos), 0); if (pointBOnPlane) { outerEdges.push([a.pos, b.pos, poly]); } } } - let outline = findOutline(planePolygons); + const outline = findOutline(planePolygons); pickUpCraftInfo(outline, outerEdges); @@ -126,11 +126,11 @@ export function reconstructSketchBounds(csg, face, strict) { } function pickUpCraftInfo(outline, outerEdges) { - let eq = strictEqual; + const eq = strictEqual; for (let psi1 = 0; psi1 < outline.length; psi1++) { - let s1 = outline[psi1]; + const s1 = outline[psi1]; for (let psi2 = 0; psi2 < outerEdges.length; psi2++) { - let s2 = outerEdges[psi2]; + const s2 = outerEdges[psi2]; if (equal(Math.abs(s1[0].minus(s1[1]).unit().dot(s2[0].minus(s2[1]).unit())), 1) && (eq(s1[0], s2[0]) || eq(s1[1], s2[1]) || eq(s1[0], s2[1]) || eq(s1[1], s2[0]) || _pointOnLine(s1[0], s2[0], s2[1]) || _pointOnLine(s1[1], s2[0], s2[1]))) { @@ -141,12 +141,12 @@ function pickUpCraftInfo(outline, outerEdges) { } function getOutlineByCollision(segments, outerEdges) { - let eq = strictEqual; - let outline = []; + const eq = strictEqual; + const outline = []; for (let psi1 = 0; psi1 < segments.length; psi1++) { - let s1 = segments[psi1]; + const s1 = segments[psi1]; for (let psi2 = 0; psi2 < outerEdges.length; psi2++) { - let s2 = outerEdges[psi2]; + const s2 = outerEdges[psi2]; if (equal(Math.abs(s1[0].minus(s1[1]).unit().dot(s2[0].minus(s2[1]).unit())), 1) && (eq(s1[0], s2[0]) || eq(s1[1], s2[1]) || eq(s1[0], s2[1]) || eq(s1[1], s2[0]) || _pointOnLine(s1[0], s2[0], s2[1]) || _pointOnLine(s1[1], s2[0], s2[1]))) { @@ -158,7 +158,7 @@ function getOutlineByCollision(segments, outerEdges) { } export function findOutline (planePolygons) { - let segmentsByPolygon = polygonsToSegments(planePolygons); + const segmentsByPolygon = polygonsToSegments(planePolygons); //simplifySegments(segmentsByPolygon); let planeSegments = cad_utils.arrFlatten1L(segmentsByPolygon); //planeSegments = removeSharedEdges(planeSegments); @@ -169,13 +169,13 @@ export function findOutline (planePolygons) { function removeSharedEdges(segments) { segments = segments.slice(); - let eq = strictEqual; + const eq = strictEqual; for (let psi1 = 0; psi1 < segments.length; psi1++) { - let s1 = segments[psi1]; + const s1 = segments[psi1]; if (s1 == null) continue; for (let psi2 = 0; psi2 < segments.length; psi2++) { if (psi1 === psi2) continue; - let s2 = segments[psi2]; + const s2 = segments[psi2]; if (s2 == null) continue; if ((eq(s1[0], s2[0]) && eq(s1[1], s2[1]) || (eq(s1[0], s2[1]) && eq(s1[1], s2[0])))) { segments[psi1] = null; @@ -190,12 +190,12 @@ function simplifySegments(polygonToSegments) { for (let pi1 = 0; pi1 < polygonToSegments.length; ++pi1) { for (let pi2 = 0; pi2 < polygonToSegments.length; ++pi2) { if (pi1 === pi2) continue; - let polygon1 = polygonToSegments[pi1]; - let polygon2 = polygonToSegments[pi2]; + const polygon1 = polygonToSegments[pi1]; + const polygon2 = polygonToSegments[pi2]; for (let si1 = 0; si1 < polygon1.length; ++si1) { - let seg1 = polygon1[si1]; + const seg1 = polygon1[si1]; for (let si2 = 0; si2 < polygon2.length; ++si2) { - let point = polygon2[si2][0]; + const point = polygon2[si2][0]; if (_pointOnLine(point, seg1[0], seg1[1])) { polygon1.push([point, seg1[1]]); seg1[1] = point; @@ -208,37 +208,37 @@ function simplifySegments(polygonToSegments) { function _closeFactorToLine(p, seg1, seg2) { - let a = p.minus(seg1); - let b = seg2.minus(seg1); - let bn = b.unit(); + const a = p.minus(seg1); + const b = seg2.minus(seg1); + const bn = b.unit(); - let projLength = bn.dot(a); - let bx = bn.times(projLength); + const projLength = bn.dot(a); + const bx = bn.times(projLength); if (!(projLength > 0 && projLength < b.length())) { return -1; } - let c = a.minus(bx); + const c = a.minus(bx); return c.length(); } function removeTJoints(segments) { - let pointIndex = HashTable.forVector3d(); + const pointIndex = HashTable.forVector3d(); for (let i = 0; i < segments.length; ++i) { pointIndex.put(segments[i][0], 1); pointIndex.put(segments[i][1], 1); } - let points = pointIndex.getKeys(); - let eq = strictEqual; + const points = pointIndex.getKeys(); + const eq = strictEqual; for (let pi1 = 0; pi1 < points.length; ++pi1) { - let point = points[pi1]; + const point = points[pi1]; let best = null, bestFactor; for (let pi2 = 0; pi2 < segments.length; ++pi2) { - let seg = segments[pi2]; + const seg = segments[pi2]; if (eq(seg[0], point) || eq(seg[1], point)) continue; - let factor = _closeFactorToLine(point, seg[0], seg[1]); + const factor = _closeFactorToLine(point, seg[0], seg[1]); if (factor != -1 && factor < 1E-6 && (best == null || factor < bestFactor)) { best = seg; bestFactor = factor; @@ -252,16 +252,16 @@ function removeTJoints(segments) { } function deleteRedundantPoints(path) { - let cleanedPath = []; + const cleanedPath = []; //Delete redundant point - let pathLength = path.length; + const pathLength = path.length; let skipMode = false; for (let pi = 0; pi < pathLength; pi++) { - let bIdx = ((pi + 1) % pathLength); - let a = path[pi]; - let b = path[bIdx]; - let c = path[(pi + 2) % pathLength]; - let eq = areEqual; + const bIdx = ((pi + 1) % pathLength); + const a = path[pi]; + const b = path[bIdx]; + const c = path[(pi + 2) % pathLength]; + const eq = areEqual; if (!skipMode) cleanedPath.push(a); skipMode = eq(a.minus(b).unit().dot(b.minus(c).unit()), 1, 1E-9); } @@ -270,10 +270,10 @@ function deleteRedundantPoints(path) { export function segmentsToPaths(segments) { - let veq = strictEqual; - let paths = []; - let index = HashTable.forVector3d(); - let csgIndex = HashTable.forEdge(); + const veq = strictEqual; + const paths = []; + const index = HashTable.forVector3d(); + const csgIndex = HashTable.forEdge(); function indexPoint(p, edge) { let edges = index.get(p); @@ -285,10 +285,10 @@ export function segmentsToPaths(segments) { } for (let si = 0; si < segments.length; si++) { - let k = segments[si]; + const k = segments[si]; indexPoint(k[0], k); indexPoint(k[1], k); - let csgInfo = k[2]; + const csgInfo = k[2]; if (csgInfo !== undefined && csgInfo !== null) { csgIndex.put([k[0], k[1]], csgInfo); } @@ -296,10 +296,10 @@ export function segmentsToPaths(segments) { } function nextPoint(p) { - let edges = index.get(p); + const edges = index.get(p); if (edges === null) return null; for (let i = 0; i < edges.length; i++) { - let edge = edges[i]; + const edge = edges[i]; if (edge[3]) continue; let res = null; if (veq(p, edge[0])) res = edge[1]; @@ -314,7 +314,7 @@ export function segmentsToPaths(segments) { let path; for (let ei = 0; ei < segments.length; ei++) { - let edge = segments[ei]; + const edge = segments[ei]; if (edge[3]) { continue; } @@ -332,13 +332,13 @@ export function segmentsToPaths(segments) { } } - let filteredPaths = []; + const filteredPaths = []; for (let i = 0; i < paths.length; i++) { path = paths[i]; //Set derived from object to be able to recunstruct cad_utils.iteratePath(path, 0, function (a, b) { - let fromPolygon = csgIndex.get([a, b]); + const fromPolygon = csgIndex.get([a, b]); if (fromPolygon !== null) { if (fromPolygon.shared.__tcad.csgInfo) { a.sketchConnectionObject = fromPolygon.shared.__tcad.csgInfo.derivedFrom; @@ -365,14 +365,14 @@ function _triangulateCSG(polygons) { return [v.x, v.y, v.z]; } - let triangled = []; - for (let poly of polygons) { - let vertices = Triangulate([poly.vertices.map(v => data(v.pos))], data(poly.plane.normal)); + const triangled = []; + for (const poly of polygons) { + const vertices = Triangulate([poly.vertices.map(v => data(v.pos))], data(poly.plane.normal)); for (let i = 0; i < vertices.length; i += 3 ) { - let a = csgVert(vertices[i]); - let b = csgVert(vertices[i + 1]); - let c = csgVert(vertices[i + 2]); - let csgPoly = new CSG.Polygon([a, b, c], poly.shared, poly.plane); + const a = csgVert(vertices[i]); + const b = csgVert(vertices[i + 1]); + const c = csgVert(vertices[i + 2]); + const csgPoly = new CSG.Polygon([a, b, c], poly.shared, poly.plane); triangled.push(csgPoly); } } @@ -380,21 +380,21 @@ function _triangulateCSG(polygons) { } function splitTwoSegments(a, b) { - let da = a[1].minus(a[0]); - let db = b[1].minus(b[0]); - let dc = b[0].minus(a[0]); + const da = a[1].minus(a[0]); + const db = b[1].minus(b[0]); + const dc = b[0].minus(a[0]); - let daXdb = da.cross(db); + const daXdb = da.cross(db); if (Math.abs(dc.dot(daXdb)) > 1e-6) { // lines are not coplanar return null; } - let veq = strictEqual; + const veq = strictEqual; if (veq(a[0], b[0]) || veq(a[0], b[1]) || veq(a[1], b[0]) || veq(a[1], b[1])) { return null; } - let dcXdb = dc.cross(db); + const dcXdb = dc.cross(db); function _split(s, ip) { if (s[0].equals(ip) || s[1].equals(ip)) { @@ -402,9 +402,9 @@ function splitTwoSegments(a, b) { } return [[s[0], ip, s[2]], [ip, s[1], s[2]]] } - let s = dcXdb.dot(daXdb) / daXdb.lengthSquared(); + const s = dcXdb.dot(daXdb) / daXdb.lengthSquared(); if (s > 0.0 && s < 1.0) { - let ip = a[0].plus(da.times(s)); + const ip = a[0].plus(da.times(s)); return { splitterParts : _split(a, ip), residual : _split(b, ip) @@ -414,14 +414,14 @@ function splitTwoSegments(a, b) { } function attract(vectors, precision) { - let eq = areEqual(); - let dist = distanceAB3; + const eq = areEqual(); + const dist = distanceAB3; vectors = vectors.slice(); for (let i = 0; i < vectors.length; i++) { - let v1 = vectors[i]; + const v1 = vectors[i]; if (v1 == null) continue; for (let j = i + 1; j < vectors.length; j++) { - let v2 = vectors[j]; + const v2 = vectors[j]; if (v2 == null) continue; if (dist(v1, v2) <= precision) { Vector.prototype.setV.call(v2, v1); diff --git a/web/app/cad/model/surfacePrototype.js b/web/app/cad/model/surfacePrototype.js index 2c79193c..3620bf4a 100644 --- a/web/app/cad/model/surfacePrototype.js +++ b/web/app/cad/model/surfacePrototype.js @@ -40,9 +40,9 @@ export class CSysPlaneSurfacePrototype extends SurfacePrototype { boundTo(points2dOnSurface, minWidth, minHeight, offset) { if (points2dOnSurface.length === 0) { - let dx = this.csys.x.multiply(minWidth); - let dy = this.csys.y.multiply(minHeight); - let origin = this.csys.origin; + const dx = this.csys.x.multiply(minWidth); + const dy = this.csys.y.multiply(minHeight); + const origin = this.csys.origin; return new BrepSurface(new NurbsSurface(verb.geom.NurbsSurface.byKnotsControlPointsWeights( 1, 1, [0,0,1,1], [0,0,1,1], [ [ origin.plus(dy).data(), origin.plus(dx)._plus(dy).data()] , [ origin.data(), origin.plus(dx ).data() ] ] ))); diff --git a/web/app/cad/preview/scenePreviewer.js b/web/app/cad/preview/scenePreviewer.js index 3031091b..b16cb176 100644 --- a/web/app/cad/preview/scenePreviewer.js +++ b/web/app/cad/preview/scenePreviewer.js @@ -19,7 +19,7 @@ export function createPreviewer(sceneGeometryCreator, services, initialParams) { function update(params) { destroyPreviewObject(); - let geometry = sceneGeometryCreator(params, services); + const geometry = sceneGeometryCreator(params, services); if (!geometry) { services.viewer.requestRender(); return; diff --git a/web/app/cad/projectManager/ProjectManager.jsx b/web/app/cad/projectManager/ProjectManager.jsx index dac196c6..c23ee251 100644 --- a/web/app/cad/projectManager/ProjectManager.jsx +++ b/web/app/cad/projectManager/ProjectManager.jsx @@ -19,8 +19,8 @@ import connect from 'ui/connect'; export class ProjectManager extends React.Component { render() { - let {projectManager} = this.props; - let projects = projectManager.listProjects(); + const {projectManager} = this.props; + const projects = projectManager.listProjects(); return
diff --git a/web/app/cad/scene/controls/mouseEventSystemBundle.js b/web/app/cad/scene/controls/mouseEventSystemBundle.js index 7f260619..01080ac7 100644 --- a/web/app/cad/scene/controls/mouseEventSystemBundle.js +++ b/web/app/cad/scene/controls/mouseEventSystemBundle.js @@ -29,7 +29,7 @@ export function activate(ctx) { dispatchMousemove(event.mouseEvent, hits) }); - let performRaycast = e => { + const performRaycast = e => { const hits = services.viewer.raycast(e, services.cadScene.workGroup.children, RayCastDebugInfo); hits.sort((a, b) => { if (Math.abs(a.distance - b.distance) < 0.01 && (a.object.raycastPriority || b.object.raycastPriority)) { @@ -41,7 +41,7 @@ export function activate(ctx) { } let toDrag = null; - let pressed = new Set(); + const pressed = new Set(); event.startDrag = objectToDrag => { if (toDrag) { @@ -59,7 +59,7 @@ export function activate(ctx) { function mousedown(e) { event.mouseState = MouseStates.DOWN; - let hits = performRaycast(e); + const hits = performRaycast(e); dispatchMousedown(e, hits); } @@ -68,12 +68,12 @@ export function activate(ctx) { event.hits = hits; pressed.clear(); - for (let hit of hits) { + for (const hit of hits) { if (LOG_FLAGS.PICK) { printRaycastDebugInfo('mouseDown', hit); } - let obj = hit.object; + const obj = hit.object; if (obj && obj.onMouseDown) { safeCall(() => obj.onMouseDown(event)); } @@ -91,7 +91,7 @@ export function activate(ctx) { stopDrag(e); mousemove(e); } else { - let hits = performRaycast(e); + const hits = performRaycast(e); dispatchMouseup(e, hits); } } @@ -101,11 +101,11 @@ export function activate(ctx) { event.mouseEvent = e; event.hits = hits; - for (let hit of hits) { + for (const hit of hits) { if (LOG_FLAGS.PICK) { printRaycastDebugInfo('mouseUp', hit); } - let obj = hit.object; + const obj = hit.object; if (obj && obj.onMouseUp) { safeCall(() => obj.onMouseUp(event)); } @@ -139,7 +139,7 @@ export function activate(ctx) { event.hits = hits; valid.clear(); - for (let hit of hits) { + for (const hit of hits) { valid.add(hit.object); if (!hit.object.passMouseEvent || !hit.object.passMouseEvent(event)) { break; @@ -162,25 +162,25 @@ export function activate(ctx) { } }); - let t = valid; + const t = valid; valid = entered; entered = t; valid.clear(); } function dblclick(e) { - let hits = performRaycast(e); + const hits = performRaycast(e); dispatchDblclick(e, hits); } function dispatchDblclick(e, hits) { event.mouseEvent = e; event.hits = hits; - for (let hit of hits) { + for (const hit of hits) { if (LOG_FLAGS.PICK) { printRaycastDebugInfo('dblclick', hit); } - let obj = hit.object; + const obj = hit.object; if (obj && obj.onDblclick) { safeCall(() => obj.onDblclick(event)); } diff --git a/web/app/cad/scene/viewSyncBundle.js b/web/app/cad/scene/viewSyncBundle.js index 58db9f15..07ebf8d5 100644 --- a/web/app/cad/scene/viewSyncBundle.js +++ b/web/app/cad/scene/viewSyncBundle.js @@ -20,7 +20,7 @@ export const ViewSyncBundle = { ], activate(ctx) { - let {streams} = ctx; + const {streams} = ctx; ctx.highlightService.highlightEvents.attach(id => { const model = ctx.cadRegistry.find(id); model?.ext?.view?.mark('highlight'); @@ -40,13 +40,13 @@ function sceneSynchronizer(ctx) { const {services: {cadScene, cadRegistry, viewer, wizard, action, pickControl}} = ctx; return function() { - let wgChildren = cadScene.workGroup.children; - let existent = new Set(); + const wgChildren = cadScene.workGroup.children; + const existent = new Set(); for (let i = wgChildren.length - 1; i >= 0; --i) { - let obj = wgChildren[i]; - let shellView = getAttribute(obj, View.MARKER); + const obj = wgChildren[i]; + const shellView = getAttribute(obj, View.MARKER); if (shellView) { - let exists = cadRegistry.modelIndex.has(shellView.model.id); + const exists = cadRegistry.modelIndex.has(shellView.model.id); if (!exists) { SceneGraph.removeFromGroup(cadScene.workGroup, obj); shellView.dispose(); @@ -56,7 +56,7 @@ function sceneSynchronizer(ctx) { } } - for (let model of cadRegistry.models) { + for (const model of cadRegistry.models) { if (!existent.has(model.id)) { let modelView; if (model instanceof MOpenFaceShell) { diff --git a/web/app/cad/scene/views/datumView.js b/web/app/cad/scene/views/datumView.js index 493b0fa1..2d0e0eeb 100644 --- a/web/app/cad/scene/views/datumView.js +++ b/web/app/cad/scene/views/datumView.js @@ -67,7 +67,7 @@ export default class DatumView extends View { } updateVisibility() { - let datum3D = this.parent.parent; + const datum3D = this.parent.parent; viewer.setVisualProp(this.material, 'visible', !datum3D.operationStarted && (this.mouseInside || datum3D.affordanceArea.mouseInside)); } @@ -139,7 +139,7 @@ export default class DatumView extends View { } } - let dv = new StartingOperationDatumObject3D(datum.csys, viewer); + const dv = new StartingOperationDatumObject3D(datum.csys, viewer); this.rootGroup = dv; setAttribute(this.rootGroup, DATUM, this); @@ -172,8 +172,8 @@ class AffordanceBox extends Mesh { visible: false })); - let size = CSYS_SIZE_MODEL * 1.5; - let shift = -(size - CSYS_SIZE_MODEL) * 0.3; + const size = CSYS_SIZE_MODEL * 1.5; + const shift = -(size - CSYS_SIZE_MODEL) * 0.3; this.scale.set(size, size, size); this.position.set(shift, shift, shift); } diff --git a/web/app/cad/scene/views/edgeView.js b/web/app/cad/scene/views/edgeView.js index 511958d6..942e359f 100644 --- a/web/app/cad/scene/views/edgeView.js +++ b/web/app/cad/scene/views/edgeView.js @@ -17,8 +17,8 @@ const MarkerTable = [ export class EdgeView extends CurveBasedView { constructor(ctx, edge) { - let brepEdge = edge.brepEdge; - let tess = brepEdge.data.tessellation ? brepEdge.data.tessellation : brepEdge.curve.tessellateToData(); + const brepEdge = edge.brepEdge; + const tess = brepEdge.data.tessellation ? brepEdge.data.tessellation : brepEdge.curve.tessellateToData(); super(ctx, edge, tess, 3, 0x000000, MarkerTable); this.addDisposer(ctx.viewer.viewMode$.attach(mode => { this.representation.visible = (mode === ViewMode.SHADED_WITH_EDGES || mode === ViewMode.WIREFRAME); diff --git a/web/app/cad/scene/views/faceView.js b/web/app/cad/scene/views/faceView.js index ad006939..667ffbfe 100644 --- a/web/app/cad/scene/views/faceView.js +++ b/web/app/cad/scene/views/faceView.js @@ -34,13 +34,13 @@ export class SketchingView extends View { this.disposeSketch(); const sketchTr = this.model.sketchToWorldTransformation; - for (let sketchObject of this.model.sketchObjects) { - let sov = new SketchObjectView(this.ctx, sketchObject, sketchTr); + for (const sketchObject of this.model.sketchObjects) { + const sov = new SketchObjectView(this.ctx, sketchObject, sketchTr); SceneGraph.addToGroup(this.sketchGroup, sov.rootGroup); this.sketchObjectViews.push(sov); } this.model.sketchLoops.forEach(mLoop => { - let loopView = new SketchLoopView(this.ctx, mLoop); + const loopView = new SketchLoopView(this.ctx, mLoop); SceneGraph.addToGroup(this.sketchGroup, loopView.rootGroup); this.sketchLoopViews.push(loopView); }); @@ -100,7 +100,7 @@ export class FaceView extends SketchingView { } export function setFacesColor(faces, color) { - for (let face of faces) { + for (const face of faces) { if (color === null) { face.color.set(NULL_COLOR); } else { diff --git a/web/app/cad/scene/views/openFaceView.js b/web/app/cad/scene/views/openFaceView.js index ef86a478..21a0c8e7 100644 --- a/web/app/cad/scene/views/openFaceView.js +++ b/web/app/cad/scene/views/openFaceView.js @@ -82,11 +82,11 @@ export class OpenFaceView extends SketchingView { updateBounds() { this.dropGeometry(); - let bounds2d = []; - for (let mSketchObject of this.model.sketchObjects) { + const bounds2d = []; + for (const mSketchObject of this.model.sketchObjects) { mSketchObject.sketchPrimitive.tessellate().forEach(p => bounds2d.push(p)); } - let surface = this.model.shell.surfacePrototype.boundTo(bounds2d, 750, 750, 50); + const surface = this.model.shell.surfacePrototype.boundTo(bounds2d, 750, 750, 50); this.bounds = [surface.southWestPoint(), surface.southEastPoint(), surface.northEastPoint(), surface.northWestPoint()]; diff --git a/web/app/cad/scene/views/shellView.js b/web/app/cad/scene/views/shellView.js index 004f7a7f..77e90deb 100644 --- a/web/app/cad/scene/views/shellView.js +++ b/web/app/cad/scene/views/shellView.js @@ -26,19 +26,19 @@ export class ShellView extends View { setAttribute(this.rootGroup, SHELL, this); setAttribute(this.rootGroup, View.MARKER, this); - for (let face of shell.faces) { + for (const face of shell.faces) { const faceView = new FaceView(ctx, face, this, skin); this.faceViews.push(faceView); this.rootGroup.add(faceView.rootGroup); } - for (let edge of shell.edges) { + for (const edge of shell.edges) { const edgeView = new EdgeView(ctx, edge); SceneGraph.addToGroup(this.edgeGroup, edgeView.rootGroup); this.edgeViews.push(edgeView); } - for (let vertex of shell.vertices) { + for (const vertex of shell.vertices) { const vertexView = new VertexView(ctx, vertex); SceneGraph.addToGroup(this.vertexGroup, vertexView.rootGroup); this.vertexViews.push(vertexView); @@ -66,13 +66,13 @@ export class ShellView extends View { } dispose() { - for (let faceView of this.faceViews) { + for (const faceView of this.faceViews) { faceView.dispose(); } - for (let edgeView of this.edgeViews) { + for (const edgeView of this.edgeViews) { edgeView.dispose(); } - for (let vertexView of this.vertexViews) { + for (const vertexView of this.vertexViews) { vertexView.dispose(); } super.dispose(); diff --git a/web/app/cad/scene/views/sketchLoopView.js b/web/app/cad/scene/views/sketchLoopView.js index 2f2ff23b..f1d98ca0 100644 --- a/web/app/cad/scene/views/sketchLoopView.js +++ b/web/app/cad/scene/views/sketchLoopView.js @@ -33,10 +33,10 @@ export class SketchLoopView extends View { this.rootGroup = SceneGraph.createGroup(); - let surface = mLoop.face.surface; + const surface = mLoop.face.surface; let tess; if (surface.simpleSurface && surface.simpleSurface.isPlane) { - let polygon = mLoop.contour.tessellateInCoordinateSystem(mLoop.face.csys); + const polygon = mLoop.contour.tessellateInCoordinateSystem(mLoop.face.csys); tess = TriangulatePolygons([polygon], mLoop.face.csys.z, v => v.data(), arr => new Vector().set3(arr)); } else { tess = tessellateLoopsOnSurface(surface, [mLoop.contour], contour => contour.segments, diff --git a/web/app/cad/scene/views/vertexView.js b/web/app/cad/scene/views/vertexView.js index be05241f..ba176bd4 100644 --- a/web/app/cad/scene/views/vertexView.js +++ b/web/app/cad/scene/views/vertexView.js @@ -90,7 +90,7 @@ class VertexSphere extends Mesh { } updateVisibility() { - let datum3D = this.parent.parent; + const datum3D = this.parent.parent; this.viewer.setVisualProp(this.material, 'visible', this.mouseInside); } } diff --git a/web/app/cad/scene/views/view.js b/web/app/cad/scene/views/view.js index 5a9387f7..96c2bc40 100644 --- a/web/app/cad/scene/views/view.js +++ b/web/app/cad/scene/views/view.js @@ -120,14 +120,14 @@ export const MarkTracker = ViewClass => class extends ViewClass { } doMark() { - let keys = this.marks.keys(); + const keys = this.marks.keys(); let maxPriority = - Number.MAX_VALUE; - for (let key of keys) { + for (const key of keys) { if (key > maxPriority) { maxPriority = key; } } - let color = this.marks.get(maxPriority); + const color = this.marks.get(maxPriority); if (color !== undefined) { this.markImpl(color) } else { diff --git a/web/app/cad/scene/views/viewUtils.js b/web/app/cad/scene/views/viewUtils.js index 765032ff..6a7188b5 100644 --- a/web/app/cad/scene/views/viewUtils.js +++ b/web/app/cad/scene/views/viewUtils.js @@ -22,7 +22,7 @@ const SMOOTH_RENDERING = true; export function tessDataToGeom(tessellation) { const vertices = []; const normals3 = []; - for (let [tr, normales] of tessellation) { + for (const [tr, normales] of tessellation) { tr.forEach(p => vertices.push(...p)); if (normales && SMOOTH_RENDERING) { @@ -51,7 +51,7 @@ export function surfaceAndPolygonsToGeom(surface, polygons) { const index = []; const isPlane = surface.simpleSurface && surface.simpleSurface.isPlane; - let planeNormal = isPlane ? surface.normalInMiddle().data() : null; + const planeNormal = isPlane ? surface.normalInMiddle().data() : null; function pushVertex(vtx) { vertices.push(vtx.x, vtx.y, vtx.z); if (!isPlane) { @@ -74,8 +74,8 @@ export function surfaceAndPolygonsToGeom(surface, polygons) { for (let i = 2; i < vLength; i++) { - let pVert = poly[i - 1]; - let iVert = poly[i]; + const pVert = poly[i - 1]; + const iVert = poly[i]; pushVertex(pVert); pushVertex(iVert); const a = off; @@ -98,7 +98,7 @@ export function surfaceToThreeGeom(srf, geom) { const off = geom.vertices.length; const tess = tessellateSurface(srf); tess.points.forEach(p => geom.vertices.push(new THREE.Vector3().fromArray(p))); - for (let faceIndices of tess.faces) { + for (const faceIndices of tess.faces) { const face = new THREE.Face3(faceIndices[0] + off, faceIndices[1] + off, faceIndices[2] + off); geom.faces.push(face); } diff --git a/web/app/cad/scene/wrappers/entityIO.js b/web/app/cad/scene/wrappers/entityIO.js index 9eb16c8a..675419a1 100644 --- a/web/app/cad/scene/wrappers/entityIO.js +++ b/web/app/cad/scene/wrappers/entityIO.js @@ -2,7 +2,7 @@ import {readBrep} from 'brep/io/brepIO'; import {MBrepShell} from 'cad/model/mshell'; export function readShellEntityFromJson(data, productionAnalyzer, csys) { - let shell = readBrep(data); + const shell = readBrep(data); if (productionAnalyzer) { productionAnalyzer.assignIdentification(shell) } diff --git a/web/app/cad/sketch/inPlaceSketcher.js b/web/app/cad/sketch/inPlaceSketcher.js index 4673bb09..f77154c2 100644 --- a/web/app/cad/sketch/inPlaceSketcher.js +++ b/web/app/cad/sketch/inPlaceSketcher.js @@ -28,15 +28,15 @@ export class InPlaceSketcher { } enter(face, headless) { - let viewer3d = this.ctx.services.viewer; + const viewer3d = this.ctx.services.viewer; this.face = face; this.face.ext.view.sketchGroup.visible = false; viewer3d.setCameraMode(CAMERA_MODE.ORTHOGRAPHIC); lookAtFace(this.ctx.viewer, face); viewer3d.render(); // updates camera projection matrix - let container = viewer3d.sceneSetup.container; - let canvas = document.createElement('canvas'); + const container = viewer3d.sceneSetup.container; + const canvas = document.createElement('canvas'); canvas.style.position = 'absolute'; canvas.style.left = 0; canvas.style.top = 0; @@ -56,7 +56,7 @@ export class InPlaceSketcher { this.ctx.workbenchService.switchWorkbench('sketcher'); - let sketchData = this.ctx.services.storage.get(this.sketchStorageKey); + const sketchData = this.ctx.services.storage.get(this.sketchStorageKey); this.viewer.historyManager.init(sketchData); this.viewer.io.loadSketch(sketchData); this.ctx.streams.sketcher.sketchingFace.next(face); @@ -96,31 +96,31 @@ export class InPlaceSketcher { }; syncWithCamera() { - let face = this.face; - let sceneSetup = this.ctx.services.viewer.sceneSetup; + const face = this.face; + const sceneSetup = this.ctx.services.viewer.sceneSetup; _projScreenMatrix.multiplyMatrices( sceneSetup.oCamera.projectionMatrix, sceneSetup.oCamera.matrixWorldInverse ); - let csys = face.csys; + const csys = face.csys; // let sketchToWorld = face.sketchToWorldTransformation; // let sketchOrigin = sketchToWorld.apply(ORIGIN); // let basisX = sketchToWorld.apply(AXIS.X); // let basisY = sketchToWorld.apply(AXIS.Y); - let sketchOrigin = csys.origin; - let basisX = csys.x; - let basisY = csys.y; + const sketchOrigin = csys.origin; + const basisX = csys.x; + const basisY = csys.y; - let o = ORIGIN.three().applyMatrix4(_projScreenMatrix); - let xx = basisX.three().applyMatrix4(_projScreenMatrix); - let yy = basisY.three().applyMatrix4(_projScreenMatrix); + const o = ORIGIN.three().applyMatrix4(_projScreenMatrix); + const xx = basisX.three().applyMatrix4(_projScreenMatrix); + const yy = basisY.three().applyMatrix4(_projScreenMatrix); - let sketchOriginDelta = sketchOrigin.three().applyMatrix4(_projScreenMatrix); + const sketchOriginDelta = sketchOrigin.three().applyMatrix4(_projScreenMatrix); - let width = sceneSetup.container.clientWidth * DPR / 2; - let height = sceneSetup.container.clientHeight * DPR /2; + const width = sceneSetup.container.clientWidth * DPR / 2; + const height = sceneSetup.container.clientHeight * DPR /2; xx.sub(o); yy.sub(o); @@ -141,4 +141,4 @@ export class InPlaceSketcher { } } -let _projScreenMatrix = new Matrix4(); \ No newline at end of file +const _projScreenMatrix = new Matrix4(); \ No newline at end of file diff --git a/web/app/cad/sketch/reassignSketchMode.js b/web/app/cad/sketch/reassignSketchMode.js index 390d69b7..1ea31481 100644 --- a/web/app/cad/sketch/reassignSketchMode.js +++ b/web/app/cad/sketch/reassignSketchMode.js @@ -19,7 +19,7 @@ export default function initReassignSketchMode(ctx) { function enter(fromId) { ctx.streams.ui.sockets.headsUpHelper.next('ReassignSketchTool'); detach = ctx.streams.selection.face.attach(faces => { - let face = faces[0]; + const face = faces[0]; if (face && face !== fromId) { exit(); ctx.services.sketcher.reassignSketch(fromId, face); diff --git a/web/app/cad/sketch/sketchBoundaries.js b/web/app/cad/sketch/sketchBoundaries.js index 13638007..e611525e 100644 --- a/web/app/cad/sketch/sketchBoundaries.js +++ b/web/app/cad/sketch/sketchBoundaries.js @@ -9,13 +9,13 @@ import {circleFromPoints, radiusOfCurvature} from "geom/euclidean"; export function getSketchBoundaries(sceneFace) { const boundary = {lines: [], arcs: [], circles: [], nurbses: []}; - let w2sTr = sceneFace.worldToSketchTransformation; + const w2sTr = sceneFace.worldToSketchTransformation; let _w2sTrArr = null; - let w2sTrArr = () => _w2sTrArr || (_w2sTrArr = w2sTr.toArray()); + const w2sTrArr = () => _w2sTrArr || (_w2sTrArr = w2sTr.toArray()); if (!sceneFace.brepFace) { return boundary; } - for (let he of sceneFace.brepFace.edges) { + for (const he of sceneFace.brepFace.edges) { const edge = sceneFace.shell.brepRegistry.get(he.edge); if (!edge) { continue; @@ -23,23 +23,23 @@ export function getSketchBoundaries(sceneFace) { const id = edge.id; const curve = he.edge.curve.impl; if (curve.constructor.name === 'NurbsCurve' && curve.degree() !== 1) { - let curve2d = curve.transform(w2sTrArr()); - let arcRadius = findArcRadius(curve2d); + const curve2d = curve.transform(w2sTrArr()); + const arcRadius = findArcRadius(curve2d); if (arcRadius !== null){ - let [from, to] = curve2d.domain(); - let [A, DA, DDA] = curve2d.eval(from, 2); - let [B, DB] = curve2d.eval(to, 1); + const [from, to] = curve2d.domain(); + const [A, DA, DDA] = curve2d.eval(from, 2); + const [B, DB] = curve2d.eval(to, 1); - let mA = vec.normalize(DA); - let mmA = vec.normalize(DDA); + const mA = vec.normalize(DA); + const mmA = vec.normalize(DDA); - let orient = mA[0] * mmA[1] - mA[1] * mmA[0]; + const orient = mA[0] * mmA[1] - mA[1] * mmA[0]; - let k = orient < 0 ? -1 : 1; + const k = orient < 0 ? -1 : 1; if (veqXYZ(A[0], A[1], 0, B[0], B[1], 0)) { - let centripetal = perpXY(vec.mul(mA, k * arcRadius)); - let c = vec._add(centripetal, A); + const centripetal = perpXY(vec.mul(mA, k * arcRadius)); + const c = vec._add(centripetal, A); boundary.circles.push({ id, c: {x: c[0], y: c[1]}, @@ -48,13 +48,13 @@ export function getSketchBoundaries(sceneFace) { continue; } - let centripetalB = vec.normalize(DB); + const centripetalB = vec.normalize(DB); perpXY(centripetalB); - let proj = vec.dot(mA, vec.sub(A, B)); - let u = proj / vec.dot(mA, centripetalB); + const proj = vec.dot(mA, vec.sub(A, B)); + const u = proj / vec.dot(mA, centripetalB); - let C = vec._add(vec._mul(centripetalB, u), B); + const C = vec._add(vec._mul(centripetalB, u), B); boundary.arcs.push({ id, a: {x: A[0], y: A[1]}, @@ -84,12 +84,12 @@ function findArcRadius(curve) { if (curve.degree() !== 2) { return null; } - let [uMin, uMax] = curve.domain(); - let knots = curveTessParams(curve, uMin, uMax); + const [uMin, uMax] = curve.domain(); + const knots = curveTessParams(curve, uMin, uMax); let prevRadCur = null; - for (let knot of knots) { - let [P, D, DD] = curve.eval(knot, 2); - let radCur = radiusOfCurvature(D, DD); + for (const knot of knots) { + const [P, D, DD] = curve.eval(knot, 2); + const radCur = radiusOfCurvature(D, DD); if (prevRadCur !== null && !areEqual(radCur, prevRadCur, 0.1)) { return null; } @@ -99,7 +99,7 @@ function findArcRadius(curve) { } function perpXY(v) { - let [x, y] = v; + const [x, y] = v; v[0] = - y; v[1] = x; diff --git a/web/app/cad/sketch/sketcherConstraintsActions.js b/web/app/cad/sketch/sketcherConstraintsActions.js index 2da60cc4..d878ce65 100644 --- a/web/app/cad/sketch/sketcherConstraintsActions.js +++ b/web/app/cad/sketch/sketcherConstraintsActions.js @@ -7,7 +7,7 @@ export default [ icon32: 'img/coi.png', }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.coincident(viewer.selected); } }, @@ -20,7 +20,7 @@ export default [ icon32: 'img/vert.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.vertical(viewer.selected); } }, @@ -34,7 +34,7 @@ export default [ icon32: 'img/hor.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.horizontal(viewer.selected); } }, @@ -47,7 +47,7 @@ export default [ icon32: 'img/par.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.parallel(viewer.selected); } }, @@ -61,7 +61,7 @@ export default [ icon32: 'img/per.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.perpendicular(viewer.selected); } }, @@ -75,7 +75,7 @@ export default [ icon32: 'img/p2l.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.p2lDistance(viewer.selected, prompt); } }, @@ -89,7 +89,7 @@ export default [ icon32: 'img/p2p.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.p2pDistance(viewer.selected, prompt); } }, @@ -102,7 +102,7 @@ export default [ icon32: 'img/rad.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.radius(viewer.selected, prompt); } }, @@ -116,7 +116,7 @@ export default [ icon32: 'img/eq.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.entityEquality(viewer.selected); } }, @@ -129,7 +129,7 @@ export default [ icon32: 'img/tgn.png' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.tangent(viewer.selected); } }, @@ -142,7 +142,7 @@ export default [ cssIcons: ['lock'] }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.lock(viewer.selected); } }, @@ -155,7 +155,7 @@ export default [ icon32: 'img/vec/pointOnLine.svg' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.pointOnLine(viewer.selected); } }, @@ -168,7 +168,7 @@ export default [ icon32: 'img/vec/pointOnArc.svg' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.pointOnArc(viewer.selected); } }, @@ -181,7 +181,7 @@ export default [ icon32: 'img/vec/pointInMiddle.svg' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.pointInMiddle(viewer.selected); } }, @@ -194,7 +194,7 @@ export default [ icon32: 'img/vec/angle.svg' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.llAngle(viewer.selected, prompt); } }, @@ -207,7 +207,7 @@ export default [ icon32: 'img/vec/symmetry.svg' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.symmetry(viewer.selected, prompt); } }, @@ -219,7 +219,7 @@ export default [ cssIcons: ['star-half-o'] }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.mirror(viewer.selected); } }, @@ -231,7 +231,7 @@ export default [ icon32: 'img/vec/convex.svg' }, invoke: ({services}) => { - let viewer = services.sketcher.inPlaceEditor.viewer; + const viewer = services.sketcher.inPlaceEditor.viewer; viewer.parametricManager.lockConvex(viewer.selected, alert); } }, diff --git a/web/app/cad/sketch/sketcherControlActions.js b/web/app/cad/sketch/sketcherControlActions.js index a8d316b2..30f0db45 100644 --- a/web/app/cad/sketch/sketcherControlActions.js +++ b/web/app/cad/sketch/sketcherControlActions.js @@ -34,7 +34,7 @@ export default [ icon: RiExternalLinkLine, }, invoke: ({services}) => { - let face = services.sketcher.inPlaceEditor.face; + const face = services.sketcher.inPlaceEditor.face; services.sketcher.inPlaceEditor.save(); services.sketcher.inPlaceEditor.exit(); services.sketcher.sketchFace2D(face); diff --git a/web/app/cad/stl/io.js b/web/app/cad/stl/io.js index 55d7e3a1..161ece19 100644 --- a/web/app/cad/stl/io.js +++ b/web/app/cad/stl/io.js @@ -8,7 +8,7 @@ export function LoadSTLFromURL(url, solidsConsumer) { if (this.status == 200) { const reader = new FileReader(); reader.addEventListener("loadend", () => { - let solids = ParseStl(reader.result); + const solids = ParseStl(reader.result); solidsConsumer(solids) }); reader.readAsArrayBuffer(this.response); diff --git a/web/app/cad/stl/stlAsciiReader.js b/web/app/cad/stl/stlAsciiReader.js index a572794b..add647ab 100644 --- a/web/app/cad/stl/stlAsciiReader.js +++ b/web/app/cad/stl/stlAsciiReader.js @@ -4,13 +4,13 @@ export function parse(buf) { let solid = new StlSolid(''); let face = new StlFace(null); - let solids = []; - let reader = new LinesReader(buf); + const solids = []; + const reader = new LinesReader(buf); let lineNumber = 0; while (reader.hasNextLine()) { - let line = reader.nextLine(); + const line = reader.nextLine(); lineNumber ++; - let parts = line + const parts = line .trim() .split(' ') .filter(function(part) { @@ -55,7 +55,7 @@ export function parse(buf) { function LinesReader(buf) { let mark = 0; let pos = 0; - let arr = new Uint8Array(buf); + const arr = new Uint8Array(buf); this.nextLine = function() { let str = ""; for (let i = mark; i < pos; i++) { diff --git a/web/app/cad/stl/stlBinaryReader.js b/web/app/cad/stl/stlBinaryReader.js index 14c78e37..244b4294 100644 --- a/web/app/cad/stl/stlBinaryReader.js +++ b/web/app/cad/stl/stlBinaryReader.js @@ -12,17 +12,17 @@ export function parse(dataView) { const solid = new StlSolid('binary'); let off = 80; // skip header - let triangleCount = dataView.getUint32(off, true); + const triangleCount = dataView.getUint32(off, true); off += 4; for (let i = 0; i < triangleCount; i++) { - let normal = readVector(dataView, off); + const normal = readVector(dataView, off); off += 12; // 3 floats - let face = new StlFace(normal); + const face = new StlFace(normal); for (let j = 0; j < 3; j++) { - let position = readVector(dataView, off); + const position = readVector(dataView, off); off += 12; face.vertices.push(position); } diff --git a/web/app/cad/tess/brep-tess.js b/web/app/cad/tess/brep-tess.js index e76f7b11..3a2bbcb7 100644 --- a/web/app/cad/tess/brep-tess.js +++ b/web/app/cad/tess/brep-tess.js @@ -9,31 +9,31 @@ export default function A(face) { export function tessellateLoopsOnSurface(surface, curveContours, getLoop, getCurve, isInverted) { - let loops = []; - for (let contour of curveContours) { - let pipLoop = []; + const loops = []; + for (const contour of curveContours) { + const pipLoop = []; loops.push(pipLoop); - for (let segment of getLoop(contour)) { - let curvePoints = getCurve(segment).tessellate(); + for (const segment of getLoop(contour)) { + const curvePoints = getCurve(segment).tessellate(); if (isInverted(segment)) { curvePoints.reverse(); } curvePoints.pop(); - for (let point of curvePoints) { - let wp = surface.workingPoint(point); + for (const point of curvePoints) { + const wp = surface.workingPoint(point); pipLoop.push(wp); } } } - let tess = tessellateSurface(surface.impl); - let nurbsTriangles = tess.faces.map(f => f.map(i => surface.createWorkingPoint(tess.uvs[i], Vector.fromData(tess.points[i])))); + const tess = tessellateSurface(surface.impl); + const nurbsTriangles = tess.faces.map(f => f.map(i => surface.createWorkingPoint(tess.uvs[i], Vector.fromData(tess.points[i])))); - let paths = clip(nurbsTriangles, loops); + const paths = clip(nurbsTriangles, loops); - let triangles = tessPaths(paths); + const triangles = tessPaths(paths); - let out = convertPoints(triangles, p => surface.workingPointTo3D(p) ); + const out = convertPoints(triangles, p => surface.workingPointTo3D(p) ); // __DEBUG__.AddPointPolygons(out, 0x00ffff); return out; } @@ -49,14 +49,14 @@ function clip(triangles, loops) { const scale = 1e3 ;// multiplying by BrepSurface.WORKING_POINT_SCALE_FACTOR gives 1e6 - let clip_paths = convertPoints(loops, p => ({X:p.x, Y:p.y}) ); + const clip_paths = convertPoints(loops, p => ({X:p.x, Y:p.y}) ); ClipperLib.JS.ScaleUpPaths(clip_paths, scale); let out = []; - for (let tr of triangles) { - let cpr = new ClipperLib.Clipper(); - let subj_paths = convertPoints([tr], p => ({X:p.x, Y:p.y}) ); + for (const tr of triangles) { + const cpr = new ClipperLib.Clipper(); + const subj_paths = convertPoints([tr], p => ({X:p.x, Y:p.y}) ); ClipperLib.JS.ScaleUpPaths(subj_paths, scale); @@ -64,8 +64,8 @@ function clip(triangles, loops) { cpr.AddPaths(subj_paths, ClipperLib.PolyType.ptSubject, true); // true means closed path cpr.AddPaths(clip_paths, ClipperLib.PolyType.ptClip, true); - let solution_paths = new ClipperLib.Paths(); - let succeeded = cpr.Execute(ClipperLib.ClipType.ctIntersection, solution_paths, ClipperLib.PolyFillType.pftNonZero, ClipperLib.PolyFillType.pftNonZero); + const solution_paths = new ClipperLib.Paths(); + const succeeded = cpr.Execute(ClipperLib.ClipType.ctIntersection, solution_paths, ClipperLib.PolyFillType.pftNonZero, ClipperLib.PolyFillType.pftNonZero); ClipperLib.JS.ScaleUpPaths(solution_paths, 1.0/scale); solution_paths.forEach(p => out.push(p)); } @@ -98,9 +98,9 @@ function tessPaths(paths) { const vertices = []; tessy.gluTessBeginPolygon(vertices); - for (let path of paths) { + for (const path of paths) { tessy.gluTessBeginContour(); - for (let p of path) { + for (const p of path) { tessy.gluTessVertex([p.x, p.y, 0], p); } tessy.gluTessEndContour(); diff --git a/web/app/cad/tess/nested-loops.js b/web/app/cad/tess/nested-loops.js index 63edaf36..6f3916a2 100644 --- a/web/app/cad/tess/nested-loops.js +++ b/web/app/cad/tess/nested-loops.js @@ -4,8 +4,8 @@ import {isCCW} from "geom/euclidean"; export default function(loops) { loops = loops.map(loop => new NestedLoop(loop)); function contains(loop, other) { - let classifyPointInsideLoop = pip(loop); - for (let point of other) { + const classifyPointInsideLoop = pip(loop); + for (const point of other) { if (!classifyPointInsideLoop(point).inside) { return false; } @@ -43,7 +43,7 @@ class NestedLoop { } classifyImpl(pt) { - let res = this.pip(pt); + const res = this.pip(pt); if (res.inside) { return res; } diff --git a/web/app/cad/tess/pip.js b/web/app/cad/tess/pip.js index 347eba8d..8a6e5fa3 100644 --- a/web/app/cad/tess/pip.js +++ b/web/app/cad/tess/pip.js @@ -24,7 +24,7 @@ export default function(outerLoop, innerLoops, tol) { this.edge = edge; } - for( let pt2 of loop ) { + for( const pt2 of loop ) { if (veq(pt, pt2)) { return new VertexResult(pt2); } @@ -35,7 +35,7 @@ export default function(outerLoop, innerLoops, tol) { const j = (i + 1) % n; const a = loop[i]; const b = loop[j]; - let dy = b.y - a.y; + const dy = b.y - a.y; if (eq(dy, 0)) { grads.push(0) } else if (dy > 0) { @@ -124,7 +124,7 @@ export default function(outerLoop, innerLoops, tol) { } } - let perpEdge = edgeDx * (pt.y - edgeLowPt.y) - edgeDy * (pt.x - edgeLowPt.x); + const perpEdge = edgeDx * (pt.y - edgeLowPt.y) - edgeDy * (pt.x - edgeLowPt.x); if ( eq(perpEdge, 0) ) return new EdgeResult([a, b]); if ( perpEdge < 0 ) { continue; @@ -135,7 +135,7 @@ export default function(outerLoop, innerLoops, tol) { } return function classifyPointInsideLoops(pt) { - let outer = classifyPointInsideLoop(pt, outerLoop); + const outer = classifyPointInsideLoop(pt, outerLoop); if (outer.inside) { if (outer.vertex || outer.edge) { return outer; @@ -143,7 +143,7 @@ export default function(outerLoop, innerLoops, tol) { } if (innerLoops) { - for (let innerLoop of innerLoops) { + for (const innerLoop of innerLoops) { const inner = classifyPointInsideLoop(pt, innerLoop); if (inner.vertex || inner.edge) { return inner; diff --git a/web/app/cad/tess/triangulation.js b/web/app/cad/tess/triangulation.js index 7bf481e7..0fec1f4e 100644 --- a/web/app/cad/tess/triangulation.js +++ b/web/app/cad/tess/triangulation.js @@ -18,7 +18,7 @@ function initTesselator() { // console.log('edge flag: ' + flag); } - let tessy = new libtess.GluTesselator(); + const tessy = new libtess.GluTesselator(); // tessy.gluTessProperty(libtess.gluEnum.GLU_TESS_WINDING_RULE, libtess.windingRule.GLU_TESS_WINDING_POSITIVE); tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_VERTEX_DATA, vertexCallback); tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_BEGIN, begincallback); @@ -53,9 +53,9 @@ export function Triangulate(contours, normal) { const triangleVerts = []; tessy.gluTessBeginPolygon(triangleVerts); - for (let contour of contours) { + for (const contour of contours) { tessy.gluTessBeginContour(); - for (let coords of contour) { + for (const coords of contour) { tessy.gluTessVertex(coords, coords); } tessy.gluTessEndContour(); @@ -69,15 +69,15 @@ export function Triangulate(contours, normal) { export function TriangulatePolygons(polygons, normal, toArray, fromArray) { const triangled = []; const contours = []; - for (let poly of polygons) { + for (const poly of polygons) { contours.push(poly.map(point => toArray(point))); } - let vertices = Triangulate(contours, toArray(normal)); + const vertices = Triangulate(contours, toArray(normal)); for (let i = 0; i < vertices.length; i += 3 ) { - let a = fromArray(vertices[i]); - let b = fromArray(vertices[i + 1]); - let c = fromArray(vertices[i + 2]); + const a = fromArray(vertices[i]); + const b = fromArray(vertices[i + 1]); + const c = fromArray(vertices[i + 2]); triangled.push([a, b, c]); } return triangled; @@ -97,7 +97,7 @@ export function TriangulateFace(face) { function edgeCallback(flag) { } - let tessy = new libtess.GluTesselator(); + const tessy = new libtess.GluTesselator(); // tessy.gluTessProperty(libtess.gluEnum.GLU_TESS_WINDING_RULE, libtess.windingRule.GLU_TESS_WINDING_POSITIVE); tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_VERTEX_DATA, vertexCallback); tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_BEGIN, begincallback); @@ -111,14 +111,14 @@ export function TriangulateFace(face) { const vertices = []; tessy.gluTessBeginPolygon(vertices); - for (let loop of face.loops) { + for (const loop of face.loops) { tessy.gluTessBeginContour(); - for (let e of loop.halfEdges) { + for (const e of loop.halfEdges) { if (e.edge.curve.isLine) { tessy.gluTessVertex(arr(e.vertexA.point), e.vertexA); } else if (e.edge.curve.verb) { tessy.gluTessVertex(arr(e.vertexA.point), e.vertexA); - let points = e.edge.curve.tessellate(); + const points = e.edge.curve.tessellate(); if (e.inverted) { points.reverse(); } @@ -135,9 +135,9 @@ export function TriangulateFace(face) { const triangled = []; for (let i = 0; i < vertices.length; i += 3 ) { - let a = vertices[i]; - let b = vertices[i + 1]; - let c = vertices[i + 2]; + const a = vertices[i]; + const b = vertices[i + 1]; + const c = vertices[i + 2]; triangled.push([a, b, c]); } return triangled; diff --git a/web/app/sketcher.js b/web/app/sketcher.js index 9b4b6015..287b18c1 100644 --- a/web/app/sketcher.js +++ b/web/app/sketcher.js @@ -123,7 +123,7 @@ function atatchToToolStreams(context) { function startReact(appCtx) { - let reactControls = document.getElementById('react-controls'); + const reactControls = document.getElementById('react-controls'); reactControls.onkeydown = e => { e.stopPropagation(); // e.preventDefault(); diff --git a/web/app/sketcher/actions/constraintActions.js b/web/app/sketcher/actions/constraintActions.js index bf25e332..012f19aa 100644 --- a/web/app/sketcher/actions/constraintActions.js +++ b/web/app/sketcher/actions/constraintActions.js @@ -45,8 +45,8 @@ export default [ invoke: (ctx, matchedObjects) => { const {viewer} = ctx; const [first, ...others] = matchedObjects; - let pm = viewer.parametricManager; - for (let obj of others) { + const pm = viewer.parametricManager; + for (const obj of others) { pm._add( new AlgNumConstraint(ConstraintDefinitions.PCoincident, [first, obj]) ); @@ -162,7 +162,7 @@ export default [ invoke: (ctx, matchedObjects) => { const {viewer} = ctx; const [pt, line] = matchedObjects; - let pm = viewer.parametricManager; + const pm = viewer.parametricManager; pm.add(new AlgNumConstraint(ConstraintDefinitions.PointOnLine, [pt, line])); } }, @@ -190,7 +190,7 @@ export default [ invoke: (ctx, matchedObjects) => { const {viewer} = ctx; const [pt, circle] = matchedObjects; - let pm = viewer.parametricManager; + const pm = viewer.parametricManager; pm.add(new AlgNumConstraint(ConstraintDefinitions.PointOnCircle, [pt, circle])); } }, @@ -218,7 +218,7 @@ export default [ invoke: (ctx, matchedObjects) => { const {viewer} = ctx; const [pt, curve] = matchedObjects; - let pm = viewer.parametricManager; + const pm = viewer.parametricManager; pm.add(new AlgNumConstraint(ConstraintDefinitions.PointOnBezier, [pt, curve])); } }, @@ -468,7 +468,7 @@ export default [ editConstraint(ctx, firstConstr, () => { const pm = viewer.parametricManager; pm._add(firstConstr); - for (let other of others) { + for (const other of others) { pm._add(new AlgNumConstraint(ConstraintDefinitions.SegmentLength, [other], {...firstConstr.constants})); } pm.commit(); @@ -500,7 +500,7 @@ export default [ editConstraint(ctx, firstConstr, () => { const pm = viewer.parametricManager; pm._add(firstConstr); - for (let other of others) { + for (const other of others) { pm._add(new AlgNumConstraint(ConstraintDefinitions.RadiusLength, [other], {...firstConstr.constants})); } pm.commit(); diff --git a/web/app/sketcher/actions/matchUtils.js b/web/app/sketcher/actions/matchUtils.js index d1ffd1fe..926ee44a 100644 --- a/web/app/sketcher/actions/matchUtils.js +++ b/web/app/sketcher/actions/matchUtils.js @@ -5,7 +5,7 @@ export function matchAll(selection, shapeConstructor, min) { if (min !== undefined && selection.length < min) { return false; } - for (let obj of selection) { + for (const obj of selection) { if (obj._class !== shapeConstructor.prototype._class) { return false; } @@ -18,13 +18,13 @@ export function matchTypes(selection) { let si = 0; let i = 1; for (; i < arguments.length; i+=2) { - let shapeConstructor = arguments[i]; - let quantity = arguments[i+1]; + const shapeConstructor = arguments[i]; + const quantity = arguments[i+1]; if (si === selection.length) { return false; } for (let j = 0; j < quantity && si < selection.length; j++) { - let obj = selection[si++]; + const obj = selection[si++]; if (obj._class !== shapeConstructor.prototype._class) { return false; } diff --git a/web/app/sketcher/components/ContextualControls.jsx b/web/app/sketcher/components/ContextualControls.jsx index 00fa3cb8..50dc77d7 100644 --- a/web/app/sketcher/components/ContextualControls.jsx +++ b/web/app/sketcher/components/ContextualControls.jsx @@ -29,7 +29,7 @@ export function ContextualControls() { const setRole = (obj, role) => { - let viewer = ctx.viewer; + const viewer = ctx.viewer; if (obj.aux) { return; } @@ -38,7 +38,7 @@ export function ContextualControls() { }; const tweakRole = (obj) => { - let viewer = ctx.viewer; + const viewer = ctx.viewer; if (obj.role === 'construction') { setRole(obj, null); } else if (obj.role === null) { diff --git a/web/app/sketcher/components/Dock.js b/web/app/sketcher/components/Dock.js index 628db5a4..d849e09e 100644 --- a/web/app/sketcher/components/Dock.js +++ b/web/app/sketcher/components/Dock.js @@ -15,11 +15,11 @@ export class Dock { }); } for (let i = 0; i < viewDefinitions.length; i++) { - let viewDef = viewDefinitions[i]; - let view = {}; + const viewDef = viewDefinitions[i]; + const view = {}; this.views[viewDef.name] = view; view.node = createElement('div', undefined, 'dock-node'); - let caption = createElement('div', undefined, 'tool-caption'); + const caption = createElement('div', undefined, 'tool-caption'); caption.appendChild(createElement('span', undefined, 'txt', viewDef.name.toUpperCase())); caption.appendChild(createElement('i', undefined, 'fa fa-'+viewDef.icon)); view.node.appendChild(caption); @@ -32,7 +32,7 @@ export class Dock { } show(viewName) { - let view = this.views[viewName]; + const view = this.views[viewName]; if (view.switchBtn.classList.contains('selected')) { return; } @@ -45,7 +45,7 @@ export class Dock { } hide(viewName) { - let view = this.views[viewName]; + const view = this.views[viewName]; if (!view.switchBtn.classList.contains('selected')) { return; } diff --git a/web/app/sketcher/components/SketchManager.jsx b/web/app/sketcher/components/SketchManager.jsx index 39e51a3c..d7724a51 100644 --- a/web/app/sketcher/components/SketchManager.jsx +++ b/web/app/sketcher/components/SketchManager.jsx @@ -32,7 +32,7 @@ function SketchList() { const {project} = useContext(SketcherAppContext); const items = useMemo(() => { - let theItems = []; + const theItems = []; for (let name of Object.keys(localStorage)) { if (name.indexOf(SKETCHER_STORAGE_PREFIX) === 0) { name = name.substring(SKETCHER_STORAGE_PREFIX.length); diff --git a/web/app/sketcher/components/SketchObjectExplorer.jsx b/web/app/sketcher/components/SketchObjectExplorer.jsx index 39ffee54..4d489593 100644 --- a/web/app/sketcher/components/SketchObjectExplorer.jsx +++ b/web/app/sketcher/components/SketchObjectExplorer.jsx @@ -18,17 +18,17 @@ export function SketchObjectExplorer() { } const select = (obj, exclusive) => { - let viewer = ctx.viewer; + const viewer = ctx.viewer; viewer.select([obj], exclusive); viewer.refresh(); }; const deselect = obj => { - let viewer = ctx.viewer; + const viewer = ctx.viewer; viewer.deselect(obj); viewer.refresh(); }; const setRole = (obj, role) => { - let viewer = ctx.viewer; + const viewer = ctx.viewer; if (obj.aux) { return; } diff --git a/web/app/sketcher/components/SketcherOperationWizard.jsx b/web/app/sketcher/components/SketcherOperationWizard.jsx index aa340510..4f15d6b3 100644 --- a/web/app/sketcher/components/SketcherOperationWizard.jsx +++ b/web/app/sketcher/components/SketcherOperationWizard.jsx @@ -37,7 +37,7 @@ export default function SketcherOperationWizard() { const params = {}; const indexedSchema = {}; - for (let field of schema) { + for (const field of schema) { indexedSchema[field.name] = field; if (field.type === 'selection') { @@ -55,7 +55,7 @@ export default function SketcherOperationWizard() { const {activeParam, params} = state; let selectionParam = activeParam; if (!(indexedSchema[selectionParam] && indexedSchema[selectionParam].type === 'selection')) { - let found = schema.find(f => f.type === 'selection'); + const found = schema.find(f => f.type === 'selection'); if (!found) { return state; } @@ -150,7 +150,7 @@ function entityRenderer(obj) { function syncSelection(params, schema, viewer) { - for (let field of schema) { + for (const field of schema) { if (field.type === 'selection') { const selection = params[field.name]; if (selection) { diff --git a/web/app/sketcher/components/TerminalView.jsx b/web/app/sketcher/components/TerminalView.jsx index 558af11f..36354909 100644 --- a/web/app/sketcher/components/TerminalView.jsx +++ b/web/app/sketcher/components/TerminalView.jsx @@ -80,7 +80,7 @@ export function TerminalView({visible, output, addToOutput, onClose, variantsSup if (e.keyCode === 9) { const text = e.target.value; - let variants = variantsSupplier().filter(v => v.startsWith(text)); + const variants = variantsSupplier().filter(v => v.startsWith(text)); variants.sort(); if (variants.length !== 0) { const shared = sharedStartOfSortedArray(variants); @@ -163,7 +163,7 @@ const DEFAULT_COMMAND_HANDLER = (command, println, ctx) => { return; } - let action = byCommand(getAllSketcherActions())[command]; + const action = byCommand(getAllSketcherActions())[command]; if (action) { println({text: action.shortName}); action.invoke(ctx); diff --git a/web/app/sketcher/constr/constructions.js b/web/app/sketcher/constr/constructions.js index da120d88..f7a99fd7 100644 --- a/web/app/sketcher/constr/constructions.js +++ b/web/app/sketcher/constr/constructions.js @@ -15,7 +15,7 @@ const CONSTRUCTIONS = [ export function findConstructionCluster(constr, isScheduled) { - for (let construct of CONSTRUCTIONS) { + for (const construct of CONSTRUCTIONS) { const cluster = construct(constr); if (cluster && !cluster.find(isScheduled)) { return cluster; @@ -27,7 +27,7 @@ export function findConstructionCluster(constr, isScheduled) { function getAdjacentConstraint(constr, throughObject, constrTypeId) { - for (let adjConstr of throughObject.constraints) { + for (const adjConstr of throughObject.constraints) { if (constr !== adjConstr && adjConstr.schema.id === constrTypeId) { return adjConstr; } diff --git a/web/app/sketcher/constr/residuals.js b/web/app/sketcher/constr/residuals.js index 5bc7b5de..a141a7b3 100644 --- a/web/app/sketcher/constr/residuals.js +++ b/web/app/sketcher/constr/residuals.js @@ -37,8 +37,8 @@ export function R_TangentLC(params, [inverted]) { const cy = params[CY].get(); const r = params[R].get(); - let nx = Math.cos(ang) ; - let ny = Math.sin(ang) ; + const nx = Math.cos(ang) ; + const ny = Math.sin(ang) ; return (cx*nx + cy*ny) - (w+k*r); @@ -81,8 +81,8 @@ export function R_PointOnLine(params, constants) { const w = params[W].get(); - let nx = Math.cos(ang) ; - let ny = Math.sin(ang) ; + const nx = Math.cos(ang) ; + const ny = Math.sin(ang) ; return px * nx + py * ny - w; diff --git a/web/app/sketcher/constr/solver.js b/web/app/sketcher/constr/solver.js index b34940c3..db14788c 100644 --- a/web/app/sketcher/constr/solver.js +++ b/web/app/sketcher/constr/solver.js @@ -11,9 +11,9 @@ function System(constraints) { this.constraints = constraints; this.params = []; for (let ci = 0; ci < constraints.length; ++ci) { - let c = constraints[ci]; + const c = constraints[ci]; for (let pi = 0; pi < c.params.length; ++pi) { - let p = c.params[pi]; + const p = c.params[pi]; if (p.j == -1) { p.j = this.params.length; this.params.push(p); @@ -24,7 +24,7 @@ function System(constraints) { System.prototype.makeJacobian = function() { - let jacobi = []; + const jacobi = []; let i; let j; for (i=0; i < this.constraints.length; i++) { @@ -34,15 +34,15 @@ System.prototype.makeJacobian = function() { } } for (i=0; i < this.constraints.length; i++) { - let c = this.constraints[i]; + const c = this.constraints[i]; - let cParams = c.params; - let grad = []; + const cParams = c.params; + const grad = []; fillArray(grad, 0, cParams.length, 0); c.gradient(grad); for (let p = 0; p < cParams.length; p++) { - let param = cParams[p]; + const param = cParams[p]; j = param.j; jacobi[i][j] = grad[p]; } @@ -52,16 +52,16 @@ System.prototype.makeJacobian = function() { System.prototype.fillJacobian = function(jacobi) { for (let i=0; i < this.constraints.length; i++) { - let c = this.constraints[i]; + const c = this.constraints[i]; - let cParams = c.params; - let grad = []; + const cParams = c.params; + const grad = []; fillArray(grad, 0, cParams.length, 0); c.gradient(grad); for (let p = 0; p < cParams.length; p++) { - let param = cParams[p]; - let j = param.j; + const param = cParams[p]; + const j = param.j; jacobi[i][j] = grad[p]; } } @@ -74,7 +74,7 @@ System.prototype.calcResidual = function(r) { let err = 0.; for (i=0; i < this.constraints.length; i++) { - let c = this.constraints[i]; + const c = this.constraints[i]; r[i] = c.error(); err += r[i]*r[i]; } @@ -90,16 +90,16 @@ System.prototype.calcGrad_ = function(out) { } for (i=0; i < this.constraints.length; i++) { - let c = this.constraints[i]; + const c = this.constraints[i]; - let cParams = c.params; - let grad = []; + const cParams = c.params; + const grad = []; fillArray(grad, 0, cParams.length, 0); c.gradient(grad); for (let p = 0; p < cParams.length; p++) { - let param = cParams[p]; - let j = param.j; + const param = cParams[p]; + const j = param.j; out[j][0] += this.constraints[i].error() * grad[p]; // (10.4) } } @@ -112,16 +112,16 @@ System.prototype.calcGrad = function(out) { } for (i=0; i < this.constraints.length; i++) { - let c = this.constraints[i]; + const c = this.constraints[i]; - let cParams = c.params; - let grad = []; + const cParams = c.params; + const grad = []; fillArray(grad, 0, cParams.length, 0); c.gradient(grad); for (let p = 0; p < cParams.length; p++) { - let param = cParams[p]; - let j = param.j; + const param = cParams[p]; + const j = param.j; out[j] += this.constraints[i].error() * grad[p]; // (10.4) } } @@ -134,7 +134,7 @@ System.prototype.fillParams = function(out) { }; System.prototype.getParams = function() { - let out = []; + const out = []; this.fillParams(out); return out; }; @@ -156,14 +156,14 @@ System.prototype.error = function() { System.prototype.errorSquare = function() { let error = 0; for (let i=0; i < this.constraints.length; i++) { - let t = this.constraints[i].error(); + const t = this.constraints[i].error(); error += t * t; } return error * 0.5; }; System.prototype.getValues = function() { - let values = []; + const values = []; for (let i=0; i < this.constraints.length; i++) { values[i] = this.constraints[i].error(); } @@ -190,7 +190,7 @@ function wrapConstants(constrs) { constrs[i] = new ConstantWrapper(c, mask); } } - for (let constr of constrs) { + for (const constr of constrs) { if (constr.params.length === 0) { return constrs.filter(c => c.params.length !== 0); } @@ -198,32 +198,32 @@ function wrapConstants(constrs) { return constrs; } -let lock2Equals2 = function(constrs, locked) { - let _locked = []; +const lock2Equals2 = function(constrs, locked) { + const _locked = []; for (let i = 0; i < locked.length; ++i) { _locked.push(new EqualsTo([locked[i]], locked[i].get())); } return _locked; }; -let diagnose = function(sys) { +const diagnose = function(sys) { if (sys.constraints.length === 0 || sys.params.length === 0) { return { conflict : false, dof : 0 } } - let jacobian = sys.makeJacobian(); - let qr = new QR(jacobian); + const jacobian = sys.makeJacobian(); + const qr = new QR(jacobian); return { conflict : sys.constraints.length > qr.rank, dof : sys.params.length - qr.rank } }; -let prepare = function(constrs, locked) { +const prepare = function(constrs, locked) { - let simpleMode = true; + const simpleMode = true; let lockingConstrs; if (!simpleMode) { lockingConstrs = lock2Equals2(constrs, locked); @@ -231,18 +231,18 @@ let prepare = function(constrs, locked) { } constrs = wrapConstants(constrs); - let sys = new System(constrs); + const sys = new System(constrs); - let model = function(point) { + const model = function(point) { sys.setParams(point); return sys.getValues(); }; - let jacobian = function(point) { + const jacobian = function(point) { sys.setParams(point); return sys.makeJacobian(); }; - let nullResult = { + const nullResult = { evalCount : 0, error : 0, returnCode : 1 @@ -262,7 +262,7 @@ let prepare = function(constrs, locked) { } return result; } - let systemSolver = { + const systemSolver = { diagnose : function() {return diagnose(sys)}, error : function() {return sys.error()}, solveSystem : solve, @@ -280,10 +280,10 @@ let prepare = function(constrs, locked) { return systemSolver; }; -let solve_lm = function(sys, model, jacobian, rough) { - let opt = new LMOptimizer(sys.getParams(), newVector(sys.constraints.length), model, jacobian); +const solve_lm = function(sys, model, jacobian, rough) { + const opt = new LMOptimizer(sys.getParams(), newVector(sys.constraints.length), model, jacobian); opt.evalMaximalCount = 100000; //100 * sys.params.length; - let eps = rough ? 0.001 : 0.00000001; + const eps = rough ? 0.001 : 0.00000001; opt.init0(eps, eps, eps); let returnCode = 1; let res; diff --git a/web/app/sketcher/constr/solverConstraints.js b/web/app/sketcher/constr/solverConstraints.js index a030c758..789a11ca 100644 --- a/web/app/sketcher/constr/solverConstraints.js +++ b/web/app/sketcher/constr/solverConstraints.js @@ -73,21 +73,21 @@ function MinLength(params, distance) { this.params = params; this.distance = distance; - let p1x = 0; - let p1y = 1; - let p2x = 2; - let p2y = 3; + const p1x = 0; + const p1y = 1; + const p2x = 2; + const p2y = 3; this.error = function() { - let dx = params[p1x].get() - params[p2x].get(); - let dy = params[p1y].get() - params[p2y].get(); - let d = Math.sqrt(dx * dx + dy * dy); + const dx = params[p1x].get() - params[p2x].get(); + const dy = params[p1y].get() - params[p2y].get(); + const d = Math.sqrt(dx * dx + dy * dy); return d < this.distance ? (d - this.distance) : 0; }; this.gradient = function(out) { - let dx = params[p1x].get() - params[p2x].get(); - let dy = params[p1y].get() - params[p2y].get(); + const dx = params[p1x].get() - params[p2x].get(); + const dy = params[p1y].get() - params[p2y].get(); let d = Math.sqrt(dx * dx + dy * dy); if (d == 0) { d = 0.000001; @@ -108,34 +108,34 @@ function MinLength(params, distance) { function LockConvex(params) { this.params = params; - let _pcx = 0; - let _pcy = 1; - let _pax = 2; - let _pay = 3; - let _ptx = 4; - let _pty = 5; + const _pcx = 0; + const _pcy = 1; + const _pax = 2; + const _pay = 3; + const _ptx = 4; + const _pty = 5; this.error = function() { - let cx = params[_pcx].get(); - let cy = params[_pcy].get(); - let ax = params[_pax].get(); - let ay = params[_pay].get(); - let tx = params[_ptx].get(); - let ty = params[_pty].get(); + const cx = params[_pcx].get(); + const cy = params[_pcy].get(); + const ax = params[_pax].get(); + const ay = params[_pay].get(); + const tx = params[_ptx].get(); + const ty = params[_pty].get(); - let crossProductNorm = (cx - ax) * (ty - ay) - (cy - ay) * (tx - ax); + const crossProductNorm = (cx - ax) * (ty - ay) - (cy - ay) * (tx - ax); - let violate = crossProductNorm < 0; + const violate = crossProductNorm < 0; return violate ? crossProductNorm : 0; }; this.gradient = function(out) { - let cx = params[_pcx].get(); - let cy = params[_pcy].get(); - let ax = params[_pax].get(); - let ay = params[_pay].get(); - let tx = params[_ptx].get(); - let ty = params[_pty].get(); + const cx = params[_pcx].get(); + const cy = params[_pcy].get(); + const ax = params[_pax].get(); + const ay = params[_pay].get(); + const tx = params[_ptx].get(); + const ty = params[_pty].get(); out[_pcx] = ty-ay; out[_pcy] = ax-tx; @@ -249,38 +249,38 @@ function P2LDistance(params, distance) { this.params = params; this.distance = distance; - let TX = 0; - let TY = 1; - let LP1X = 2; - let LP1Y = 3; - let LP2X = 4; - let LP2Y = 5; + const TX = 0; + const TY = 1; + const LP1X = 2; + const LP1Y = 3; + const LP2X = 4; + const LP2Y = 5; this.error = function() { - let x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); - let y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); - let dx = x2 - x1; - let dy = y2 - y1; - let d = Math.sqrt(dx * dx + dy * dy); + const x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); + const y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); + const dx = x2 - x1; + const dy = y2 - y1; + const d = Math.sqrt(dx * dx + dy * dy); if (d == 0) { return 0; } - let A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; + const A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; return Math.abs(A) / d - this.distance; }; this.gradient = function(out) { - let x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); - let y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); - let dx = x2 - x1; - let dy = y2 - y1; - let d2 = dx * dx + dy * dy; - let d = Math.sqrt(d2); - let d3 = d * d2; + const x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); + const y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); + const dx = x2 - x1; + const dy = y2 - y1; + const d2 = dx * dx + dy * dy; + const d = Math.sqrt(d2); + const d3 = d * d2; // var AA = -x0 * (y2 - y1) + y0 * (x2 - x1) + x1 * y2 - x2 * y1; - let A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; - let AM = Math.abs(A); - let j = A < 0 ? -1 : 1; + const A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; + const AM = Math.abs(A); + const j = A < 0 ? -1 : 1; out[TX] = j * (y1 - y2) / d; out[TY] = j * (x2 - x1) / d; @@ -298,40 +298,40 @@ function P2LDistanceV(params) { this.params = params;//.slice(0, params.length -1); - let TX = 0; - let TY = 1; - let LP1X = 2; - let LP1Y = 3; - let LP2X = 4; - let LP2Y = 5; - let D = 6; + const TX = 0; + const TY = 1; + const LP1X = 2; + const LP1Y = 3; + const LP2X = 4; + const LP2Y = 5; + const D = 6; this.error = function() { - let x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); - let y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); - let dist = this.params[D].get(); - let dx = x2 - x1; - let dy = y2 - y1; - let d = Math.sqrt(dx * dx + dy * dy); + const x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); + const y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); + const dist = this.params[D].get(); + const dx = x2 - x1; + const dy = y2 - y1; + const d = Math.sqrt(dx * dx + dy * dy); if (d == 0) { return 0; } - let A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; + const A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; return Math.abs(A) / d - dist; }; this.gradient = function(out) { - let x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); - let y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); - let dx = x2 - x1; - let dy = y2 - y1; - let d2 = dx * dx + dy * dy; - let d = Math.sqrt(d2); - let d3 = d * d2; + const x0 = params[TX].get(), x1 = params[LP1X].get(), x2 = params[LP2X].get(); + const y0 = params[TY].get(), y1 = params[LP1Y].get(), y2 = params[LP2Y].get(); + const dx = x2 - x1; + const dy = y2 - y1; + const d2 = dx * dx + dy * dy; + const d = Math.sqrt(d2); + const d3 = d * d2; // var AA = -x0 * (y2 - y1) + y0 * (x2 - x1) + x1 * y2 - x2 * y1; - let A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; - let AM = Math.abs(A); - let j = A < 0 ? -1 : 1; + const A = -x0 * dy + y0 * dx + x1 * y2 - x2 * y1; + const AM = Math.abs(A); + const j = A < 0 ? -1 : 1; out[TX] = j * (y1 - y2) / d; out[TY] = j * (x2 - x1) / d; @@ -352,21 +352,21 @@ function P2PDistance(params, distance) { this.params = params; this.distance = distance; - let p1x = 0; - let p1y = 1; - let p2x = 2; - let p2y = 3; + const p1x = 0; + const p1y = 1; + const p2x = 2; + const p2y = 3; this.error = function() { - let dx = params[p1x].get() - params[p2x].get(); - let dy = params[p1y].get() - params[p2y].get(); - let d = Math.sqrt(dx * dx + dy * dy); + const dx = params[p1x].get() - params[p2x].get(); + const dy = params[p1y].get() - params[p2y].get(); + const d = Math.sqrt(dx * dx + dy * dy); return (d - this.distance); }; this.gradient = function(out) { - let dx = params[p1x].get() - params[p2x].get(); - let dy = params[p1y].get() - params[p2y].get(); + const dx = params[p1x].get() - params[p2x].get(); + const dy = params[p1y].get() - params[p2y].get(); let d = Math.sqrt(dx * dx + dy * dy); if (d == 0) { if (this.distance == 0) return; @@ -384,22 +384,22 @@ function P2PDistanceV(params) { this.params = params; - let p1x = 0; - let p1y = 1; - let p2x = 2; - let p2y = 3; - let D = 4; + const p1x = 0; + const p1y = 1; + const p2x = 2; + const p2y = 3; + const D = 4; this.error = function() { - let dx = params[p1x].get() - params[p2x].get(); - let dy = params[p1y].get() - params[p2y].get(); - let d = Math.sqrt(dx * dx + dy * dy); + const dx = params[p1x].get() - params[p2x].get(); + const dy = params[p1y].get() - params[p2y].get(); + const d = Math.sqrt(dx * dx + dy * dy); return (d - params[D].get()); }; this.gradient = function(out) { - let dx = params[p1x].get() - params[p2x].get(); - let dy = params[p1y].get() - params[p2y].get(); + const dx = params[p1x].get() - params[p2x].get(); + const dy = params[p1y].get() - params[p2y].get(); let d = Math.sqrt(dx * dx + dy * dy); if (d == 0) { if (params[D].get() == 0) return; @@ -427,14 +427,14 @@ function SignedPerpendicular(params) { const Y4 = 7; this.error = function() { - let x1 = params[X1].get(); - let x2 = params[X2].get(); - let y1 = params[Y1].get(); - let y2 = params[Y2].get(); - let x3 = params[X3].get(); - let x4 = params[X4].get(); - let y4 = params[Y4].get(); - let y3 = params[Y3].get(); + const x1 = params[X1].get(); + const x2 = params[X2].get(); + const y1 = params[Y1].get(); + const y2 = params[Y2].get(); + const x3 = params[X3].get(); + const x4 = params[X4].get(); + const y4 = params[Y4].get(); + const y3 = params[Y3].get(); const dx1 = y1 - y2; const dy1 = x2 - x1; @@ -442,8 +442,8 @@ function SignedPerpendicular(params) { const dx2 = x4 - x3; const dy2 = y4 - y3; - let c1 = Math.sqrt(sq(dx1) + sq(dy1)); - let c2 = Math.sqrt(sq(dx2) + sq(dy2)); + const c1 = Math.sqrt(sq(dx1) + sq(dy1)); + const c2 = Math.sqrt(sq(dx2) + sq(dy2)); return dx1*dx2 + dy1*dy2 - c1 * c2; }; @@ -451,24 +451,24 @@ function SignedPerpendicular(params) { //d(((x-a) * (b - c))^2 ) / dx this.gradient = function (out) { - let x1 = params[X1].get(); - let x2 = params[X2].get(); - let y1 = params[Y1].get(); - let y2 = params[Y2].get(); + const x1 = params[X1].get(); + const x2 = params[X2].get(); + const y1 = params[Y1].get(); + const y2 = params[Y2].get(); - let x3 = params[X3].get(); - let x4 = params[X4].get(); - let y3 = params[Y3].get(); - let y4 = params[Y4].get(); + const x3 = params[X3].get(); + const x4 = params[X4].get(); + const y3 = params[Y3].get(); + const y4 = params[Y4].get(); - let dx1 = y1 - y2; - let dy1 = x2 - x1; + const dx1 = y1 - y2; + const dy1 = x2 - x1; - let dx2 = x4 - x3; - let dy2 = y4 - y3; + const dx2 = x4 - x3; + const dy2 = y4 - y3; - let c1 = Math.max(Math.sqrt(sq(dx1) + sq(dy1)), 0.001); - let c2 = Math.max(Math.sqrt(sq(dx2) + sq(dy2)), 0.001); + const c1 = Math.max(Math.sqrt(sq(dx1) + sq(dy1)), 0.001); + const c2 = Math.max(Math.sqrt(sq(dx2) + sq(dy2)), 0.001); out[X1] = y3 - y4 + (c2 * (x2 - x1)) / c1; out[X2] = y4 - y3 - (c2 * (x2 - x1)) / c1; @@ -488,20 +488,20 @@ function Parallel(params) { this.params = params; - let l1p1x = 0; - let l1p1y = 1; - let l1p2x = 2; - let l1p2y = 3; - let l2p1x = 4; - let l2p1y = 5; - let l2p2x = 6; - let l2p2y = 7; + const l1p1x = 0; + const l1p1y = 1; + const l1p2x = 2; + const l1p2y = 3; + const l2p1x = 4; + const l2p1y = 5; + const l2p2x = 6; + const l2p2y = 7; this.error = function() { - let dx1 = (params[l1p1x].get() - params[l1p2x].get()); - let dy1 = (params[l1p1y].get() - params[l1p2y].get()); - let dx2 = (params[l2p1x].get() - params[l2p2x].get()); - let dy2 = (params[l2p1y].get() - params[l2p2y].get()); + const dx1 = (params[l1p1x].get() - params[l1p2x].get()); + const dy1 = (params[l1p1y].get() - params[l1p2y].get()); + const dx2 = (params[l2p1x].get() - params[l2p2x].get()); + const dy2 = (params[l2p1y].get() - params[l2p2y].get()); return (dx1*dy2 - dy1*dx2); }; @@ -521,20 +521,20 @@ function Perpendicular(params) { this.params = params; - let l1p1x = 0; - let l1p1y = 1; - let l1p2x = 2; - let l1p2y = 3; - let l2p1x = 4; - let l2p1y = 5; - let l2p2x = 6; - let l2p2y = 7; + const l1p1x = 0; + const l1p1y = 1; + const l1p2x = 2; + const l1p2y = 3; + const l2p1x = 4; + const l2p1y = 5; + const l2p2x = 6; + const l2p2y = 7; this.error = function() { - let dx1 = (params[l1p1x].get() - params[l1p2x].get()); - let dy1 = (params[l1p1y].get() - params[l1p2y].get()); - let dx2 = (params[l2p1x].get() - params[l2p2x].get()); - let dy2 = (params[l2p1y].get() - params[l2p2y].get()); + const dx1 = (params[l1p1x].get() - params[l1p2x].get()); + const dy1 = (params[l1p1y].get() - params[l1p2y].get()); + const dx2 = (params[l2p1x].get() - params[l2p2x].get()); + const dy2 = (params[l2p1y].get() - params[l2p2y].get()); //dot product shows how the lines off to be perpendicular return (dx1*dx2 + dy1*dy2); }; @@ -555,31 +555,31 @@ function Angle(params) { this.params = params; - let l1p1x = 0; - let l1p1y = 1; - let l1p2x = 2; - let l1p2y = 3; - let l2p1x = 4; - let l2p1y = 5; - let l2p2x = 6; - let l2p2y = 7; - let angle = 8; - let scale = 1000; // we need scale to get same order of measure units(radians are to small) + const l1p1x = 0; + const l1p1y = 1; + const l1p2x = 2; + const l1p2y = 3; + const l2p1x = 4; + const l2p1y = 5; + const l2p2x = 6; + const l2p2y = 7; + const angle = 8; + const scale = 1000; // we need scale to get same order of measure units(radians are to small) function p(ref) { return params[ref].get(); } this.error = function() { - let dx1 = (p(l1p2x) - p(l1p1x)); - let dy1 = (p(l1p2y) - p(l1p1y)); - let dx2 = (p(l2p2x) - p(l2p1x)); - let dy2 = (p(l2p2y) - p(l2p1y)); - let a = Math.atan2(dy1,dx1) + p(angle); - let ca = Math.cos(a); - let sa = Math.sin(a); - let x2 = dx2*ca + dy2*sa; - let y2 = -dx2*sa + dy2*ca; + const dx1 = (p(l1p2x) - p(l1p1x)); + const dy1 = (p(l1p2y) - p(l1p1y)); + const dx2 = (p(l2p2x) - p(l2p1x)); + const dy2 = (p(l2p2y) - p(l2p1y)); + const a = Math.atan2(dy1,dx1) + p(angle); + const ca = Math.cos(a); + const sa = Math.sin(a); + const x2 = dx2*ca + dy2*sa; + const y2 = -dx2*sa + dy2*ca; return Math.atan2(y2,x2) * scale; }; @@ -595,11 +595,11 @@ function Angle(params) { dy1 = (p(l1p2y) - p(l1p1y)); let dx2 = (p(l2p2x) - p(l2p1x)); let dy2 = (p(l2p2y) - p(l2p1y)); - let a = Math.atan2(dy1, dx1) + p(angle); - let ca = Math.cos(a); - let sa = Math.sin(a); - let x2 = dx2 * ca + dy2 * sa; - let y2 = -dx2 * sa + dy2 * ca; + const a = Math.atan2(dy1, dx1) + p(angle); + const ca = Math.cos(a); + const sa = Math.sin(a); + const x2 = dx2 * ca + dy2 * sa; + const y2 = -dx2 * sa + dy2 * ca; r2 = dx2 * dx2 + dy2 * dy2; dx2 = -y2 / r2; dy2 = x2 / r2; @@ -637,8 +637,8 @@ function PointOnEllipse(params) { const centerY = ep1y + (ep2y - ep1y) * 0.5; const rotation = Math.atan2(ep2y - ep1y, ep2x - ep1x); - let x = px - centerX; - let y = py - centerY; + const x = px - centerX; + const y = py - centerY; const polarAngle = Math.atan2(y, x) - rotation; const polarRadius = Math.sqrt(x*x + y*y); @@ -658,15 +658,15 @@ function PointOnCurve(params, curve) { const PX = 0; const PY = 1; - let pt = [0,0,0]; + const pt = [0,0,0]; this.error = function() { const px = params[PX].get(); const py = params[PY].get(); pt[0] = px; pt[1] = py; - let u = curve.param(pt); - let p = curve.point(u); + const u = curve.param(pt); + const p = curve.point(u); return Math.sqrt( sq(p[0] - px) + sq(p[1] - py) ) }; @@ -677,7 +677,7 @@ function CurveTangent(params, curve) { this.params = params; - let tmp = [0,0,0]; + const tmp = [0,0,0]; const P1X = 0; const P1Y = 1; @@ -687,22 +687,22 @@ function CurveTangent(params, curve) { const TY = 5; this.error = function() { - let x1 = params[P1X].get(); - let y1 = params[P1Y].get(); - let x2 = params[P2X].get(); - let y2 = params[P2Y].get(); - let tx = params[TX].get(); - let ty = params[TY].get(); + const x1 = params[P1X].get(); + const y1 = params[P1Y].get(); + const x2 = params[P2X].get(); + const y2 = params[P2Y].get(); + const tx = params[TX].get(); + const ty = params[TY].get(); tmp[0] = tx; tmp[1] = ty; - let t = curve.param(tmp); - let [P, D] = curve.eval(t, 1); + const t = curve.param(tmp); + const [P, D] = curve.eval(t, 1); - let l = Math.sqrt(sq(D[0]) + sq(D[1])); + const l = Math.sqrt(sq(D[0]) + sq(D[1])); - let vx = - D[1] / l; - let vy = D[0] / l; + const vx = - D[1] / l; + const vy = D[0] / l; return Math.abs(vx * (P[0] - x1) + vy * (P[1] - y1)) + Math.abs(vx * (P[0] - x2) + vy * (P[1] - y2)); }; @@ -724,26 +724,26 @@ function EllipseTangent(params) { const R = 8; this.error = function(gr) { - let p1x = params[P1X].get(); - let p1y = params[P1Y].get(); - let p2x = params[P2X].get(); - let p2y = params[P2Y].get(); + const p1x = params[P1X].get(); + const p1y = params[P1Y].get(); + const p2x = params[P2X].get(); + const p2y = params[P2Y].get(); - let ep1x = params[EP1X].get(); - let ep1y = params[EP1Y].get(); - let ep2x = params[EP2X].get(); - let ep2y = params[EP2Y].get(); + const ep1x = params[EP1X].get(); + const ep1y = params[EP1Y].get(); + const ep2x = params[EP2X].get(); + const ep2y = params[EP2Y].get(); const radiusY = params[R].get(); - let axisX = ep2x - ep1x; - let axisY = ep2y - ep1y; + const axisX = ep2x - ep1x; + const axisY = ep2y - ep1y; const radiusX = Math.sqrt(sq(axisX) + sq(axisY)) * 0.5; const scaleToCircleSpace = radiusY / radiusX; const rotation = - Math.atan2(axisY, axisX); function tr(x, y) { let xx = x * Math.cos(rotation) - y * Math.sin(rotation) - let yy = x * Math.sin(rotation) + y * Math.cos(rotation); + const yy = x * Math.sin(rotation) + y * Math.cos(rotation); xx *= scaleToCircleSpace; return {x: xx, y: yy}; } @@ -782,8 +782,8 @@ function GreaterThan(params, limit) { this.params = params; this.error = function() { - let value = this.params[0].get(); - let error = value <= limit ? limit - value : 0; + const value = this.params[0].get(); + const error = value <= limit ? limit - value : 0; console.log("GreaterThan: " + error + ", value: " +value); return error; }; diff --git a/web/app/sketcher/constraints.js b/web/app/sketcher/constraints.js index 7ceb9acc..b8ca611b 100644 --- a/web/app/sketcher/constraints.js +++ b/web/app/sketcher/constraints.js @@ -128,7 +128,7 @@ Constraints.Parallel.prototype.NAME = 'parallel'; Constraints.Parallel.prototype.UI_NAME = 'Parallel'; Constraints.Parallel.prototype.getSolveData = function() { - let params = []; + const params = []; this.l1.collectParams(params); this.l2.collectParams(params); return [[this.NAME, params, []]]; @@ -158,7 +158,7 @@ Constraints.Perpendicular.prototype.NAME = 'perpendicular'; Constraints.Perpendicular.prototype.UI_NAME = 'Perpendicular'; Constraints.Perpendicular.prototype.getSolveData = function() { - let params = []; + const params = []; this.l1.collectParams(params); this.l2.collectParams(params); return [[this.NAME, params, []]]; @@ -190,7 +190,7 @@ Constraints.P2LDistanceSigned.prototype.NAME = 'P2LDistanceSigned'; Constraints.P2LDistanceSigned.prototype.UI_NAME = 'Distance P & L'; Constraints.P2LDistanceSigned.prototype.getSolveData = function(resolver) { - let params = []; + const params = []; this.p.collectParams(params); this.a.collectParams(params); this.b.collectParams(params); @@ -228,7 +228,7 @@ Constraints.P2LDistance.prototype.NAME = 'P2LDistance'; Constraints.P2LDistance.prototype.UI_NAME = 'Distance P & L'; Constraints.P2LDistance.prototype.getSolveData = function(resolver) { - let params = []; + const params = []; this.p.collectParams(params); this.l.collectParams(params); return [[this.NAME, params, [resolver(this.d)]]]; @@ -262,7 +262,7 @@ Constraints.MinLength.prototype.NAME = 'MinLength'; Constraints.MinLength.prototype.UI_NAME = 'MinLength'; Constraints.MinLength.prototype.getSolveData = function() { - let params = []; + const params = []; this.a.collectParams(params); this.b.collectParams(params); return [[this.NAME, params, [this.min]]]; @@ -282,7 +282,7 @@ Constraints.P2LDistanceV.prototype.NAME = 'P2LDistanceV'; Constraints.P2LDistanceV.prototype.UI_NAME = 'Distance P & L'; Constraints.P2LDistanceV.prototype.getSolveData = function() { - let params = []; + const params = []; this.p.collectParams(params); this.l.collectParams(params); params.push(this.d); @@ -312,7 +312,7 @@ Constraints.P2PDistance.prototype.NAME = 'P2PDistance'; Constraints.P2PDistance.prototype.UI_NAME = 'Distance Points'; Constraints.P2PDistance.prototype.getSolveData = function(resolver) { - let params = []; + const params = []; this.p1.collectParams(params); this.p2.collectParams(params); return [[this.NAME, params, [resolver(this.d)]]]; @@ -346,7 +346,7 @@ Constraints.P2PDistanceV.prototype.NAME = 'P2PDistanceV'; Constraints.P2PDistanceV.prototype.UI_NAME = 'Distance Points'; Constraints.P2PDistanceV.prototype.getSolveData = function() { - let params = []; + const params = []; this.p1.collectParams(params); this.p2.collectParams(params); params.push(this.d); @@ -451,8 +451,8 @@ Constraints.LL.prototype.NAME = 'LL'; Constraints.LL.prototype.UI_NAME = 'Lines Equality'; Constraints.LL.prototype.getSolveData = function() { - let params1 = []; - let params2 = []; + const params1 = []; + const params2 = []; this.line1.collectParams(params1); this.line2.collectParams(params2); params1.push(this.length); @@ -541,7 +541,7 @@ Constraints.Tangent.prototype.NAME = 'Tangent'; Constraints.Tangent.prototype.UI_NAME = 'Tangent'; Constraints.Tangent.prototype.getSolveData = function() { - let params = []; + const params = []; this.arc.c.collectParams(params); this.line.collectParams(params); params.push(this.arc.r); @@ -610,7 +610,7 @@ Constraints.PointOnLine.prototype.NAME = 'PointOnLine'; Constraints.PointOnLine.prototype.UI_NAME = 'Point On Line'; Constraints.PointOnLine.prototype.getSolveData = function() { - let params = []; + const params = []; this.point.collectParams(params); this.line.collectParams(params); return [['P2LDistance', params, [0]]]; @@ -640,7 +640,7 @@ Constraints.PointOnArc.prototype.NAME = 'PointOnArc'; Constraints.PointOnArc.prototype.UI_NAME = 'Point On Arc'; Constraints.PointOnArc.prototype.getSolveData = function() { - let params = []; + const params = []; this.point.collectParams(params); this.arc.c.collectParams(params); params.push(this.arc.r); @@ -701,7 +701,7 @@ Constraints.PointOnEllipseInternal.prototype.UI_NAME = 'Point On Ellipse'; Constraints.PointOnEllipseInternal.prototype.aux = true; Constraints.PointOnEllipseInternal.prototype.getSolveData = function() { - let params = []; + const params = []; this.point.collectParams(params); this.ellipse.ep1.collectParams(params); this.ellipse.ep2.collectParams(params); @@ -774,8 +774,8 @@ Constraints.EllipseTangent.prototype.getObjects = function() { Constraints.CurveTangent = function(line, curveObject) { this.line = line; this.curveObject = curveObject; - let [uMin, uMax] = this.curveObject.curve.domain(); - let initPoint = this.curveObject.curve.point(0.5 * (uMin + uMax)); + const [uMin, uMax] = this.curveObject.curve.domain(); + const initPoint = this.curveObject.curve.point(0.5 * (uMin + uMax)); this.tx = new Ref(initPoint[0]); this.ty = new Ref(initPoint[1]); }; @@ -817,8 +817,8 @@ Constraints.PointInMiddle.prototype.NAME = 'PointInMiddle'; Constraints.PointInMiddle.prototype.UI_NAME = 'Point In the Middle'; Constraints.PointInMiddle.prototype.getSolveData = function() { - let params1 = []; - let params2 = []; + const params1 = []; + const params2 = []; this.line.a.collectParams(params1); this.point.collectParams(params1); @@ -859,8 +859,8 @@ Constraints.Symmetry.prototype.NAME = 'Symmetry'; Constraints.Symmetry.prototype.UI_NAME = 'Symmetry'; Constraints.Symmetry.prototype.getSolveData = function(resolver) { - let pointInMiddleData = Constraints.PointInMiddle.prototype.getSolveData.call(this, [resolver]); - let pointOnLineData = Constraints.PointOnLine.prototype.getSolveData.call(this, [resolver]); + const pointInMiddleData = Constraints.PointInMiddle.prototype.getSolveData.call(this, [resolver]); + const pointOnLineData = Constraints.PointOnLine.prototype.getSolveData.call(this, [resolver]); return pointInMiddleData.concat(pointOnLineData); }; @@ -893,7 +893,7 @@ Constraints.Angle.prototype.UI_NAME = 'Lines Angle'; Constraints.Angle.prototype.getSolveData = function(resolver) { this._angle.set(resolver(this.angle) / 180 * Math.PI); - let params = []; + const params = []; this.p1.collectParams(params); this.p2.collectParams(params); this.p3.collectParams(params); @@ -911,7 +911,7 @@ Constraints.Factory[Constraints.Angle.prototype.NAME] = function(refs, data) { }; Constraints.Angle.prototype.getObjects = function() { - let collector = new Constraints.ParentsCollector(); + const collector = new Constraints.ParentsCollector(); collector.check(this.p1); collector.check(this.p2); collector.check(this.p3); @@ -934,7 +934,7 @@ Constraints.LockConvex.prototype.NAME = 'LockConvex'; Constraints.LockConvex.prototype.UI_NAME = 'Lock Convexity'; Constraints.LockConvex.prototype.getSolveData = function() { - let params = []; + const params = []; this.c.collectParams(params); this.a.collectParams(params); this.t.collectParams(params); @@ -950,7 +950,7 @@ Constraints.Factory[Constraints.LockConvex.prototype.NAME] = function(refs, data }; Constraints.LockConvex.prototype.getObjects = function() { - let collector = new Constraints.ParentsCollector(); + const collector = new Constraints.ParentsCollector(); collector.check(this.c); collector.check(this.a); collector.check(this.t); @@ -968,7 +968,7 @@ Constraints.Mirror = function(reflectionLine, objects, reflectedObjects) { this.updateDir(); if (!reflectedObjects) { reflectedObjects = objects.map(o => { - let copy = o.copy(); + const copy = o.copy(); copy.virtualOf = o.id; copy.aux = true; copy.role = 'virtual'; @@ -994,11 +994,11 @@ Constraints.Mirror.prototype.updateDir = function() { }; Constraints.Mirror.prototype.reflect = function(source, dest) { - let origin = this.reflectionLine.a.toVector(); + const origin = this.reflectionLine.a.toVector(); const pointMirroring = (x, y) => { - let pt = new Vector(x, y, 0); - let proj = this.dir.dot(pt.minus(origin)); + const pt = new Vector(x, y, 0); + const proj = this.dir.dot(pt.minus(origin)); return this.dir.multiply(- proj * 2)._plus(pt); }; @@ -1010,7 +1010,7 @@ Constraints.Mirror.prototype.getSolveData = function() { }; Constraints.Mirror.prototype.serialize = function() { - let ids = [this.reflectionLine.id]; + const ids = [this.reflectionLine.id]; for (let i = 0; i < this.objects.length; i++) { ids.push(this.objects[i].id); ids.push(this.reflectedObjects[i].id); @@ -1019,9 +1019,9 @@ Constraints.Mirror.prototype.serialize = function() { }; Constraints.Factory[Constraints.Mirror.prototype.NAME] = function(refs, data) { - let [rlId, ...objectIds] = data; - let objects = []; - let reflectedObjects = []; + const [rlId, ...objectIds] = data; + const objects = []; + const reflectedObjects = []; for (let i = 0; i < objectIds.length; i += 2) { objects.push(refs(objectIds[i])); reflectedObjects.push(refs(objectIds[i + 1])); @@ -1077,7 +1077,7 @@ Constraints.Fillet.prototype.NAME = 'Fillet'; Constraints.Fillet.prototype.UI_NAME = 'Fillet'; Constraints.Fillet.prototype.getSolveData = function() { - let solveData = []; + const solveData = []; this.contraints.forEach(c => c.getSolveData().forEach(d => solveData.push(d))); return solveData; }; @@ -1091,7 +1091,7 @@ Constraints.Factory[Constraints.Fillet.prototype.NAME] = function(refs, data) { }; Constraints.Fillet.prototype.getObjects = function() { - let objects = []; + const objects = []; this.contraints.forEach(c => c.getObjects().forEach(o => objects.push(o))); return objects; }; @@ -1100,11 +1100,11 @@ Constraints.Fillet.prototype.getObjects = function() { Constraints.Fillet.prototype.validate = function() { function validOn(p, arc, left) { - let op = p.parent.opposite(p); - let opV = op.toVector(); - let dir = p.toVector()._minus(opV)._normalize(); - let centerDir = arc.c.toVector()._minus(opV)._normalize(); - let z = centerDir.cross(dir).z; + const op = p.parent.opposite(p); + const opV = op.toVector(); + const dir = p.toVector()._minus(opV)._normalize(); + const centerDir = arc.c.toVector()._minus(opV)._normalize(); + const z = centerDir.cross(dir).z; return left === z < 0; } @@ -1114,8 +1114,8 @@ Constraints.Fillet.prototype.validate = function() { Constraints.ParentsCollector = function() { this.parents = []; - let parents = this.parents; - let index = {}; + const parents = this.parents; + const index = {}; function add(obj) { if (index[obj.id] === undefined) { index[obj.id] = obj; diff --git a/web/app/sketcher/fetchers.js b/web/app/sketcher/fetchers.js index dd2b1968..c0d273d1 100644 --- a/web/app/sketcher/fetchers.js +++ b/web/app/sketcher/fetchers.js @@ -1,5 +1,5 @@ export function twoPoints(objs) { - let points = []; + const points = []; for (let i = 0; i < objs.length; ++i) { if (objs[i]._class == 'TCAD.TWO.EndPoint') { points.push(objs[i]); @@ -15,7 +15,7 @@ export function twoPoints(objs) { } export function points(objs) { - let points = []; + const points = []; for (let i = 0; i < objs.length; ++i) { objs[i].accept(function(o) { if (o._class === 'TCAD.TWO.EndPoint') { @@ -31,7 +31,7 @@ export function points(objs) { } export function arkCirc(objs, min) { - let arcs = []; + const arcs = []; for (let i = 0; i < objs.length; ++i) { if (objs[i]._class === 'TCAD.TWO.Arc' || objs[i]._class === 'TCAD.TWO.Circle') { arcs.push(objs[i]); @@ -44,7 +44,7 @@ export function arkCirc(objs, min) { } export function generic(objs, types, min) { - let result = []; + const result = []; for (let i = 0; i < objs.length; ++i) { if (types.indexOf(objs[i]._class) > -1 ) { result.push(objs[i]); @@ -108,7 +108,7 @@ export function arcCircAndLine(objs) { } export function twoLines(objs) { - let lines = []; + const lines = []; for (let i = 0; i < objs.length; ++i) { if (objs[i]._class == 'TCAD.TWO.Segment') { lines.push(objs[i]); @@ -121,7 +121,7 @@ export function twoLines(objs) { } export function sketchObjects(objs, silent, matching) { - let fetched = []; + const fetched = []; for (let i = 0; i < objs.length; ++i) { for (let j = 0; j < matching.length; j++) { if (objs[i]._class == matching[j]) { diff --git a/web/app/sketcher/generators/boundaryGenerator.js b/web/app/sketcher/generators/boundaryGenerator.js index 259d628b..409e7b31 100644 --- a/web/app/sketcher/generators/boundaryGenerator.js +++ b/web/app/sketcher/generators/boundaryGenerator.js @@ -44,8 +44,8 @@ export const BoundaryGeneratorSchema = { } for (i = 0; i < boundary.lines.length; ++i) { - let edge = boundary.lines[i]; - let seg = new Segment(edge.a.x, edge.a.y, edge.b.x, edge.b.y,'boundary/' + edge.id); + const edge = boundary.lines[i]; + const seg = new Segment(edge.a.x, edge.a.y, edge.b.x, edge.b.y,'boundary/' + edge.id); process(seg); } for (i = 0; i < boundary.arcs.length; ++i) { @@ -65,8 +65,8 @@ export const BoundaryGeneratorSchema = { process(circle); } for (i = 0; i < boundary.nurbses.length; ++i) { - let nurbsData = boundary.nurbses[i]; - let nurbs = new NurbsObject(NurbsCurve.deserialize(nurbsData), 'boundary/' + nurbsData.id); + const nurbsData = boundary.nurbses[i]; + const nurbs = new NurbsObject(NurbsCurve.deserialize(nurbsData), 'boundary/' + nurbsData.id); process(nurbs); } diff --git a/web/app/sketcher/generators/mirrorGenerator.js b/web/app/sketcher/generators/mirrorGenerator.js index cca03aff..ea3a1a6a 100644 --- a/web/app/sketcher/generators/mirrorGenerator.js +++ b/web/app/sketcher/generators/mirrorGenerator.js @@ -88,11 +88,11 @@ function updateDir(dir, reflectionLine) { } function reflect(dir, reflectionLine, source, dest) { - let origin = reflectionLine.a.toVector(); + const origin = reflectionLine.a.toVector(); const pointMirroring = (x, y) => { - let pt = new Vector(x, y, 0); - let proj = dir.dot(pt.minus(origin)); + const pt = new Vector(x, y, 0); + const proj = dir.dot(pt.minus(origin)); return dir.multiply(- proj * 2)._plus(pt); }; diff --git a/web/app/sketcher/generators/sketchGenerator.js b/web/app/sketcher/generators/sketchGenerator.js index 5d1a75ca..bd49d5d0 100644 --- a/web/app/sketcher/generators/sketchGenerator.js +++ b/web/app/sketcher/generators/sketchGenerator.js @@ -35,7 +35,7 @@ export class SketchGenerator { generate(viewer) { this.init(); - let layer = viewer.findLayerByName(PREDEFINED_LAYERS.SKETCH); + const layer = viewer.findLayerByName(PREDEFINED_LAYERS.SKETCH); this.generatedObjects = this.schema.generate(this.params, this.internalState); this.generatedObjects.forEach(obj => { obj.generator = this; diff --git a/web/app/sketcher/history.js b/web/app/sketcher/history.js index e3c9e8d2..f6ca8889 100644 --- a/web/app/sketcher/history.js +++ b/web/app/sketcher/history.js @@ -14,17 +14,17 @@ HistoryManager.prototype.init = function(sketchData) { }; HistoryManager.prototype.undo = function () { - let currentState = this.viewer.io.serializeSketch(); + const currentState = this.viewer.io.serializeSketch(); if (currentState == this.lastCheckpoint) { if (this.historyPointer != -1) { - let diff = this.diffs[this.historyPointer]; + const diff = this.diffs[this.historyPointer]; this.lastCheckpoint = this.applyDiff(this.lastCheckpoint, diff); this.viewer.io.loadSketch(this.lastCheckpoint); this.viewer.fullHeavyUIRefresh(); this.historyPointer --; } } else { - let diffToCurr = this.getDiff(currentState, this.lastCheckpoint); + const diffToCurr = this.getDiff(currentState, this.lastCheckpoint); if (this.historyPointer != this.diffs.length - 1) { this.diffs.splice(this.historyPointer + 1, this.diffs.length - this.historyPointer + 1) } @@ -51,11 +51,11 @@ HistoryManager.prototype.checkpoint = function () { HistoryManager.prototype._checkpoint = function () { this._counter = 0; - let currentState = this.viewer.io.serializeSketch(); + const currentState = this.viewer.io.serializeSketch(); if (currentState == this.lastCheckpoint) { return; } - let diffToCurr = this.getDiff(currentState, this.lastCheckpoint); + const diffToCurr = this.getDiff(currentState, this.lastCheckpoint); if (this.historyPointer != this.diffs.length - 1) { this.diffs.splice(this.historyPointer + 1, this.diffs.length - this.historyPointer + 1) } @@ -65,13 +65,13 @@ HistoryManager.prototype._checkpoint = function () { }; HistoryManager.prototype.redo = function () { - let currentState = this.viewer.io.serializeSketch(); + const currentState = this.viewer.io.serializeSketch(); if (currentState != this.lastCheckpoint) { return; } if (this.historyPointer != this.diffs.length - 1 && this.diffs.length != 0) { this.historyPointer ++; - let diff = this.diffs[this.historyPointer]; + const diff = this.diffs[this.historyPointer]; this.lastCheckpoint = this.applyDiffInv(this.lastCheckpoint, diff); this.viewer.io.loadSketch(this.lastCheckpoint); this.viewer.fullHeavyUIRefresh(); @@ -86,16 +86,16 @@ HistoryManager.prototype.applyDiff = function (text1, diff) { HistoryManager.prototype.applyDiffInv = function (text1, diff) { this.reversePatch(diff); - let result = this.applyDiff(text1, diff); + const result = this.applyDiff(text1, diff); this.reversePatch(diff); return result; }; HistoryManager.prototype.reversePatch = function (plist) { for (let i = 0; i < plist.length; i++) { - let patch = plist[i]; + const patch = plist[i]; for (let j = 0; j < patch.diffs.length; j++) { - let diff = patch.diffs[j]; + const diff = patch.diffs[j]; diff[0] *= -1; } } diff --git a/web/app/sketcher/project.js b/web/app/sketcher/project.js index d085b445..de8394a9 100644 --- a/web/app/sketcher/project.js +++ b/web/app/sketcher/project.js @@ -8,7 +8,7 @@ export class Project { } cloneSketch() { - let name = prompt("Name for sketch clone"); + const name = prompt("Name for sketch clone"); if (name != null) { if (this.isSketchExists(name)) { alert("Sorry, a sketch with the name '" + name + "' already exists. Won't override it."); @@ -28,12 +28,12 @@ export class Project { if (name !== "untitled") { uri += "#" + name; } - let win = window.open(uri, '_blank'); + const win = window.open(uri, '_blank'); win.focus(); } newSketch() { - let name = prompt("Name for sketch"); + const name = prompt("Name for sketch"); if (name != null) { if (this.isSketchExists(name)) { alert("Sorry, a sketch with the name '" + name + "' already exists. Won't override it."); @@ -44,8 +44,8 @@ export class Project { } loadFromLocalStorage() { - let sketchId = this.getSketchId(); - let sketchData = localStorage.getItem(sketchId); + const sketchId = this.getSketchId(); + const sketchData = localStorage.getItem(sketchId); if (sketchData != null) { this.viewer.historyManager.init(sketchData); this.viewer.io.loadSketch(sketchData); diff --git a/web/app/sketcher/shapes/basis-origin.js b/web/app/sketcher/shapes/basis-origin.js index db2009d4..2795e21a 100644 --- a/web/app/sketcher/shapes/basis-origin.js +++ b/web/app/sketcher/shapes/basis-origin.js @@ -34,8 +34,8 @@ export class BasisOrigin extends Shape { ctx.lineWidth = 1; ctx.strokeStyle = this.yColor; - let headA = 1; - let headB = 10; + const headA = 1; + const headB = 10; ctx.moveTo(0.5, 0); ctx.lineTo(0.5, - this.lineWidth); diff --git a/web/app/sketcher/shapes/bezier-curve.js b/web/app/sketcher/shapes/bezier-curve.js index 61de2cba..145161dc 100644 --- a/web/app/sketcher/shapes/bezier-curve.js +++ b/web/app/sketcher/shapes/bezier-curve.js @@ -20,7 +20,7 @@ export class BezierCurve extends SketchObject { this.cp1 = s1.b; this.cp2 = s2.a; - for (let c of this.children) { + for (const c of this.children) { c.role = 'objectConstruction'; } } @@ -82,12 +82,12 @@ export class BezierCurve extends SketchObject { drawLUTAndHull(ctx, scale) { if (this.lut) { - for (let p of this.lut) { + for (const p of this.lut) { draw_utils.DrawPoint(ctx, p.x, p.y, 3, scale); } ctx.moveTo(this.hull[0].x, this.hull[0].y); - for (let p of this.hull) { + for (const p of this.hull) { ctx.lineTo(p.x, p.y); } ctx.stroke(); diff --git a/web/app/sketcher/shapes/circle.js b/web/app/sketcher/shapes/circle.js index fe0b8a3f..14bf11ae 100644 --- a/web/app/sketcher/shapes/circle.js +++ b/web/app/sketcher/shapes/circle.js @@ -33,7 +33,7 @@ export class Circle extends SketchObject { drawImpl(ctx, scale) { ctx.beginPath(); - let r = this.r.get(); + const r = this.r.get(); if (r > 0) { ctx.arc(this.c.x, this.c.y, r, 0, 2 * Math.PI); } diff --git a/web/app/sketcher/shapes/cross-hair.js b/web/app/sketcher/shapes/cross-hair.js index 7151d31a..21ade556 100644 --- a/web/app/sketcher/shapes/cross-hair.js +++ b/web/app/sketcher/shapes/cross-hair.js @@ -11,7 +11,7 @@ export class CrossHair extends Shape { draw(ctx, scale) { ctx.beginPath(); - let rad = this.rad / scale; + const rad = this.rad / scale; ctx.moveTo(this.x - rad, this.y); ctx.lineTo(this.x + rad, this.y); ctx.closePath(); diff --git a/web/app/sketcher/shapes/dim.js b/web/app/sketcher/shapes/dim.js index a613b80e..99f7850e 100644 --- a/web/app/sketcher/shapes/dim.js +++ b/web/app/sketcher/shapes/dim.js @@ -78,14 +78,14 @@ export class LinearDimension extends Dimension { const [_ax, _ay] = this.pickA; const [_bx, _by] = this.pickB; - let _vx = - (_by - _ay); - let _vy = _bx - _ax; + const _vx = - (_by - _ay); + const _vy = _bx - _ax; const d = distance(_ax, _ay, _bx, _by); //normalize - let _vxn = _vx / d; - let _vyn = _vy / d; + const _vxn = _vx / d; + const _vyn = _vy / d; this.offset += (dx * _vxn + dy * _vyn) * this.unscale; } @@ -124,25 +124,25 @@ export class LinearDimension extends Dimension { let _vy = b.x - a.x; //normalize - let _vxn = _vx / d; - let _vyn = _vy / d; + const _vxn = _vx / d; + const _vyn = _vy / d; _vx = _vxn * off; _vy = _vyn * off; ctx.beginPath(); - let _ax = a.x + _vx; - let _ay = a.y + _vy; - let _bx = b.x + _vx; - let _by = b.y + _vy; + const _ax = a.x + _vx; + const _ay = a.y + _vy; + const _bx = b.x + _vx; + const _by = b.y + _vy; ctx.moveTo(_ax, _ay); ctx.lineTo(_bx, _by); function drawRef(start, x, y) { - let vec = new Vector(x - start.x, y - start.y); + const vec = new Vector(x - start.x, y - start.y); vec._normalize(); vec._multiply(EXT_LINEAR_WIDTH_PX * unscale); @@ -314,15 +314,15 @@ export class DiameterDimension extends Dimension { const unscale = 1 /scale; const textOff = unscale * TEXT_H_OFFSET; - let r = this.obj.distanceA ? this.obj.distanceA() : this.obj.r.get(); + const r = this.obj.distanceA ? this.obj.distanceA() : this.obj.r.get(); let hxn = Math.cos(this.angle); let hyn = Math.sin(this.angle); //fix angle if needed if (isInstanceOf(this.obj, Arc) && !this.obj.isPointInsideSector(this.obj.c.x + hxn, this.obj.c.y + hyn)) { - let cosA = hxn * (this.obj.a.x - this.obj.c.x) + hyn * (this.obj.a.y - this.obj.c.y); - let cosB = hxn * (this.obj.b.x - this.obj.c.x) + hyn * (this.obj.b.y - this.obj.c.y); + const cosA = hxn * (this.obj.a.x - this.obj.c.x) + hyn * (this.obj.a.y - this.obj.c.y); + const cosB = hxn * (this.obj.b.x - this.obj.c.x) + hyn * (this.obj.b.y - this.obj.c.y); if (cosA - hxn > cosB - hxn) { this.angle = this.obj.getStartAngle(); } else { @@ -332,8 +332,8 @@ export class DiameterDimension extends Dimension { hyn = Math.sin(this.angle); } - let _vxn = - hyn; - let _vyn = hxn; + const _vxn = - hyn; + const _vyn = hxn; const txt = 'R ' + r.toFixed(2); const _ax = this.obj.c.x; @@ -481,10 +481,10 @@ export class AngleBetweenDimension extends Dimension { // this.a.syncGeometry(); // this.b.syncGeometry && this.b.syncGeometry(); - let avx = Math.cos(aAng); - let avy = Math.sin(aAng); - let bvx = Math.cos(bAng); - let bvy = Math.sin(bAng); + const avx = Math.cos(aAng); + const avy = Math.sin(aAng); + const bvx = Math.cos(bAng); + const bvy = Math.sin(bAng); this.center = findCenter(aa, ab, ba, bb, avx, avy, bvx, bvy); @@ -508,10 +508,10 @@ export class AngleBetweenDimension extends Dimension { // } const halfAng = 0.5 * ang; - let _ax = cx + off * avx; - let _ay = cy + off * avy; - let _bx = cx + off * bvx; - let _by = cy + off * bvy; + const _ax = cx + off * avx; + const _ay = cy + off * avy; + const _bx = cx + off * bvx; + const _by = cy + off * bvy; const _vxn = Math.cos(aAng + halfAng); diff --git a/web/app/sketcher/shapes/elliptical-arc.js b/web/app/sketcher/shapes/elliptical-arc.js index d0e31c85..a976a9a8 100644 --- a/web/app/sketcher/shapes/elliptical-arc.js +++ b/web/app/sketcher/shapes/elliptical-arc.js @@ -35,7 +35,7 @@ export class EllipticalArc extends Ellipse { ctx.beginPath(); const radiusX = Math.max(this.radiusX, 1e-8); const radiusY = Math.max(this.radiusY, 1e-8); - let aAngle = this.drawAngle(this.a); + const aAngle = this.drawAngle(this.a); let bAngle; if (areEqual(this.a.x, this.b.x, TOLERANCE) && areEqual(this.a.y, this.b.y, TOLERANCE)) { @@ -48,12 +48,12 @@ export class EllipticalArc extends Ellipse { } drawAngle(point) { - let deformScale = this.radiusY / this.radiusX; - let x = point.x - this.centerX; - let y = point.y - this.centerY; + const deformScale = this.radiusY / this.radiusX; + const x = point.x - this.centerX; + const y = point.y - this.centerY; const rotation = - this.rotation; let xx = x * Math.cos(rotation) - y * Math.sin(rotation); - let yy = x * Math.sin(rotation) + y * Math.cos(rotation); + const yy = x * Math.sin(rotation) + y * Math.cos(rotation); xx *= deformScale; return Math.atan2(yy, xx); } diff --git a/web/app/sketcher/shapes/nurbsObject.js b/web/app/sketcher/shapes/nurbsObject.js index bde4b66e..9bc725d7 100644 --- a/web/app/sketcher/shapes/nurbsObject.js +++ b/web/app/sketcher/shapes/nurbsObject.js @@ -11,7 +11,7 @@ export class NurbsObject extends SketchObject { constructor(curve, id) { super(id); this.curve = curve; - let cp = curve.data.controlPoints; + const cp = curve.data.controlPoints; this.a = new EndPoint(cp[0].x, cp[0].y, this.id + ":A"); this.b = new EndPoint(cp[cp.length - 1].x, cp[cp.length - 1].y, this.id + ":B"); this.bezierPieces = this.calcBezierPiecewise(); @@ -25,12 +25,12 @@ export class NurbsObject extends SketchObject { normalDistance(aim) { __v[0] = aim.x; __v[1] = aim.y; - let point = this.curve.point(this.curve.param(__v)); + const point = this.curve.point(this.curve.param(__v)); return vec.distance(__v, point); } drawImpl(ctx, scale, viewer) { - for (let bz of this.bezierPieces) { + for (const bz of this.bezierPieces) { ctx.beginPath(); ctx.moveTo(bz.cp0[0], bz.cp0[1]); // ctx.lineTo(bz.cp3[0], bz.cp3[1]); @@ -46,15 +46,15 @@ export class NurbsObject extends SketchObject { } calcBezierPiecewise() { - let pieces = []; - let knots = this.curve.knots(); + const pieces = []; + const knots = this.curve.knots(); - let [from, to] = this.curve.domain(); + const [from, to] = this.curve.domain(); - let tess = curveTessellate(this.curve.data, from, to); + const tess = curveTessellate(this.curve.data, from, to); const evalCurve = t => { - let [P, D] = this.curve.eval(t, 1); + const [P, D] = this.curve.eval(t, 1); return { P, D, M: vec.normalize(D) }; @@ -62,16 +62,16 @@ export class NurbsObject extends SketchObject { let t0 = tess[0]; let eval0 = evalCurve(t0); for (let i = 1; i < tess.length; ++i) { - let t1 = tess[i]; - let eval1 = evalCurve(t1); + const t1 = tess[i]; + const eval1 = evalCurve(t1); - let {P: P0, M: M0} = eval0; - let {P: P3, M: M1} = eval1; + const {P: P0, M: M0} = eval0; + const {P: P3, M: M1} = eval1; - let k = vec.length(vec.sub(P0, P3)) / 3; + const k = vec.length(vec.sub(P0, P3)) / 3; - let P1 = vec._add(vec.mul(M0, k), P0) ; - let P2 = vec._add(vec.mul(M1, -k), P3) ; + const P1 = vec._add(vec.mul(M0, k), P0) ; + const P2 = vec._add(vec.mul(M1, -k), P3) ; pieces.push({ cp0: P0, diff --git a/web/app/sketcher/shapes/textHelper.js b/web/app/sketcher/shapes/textHelper.js index b068e418..1072ff80 100644 --- a/web/app/sketcher/shapes/textHelper.js +++ b/web/app/sketcher/shapes/textHelper.js @@ -28,8 +28,8 @@ export class TextHelper { const modelTextWidth = this.modelTextWidth; const modelTextHeight = viewer.screenToModelDistance(this.fontSize); - let dtx = [modelTextWidth * ny, -nx * modelTextWidth]; - let dty = [modelTextHeight * nx, ny * modelTextHeight]; + const dtx = [modelTextWidth * ny, -nx * modelTextWidth]; + const dty = [modelTextHeight * nx, ny * modelTextHeight]; if (flip) { tx += ny * modelTextWidth; @@ -72,7 +72,7 @@ export class TextHelper { const [ax, ay, bx, by, cx, cy, dx, dy] = this.textRect; - let d1 = pointToLineSignedDistance(ax, ay, bx, by, aim.x, aim.y); + const d1 = pointToLineSignedDistance(ax, ay, bx, by, aim.x, aim.y); if (d1 >= 0) { const d2 = pointToLineSignedDistance(bx, by, cx, cy, aim.x, aim.y); if (d2 >= 0) { diff --git a/web/app/sketcher/shortkeys.js b/web/app/sketcher/shortkeys.js index 2eeee95a..19c25ecc 100644 --- a/web/app/sketcher/shortkeys.js +++ b/web/app/sketcher/shortkeys.js @@ -4,7 +4,7 @@ import {getSketcherActionIndex} from "./actions"; export function initShortkeys() { - for (let action of Object.keys(keymap)) { + for (const action of Object.keys(keymap)) { Mousetrap.bind(keymap[action], e => getSketcherActionIndex()[action].invoke(e)); } } diff --git a/web/app/sketcher/system.js b/web/app/sketcher/system.js index b23017f0..bc1e1494 100644 --- a/web/app/sketcher/system.js +++ b/web/app/sketcher/system.js @@ -91,9 +91,9 @@ export class System extends Index{ _collectDependenciesForSubSystemFromConstraint(subSystem, constr) { visitParams(constr, false, p => { - let generator = this.generatedParams.get(p); + const generator = this.generatedParams.get(p); if (generator) { - let generatorSS = this.constraintToSubSystem.get(generator); + const generatorSS = this.constraintToSubSystem.get(generator); if (generatorSS) { if (subSystem.dependencies.indexOf(generatorSS) === -1) { subSystem.dependencies.push(generatorSS); @@ -132,7 +132,7 @@ export class System extends Index{ const stack = [constr]; while (stack.length) { - let workingConstr = stack.pop(); + const workingConstr = stack.pop(); if (visited.has(workingConstr)) { continue; } @@ -166,12 +166,12 @@ export class System extends Index{ add(constr) { constr.id = "C_" + (COUNTER ++) ; //fixme - let affectedSubsystems = new Set(); - let freeParams = []; + const affectedSubsystems = new Set(); + const freeParams = []; visitParams(constr, false, p => { - let subSystem = this.paramToSubSystem.get(p); + const subSystem = this.paramToSubSystem.get(p); if (subSystem) { affectedSubsystems.add(subSystem); @@ -208,7 +208,7 @@ export class System extends Index{ master.constraints.push(constr); this.constraintToSubSystem.set(constr, master); if (constr.GENERATOR) { - let dependant = this.createSubSystem(); + const dependant = this.createSubSystem(); dependant.dependencies.push(master); constr.visitGeneratedParams(p => { this.generatedParams.set(p, constr) @@ -231,7 +231,7 @@ export class System extends Index{ } subSystemsByParam(param, callback) { - let constraints = this.paramToConstraintsIndex.get(param); + const constraints = this.paramToConstraintsIndex.get(param); if (constraints) { constraints.forEach(c => callback(this.constraintToSubSystem.get(c))); } @@ -269,7 +269,7 @@ export class System extends Index{ function visitParams(constraint, skipAux, callback) { if (skipAux) { - let delegate = callback; + const delegate = callback; callback = p => { if (!isAuxParam(p)) { delegate(p) diff --git a/web/app/sketcher/tools/arc.js b/web/app/sketcher/tools/arc.js index 7aab7cdb..d71e958f 100644 --- a/web/app/sketcher/tools/arc.js +++ b/web/app/sketcher/tools/arc.js @@ -17,7 +17,7 @@ export class AddArcTool extends Tool { } mousemove(e) { - let p = this.viewer.screenToModel(e); + const p = this.viewer.screenToModel(e); if (this.point != null) { this.point.x = p.x; this.point.y = p.y; diff --git a/web/app/sketcher/tools/circle.js b/web/app/sketcher/tools/circle.js index 15ccf023..a5a545c2 100644 --- a/web/app/sketcher/tools/circle.js +++ b/web/app/sketcher/tools/circle.js @@ -17,9 +17,9 @@ export class EditCircleTool extends Tool { } mousemove(e) { - let p = this.viewer.screenToModel(e); + const p = this.viewer.screenToModel(e); if (this.circle != null) { - let r = distance(p.x, p.y, this.circle.c.x, this.circle.c.y); + const r = distance(p.x, p.y, this.circle.c.x, this.circle.c.y); this.circle.r.set(r); if (!Tool.dumbMode(e)) { this.solveRequest(true); diff --git a/web/app/sketcher/tools/dim.js b/web/app/sketcher/tools/dim.js index 454a8bc8..3c658ce4 100644 --- a/web/app/sketcher/tools/dim.js +++ b/web/app/sketcher/tools/dim.js @@ -26,7 +26,7 @@ export class AddDimTool extends Tool { } mousemove(e) { - let p = this.viewer.screenToModel(e); + const p = this.viewer.screenToModel(e); this.viewer.snap(p.x, p.y, []); if (this.dim != null) { this.dim.b.x = p.x; @@ -100,8 +100,8 @@ export class AddCircleDimTool extends Tool { } mousemove(e) { - let p = this.viewer.screenToModel(e); - let objects = this.viewer.search(p.x, p.y, DEFAULT_SEARCH_BUFFER, true, false, []).filter(function (o) { + const p = this.viewer.screenToModel(e); + const objects = this.viewer.search(p.x, p.y, DEFAULT_SEARCH_BUFFER, true, false, []).filter(function (o) { return o.TYPE === 'Circle' || o.TYPE === 'Arc'; }); @@ -163,7 +163,7 @@ export class AddAngleTool extends Tool { if (!center) { center = segment.a; } - let [cx, cy] = center; + const [cx, cy] = center; this.dim.offset = distance(cx, cy, p.x, p.y); } else { diff --git a/web/app/sketcher/tools/drag.js b/web/app/sketcher/tools/drag.js index 8ccf5e44..d59e92a3 100644 --- a/web/app/sketcher/tools/drag.js +++ b/web/app/sketcher/tools/drag.js @@ -18,11 +18,11 @@ export class DragTool extends Tool { this.viewer.toolManager.releaseControl(); return; } - let x = this._point.x; - let y = this._point.y; + const x = this._point.x; + const y = this._point.y; this.viewer.screenToModel2(e.offsetX, e.offsetY, this._point); - let dx = this._point.x - x; - let dy = this._point.y - y; + const dx = this._point.x - x; + const dy = this._point.y - y; if (this.obj.drag) { this.obj.drag(this._point.x, this._point.y, dx, dy); } else { @@ -62,7 +62,7 @@ export class DragTool extends Tool { } this.viewer.refresh(); this.viewer.toolManager.releaseControl(); - let traveled = distance(this.origin.x, this.origin.y, e.offsetX, e.offsetY); + const traveled = distance(this.origin.x, this.origin.y, e.offsetX, e.offsetY); if (traveled >= 10) { this.viewer.historyManager.lightCheckpoint(10); } diff --git a/web/app/sketcher/tools/fillet.js b/web/app/sketcher/tools/fillet.js index 45a6a418..48797890 100644 --- a/web/app/sketcher/tools/fillet.js +++ b/web/app/sketcher/tools/fillet.js @@ -95,7 +95,7 @@ export class FilletTool extends Tool { } mouseup(e) { - let candi = this.getCandidate(e); + const candi = this.getCandidate(e); if (candi == null) return; const point1 = candi[0]; const point2 = candi[1]; @@ -104,7 +104,7 @@ export class FilletTool extends Tool { breakLinkAndMakeFillet(point1, point2) { const pm = this.viewer.parametricManager; let coi = null; - for (let c of point1.constraints) { + for (const c of point1.constraints) { if (c.schema.id === ConstraintDefinitions.PCoincident.id) { if (c.objects.indexOf(point2) !== -1) { coi = c; @@ -133,12 +133,12 @@ export class FilletTool extends Tool { getCandidateFromSelection(picked) { - let preferSketchLayer = (a, b) => (a.effectiveLayer === b.effectiveLayer)? 0 : a.effectiveLayer.name === 'sketch' ? -1 : 1; + const preferSketchLayer = (a, b) => (a.effectiveLayer === b.effectiveLayer)? 0 : a.effectiveLayer.name === 'sketch' ? -1 : 1; if (picked.length > 0) { - let res = fetch.sketchObjects(picked, true, ['TCAD.TWO.EndPoint']); + const res = fetch.sketchObjects(picked, true, ['TCAD.TWO.EndPoint']); if (res == null) return null; - let point1 = res.sort(preferSketchLayer)[0]; + const point1 = res.sort(preferSketchLayer)[0]; if (!FilletTool.isLine(point1.parent)) return; const linked = []; @@ -162,7 +162,7 @@ export class FilletTool extends Tool { this.viewer.withdrawAll('tool'); needRefresh = true; } - let candi = this.getCandidate(e); + const candi = this.getCandidate(e); if (candi != null) { this.viewer.capture('tool', [candi[0]], true); needRefresh = true; diff --git a/web/app/sketcher/tools/loop-pick.js b/web/app/sketcher/tools/loop-pick.js index 7598f7f9..7d12f7f1 100644 --- a/web/app/sketcher/tools/loop-pick.js +++ b/web/app/sketcher/tools/loop-pick.js @@ -70,8 +70,8 @@ export class LoopPickTool extends Tool { }; const loopPoints = Graph.findAllLoops(graph, (p) => p.id, (a, b) => a.id === b.id); const loops = loopPoints.map(l => this.cleanLoop(l)); - for (let loop of loops) { - for (let point of loop.points) { + for (const loop of loops) { + for (const point of loop.points) { this.loops.set(point, loop); } } @@ -97,7 +97,7 @@ export class LoopPickTool extends Tool { const p = this.viewer.screenToModel(e); this.pickedLoop = this.pickLoop(p); if (this.pickedLoop != null) { - for (let obj of this.pickedLoop.edges) { + for (const obj of this.pickedLoop.edges) { this.mark(obj); } } @@ -106,8 +106,8 @@ export class LoopPickTool extends Tool { pickLoop(p) { const pickResult = this.viewer.search(p.x, p.y, DEFAULT_SEARCH_BUFFER, true, false, []); - for (let obj of pickResult) { - for (let point of [obj.a, obj.b]) { + for (const obj of pickResult) { + for (const point of [obj.a, obj.b]) { const loop = this.loops.get(point); if (loop) { return loop; diff --git a/web/app/sketcher/tools/manager.js b/web/app/sketcher/tools/manager.js index 0456c067..e8e465cd 100644 --- a/web/app/sketcher/tools/manager.js +++ b/web/app/sketcher/tools/manager.js @@ -49,7 +49,7 @@ export class ToolManager { if (e.keyCode === 27) { this.releaseControl(); } else if (e.keyCode === 46 || e.keyCode === 8) { - let selection = viewer.selected.slice(); + const selection = viewer.selected.slice(); viewer.removeAll(selection); viewer.refresh(); } diff --git a/web/app/sketcher/tools/offset.js b/web/app/sketcher/tools/offset.js index c9c05c3d..f44409e6 100644 --- a/web/app/sketcher/tools/offset.js +++ b/web/app/sketcher/tools/offset.js @@ -15,13 +15,13 @@ export class OffsetTool extends LoopPickTool { const loopEdges = this.pickedLoop.edges; const length = loopEdges.length; - for (let obj of loopEdges) { + for (const obj of loopEdges) { if (!SUPPORTED_OBJECTS.has(obj.TYPE)) { alert(obj._class + " isn't supported for offsets"); return; } } - let delta = parseInt(prompt('offset distance?', 100)); + const delta = parseInt(prompt('offset distance?', 100)); if (isNaN(delta)) { return; } @@ -100,7 +100,7 @@ function SimpleEdge(a, b) { function findLowestPoint(poly) { let hero = {x: Number.MAX_VALUE, y: Number.MAX_VALUE}; - for (let point of poly) { + for (const point of poly) { if (point.y < hero.y) { hero = point; } else if (hero.y == hero.y) { // TODO: revisit and fix bug diff --git a/web/app/sketcher/tools/origin.js b/web/app/sketcher/tools/origin.js index aa311dc6..62382453 100644 --- a/web/app/sketcher/tools/origin.js +++ b/web/app/sketcher/tools/origin.js @@ -15,14 +15,14 @@ export class ReferencePointTool extends Tool { } mousemove(e) { - let p = this.viewer.screenToModel(e); + const p = this.viewer.screenToModel(e); this.viewer.snap(p.x, p.y, []); this.viewer.refresh(); } mousedown(e) { const needSnap = this.viewer.snapped != null; - let p = needSnap ? this.viewer.snapped : this.viewer.screenToModel(e); + const p = needSnap ? this.viewer.snapped : this.viewer.screenToModel(e); this.viewer.referencePoint.x = p.x; this.viewer.referencePoint.y = p.y; this.pointPicked(p.x, p.y); @@ -32,7 +32,7 @@ export class ReferencePointTool extends Tool { processCommand(command) { const referencePoint = this.viewer.referencePoint; - let result = Tool.ParseVector(referencePoint, command); + const result = Tool.ParseVector(referencePoint, command); if(typeof result === 'string') { return result; } diff --git a/web/app/sketcher/tools/pan.js b/web/app/sketcher/tools/pan.js index 9a1baef8..f7bd44b1 100644 --- a/web/app/sketcher/tools/pan.js +++ b/web/app/sketcher/tools/pan.js @@ -9,13 +9,13 @@ export class BasePanTool extends Tool { mousedown(e) { if (e.button === 0) { - let picked = this.viewer.pick(e); + const picked = this.viewer.pick(e); let i; if (picked.length > 0) { let toSelect; if (e.shiftKey) { toSelect = picked[0]; - let ids = this.viewer.selected.map(function (s) { + const ids = this.viewer.selected.map(function (s) { return s.id }); for (i = 0; i < picked.length; i++) { @@ -66,7 +66,7 @@ export class PanTool extends BasePanTool { if (!this.dragging) { return; } - let dx = e.pageX - this.x; + const dx = e.pageX - this.x; let dy = e.pageY - this.y; dy *= -1; @@ -106,16 +106,16 @@ export class PanTool extends BasePanTool { delta = -e.deltaY; } - let before = this.viewer.screenToModel(e); + const before = this.viewer.screenToModel(e); - let step = 0.05; + const step = 0.05; delta = delta < 0 ? 1 - step : 1 + step; this.viewer.scale *= delta; - let after = this.viewer.screenToModel(e); + const after = this.viewer.screenToModel(e); - let dx = after.x - before.x; - let dy = after.y - before.y; + const dx = after.x - before.x; + const dy = after.y - before.y; this.viewer.translate.x += dx * this.viewer.scale; this.viewer.translate.y += dy * this.viewer.scale; diff --git a/web/app/sketcher/tools/rectangle.js b/web/app/sketcher/tools/rectangle.js index 8e4283dc..1cf46c8c 100644 --- a/web/app/sketcher/tools/rectangle.js +++ b/web/app/sketcher/tools/rectangle.js @@ -71,7 +71,7 @@ export class RectangleTool extends Tool { new Segment(v.x, v.y, v.x, v.y), new Segment(v.x, v.y, v.x, v.y) ]; - for (let s of this.rectangle) { + for (const s of this.rectangle) { this.viewer.activeLayer.add(s); this.snapExclude.push(s.a, s.b); } diff --git a/web/app/sketcher/tools/segment.js b/web/app/sketcher/tools/segment.js index c908344b..28e1fe1a 100644 --- a/web/app/sketcher/tools/segment.js +++ b/web/app/sketcher/tools/segment.js @@ -20,7 +20,7 @@ export class AddSegmentTool extends Tool { } mousemove(e) { - let p = this.viewer.screenToModel(e); + const p = this.viewer.screenToModel(e); if (this.line != null) { this.viewer.snap(p.x, p.y, [this.line.a, this.line.b]); this.line.b.x = p.x; @@ -53,7 +53,7 @@ export class AddSegmentTool extends Tool { this.viewer.refresh(); } else { if (snapped) { - let p = this.viewer.snapped; + const p = this.viewer.snapped; this.viewer.cleanSnap(); this.line.b.x = p.x; this.line.b.y = p.y; diff --git a/web/app/sketcher/tools/tool.js b/web/app/sketcher/tools/tool.js index 91c4daf9..a5be6423 100644 --- a/web/app/sketcher/tools/tool.js +++ b/web/app/sketcher/tools/tool.js @@ -65,7 +65,7 @@ Tool.ParseNumber = function(str) { } catch(e) { return e.toString(); } - let valNumber = parseFloat(val); + const valNumber = parseFloat(val); if (isNaN(valNumber)) return "wrong input for number: " + str; return valNumber; }; @@ -119,7 +119,7 @@ Tool.ParseNumberSequence = function(command, refs, length) { const result = []; for (let i = 0; i < parts.length; i++) { const part = parts[i]; - let val = refs && refs[i] ? Tool.ParseNumberWithRef(part, refs[i]) : Tool.ParseNumberWithRef(part); + const val = refs && refs[i] ? Tool.ParseNumberWithRef(part, refs[i]) : Tool.ParseNumberWithRef(part); result.push(val); } if (length !== undefined && result.length != length) { diff --git a/web/app/utils/genSerpinski.js b/web/app/utils/genSerpinski.js index ad485c0a..b31bed3d 100644 --- a/web/app/utils/genSerpinski.js +++ b/web/app/utils/genSerpinski.js @@ -1,7 +1,7 @@ import Vector from 'math/vector'; export default function genSerpinski(viewer, depthLimit = 7) { - let [line] = viewer.selected; + const [line] = viewer.selected; genSerpinskiImpl(viewer, line.a, line.b, depthLimit); viewer.remove(line); viewer.refresh(); @@ -12,18 +12,18 @@ export function genSerpinskiImpl(viewer, aInit, bInit, depthLimit) { a = new Vector().setV(a); b = new Vector().setV(b); - let ab = b.minus(a); - let S = ab.length() * 0.5; + const ab = b.minus(a); + const S = ab.length() * 0.5; - let v = ab.normalize(); - let SH = S * 0.5; - let dp = v.multiply(SH); - let p = a.plus(dp); - let D = new Vector(-v.y, v.x, 0); - let DL = Math.sqrt(S * S - SH * SH); - let A = p.plus(D.multiply(DL)); + const v = ab.normalize(); + const SH = S * 0.5; + const dp = v.multiply(SH); + const p = a.plus(dp); + const D = new Vector(-v.y, v.x, 0); + const DL = Math.sqrt(S * S - SH * SH); + const A = p.plus(D.multiply(DL)); - let B = A.plus(v.multiply(S)); + const B = A.plus(v.multiply(S)); return [ [A, a], [A, B], @@ -32,18 +32,18 @@ export function genSerpinskiImpl(viewer, aInit, bInit, depthLimit) { } function addLineOnScene(line) { - let [a, b] = line; + const [a, b] = line; viewer.addSegment(a.x, a.y, b.x, b.y, viewer.activeLayer) } function generate(a, b, depth) { - let lines = serpinskiStep(a, b); + const lines = serpinskiStep(a, b); if (depth === depthLimit) { return lines; } - let subLines = []; - let [l1, l2, l3] = lines; + const subLines = []; + const [l1, l2, l3] = lines; generate(l1[0], l1[1], depth + 1).forEach(sl => subLines.push(sl)); generate(l2[0], l2[1], depth + 1).forEach(sl => subLines.push(sl)); generate(l3[0], l3[1], depth + 1).forEach(sl => subLines.push(sl)); @@ -51,7 +51,7 @@ export function genSerpinskiImpl(viewer, aInit, bInit, depthLimit) { return subLines; } - let lines = generate(aInit, bInit, 1); + const lines = generate(aInit, bInit, 1); lines.forEach(l => addLineOnScene(l)); } diff --git a/web/app/utils/graph.js b/web/app/utils/graph.js index 8010f066..8468d964 100644 --- a/web/app/utils/graph.js +++ b/web/app/utils/graph.js @@ -19,7 +19,7 @@ function Graph(data) { Graph.findAllLoops = function(graph, hashCode, equals) { let loops = []; - let visited = new HashTable(hashCode, equals); + const visited = new HashTable(hashCode, equals); function step(vertex, comesFrom, path) { let i; visited.put(vertex, true); @@ -30,18 +30,18 @@ Graph.findAllLoops = function(graph, hashCode, equals) { } } - let next = graph.connections(vertex); + const next = graph.connections(vertex); path.push(vertex); let needClone = false; for (i = 0; i < next.length; i++) { - let v = next[i]; + const v = next[i]; if (equals(v, comesFrom)) { continue; } - let p = needClone ? path.slice(0) : path; + const p = needClone ? path.slice(0) : path; needClone = true; step(v, vertex, p); } @@ -49,7 +49,7 @@ Graph.findAllLoops = function(graph, hashCode, equals) { } for (i = 0; i < graph.size(); i++) { - let vertex = graph.at(i); + const vertex = graph.at(i); if (visited.get(vertex) !== true) { step(vertex, -1, []); } @@ -58,7 +58,7 @@ Graph.findAllLoops = function(graph, hashCode, equals) { //filter duplicates function sameLoop(a, b) { - let first = a[0]; + const first = a[0]; let bShift; for (bShift = 0; bShift < a.length; bShift++) { if (equals(b[bShift], first)) { @@ -69,13 +69,13 @@ Graph.findAllLoops = function(graph, hashCode, equals) { return false; } for (let i = 0; i < a.length; i++) { - let bUp = (bShift + i) % a.length; + const bUp = (bShift + i) % a.length; let bDown = bShift - i; if (bDown < 0) { bDown = a.length + bDown; } // console.log("up: " + bUp + "; down: " + bDown); - let curr = a[i]; + const curr = a[i]; if ( !equals(curr, b[bUp]) && !equals(curr, b[bDown]) ) { return false; } @@ -85,10 +85,10 @@ Graph.findAllLoops = function(graph, hashCode, equals) { let i, duplicates = 0; for (i = 0; i < loops.length; i++) { - let a = loops[i]; + const a = loops[i]; if (a == null) continue; for (let j = i + 1; j < loops.length; j++) { - let b = loops[j]; + const b = loops[j]; if (b == null || a.length !== b.length) { continue; } @@ -99,7 +99,7 @@ Graph.findAllLoops = function(graph, hashCode, equals) { } } if (duplicates != 0) { - let filtered = []; + const filtered = []; for (i = 0; i < loops.length; i++) { if (loops[i] != null) filtered.push(loops[i]); } @@ -110,8 +110,8 @@ Graph.findAllLoops = function(graph, hashCode, equals) { }; -let test = function() { - let data = [ +const test = function() { + const data = [ [], [2], [1, 3, 9], @@ -124,12 +124,12 @@ let test = function() { [2, 4] ]; - let graph = new Graph(data); + const graph = new Graph(data); console.log(Graph.findAllLoops(graph)); }; -let test0 = function() { - let data = [ +const test0 = function() { + const data = [ [3, 1], [0, 2, 8], [1, 3, 7, 5], @@ -141,7 +141,7 @@ let test0 = function() { [1, 7] ]; - let graph = new Graph(data); + const graph = new Graph(data); console.log(Graph.findAllLoops(graph)); }; diff --git a/web/app/utils/hashmap.js b/web/app/utils/hashmap.js index 16a5e699..13957f5e 100644 --- a/web/app/utils/hashmap.js +++ b/web/app/utils/hashmap.js @@ -10,7 +10,7 @@ HashTable.prototype.hash = function(key) { }; HashTable.prototype.get = function(key) { - let entry = this._findEntry(key, this._findBucket(key)); + const entry = this._findEntry(key, this._findBucket(key)); if (entry == null) return null; return entry[1]; }; @@ -23,7 +23,7 @@ HashTable.prototype.put = function(key, value) { }; HashTable.prototype._findBucket = function(key) { - let hash = this.hash(key); + const hash = this.hash(key); let bucket = this.table[hash]; if (bucket === null) { bucket = []; @@ -42,8 +42,8 @@ HashTable.prototype._findEntry = function(key, bucket) { }; HashTable.prototype._put = function(key, value) { - let bucket = this._findBucket(key); - let entry = this._findEntry(key, bucket); + const bucket = this._findBucket(key); + const entry = this._findEntry(key, bucket); if (entry == null) { bucket.push([key, value]); } else { @@ -54,13 +54,13 @@ HashTable.prototype._put = function(key, value) { HashTable.prototype.rebuild = function() { this.size = 0; - let oldTable = this.table; + const oldTable = this.table; this.setTableSize(this.table.length * 2); for (let i = 0; i < oldTable.length; i++) { - let e = oldTable[i]; + const e = oldTable[i]; if (e != null) { for (let j = 0; j < e.length; j++) { - let bucket = e[j]; + const bucket = e[j]; this._put(bucket[0], bucket[1]); } } @@ -68,7 +68,7 @@ HashTable.prototype.rebuild = function() { }; HashTable.prototype.getKeys = function() { - let keys = []; + const keys = []; this.entries(function(k) { keys.push(k) }); @@ -77,10 +77,10 @@ HashTable.prototype.getKeys = function() { HashTable.prototype.entries = function(callback) { for (let i = 0; i < this.table.length; i++) { - let e = this.table[i]; + const e = this.table[i]; if (e != null) { for (let j = 0; j < e.length; j++) { - let bucket = e[j]; + const bucket = e[j]; callback(bucket[0], bucket[1]); } } @@ -104,7 +104,7 @@ DoubleHelper.prototype.hash = function(v) { }; HashTable.forVector3d = function() { - let doubleHelper = new DoubleHelper(); + const doubleHelper = new DoubleHelper(); function hash(v) { return doubleHelper.hash(v.x) ^ doubleHelper.hash(v.y) ^ doubleHelper.hash(v.z); } @@ -115,7 +115,7 @@ HashTable.forVector3d = function() { }; HashTable.forEdge = function() { - let doubleHelper = new DoubleHelper(); + const doubleHelper = new DoubleHelper(); function hash(v) { return doubleHelper.hash(v[0].x) ^ doubleHelper.hash(v[0].y) ^ doubleHelper.hash(v[0].z) ^doubleHelper.hash(v[1].x) ^ doubleHelper.hash(v[1].y) ^ doubleHelper.hash(v[1].z); @@ -124,17 +124,17 @@ HashTable.forEdge = function() { return a.x === b.x && a.y === b.y && a.z === b.z; } function eq(e1, e2) { - let a1 = e1[0]; - let b1 = e1[1]; - let a2 = e2[0]; - let b2 = e2[1]; + const a1 = e1[0]; + const b1 = e1[1]; + const a2 = e2[0]; + const b2 = e2[1]; return (veq(a1, a2) && veq(b1, b2)) || (veq(a1, b2) && veq(b1, a2)); } return new HashTable(hash, eq); }; HashTable.forVector2d = function() { - let doubleHelper = new DoubleHelper(); + const doubleHelper = new DoubleHelper(); function hash(v) { return doubleHelper.hash(v.x) ^ doubleHelper.hash(v.y) ; } @@ -145,7 +145,7 @@ HashTable.forVector2d = function() { }; HashTable.forDoubleArray = function() { - let doubleHelper = new DoubleHelper(); + const doubleHelper = new DoubleHelper(); function hash(v) { let hash = 0; for (let i = 0; i < v.length; i++) { diff --git a/web/app/utils/utils.js b/web/app/utils/utils.js index 058142f9..f764a9f1 100644 --- a/web/app/utils/utils.js +++ b/web/app/utils/utils.js @@ -1,6 +1,6 @@ export function askNumber(promptText, initValue, promptCallback, resolver) { - let promptValueStr = promptCallback(promptText, initValue); + const promptValueStr = promptCallback(promptText, initValue); if (promptValueStr != null) { let promptValue = Number(promptValueStr); if (promptValue == promptValue) { // check for NaN