@tableslayer/ui 0.1.4 → 0.1.5

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 (206) hide show
  1. package/dist/components/PropsTable/PropsTable.svelte +1 -1
  2. package/package.json +9 -9
  3. package/src/lib/components/Avatar/Avatar.svelte +0 -82
  4. package/src/lib/components/Avatar/AvatarFileInput.svelte +0 -85
  5. package/src/lib/components/Avatar/AvatarPopover.svelte +0 -34
  6. package/src/lib/components/Avatar/index.ts +0 -4
  7. package/src/lib/components/Avatar/types.ts +0 -24
  8. package/src/lib/components/BrushSizeSlider/BrushSizeSlider.svelte +0 -174
  9. package/src/lib/components/BrushSizeSlider/index.ts +0 -1
  10. package/src/lib/components/Button/Button.svelte +0 -182
  11. package/src/lib/components/Button/ConfirmActionButton.svelte +0 -98
  12. package/src/lib/components/Button/IconButton.svelte +0 -121
  13. package/src/lib/components/Button/RadioButton.svelte +0 -93
  14. package/src/lib/components/Button/index.ts +0 -5
  15. package/src/lib/components/Button/types.ts +0 -54
  16. package/src/lib/components/CardFan/CardFan.svelte +0 -165
  17. package/src/lib/components/CardFan/index.ts +0 -2
  18. package/src/lib/components/CardFan/types.ts +0 -6
  19. package/src/lib/components/CodeBlock/Code.svelte +0 -7
  20. package/src/lib/components/CodeBlock/CodeBlock.svelte +0 -102
  21. package/src/lib/components/CodeBlock/index.ts +0 -3
  22. package/src/lib/components/CodeBlock/types.ts +0 -10
  23. package/src/lib/components/ColorMode/ColorMode.svelte +0 -8
  24. package/src/lib/components/ColorMode/index.ts +0 -2
  25. package/src/lib/components/ColorMode/types.ts +0 -12
  26. package/src/lib/components/ColorPicker/ColorPicker.svelte +0 -838
  27. package/src/lib/components/ColorPicker/ColorPickerSwatch.svelte +0 -32
  28. package/src/lib/components/ColorPicker/index.ts +0 -3
  29. package/src/lib/components/ColorPicker/types.ts +0 -51
  30. package/src/lib/components/ContextMenu/ContextMenu.svelte +0 -86
  31. package/src/lib/components/ContextMenu/index.ts +0 -2
  32. package/src/lib/components/ContextMenu/types.ts +0 -15
  33. package/src/lib/components/DrawingSliders/DrawingSliders.svelte +0 -379
  34. package/src/lib/components/DrawingSliders/index.ts +0 -1
  35. package/src/lib/components/Editor/Editor.svelte +0 -825
  36. package/src/lib/components/Editor/index.ts +0 -1
  37. package/src/lib/components/FogSliders/FogSliders.svelte +0 -33
  38. package/src/lib/components/FogSliders/index.ts +0 -1
  39. package/src/lib/components/Hr/Hr.svelte +0 -15
  40. package/src/lib/components/Hr/index.ts +0 -1
  41. package/src/lib/components/Icon/Icon.svelte +0 -6
  42. package/src/lib/components/Icon/index.ts +0 -2
  43. package/src/lib/components/Icon/types.ts +0 -20
  44. package/src/lib/components/Input/DualInputSlider.svelte +0 -126
  45. package/src/lib/components/Input/FileInput.svelte +0 -176
  46. package/src/lib/components/Input/FormControl.svelte +0 -150
  47. package/src/lib/components/Input/FormError.svelte +0 -37
  48. package/src/lib/components/Input/Input.svelte +0 -56
  49. package/src/lib/components/Input/InputCheckbox.svelte +0 -99
  50. package/src/lib/components/Input/InputSlider.svelte +0 -86
  51. package/src/lib/components/Input/Label.svelte +0 -19
  52. package/src/lib/components/Input/index.ts +0 -9
  53. package/src/lib/components/Input/types.ts +0 -39
  54. package/src/lib/components/Link/Link.svelte +0 -41
  55. package/src/lib/components/Link/LinkBox.svelte +0 -20
  56. package/src/lib/components/Link/LinkOverlay.svelte +0 -23
  57. package/src/lib/components/Link/index.ts +0 -4
  58. package/src/lib/components/Link/types.ts +0 -17
  59. package/src/lib/components/Loading/Loader.svelte +0 -60
  60. package/src/lib/components/Loading/Skeleton.svelte +0 -9
  61. package/src/lib/components/Loading/index.ts +0 -2
  62. package/src/lib/components/Logo/Logo.svelte +0 -16
  63. package/src/lib/components/Logo/index.ts +0 -1
  64. package/src/lib/components/MarkerTooltip/MarkerTooltip.svelte +0 -435
  65. package/src/lib/components/MarkerTooltip/index.ts +0 -1
  66. package/src/lib/components/Menu/SelectorMenu.svelte +0 -280
  67. package/src/lib/components/Menu/index.ts +0 -2
  68. package/src/lib/components/Menu/types.ts +0 -17
  69. package/src/lib/components/MyCounterButton.svelte +0 -11
  70. package/src/lib/components/Panel/index.ts +0 -2
  71. package/src/lib/components/Panel/panel.svelte +0 -18
  72. package/src/lib/components/Panel/types.ts +0 -8
  73. package/src/lib/components/PersistButton/PersistButton.svelte +0 -100
  74. package/src/lib/components/PersistButton/index.ts +0 -1
  75. package/src/lib/components/Popover/Popover.svelte +0 -81
  76. package/src/lib/components/Popover/index.ts +0 -2
  77. package/src/lib/components/Popover/types.ts +0 -19
  78. package/src/lib/components/PropsTable/PropsTable.svelte +0 -107
  79. package/src/lib/components/RadialMenu/EffectPreview.svelte +0 -36
  80. package/src/lib/components/RadialMenu/EffectPreviewScene.svelte +0 -194
  81. package/src/lib/components/RadialMenu/RadialMenu.svelte +0 -503
  82. package/src/lib/components/RadialMenu/RadialMenuItem.svelte +0 -176
  83. package/src/lib/components/RadialMenu/index.ts +0 -2
  84. package/src/lib/components/RadialMenu/types.ts +0 -35
  85. package/src/lib/components/Select/Select.svelte +0 -342
  86. package/src/lib/components/Select/index.ts +0 -2
  87. package/src/lib/components/Select/types.ts +0 -22
  88. package/src/lib/components/Spacer/Spacer.svelte +0 -14
  89. package/src/lib/components/Spacer/index.ts +0 -2
  90. package/src/lib/components/Spacer/types.ts +0 -5
  91. package/src/lib/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +0 -445
  92. package/src/lib/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +0 -167
  93. package/src/lib/components/Stage/components/AnnotationLayer/types.ts +0 -196
  94. package/src/lib/components/Stage/components/CursorLayer/CursorLayer.svelte +0 -148
  95. package/src/lib/components/Stage/components/CursorLayer/cursor.svg +0 -26
  96. package/src/lib/components/Stage/components/CursorLayer/index.ts +0 -2
  97. package/src/lib/components/Stage/components/CursorLayer/types.ts +0 -23
  98. package/src/lib/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +0 -364
  99. package/src/lib/components/Stage/components/DrawingLayer/types.ts +0 -65
  100. package/src/lib/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +0 -72
  101. package/src/lib/components/Stage/components/EdgeOverlayLayer/types.ts +0 -34
  102. package/src/lib/components/Stage/components/FogLayer/FogLayer.svelte +0 -75
  103. package/src/lib/components/Stage/components/FogLayer/types.ts +0 -51
  104. package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +0 -249
  105. package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +0 -200
  106. package/src/lib/components/Stage/components/FogOfWarLayer/types.ts +0 -116
  107. package/src/lib/components/Stage/components/GridLayer/GridLayer.svelte +0 -20
  108. package/src/lib/components/Stage/components/GridLayer/GridMaterial.svelte +0 -69
  109. package/src/lib/components/Stage/components/GridLayer/types.ts +0 -79
  110. package/src/lib/components/Stage/components/LayerInput/LayerInput.svelte +0 -300
  111. package/src/lib/components/Stage/components/MapLayer/MapLayer.svelte +0 -196
  112. package/src/lib/components/Stage/components/MapLayer/dataSources/GifDataSource.ts +0 -265
  113. package/src/lib/components/Stage/components/MapLayer/dataSources/IMapDataSource.ts +0 -55
  114. package/src/lib/components/Stage/components/MapLayer/dataSources/ImageDataSource.ts +0 -87
  115. package/src/lib/components/Stage/components/MapLayer/dataSources/VideoDataSource.ts +0 -150
  116. package/src/lib/components/Stage/components/MapLayer/dataSources/dataSourceFactory.ts +0 -48
  117. package/src/lib/components/Stage/components/MapLayer/dataSources/index.ts +0 -16
  118. package/src/lib/components/Stage/components/MapLayer/types.ts +0 -58
  119. package/src/lib/components/Stage/components/MarkerLayer/MarkerLayer.svelte +0 -398
  120. package/src/lib/components/Stage/components/MarkerLayer/MarkerToken.svelte +0 -262
  121. package/src/lib/components/Stage/components/MarkerLayer/types.ts +0 -126
  122. package/src/lib/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +0 -364
  123. package/src/lib/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +0 -473
  124. package/src/lib/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.ts +0 -427
  125. package/src/lib/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.ts +0 -105
  126. package/src/lib/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.ts +0 -98
  127. package/src/lib/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.ts +0 -163
  128. package/src/lib/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.ts +0 -102
  129. package/src/lib/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.ts +0 -120
  130. package/src/lib/components/Stage/components/MeasurementLayer/measurements/index.ts +0 -7
  131. package/src/lib/components/Stage/components/MeasurementLayer/types.ts +0 -94
  132. package/src/lib/components/Stage/components/MeasurementLayer/utils/canvasDrawing.ts +0 -357
  133. package/src/lib/components/Stage/components/MeasurementLayer/utils/distanceCalculations.ts +0 -170
  134. package/src/lib/components/Stage/components/ParticleSystem/ParticleSystem.svelte +0 -220
  135. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
  136. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
  137. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
  138. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
  139. package/src/lib/components/Stage/components/ParticleSystem/rng.js +0 -20
  140. package/src/lib/components/Stage/components/ParticleSystem/types.ts +0 -95
  141. package/src/lib/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +0 -144
  142. package/src/lib/components/Stage/components/PerformanceDebugger/index.ts +0 -1
  143. package/src/lib/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +0 -208
  144. package/src/lib/components/Stage/components/PerformanceOverlay/index.ts +0 -1
  145. package/src/lib/components/Stage/components/PointerInputManager/PointerInputManager.svelte +0 -201
  146. package/src/lib/components/Stage/components/Scene/Scene.svelte +0 -651
  147. package/src/lib/components/Stage/components/Scene/luts.ts +0 -24
  148. package/src/lib/components/Stage/components/Scene/types.ts +0 -225
  149. package/src/lib/components/Stage/components/Stage/Stage.svelte +0 -332
  150. package/src/lib/components/Stage/components/Stage/types.ts +0 -136
  151. package/src/lib/components/Stage/components/WeatherLayer/WeatherLayer.svelte +0 -135
  152. package/src/lib/components/Stage/components/WeatherLayer/presets/AshPreset.ts +0 -71
  153. package/src/lib/components/Stage/components/WeatherLayer/presets/LeavesPreset.ts +0 -70
  154. package/src/lib/components/Stage/components/WeatherLayer/presets/RainPreset.ts +0 -68
  155. package/src/lib/components/Stage/components/WeatherLayer/presets/SnowPreset.ts +0 -70
  156. package/src/lib/components/Stage/components/WeatherLayer/presets/index.ts +0 -6
  157. package/src/lib/components/Stage/components/WeatherLayer/types.ts +0 -35
  158. package/src/lib/components/Stage/helpers/clippingPlaneStore.svelte.ts +0 -28
  159. package/src/lib/components/Stage/helpers/debugState.svelte.ts +0 -18
  160. package/src/lib/components/Stage/helpers/grid.ts +0 -548
  161. package/src/lib/components/Stage/helpers/lazyBrush.ts +0 -171
  162. package/src/lib/components/Stage/helpers/performanceMetrics.svelte.ts +0 -220
  163. package/src/lib/components/Stage/helpers/utils.ts +0 -21
  164. package/src/lib/components/Stage/index.ts +0 -49
  165. package/src/lib/components/Stage/shaders/AnnotationEffects.frag +0 -1070
  166. package/src/lib/components/Stage/shaders/Annotations.frag +0 -29
  167. package/src/lib/components/Stage/shaders/Drawing.frag +0 -83
  168. package/src/lib/components/Stage/shaders/Drawing.vert +0 -5
  169. package/src/lib/components/Stage/shaders/Fog.frag +0 -147
  170. package/src/lib/components/Stage/shaders/FractalNoise.frag +0 -96
  171. package/src/lib/components/Stage/shaders/GridShader.frag +0 -174
  172. package/src/lib/components/Stage/shaders/Overlay.frag +0 -23
  173. package/src/lib/components/Stage/shaders/Overlay.vert +0 -0
  174. package/src/lib/components/Stage/shaders/Particles.frag +0 -27
  175. package/src/lib/components/Stage/shaders/Particles.vert +0 -51
  176. package/src/lib/components/Stage/shaders/ToolOutline.frag +0 -59
  177. package/src/lib/components/Stage/shaders/default.vert +0 -8
  178. package/src/lib/components/Stage/types.ts +0 -4
  179. package/src/lib/components/Table/Table.svelte +0 -16
  180. package/src/lib/components/Table/Td.svelte +0 -17
  181. package/src/lib/components/Table/Th.svelte +0 -18
  182. package/src/lib/components/Table/index.ts +0 -4
  183. package/src/lib/components/Table/types.ts +0 -14
  184. package/src/lib/components/Text/Text.svelte +0 -23
  185. package/src/lib/components/Text/index.ts +0 -2
  186. package/src/lib/components/Text/types.ts +0 -12
  187. package/src/lib/components/Title/Title.svelte +0 -54
  188. package/src/lib/components/Title/index.ts +0 -2
  189. package/src/lib/components/Title/types.ts +0 -9
  190. package/src/lib/components/Toast/Toast.svelte +0 -155
  191. package/src/lib/components/Toast/index.ts +0 -5
  192. package/src/lib/components/Toast/toastCookie.ts +0 -24
  193. package/src/lib/components/Toast/types.ts +0 -6
  194. package/src/lib/components/ToolTip/ToolTip.svelte +0 -70
  195. package/src/lib/components/ToolTip/index.ts +0 -2
  196. package/src/lib/components/ToolTip/types.ts +0 -14
  197. package/src/lib/components/index.ts +0 -32
  198. package/src/lib/components/types.ts +0 -0
  199. package/src/lib/index.ts +0 -2
  200. package/src/lib/styles/globals.css +0 -108
  201. package/src/lib/styles/normalize.css +0 -9
  202. package/src/lib/styles/reset.css +0 -133
  203. package/src/lib/styles/utilities.css +0 -179
  204. package/src/lib/styles/vars.css +0 -1103
  205. package/src/lib/types/awareness.ts +0 -17
  206. package/src/lib/utils/rle.ts +0 -217
@@ -1,163 +0,0 @@
1
- // prettier-ignore
2
- import * as THREE from 'three';
3
- // prettier-ignore
4
- import type { DisplayProps } from '../../Stage/types';
5
- // prettier-ignore
6
- import type { GridLayerProps } from '../../GridLayer/types';
7
- import { MeasurementType, type MeasurementLayerProps } from '../types';
8
- import { drawCircle } from '../utils/canvasDrawing';
9
- import { BaseMeasurement } from './BaseMeasurement';
10
-
11
- export class ConeMeasurement extends BaseMeasurement {
12
- private coneAngle: number;
13
-
14
- constructor(
15
- startPoint: THREE.Vector2,
16
- measurementProps: MeasurementLayerProps,
17
- displayProps: DisplayProps,
18
- gridProps: GridLayerProps
19
- ) {
20
- super(MeasurementType.Cone, startPoint, measurementProps, displayProps, gridProps);
21
- this.coneAngle = measurementProps.coneAngle;
22
- }
23
-
24
- renderShape(): void {
25
- // Calculate cone parameters
26
- const radius = this.startPoint.distanceTo(this.endPoint);
27
- const direction = this.endPoint.clone().sub(this.startPoint);
28
- const centerAngle = Math.atan2(direction.y, direction.x);
29
-
30
- // Convert cone angle from degrees to radians and calculate start/end angles
31
- const coneAngleRad = (this.coneAngle * Math.PI) / 180;
32
- const startAngle = centerAngle - coneAngleRad / 2;
33
- const endAngle = centerAngle + coneAngleRad / 2;
34
-
35
- // Create canvas for the cone
36
- const canvas = document.createElement('canvas');
37
- const context = canvas.getContext('2d', { colorSpace: 'srgb' })!;
38
-
39
- // Calculate canvas size - accommodate full cone plus padding
40
- const padding = Math.max(this.markerSize + this.outlineThickness, 40);
41
- const canvasSize = (radius + padding) * 2;
42
-
43
- canvas.width = Math.max(canvasSize, 100);
44
- canvas.height = Math.max(canvasSize, 100);
45
-
46
- // Clear canvas
47
- context.clearRect(0, 0, canvas.width, canvas.height);
48
-
49
- // Canvas center coordinates
50
- const canvasCenterX = canvas.width / 2;
51
- const canvasCenterY = canvas.height / 2;
52
-
53
- // Draw cone with dashed pattern
54
- if (radius > 0) {
55
- // First draw the fill
56
- context.fillStyle = this.color;
57
- context.globalAlpha = 0.2;
58
- context.beginPath();
59
- context.moveTo(canvasCenterX, canvasCenterY);
60
- context.arc(canvasCenterX, canvasCenterY, radius, -startAngle, -endAngle, true);
61
- context.closePath();
62
- context.fill();
63
- context.globalAlpha = 1.0;
64
-
65
- // Draw the outline with dashed pattern if needed
66
- if (this.outlineThickness > 0) {
67
- context.strokeStyle = this.outlineColor;
68
- context.lineWidth = this.thickness + this.outlineThickness * 2;
69
- context.setLineDash([20, 10]); // Dashed pattern
70
-
71
- // Draw the arc
72
- context.beginPath();
73
- context.arc(canvasCenterX, canvasCenterY, radius, -startAngle, -endAngle, true);
74
- context.stroke();
75
-
76
- // Draw the sides
77
- context.beginPath();
78
- context.moveTo(canvasCenterX, canvasCenterY);
79
- context.lineTo(canvasCenterX + Math.cos(-startAngle) * radius, canvasCenterY + Math.sin(-startAngle) * radius);
80
- context.stroke();
81
-
82
- context.beginPath();
83
- context.moveTo(canvasCenterX, canvasCenterY);
84
- context.lineTo(canvasCenterX + Math.cos(-endAngle) * radius, canvasCenterY + Math.sin(-endAngle) * radius);
85
- context.stroke();
86
- }
87
-
88
- // Draw the main stroke with dashed pattern
89
- context.strokeStyle = this.color;
90
- context.lineWidth = this.thickness;
91
- context.setLineDash([20, 10]); // Dashed pattern
92
-
93
- // Draw the arc
94
- context.beginPath();
95
- context.arc(canvasCenterX, canvasCenterY, radius, -startAngle, -endAngle, true);
96
- context.stroke();
97
-
98
- // Draw the sides
99
- context.beginPath();
100
- context.moveTo(canvasCenterX, canvasCenterY);
101
- context.lineTo(canvasCenterX + Math.cos(-startAngle) * radius, canvasCenterY + Math.sin(-startAngle) * radius);
102
- context.stroke();
103
-
104
- context.beginPath();
105
- context.moveTo(canvasCenterX, canvasCenterY);
106
- context.lineTo(canvasCenterX + Math.cos(-endAngle) * radius, canvasCenterY + Math.sin(-endAngle) * radius);
107
- context.stroke();
108
-
109
- // Reset dash pattern for other elements
110
- context.setLineDash([]);
111
- }
112
-
113
- // Draw center point (cone origin)
114
- drawCircle(
115
- context,
116
- canvasCenterX,
117
- canvasCenterY,
118
- this.markerSize / 2,
119
- this.color,
120
- this.outlineColor,
121
- this.outlineThickness
122
- );
123
-
124
- // Draw point at the center of the cone's end arc (invert Y for canvas coordinates)
125
- const endPointX = canvasCenterX + Math.cos(centerAngle) * radius;
126
- const endPointY = canvasCenterY - Math.sin(centerAngle) * radius;
127
- drawCircle(
128
- context,
129
- endPointX,
130
- endPointY,
131
- this.markerSize / 2,
132
- this.color,
133
- this.outlineColor,
134
- this.outlineThickness
135
- );
136
-
137
- // Draw points at the cone's edges (invert Y for canvas coordinates)
138
- const startEdgeX = canvasCenterX + Math.cos(startAngle) * radius;
139
- const startEdgeY = canvasCenterY - Math.sin(startAngle) * radius;
140
- drawCircle(
141
- context,
142
- startEdgeX,
143
- startEdgeY,
144
- this.markerSize / 2,
145
- this.color,
146
- this.outlineColor,
147
- this.outlineThickness
148
- );
149
-
150
- const endEdgeX = canvasCenterX + Math.cos(endAngle) * radius;
151
- const endEdgeY = canvasCenterY - Math.sin(endAngle) * radius;
152
- drawCircle(context, endEdgeX, endEdgeY, this.markerSize / 2, this.color, this.outlineColor, this.outlineThickness);
153
-
154
- // Create texture from canvas
155
- const texture = new THREE.CanvasTexture(canvas);
156
- texture.needsUpdate = true;
157
-
158
- this.updateShapeMesh(new THREE.PlaneGeometry(canvas.width, canvas.height), texture);
159
-
160
- // Position the cone at the start point (cone origin) in world coordinates
161
- this.shapeMesh.position.set(this.startPoint.x, this.startPoint.y, 0);
162
- }
163
- }
@@ -1,102 +0,0 @@
1
- // prettier-ignore
2
- import * as THREE from 'three';
3
- // prettier-ignore
4
- import type { DisplayProps } from '../../Stage/types';
5
- // prettier-ignore
6
- import type { GridLayerProps } from '../../GridLayer/types';
7
- import { MeasurementType, type MeasurementLayerProps } from '../types';
8
- import { drawCircle } from '../utils/canvasDrawing';
9
- import { BaseMeasurement } from './BaseMeasurement';
10
-
11
- export class LineMeasurement extends BaseMeasurement {
12
- constructor(
13
- startPoint: THREE.Vector2,
14
- measurementProps: MeasurementLayerProps,
15
- displayProps: DisplayProps,
16
- gridProps: GridLayerProps
17
- ) {
18
- super(MeasurementType.Line, startPoint, measurementProps, displayProps, gridProps);
19
- }
20
-
21
- renderShape(): void {
22
- // Create canvas for the line
23
- const canvas = document.createElement('canvas');
24
- const context = canvas.getContext('2d', { colorSpace: 'srgb' })!;
25
-
26
- // Calculate the bounding box of the line
27
- const minX = Math.min(this.startPoint.x, this.endPoint.x);
28
- const maxX = Math.max(this.startPoint.x, this.endPoint.x);
29
- const minY = Math.min(this.startPoint.y, this.endPoint.y);
30
- const maxY = Math.max(this.startPoint.y, this.endPoint.y);
31
-
32
- // Add padding for line thickness and circles at endpoints
33
- const endpointRadius = (this.markerSize + this.outlineThickness) * 2;
34
- const padding = Math.max(endpointRadius, 20);
35
- const width = maxX - minX + padding * 2;
36
- const height = maxY - minY + padding * 2;
37
-
38
- canvas.width = width;
39
- canvas.height = height;
40
-
41
- // Clear canvas
42
- context.clearRect(0, 0, canvas.width, canvas.height);
43
-
44
- // Transform coordinates: Three.js world space -> Canvas space
45
- // Canvas origin is top-left, Three.js origin is center of the plane
46
- const startX = this.startPoint.x - minX + padding;
47
- const startY = canvas.height - (this.startPoint.y - minY + padding); // Invert Y
48
- const endX = this.endPoint.x - minX + padding;
49
- const endY = canvas.height - (this.endPoint.y - minY + padding); // Invert Y
50
-
51
- // Draw the line with dashed pattern
52
- // First draw the outline if needed
53
- if (this.outlineThickness > 0) {
54
- context.strokeStyle = this.outlineColor;
55
- context.lineWidth = this.thickness + this.outlineThickness * 2;
56
- context.lineCap = 'round';
57
- context.lineJoin = 'round';
58
-
59
- // Set dash pattern for outline
60
- const dashLength = 20;
61
- const gapLength = 10;
62
- context.setLineDash([dashLength, gapLength]);
63
-
64
- context.beginPath();
65
- context.moveTo(startX, startY);
66
- context.lineTo(endX, endY);
67
- context.stroke();
68
- }
69
-
70
- // Draw the main line with dashed pattern
71
- context.strokeStyle = this.color;
72
- context.lineWidth = this.thickness;
73
- context.lineCap = 'round';
74
- context.lineJoin = 'round';
75
-
76
- // Set dash pattern - adjust based on line thickness for good visual proportion
77
- const dashLength = 20;
78
- const gapLength = 10;
79
- context.setLineDash([dashLength, gapLength]);
80
-
81
- context.beginPath();
82
- context.moveTo(startX, startY);
83
- context.lineTo(endX, endY);
84
- context.stroke();
85
-
86
- // Reset dash pattern for other elements
87
- context.setLineDash([]);
88
-
89
- // Start point circle
90
- drawCircle(context, startX, startY, this.markerSize / 2, this.color, this.outlineColor, this.outlineThickness);
91
-
92
- // End point circle
93
- drawCircle(context, endX, endY, this.markerSize / 2, this.color, this.outlineColor, this.outlineThickness);
94
-
95
- // Create texture from canvas
96
- const texture = new THREE.CanvasTexture(canvas);
97
- texture.needsUpdate = true;
98
-
99
- this.updateShapeMesh(new THREE.PlaneGeometry(canvas.width, canvas.height), texture);
100
- this.shapeMesh.position.set(minX + width / 2 - padding, minY + height / 2 - padding, 0);
101
- }
102
- }
@@ -1,120 +0,0 @@
1
- // prettier-ignore
2
- import * as THREE from 'three';
3
- // prettier-ignore
4
- import type { DisplayProps } from '../../Stage/types';
5
- // prettier-ignore
6
- import type { GridLayerProps } from '../../GridLayer/types';
7
- import { MeasurementType, type MeasurementLayerProps } from '../types';
8
- import { drawCircle } from '../utils/canvasDrawing';
9
- import { BaseMeasurement } from './BaseMeasurement';
10
-
11
- export class RectangleMeasurement extends BaseMeasurement {
12
- constructor(
13
- startPoint: THREE.Vector2,
14
- measurementProps: MeasurementLayerProps,
15
- displayProps: DisplayProps,
16
- gridProps: GridLayerProps
17
- ) {
18
- super(MeasurementType.Square, startPoint, measurementProps, displayProps, gridProps);
19
- }
20
-
21
- renderShape(): void {
22
- // Calculate the distance from center to mouse position
23
- const distance = this.startPoint.distanceTo(this.endPoint);
24
-
25
- // For a square, use the same distance for both width and height
26
- // This creates a square where the distance from center to edge equals the distance to the mouse
27
- const halfSize = distance;
28
- const squareSize = halfSize * 2;
29
-
30
- // Create canvas for the square
31
- const canvas = document.createElement('canvas');
32
- const context = canvas.getContext('2d', { colorSpace: 'srgb' })!;
33
-
34
- // Add padding for outline and corner points
35
- const padding = Math.max(this.markerSize + this.outlineThickness, 40);
36
- const canvasSize = squareSize + padding * 2;
37
-
38
- canvas.width = Math.max(canvasSize, 100);
39
- canvas.height = Math.max(canvasSize, 100);
40
-
41
- // Clear canvas
42
- context.clearRect(0, 0, canvas.width, canvas.height);
43
-
44
- // Canvas center coordinates
45
- const canvasCenterX = canvas.width / 2;
46
- const canvasCenterY = canvas.height / 2;
47
-
48
- // Calculate square position on canvas (centered)
49
- const rectX = canvasCenterX - halfSize;
50
- const rectY = canvasCenterY - halfSize;
51
-
52
- // Draw square with dashed pattern
53
- if (squareSize > 0) {
54
- // First draw the fill
55
- context.fillStyle = this.color;
56
- context.globalAlpha = 0.2;
57
- context.fillRect(rectX, rectY, squareSize, squareSize);
58
- context.globalAlpha = 1.0;
59
-
60
- // Draw the outline with dashed pattern if needed
61
- if (this.outlineThickness > 0) {
62
- context.strokeStyle = this.outlineColor;
63
- context.lineWidth = this.thickness + this.outlineThickness * 2;
64
- context.setLineDash([20, 10]); // Dashed pattern
65
- context.strokeRect(rectX, rectY, squareSize, squareSize);
66
- }
67
-
68
- // Draw the main stroke with dashed pattern
69
- context.strokeStyle = this.color;
70
- context.lineWidth = this.thickness;
71
- context.setLineDash([20, 10]); // Dashed pattern
72
- context.strokeRect(rectX, rectY, squareSize, squareSize);
73
-
74
- // Reset dash pattern for other elements
75
- context.setLineDash([]);
76
- }
77
-
78
- // Draw center point (like circle measurement)
79
- drawCircle(
80
- context,
81
- canvasCenterX,
82
- canvasCenterY,
83
- this.markerSize / 2,
84
- this.color,
85
- this.outlineColor,
86
- this.outlineThickness
87
- );
88
-
89
- // Draw corner points
90
- const cornerRadius = this.markerSize / 2;
91
-
92
- // Top-left corner
93
- drawCircle(context, rectX, rectY, cornerRadius, this.color, this.outlineColor, this.outlineThickness);
94
-
95
- // Top-right corner
96
- drawCircle(context, rectX + squareSize, rectY, cornerRadius, this.color, this.outlineColor, this.outlineThickness);
97
-
98
- // Bottom-right corner
99
- drawCircle(
100
- context,
101
- rectX + squareSize,
102
- rectY + squareSize,
103
- cornerRadius,
104
- this.color,
105
- this.outlineColor,
106
- this.outlineThickness
107
- );
108
-
109
- // Bottom-left corner
110
- drawCircle(context, rectX, rectY + squareSize, cornerRadius, this.color, this.outlineColor, this.outlineThickness);
111
-
112
- const texture = new THREE.CanvasTexture(canvas);
113
- texture.needsUpdate = true;
114
-
115
- this.updateShapeMesh(new THREE.PlaneGeometry(canvas.width, canvas.height), texture);
116
-
117
- // Position the square at the center point (startPoint), like circle measurement
118
- this.shapeMesh.position.set(this.startPoint.x, this.startPoint.y, 0);
119
- }
120
- }
@@ -1,7 +0,0 @@
1
- export { BaseMeasurement, type IMeasurement } from './BaseMeasurement';
2
- export { LineMeasurement } from './LineMeasurement';
3
- // TODO: Add other measurement types as they are implemented
4
- // export { CircleMeasurement } from './CircleMeasurement';
5
- // export { BeamMeasurement } from './BeamMeasurement';
6
- // export { ConeMeasurement } from './ConeMeasurement';
7
- // export { SquareMeasurement } from './SquareMeasurement';
@@ -1,94 +0,0 @@
1
- import * as THREE from 'three';
2
-
3
- export enum MeasurementType {
4
- Line = 1,
5
- Beam = 2,
6
- Cone = 3,
7
- Circle = 4,
8
- Square = 5
9
- }
10
-
11
- // Removed SnapType enum - using boolean instead
12
-
13
- export interface Measurement {
14
- id: string;
15
- type: MeasurementType;
16
- startPoint: THREE.Vector2;
17
- endPoint: THREE.Vector2;
18
- distance: number;
19
- unit: string;
20
- createdAt: number;
21
- }
22
-
23
- export interface MeasurementLayerProps {
24
- /**
25
- * The type of measurement to display
26
- */
27
- type: MeasurementType;
28
-
29
- /**
30
- * Whether to snap to grid
31
- */
32
- snapToGrid: boolean;
33
-
34
- /**
35
- * Enable DMG 252 diagonal movement rules (only applies when snapping to square grid)
36
- * First diagonal = 5ft, second = 10ft, alternating
37
- */
38
- enableDMG252: boolean;
39
-
40
- /**
41
- * Auto-hide delay in milliseconds (default 3000ms)
42
- */
43
- autoHideDelay: number;
44
-
45
- /**
46
- * Color of the measurement line
47
- */
48
- color: string;
49
-
50
- /**
51
- * Thickness of the measurement line
52
- */
53
- thickness: number;
54
-
55
- /**
56
- * Diameter of the measurement markers/points
57
- */
58
- markerSize: number;
59
-
60
- /**
61
- * Opacity of the measurement
62
- */
63
- opacity: number;
64
-
65
- /**
66
- * Whether to show distance text
67
- */
68
- showDistance: boolean;
69
-
70
- /**
71
- * Thickness of the text outline
72
- */
73
- outlineThickness: number;
74
-
75
- /**
76
- * Color of the text outline
77
- */
78
- outlineColor: string;
79
-
80
- /**
81
- * Width of beam measurements in world grid units
82
- */
83
- beamWidth: number;
84
-
85
- /**
86
- * Angle of cone measurements in degrees
87
- */
88
- coneAngle: number;
89
-
90
- /**
91
- * Fadeout animation duration in milliseconds (default 500ms)
92
- */
93
- fadeoutTime: number;
94
- }