@design-core/core 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/.eslintrc.json +14 -7
  2. package/.github/workflows/DesignCoreQA.yml +3 -1
  3. package/README.md +11 -4
  4. package/TODO.md +19 -0
  5. package/core/core/core.js +49 -42
  6. package/core/designCore.js +61 -2
  7. package/core/dimensions/alignedDimension.js +142 -0
  8. package/core/dimensions/angularDimension.js +550 -0
  9. package/core/dimensions/baseCircularDimension.js +244 -0
  10. package/core/dimensions/baseDimension.js +558 -0
  11. package/core/dimensions/baseLinearDimension.js +371 -0
  12. package/core/dimensions/diametricDimension.js +82 -0
  13. package/core/dimensions/dimension.js +298 -0
  14. package/core/dimensions/linearDimension.js +29 -0
  15. package/core/dimensions/radialDimension.js +78 -0
  16. package/core/dimensions/rotatedDimension.js +167 -0
  17. package/core/entities/arc.js +314 -60
  18. package/core/entities/arctext.js +642 -0
  19. package/core/entities/basePolyline.js +553 -94
  20. package/core/entities/circle.js +181 -54
  21. package/core/entities/entity.js +154 -74
  22. package/core/entities/hatch.js +807 -0
  23. package/core/entities/insert.js +200 -39
  24. package/core/entities/line.js +196 -134
  25. package/core/entities/lwpolyline.js +21 -44
  26. package/core/entities/point.js +194 -29
  27. package/core/entities/polyline.js +54 -7
  28. package/core/entities/rectangle.js +43 -13
  29. package/core/entities/solid.js +43 -6
  30. package/core/entities/text.js +324 -181
  31. package/core/lib/boundingBox.js +73 -13
  32. package/core/lib/canvas.js +256 -65
  33. package/core/lib/clipboard.js +198 -0
  34. package/core/lib/colour.js +144 -0
  35. package/core/lib/colours.js +367 -301
  36. package/core/lib/commandLine.js +16 -28
  37. package/core/lib/commandManager.js +115 -58
  38. package/core/lib/constants.js +23 -0
  39. package/core/lib/dxf/dxf.js +249 -34
  40. package/core/lib/dxf/dxfFile.js +23 -38
  41. package/core/lib/dxf/dxfIterator.js +17 -5
  42. package/core/lib/dxf/dxfRead.js +23 -7
  43. package/core/lib/dxf/dxfWrite.js +39 -129
  44. package/core/lib/dxf/handleManager.js +97 -0
  45. package/core/lib/dxf/sections/blocks.js +16 -2
  46. package/core/lib/dxf/sections/entities.js +17 -3
  47. package/core/lib/dxf/sections/header.js +10 -1
  48. package/core/lib/dxf/sections/objects.js +36 -0
  49. package/core/lib/dxf/sections/section.js +43 -5
  50. package/core/lib/dxf/sections/tables.js +17 -3
  51. package/core/lib/entityManager.js +178 -0
  52. package/core/lib/fileio.js +14 -4
  53. package/core/lib/headers.js +229 -0
  54. package/core/lib/input.js +46 -0
  55. package/core/lib/inputManager.js +199 -194
  56. package/core/lib/intersect.js +341 -468
  57. package/core/lib/logging.js +25 -1
  58. package/core/lib/matrix.js +6 -8
  59. package/core/lib/mouse.js +24 -79
  60. package/core/lib/patterns.js +690 -0
  61. package/core/lib/promptOptions.js +133 -0
  62. package/core/lib/scene.js +71 -174
  63. package/core/lib/selectionManager.js +74 -48
  64. package/core/lib/selectionWindow.js +24 -10
  65. package/core/lib/settings.js +18 -11
  66. package/core/lib/snapping.js +129 -21
  67. package/core/lib/stateManager.js +288 -0
  68. package/core/lib/strings.js +57 -5
  69. package/core/lib/utils.js +95 -11
  70. package/core/objects/dictionary.js +43 -0
  71. package/core/objects/dictionaryManager.js +80 -0
  72. package/core/properties/dimType.js +117 -0
  73. package/core/properties/flags.js +66 -0
  74. package/core/properties/property.js +26 -0
  75. package/core/properties/propertyManager.js +65 -19
  76. package/core/tables/appId.js +31 -0
  77. package/core/tables/appIdManager.js +44 -0
  78. package/core/tables/block.js +323 -0
  79. package/core/tables/blockManager.js +48 -0
  80. package/core/tables/blockRecord.js +29 -0
  81. package/core/tables/blockRecordManager.js +37 -0
  82. package/core/tables/dimStyle.js +627 -0
  83. package/core/tables/dimStyleManager.js +187 -0
  84. package/core/tables/endblk.js +28 -0
  85. package/core/tables/layer.js +219 -0
  86. package/core/tables/layerManager.js +47 -0
  87. package/core/tables/ltype.js +85 -0
  88. package/core/tables/ltypeManager.js +65 -0
  89. package/core/tables/style.js +145 -0
  90. package/core/tables/styleManager.js +55 -0
  91. package/core/tables/styleManagerBase.js +110 -0
  92. package/core/tables/tableManagerBase.js +354 -0
  93. package/core/tables/ucs.js +28 -0
  94. package/core/tables/ucsManager.js +44 -0
  95. package/core/tables/view.js +28 -0
  96. package/core/tables/viewManager.js +44 -0
  97. package/core/tables/vport.js +70 -0
  98. package/core/tables/vportManager.js +65 -0
  99. package/core/tools/chamfer.js +343 -0
  100. package/core/tools/chamferFilletBase.js +162 -0
  101. package/core/tools/copy.js +68 -40
  102. package/core/tools/copybase.js +65 -0
  103. package/core/tools/copyclip.js +59 -0
  104. package/core/tools/cornerEntity.js +138 -0
  105. package/core/tools/cutclip.js +72 -0
  106. package/core/tools/distance.js +37 -9
  107. package/core/tools/erase.js +43 -13
  108. package/core/tools/explode.js +117 -0
  109. package/core/tools/extend.js +71 -32
  110. package/core/tools/fillet.js +336 -0
  111. package/core/tools/identify.js +33 -6
  112. package/core/tools/matchProp.js +106 -0
  113. package/core/tools/mirror.js +141 -0
  114. package/core/tools/move.js +65 -32
  115. package/core/tools/offset.js +321 -0
  116. package/core/tools/pan.js +54 -0
  117. package/core/tools/pasteclip.js +93 -0
  118. package/core/tools/purge.js +90 -0
  119. package/core/tools/rotate.js +105 -70
  120. package/core/tools/scale.js +166 -0
  121. package/core/tools/tool.js +14 -4
  122. package/core/tools/trim.js +71 -32
  123. package/core/tools/zoom.js +152 -0
  124. package/package.json +3 -305
  125. package/test/dimensions/alignedDimension.test.js +211 -0
  126. package/test/dimensions/angularDimension.test.js +243 -0
  127. package/test/dimensions/baseDimension.test.js +239 -0
  128. package/test/dimensions/diametricDimension.test.js +203 -0
  129. package/test/dimensions/dimension.test.js +102 -0
  130. package/test/dimensions/radialDimension.test.js +203 -0
  131. package/test/dimensions/rotatedDimension.test.js +224 -0
  132. package/test/entities/arc.test.js +463 -41
  133. package/test/entities/arctext.test.js +329 -0
  134. package/test/entities/basePolyline.test.js +459 -10
  135. package/test/entities/circle.test.js +312 -7
  136. package/test/entities/entity.test.js +28 -9
  137. package/test/entities/hatch.test.js +606 -0
  138. package/test/entities/insert.test.js +90 -0
  139. package/test/entities/line.test.js +182 -6
  140. package/test/entities/point.test.js +375 -37
  141. package/test/entities/solid.test.js +156 -0
  142. package/test/entities/text.test.js +533 -7
  143. package/test/integration/exportIntegration.reference.dxf +1706 -0
  144. package/test/integration/exportIntegration.test.js +186 -0
  145. package/test/integration/importExportIntegration.test.js +126 -0
  146. package/test/integration/intersectionIntegration.test.js +880 -0
  147. package/test/integration/userInputIntegration.reference.dxf +1410 -0
  148. package/test/integration/userInputIntegration.test.js +269 -0
  149. package/test/lib/boundingBox.test.js +26 -2
  150. package/test/lib/canvas.test.js +613 -5
  151. package/test/lib/clipboard.test.js +70 -0
  152. package/test/lib/colour.test.js +114 -0
  153. package/test/lib/colours.test.js +63 -18
  154. package/test/lib/commandLine.test.js +159 -22
  155. package/test/lib/commandManager.test.js +4 -4
  156. package/test/lib/constants.test.js +9 -0
  157. package/test/lib/dxf/dxfFile.test.js +6 -2
  158. package/test/lib/dxf/dxfIterator.test.js +1 -1
  159. package/test/lib/dxf/dxfWrite.test.js +173 -0
  160. package/test/lib/dxf/handleManager.test.js +137 -0
  161. package/test/lib/dxf/sections/blocks.test.js +5 -5
  162. package/test/lib/dxf/sections/entities.test.js +4 -4
  163. package/test/lib/dxf/sections/header.test.js +18 -4
  164. package/test/lib/dxf/sections/objects.test.js +132 -0
  165. package/test/lib/dxf/sections/section.test.js +29 -29
  166. package/test/lib/dxf/sections/tables.test.js +3 -3
  167. package/test/lib/entityManager.test.js +163 -0
  168. package/test/lib/headers.test.js +233 -0
  169. package/test/lib/inputManager.test.js +1144 -5
  170. package/test/lib/intersect.test.js +454 -331
  171. package/test/lib/logging.test.js +1 -1
  172. package/test/lib/matrix.test.js +1 -1
  173. package/test/lib/mouse.test.js +327 -4
  174. package/test/lib/patterns.test.js +105 -0
  175. package/test/lib/promptOptions.test.js +179 -0
  176. package/test/lib/scene.test.js +16 -52
  177. package/test/lib/selectionManager.test.js +17 -5
  178. package/test/lib/settings.test.js +111 -5
  179. package/test/lib/snapping.test.js +142 -4
  180. package/test/lib/stateManager.test.js +155 -0
  181. package/test/lib/utils.test.js +81 -1
  182. package/test/objects/dictionary.test.js +81 -0
  183. package/test/objects/dictionaryManager.test.js +34 -0
  184. package/test/properties/dimType.test.js +62 -0
  185. package/test/properties/flags.test.js +164 -0
  186. package/test/properties/property.test.js +13 -0
  187. package/test/properties/propertyManager.test.js +10 -11
  188. package/test/tables/appId.test.js +46 -0
  189. package/test/tables/appIdManager.test.js +72 -0
  190. package/test/tables/block.test.js +157 -0
  191. package/test/tables/blockManager.test.js +52 -0
  192. package/test/tables/blockRecord.test.js +39 -0
  193. package/test/tables/blockRecordManager.test.js +60 -0
  194. package/test/tables/dimstyle.test.js +72 -0
  195. package/test/tables/endblk.test.js +30 -0
  196. package/test/tables/layer.test.js +95 -0
  197. package/test/tables/layerManager.test.js +172 -0
  198. package/test/{styles → tables}/ltype.test.js +7 -7
  199. package/test/{styles → tables}/ltypeManager.test.js +2 -2
  200. package/test/tables/style.test.js +44 -0
  201. package/test/tables/stylemanagerbase.test.js +220 -0
  202. package/test/tables/tableManagerBase.test.js +194 -0
  203. package/test/tables/ucs.test.js +37 -0
  204. package/test/tables/ucsManager.test.js +48 -0
  205. package/test/tables/view.test.js +37 -0
  206. package/test/tables/viewManager.test.js +48 -0
  207. package/test/tables/vport.test.js +117 -0
  208. package/test/tables/vportManager.test.js +54 -0
  209. package/test/test-helpers/test-helpers.js +66 -0
  210. package/test/tools/chamfer.test.js +970 -0
  211. package/test/tools/chamferFilletBase.test.js +446 -0
  212. package/test/tools/copy.test.js +22 -14
  213. package/test/tools/copybase.test.js +93 -0
  214. package/test/tools/copyclip.test.js +92 -0
  215. package/test/tools/cornerEntity.test.js +201 -0
  216. package/test/tools/cutclip.test.js +94 -0
  217. package/test/tools/distance.test.js +140 -18
  218. package/test/tools/erase.test.js +12 -12
  219. package/test/tools/explode.test.js +45 -0
  220. package/test/tools/extend.test.js +326 -44
  221. package/test/tools/fillet.test.js +831 -0
  222. package/test/tools/identify.test.js +115 -16
  223. package/test/tools/matchProp.test.js +84 -0
  224. package/test/tools/mirror.test.js +475 -0
  225. package/test/tools/move.test.js +75 -19
  226. package/test/tools/offset.test.js +748 -0
  227. package/test/tools/pan.test.js +72 -0
  228. package/test/tools/pasteclip.test.js +100 -0
  229. package/test/tools/purge.test.js +89 -0
  230. package/test/tools/rotate.test.js +89 -23
  231. package/test/tools/scale.test.js +529 -0
  232. package/test/tools/trim.test.js +419 -84
  233. package/test/tools/zoom.test.js +504 -0
  234. package/core/entities/alignedDimension.js +0 -279
  235. package/core/entities/angularDimension.js +0 -194
  236. package/core/entities/baseDimension.js +0 -227
  237. package/core/entities/block.js +0 -247
  238. package/core/entities/diametricDimension.js +0 -133
  239. package/core/entities/dimension.js +0 -202
  240. package/core/entities/radialDimension.js +0 -126
  241. package/core/styles/dimStyle.js +0 -719
  242. package/core/styles/dimStyleManager.js +0 -47
  243. package/core/styles/layer.js +0 -133
  244. package/core/styles/layerManager.js +0 -40
  245. package/core/styles/ltype.js +0 -86
  246. package/core/styles/ltypeManager.js +0 -50
  247. package/core/styles/style.js +0 -158
  248. package/core/styles/styleManager.js +0 -43
  249. package/core/styles/styleManagerBase.js +0 -299
  250. package/test/entities/block.test.js +0 -22
  251. package/test/styles/dimstyle.test.js +0 -19
  252. package/test/styles/layerManager.test.js +0 -150
  253. package/test/styles/style.test.js +0 -33
  254. package/test/styles/stylemanagerbase.test.js +0 -219
@@ -1,6 +1,7 @@
1
+ /** Logging Class */
1
2
  export class Logging {
2
3
  static _instance;
3
-
4
+ /** Create Logger */
4
5
  constructor() {
5
6
  this.logLevel = ['OFF', 'ERROR', 'WARN', 'DEBUG', 'TRACE'];
6
7
  this.level = 'DEBUG';
@@ -13,6 +14,7 @@ export class Logging {
13
14
  return Logging._instance;
14
15
  }
15
16
 
17
+ /** Get instance of logger */
16
18
  static get instance() {
17
19
  if (this._instance === undefined) {
18
20
  this._instance = new this();
@@ -21,6 +23,10 @@ export class Logging {
21
23
  return this._instance;
22
24
  }
23
25
 
26
+ /**
27
+ * Set logging level
28
+ * @param {number} level
29
+ */
24
30
  setLevel(level) {
25
31
  if (this.logLevel.includes(level)) {
26
32
  this.level = level;
@@ -29,10 +35,17 @@ export class Logging {
29
35
  }
30
36
  }
31
37
 
38
+ /**
39
+ * Get the logging level
40
+ */
32
41
  get levelValue() {
33
42
  return this.logLevel.indexOf(this.level);
34
43
  }
35
44
 
45
+ /**
46
+ * Print debug message
47
+ * @param {string} msg
48
+ */
36
49
  debug(msg) {
37
50
  if (this.levelValue >= 3) {
38
51
  console.log(`Debug: ${msg}`);
@@ -40,6 +53,10 @@ export class Logging {
40
53
  }
41
54
  }
42
55
 
56
+ /**
57
+ * Print warning message
58
+ * @param {string} msg
59
+ */
43
60
  warn(msg) {
44
61
  if (this.levelValue >= 2) {
45
62
  console.log(`Warning: ${msg}`);
@@ -47,6 +64,10 @@ export class Logging {
47
64
  }
48
65
  }
49
66
 
67
+ /**
68
+ * Print error message
69
+ * @param {string} msg
70
+ */
50
71
  error(msg) {
51
72
  if (this.levelValue >= 1) {
52
73
  console.log(`Error: ${msg}`);
@@ -54,6 +75,9 @@ export class Logging {
54
75
  }
55
76
  }
56
77
 
78
+ /**
79
+ * Print trace
80
+ */
57
81
  trace() {
58
82
  if (this.levelValue >= 4) {
59
83
  console.trace();
@@ -1,9 +1,7 @@
1
- import {Point} from '../entities/point.js';
2
-
1
+ import { Point } from '../entities/point.js';
2
+ /** Matrix Class */
3
3
  export class Matrix {
4
- /**
5
- * Matrix constructor
6
- */
4
+ /** Create Matrix */
7
5
  constructor() {
8
6
  this.a = 1; // x scale
9
7
  this.b = 0; // x skew
@@ -15,7 +13,7 @@ export class Matrix {
15
13
 
16
14
  /**
17
15
  * Returns the current scale
18
- * @returns
16
+ * @return {number}
19
17
  */
20
18
  getScale() {
21
19
  // return the x scale
@@ -24,7 +22,7 @@ export class Matrix {
24
22
 
25
23
  /**
26
24
  * Returns inverted matrix
27
- * @returns
25
+ * @return {Matrix}
28
26
  */
29
27
  invert() {
30
28
  const d = 1 / (this.a * this.d - this.b * this.c);
@@ -64,7 +62,7 @@ export class Matrix {
64
62
  * Returns px and py transformed to matrix (scene) co-ordinates
65
63
  * @param {number} px
66
64
  * @param {number} py
67
- * @returns
65
+ * @return {Point}
68
66
  */
69
67
  transformPoint(px, py) {
70
68
  const tpx = px * this.a + py * this.c + this.e;
package/core/lib/mouse.js CHANGED
@@ -1,54 +1,23 @@
1
- import {Point} from '../entities/point.js';
2
- import {Utils} from './utils.js';
3
- import {DesignCore} from '../designCore.js';
1
+ import { Point } from '../entities/point.js';
2
+ import { DesignCore } from '../designCore.js';
4
3
 
4
+ /** Mouse Class */
5
5
  export class Mouse {
6
- /**
7
- * Mouse Constructor
8
- */
6
+ /** Create Mouse */
9
7
  constructor() {
10
8
  this.x = 0;
11
9
  this.y = 0;
12
10
  this.buttonOneDown = false;
13
11
  this.buttonTwoDown = false;
14
12
  this.buttonThreeDown = false;
15
- this.buttonOneDownScenePoint = new Point(); // store the location of the last scene click
16
13
  this.mouseDownCanvasPoint = new Point();
17
14
  this.lastClick = 0; // Timer for double click
18
15
  this.lastButton = 0; // last button for double click check
19
16
  }
20
17
 
21
- /**
22
- * Calculates the angle between the last mouse point and current position
23
- * @returns
24
- */
25
- inputAngle() {
26
- const previousPoint = this.transformToScene(this.mouseDownCanvasPoint);
27
- if (previousPoint) {
28
- const angle = Utils.radians2degrees(previousPoint.angle(this.pointOnScene()));
29
- return angle;
30
- }
31
-
32
- return undefined;
33
- }
34
-
35
- /**
36
- * Calculates the distance between the last mouse point and current position
37
- * @returns
38
- */
39
- inputLength() {
40
- if (this.mouseDownCanvasPoint) {
41
- const lastScenePoint = this.transformToScene(this.mouseDownCanvasPoint);
42
- const len = lastScenePoint.distance(this.pointOnScene());
43
- return len;
44
- }
45
-
46
- return undefined;
47
- }
48
-
49
18
  /**
50
19
  * Returns the point on the design canvas
51
- * @returns
20
+ * @return {Point}
52
21
  */
53
22
  pointOnCanvas() {
54
23
  return new Point(this.x, this.y);
@@ -56,7 +25,7 @@ export class Mouse {
56
25
 
57
26
  /**
58
27
  * Returns the point on the scene
59
- * @returns
28
+ * @return {Point}
60
29
  */
61
30
  pointOnScene() {
62
31
  return this.transformToScene(this.pointOnCanvas());
@@ -64,47 +33,37 @@ export class Mouse {
64
33
 
65
34
  /**
66
35
  * Transforms the point location from canvas to scene space
67
- * @param {point} point
68
- * @returns
36
+ * @param {Point} point
37
+ * @return {Point}
69
38
  */
70
39
  transformToScene(point) {
71
- const scenePoint = DesignCore.Canvas.matrix.invert().transformPoint(point.x, 0 - point.y +DesignCore.Canvas.height);
40
+ const scenePoint = DesignCore.Canvas.matrix.invert().transformPoint(point.x, 0 - point.y + DesignCore.Canvas.height);
72
41
  return scenePoint;
73
42
  }
74
43
 
75
44
  /**
76
45
  * Transforms the point location from scene to canvas space
77
- * @param {point} point
78
- * @returns
46
+ * @param {Point} point
47
+ * @return {Point}
79
48
  */
80
49
  transformToCanvas(point) {
81
50
  const canvasPoint = DesignCore.Canvas.matrix.transformPoint(point.x, point.y);
82
- canvasPoint.y = 0 - canvasPoint.y +DesignCore.Canvas.height;
51
+ canvasPoint.y = 0 - canvasPoint.y + DesignCore.Canvas.height;
83
52
  return canvasPoint;
84
53
  }
85
54
 
86
55
  // TODO: This should be done outside of core in the ui.
87
56
  /**
88
57
  * Calculates the mouse position and angle string.
89
- * @returns
58
+ * @return {string}
90
59
  */
91
60
  positionString() {
92
- // return a string showing the position of the mouse on the canvas
93
-
94
- const str = 'X: ' + this.pointOnScene().x.toFixed(1) + ' Y: ' + this.pointOnScene().y.toFixed(1);
95
-
96
- /*
97
- // add the length to a previous when available
98
- if (this.inputLength()) {
99
- str = str + ', Len: ' + Math.round(this.inputLength());
100
- }
101
-
102
- // add the angle from the previous point when available
103
- if (this.inputAngle()) {
104
- str = str + ', Ang: ' + Math.round(this.inputAngle());
105
- }
106
- */
61
+ if (this.buttonOneDown || this.buttonTwoDown || this.buttonThreeDown) {
62
+ return '';
63
+ }
107
64
 
65
+ const pt = this.pointOnScene();
66
+ const str = `X: ${pt.x.toFixed(1)} Y: ${pt.y.toFixed(1)}`;
108
67
  return str;
109
68
  }
110
69
 
@@ -122,20 +81,6 @@ export class Mouse {
122
81
  // move the origin down to the bottom and invert the y position
123
82
  this.y = -y + DesignCore.Canvas.height;
124
83
 
125
- if (DesignCore.Settings.polar) {
126
- // if polar is enabled - get the closest points
127
- const polarSnap = DesignCore.Scene.inputManager.snapping.polarSnap(this.buttonOneDownScenePoint);
128
- if (polarSnap) {
129
- this.setPosFromScenePoint(polarSnap);
130
- }
131
- } else if (DesignCore.Settings.ortho) {
132
- // if ortho is enabled - get the nearest ortho point
133
- const orthoSnap = DesignCore.Scene.inputManager.snapping.orthoSnap(this.buttonOneDownScenePoint);
134
- if (orthoSnap) {
135
- this.setPosFromScenePoint(orthoSnap);
136
- }
137
- }
138
-
139
84
  DesignCore.Canvas.mouseMoved();
140
85
  }
141
86
 
@@ -149,7 +94,6 @@ export class Mouse {
149
94
  switch (button) {
150
95
  case 0:
151
96
  this.buttonOneDown = true;
152
- this.buttonOneDownScenePoint = this.pointOnScene();
153
97
  break;
154
98
  case 1:
155
99
  this.buttonTwoDown = true;
@@ -165,9 +109,9 @@ export class Mouse {
165
109
  }
166
110
 
167
111
  /**
168
- * Timer function for recognising double clicks
169
- * @param {*} button - 0 = left, 1 = wheel, 2 = right;
170
- * @returns
112
+ * Timer function for recognizing double clicks
113
+ * @param {number} button - 0 = left, 1 = wheel, 2 = right;
114
+ * @return {boolean}
171
115
  */
172
116
  isDoubleClick(button) {
173
117
  // measure time between clicks to check for double clicks in a generic way
@@ -176,9 +120,10 @@ export class Mouse {
176
120
  const delta = thisClick - this.lastClick;
177
121
  const isDoubleClick = delta < doubleClickThreshold;
178
122
  this.lastClick = thisClick;
123
+ const lastButton = this.lastButton;
179
124
  this.lastButton = button;
180
125
 
181
- if (button === this.lastButton && isDoubleClick) {
126
+ if (button === lastButton && isDoubleClick) {
182
127
  this.doubleClick(button);
183
128
  return true;
184
129
  }
@@ -224,7 +169,7 @@ export class Mouse {
224
169
 
225
170
  /**
226
171
  * set mouse position from scene coordinates
227
- * @param {point} point
172
+ * @param {Point} point
228
173
  */
229
174
  setPosFromScenePoint(point) {
230
175
  const mousePos = this.transformToCanvas(point);