@tableslayer/ui 0.1.5 → 0.1.6

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 (183) hide show
  1. package/dist/components/MarkerTooltip/MarkerTooltip.svelte +9 -1
  2. package/dist/components/MarkerTooltip/MarkerTooltip.svelte.d.ts +13 -16
  3. package/dist/components/index.d.ts +0 -5
  4. package/dist/components/index.js +0 -5
  5. package/package.json +1 -8
  6. package/dist/components/DrawingSliders/DrawingSliders.svelte +0 -379
  7. package/dist/components/DrawingSliders/DrawingSliders.svelte.d.ts +0 -16
  8. package/dist/components/DrawingSliders/index.d.ts +0 -1
  9. package/dist/components/DrawingSliders/index.js +0 -1
  10. package/dist/components/MyCounterButton.svelte +0 -11
  11. package/dist/components/MyCounterButton.svelte.d.ts +0 -3
  12. package/dist/components/PropsTable/PropsTable.svelte +0 -107
  13. package/dist/components/PropsTable/PropsTable.svelte.d.ts +0 -26
  14. package/dist/components/RadialMenu/EffectPreview.svelte +0 -36
  15. package/dist/components/RadialMenu/EffectPreview.svelte.d.ts +0 -9
  16. package/dist/components/RadialMenu/EffectPreviewScene.svelte +0 -194
  17. package/dist/components/RadialMenu/EffectPreviewScene.svelte.d.ts +0 -8
  18. package/dist/components/RadialMenu/RadialMenu.svelte +0 -503
  19. package/dist/components/RadialMenu/RadialMenu.svelte.d.ts +0 -4
  20. package/dist/components/RadialMenu/RadialMenuItem.svelte +0 -176
  21. package/dist/components/RadialMenu/RadialMenuItem.svelte.d.ts +0 -11
  22. package/dist/components/RadialMenu/index.d.ts +0 -2
  23. package/dist/components/RadialMenu/index.js +0 -2
  24. package/dist/components/RadialMenu/types.d.ts +0 -35
  25. package/dist/components/RadialMenu/types.js +0 -1
  26. package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +0 -445
  27. package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte.d.ts +0 -19
  28. package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +0 -167
  29. package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte.d.ts +0 -20
  30. package/dist/components/Stage/components/AnnotationLayer/types.d.ts +0 -121
  31. package/dist/components/Stage/components/AnnotationLayer/types.js +0 -71
  32. package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte +0 -148
  33. package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte.d.ts +0 -7
  34. package/dist/components/Stage/components/CursorLayer/cursor.svg +0 -26
  35. package/dist/components/Stage/components/CursorLayer/index.d.ts +0 -2
  36. package/dist/components/Stage/components/CursorLayer/index.js +0 -1
  37. package/dist/components/Stage/components/CursorLayer/types.d.ts +0 -28
  38. package/dist/components/Stage/components/CursorLayer/types.js +0 -1
  39. package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +0 -364
  40. package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte.d.ts +0 -24
  41. package/dist/components/Stage/components/DrawingLayer/types.d.ts +0 -56
  42. package/dist/components/Stage/components/DrawingLayer/types.js +0 -23
  43. package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +0 -72
  44. package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte.d.ts +0 -11
  45. package/dist/components/Stage/components/EdgeOverlayLayer/types.d.ts +0 -29
  46. package/dist/components/Stage/components/EdgeOverlayLayer/types.js +0 -1
  47. package/dist/components/Stage/components/FogLayer/FogLayer.svelte +0 -75
  48. package/dist/components/Stage/components/FogLayer/FogLayer.svelte.d.ts +0 -11
  49. package/dist/components/Stage/components/FogLayer/types.d.ts +0 -42
  50. package/dist/components/Stage/components/FogLayer/types.js +0 -1
  51. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +0 -249
  52. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte.d.ts +0 -19
  53. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +0 -200
  54. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte.d.ts +0 -18
  55. package/dist/components/Stage/components/FogOfWarLayer/types.d.ts +0 -143
  56. package/dist/components/Stage/components/FogOfWarLayer/types.js +0 -1
  57. package/dist/components/Stage/components/GridLayer/GridLayer.svelte +0 -20
  58. package/dist/components/Stage/components/GridLayer/GridLayer.svelte.d.ts +0 -12
  59. package/dist/components/Stage/components/GridLayer/GridMaterial.svelte +0 -69
  60. package/dist/components/Stage/components/GridLayer/GridMaterial.svelte.d.ts +0 -10
  61. package/dist/components/Stage/components/GridLayer/types.d.ts +0 -65
  62. package/dist/components/Stage/components/GridLayer/types.js +0 -10
  63. package/dist/components/Stage/components/LayerInput/LayerInput.svelte +0 -300
  64. package/dist/components/Stage/components/LayerInput/LayerInput.svelte.d.ts +0 -20
  65. package/dist/components/Stage/components/MapLayer/MapLayer.svelte +0 -196
  66. package/dist/components/Stage/components/MapLayer/MapLayer.svelte.d.ts +0 -24
  67. package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.d.ts +0 -93
  68. package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.js +0 -229
  69. package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.d.ts +0 -51
  70. package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.js +0 -1
  71. package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.d.ts +0 -49
  72. package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.js +0 -87
  73. package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.d.ts +0 -52
  74. package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.js +0 -141
  75. package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.d.ts +0 -21
  76. package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.js +0 -44
  77. package/dist/components/Stage/components/MapLayer/dataSources/index.d.ts +0 -15
  78. package/dist/components/Stage/components/MapLayer/dataSources/index.js +0 -14
  79. package/dist/components/Stage/components/MapLayer/types.d.ts +0 -54
  80. package/dist/components/Stage/components/MapLayer/types.js +0 -9
  81. package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte +0 -398
  82. package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte.d.ts +0 -24
  83. package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte +0 -262
  84. package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte.d.ts +0 -27
  85. package/dist/components/Stage/components/MarkerLayer/types.d.ts +0 -109
  86. package/dist/components/Stage/components/MarkerLayer/types.js +0 -21
  87. package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +0 -364
  88. package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte.d.ts +0 -49
  89. package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +0 -473
  90. package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte.d.ts +0 -24
  91. package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.d.ts +0 -150
  92. package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.js +0 -274
  93. package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.d.ts +0 -10
  94. package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.js +0 -58
  95. package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.d.ts +0 -9
  96. package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.js +0 -66
  97. package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.d.ts +0 -10
  98. package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.js +0 -103
  99. package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.d.ts +0 -9
  100. package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.js +0 -75
  101. package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.d.ts +0 -9
  102. package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.js +0 -73
  103. package/dist/components/Stage/components/MeasurementLayer/measurements/index.d.ts +0 -2
  104. package/dist/components/Stage/components/MeasurementLayer/measurements/index.js +0 -7
  105. package/dist/components/Stage/components/MeasurementLayer/types.d.ts +0 -76
  106. package/dist/components/Stage/components/MeasurementLayer/types.js +0 -9
  107. package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.d.ts +0 -83
  108. package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.js +0 -267
  109. package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.d.ts +0 -74
  110. package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.js +0 -130
  111. package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte +0 -220
  112. package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte.d.ts +0 -9
  113. package/dist/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
  114. package/dist/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
  115. package/dist/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
  116. package/dist/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
  117. package/dist/components/Stage/components/ParticleSystem/rng.d.ts +0 -7
  118. package/dist/components/Stage/components/ParticleSystem/rng.js +0 -20
  119. package/dist/components/Stage/components/ParticleSystem/types.d.ts +0 -88
  120. package/dist/components/Stage/components/ParticleSystem/types.js +0 -37
  121. package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +0 -144
  122. package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte.d.ts +0 -19
  123. package/dist/components/Stage/components/PerformanceDebugger/index.d.ts +0 -1
  124. package/dist/components/Stage/components/PerformanceDebugger/index.js +0 -1
  125. package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +0 -208
  126. package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte.d.ts +0 -7
  127. package/dist/components/Stage/components/PerformanceOverlay/index.d.ts +0 -1
  128. package/dist/components/Stage/components/PerformanceOverlay/index.js +0 -1
  129. package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte +0 -201
  130. package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte.d.ts +0 -17
  131. package/dist/components/Stage/components/Scene/Scene.svelte +0 -651
  132. package/dist/components/Stage/components/Scene/Scene.svelte.d.ts +0 -88
  133. package/dist/components/Stage/components/Scene/luts.d.ts +0 -7
  134. package/dist/components/Stage/components/Scene/luts.js +0 -33
  135. package/dist/components/Stage/components/Scene/types.d.ts +0 -207
  136. package/dist/components/Stage/components/Scene/types.js +0 -35
  137. package/dist/components/Stage/components/Stage/Stage.svelte +0 -332
  138. package/dist/components/Stage/components/Stage/Stage.svelte.d.ts +0 -86
  139. package/dist/components/Stage/components/Stage/types.d.ts +0 -163
  140. package/dist/components/Stage/components/Stage/types.js +0 -5
  141. package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte +0 -135
  142. package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte.d.ts +0 -13
  143. package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.d.ts +0 -3
  144. package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.js +0 -69
  145. package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.d.ts +0 -3
  146. package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.js +0 -68
  147. package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.d.ts +0 -3
  148. package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.js +0 -67
  149. package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.d.ts +0 -3
  150. package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.js +0 -68
  151. package/dist/components/Stage/components/WeatherLayer/presets/index.d.ts +0 -5
  152. package/dist/components/Stage/components/WeatherLayer/presets/index.js +0 -5
  153. package/dist/components/Stage/components/WeatherLayer/types.d.ts +0 -31
  154. package/dist/components/Stage/components/WeatherLayer/types.js +0 -9
  155. package/dist/components/Stage/helpers/clippingPlaneStore.svelte.d.ts +0 -7
  156. package/dist/components/Stage/helpers/clippingPlaneStore.svelte.js +0 -23
  157. package/dist/components/Stage/helpers/debugState.svelte.d.ts +0 -10
  158. package/dist/components/Stage/helpers/debugState.svelte.js +0 -13
  159. package/dist/components/Stage/helpers/grid.d.ts +0 -72
  160. package/dist/components/Stage/helpers/grid.js +0 -444
  161. package/dist/components/Stage/helpers/lazyBrush.d.ts +0 -63
  162. package/dist/components/Stage/helpers/lazyBrush.js +0 -137
  163. package/dist/components/Stage/helpers/performanceMetrics.svelte.d.ts +0 -62
  164. package/dist/components/Stage/helpers/performanceMetrics.svelte.js +0 -165
  165. package/dist/components/Stage/helpers/utils.d.ts +0 -3
  166. package/dist/components/Stage/helpers/utils.js +0 -18
  167. package/dist/components/Stage/index.d.ts +0 -21
  168. package/dist/components/Stage/index.js +0 -21
  169. package/dist/components/Stage/shaders/AnnotationEffects.frag +0 -1070
  170. package/dist/components/Stage/shaders/Annotations.frag +0 -29
  171. package/dist/components/Stage/shaders/Drawing.frag +0 -83
  172. package/dist/components/Stage/shaders/Drawing.vert +0 -5
  173. package/dist/components/Stage/shaders/Fog.frag +0 -147
  174. package/dist/components/Stage/shaders/FractalNoise.frag +0 -96
  175. package/dist/components/Stage/shaders/GridShader.frag +0 -174
  176. package/dist/components/Stage/shaders/Overlay.frag +0 -23
  177. package/dist/components/Stage/shaders/Overlay.vert +0 -0
  178. package/dist/components/Stage/shaders/Particles.frag +0 -27
  179. package/dist/components/Stage/shaders/Particles.vert +0 -51
  180. package/dist/components/Stage/shaders/ToolOutline.frag +0 -59
  181. package/dist/components/Stage/shaders/default.vert +0 -8
  182. package/dist/components/Stage/types.d.ts +0 -4
  183. package/dist/components/Stage/types.js +0 -1
@@ -1,121 +0,0 @@
1
- import type { StageMode } from '../Stage/types';
2
- /**
3
- * Visual effect types for annotation layers
4
- */
5
- export declare enum AnnotationEffect {
6
- None = 0,
7
- Fire = 1,
8
- SpaceTear = 2,
9
- Water = 3,
10
- Magic = 4,
11
- Grease = 5,
12
- Ice = 6
13
- }
14
- /**
15
- * Properties for annotation visual effects
16
- */
17
- export interface AnnotationEffectProps {
18
- /**
19
- * The type of visual effect to apply
20
- */
21
- type: AnnotationEffect;
22
- /**
23
- * Animation speed multiplier (0.0 - 2.0)
24
- */
25
- speed: number;
26
- /**
27
- * Intensity of the effect (0.0 - 1.0)
28
- */
29
- intensity: number;
30
- /**
31
- * Edge softness - how much the effect fades at the boundaries (0.0 - 1.0)
32
- * Higher values create a more gradual fade to transparent
33
- */
34
- softness: number;
35
- /**
36
- * Border/edge effect intensity (0.0 - 1.0)
37
- * Controls foam, glow, nebula wisps, etc. at the edges
38
- */
39
- border: number;
40
- /**
41
- * Edge roughness - adds random noise to effect edges (0.0 - 1.0)
42
- * Higher values create more jagged, organic-looking boundaries
43
- */
44
- roughness: number;
45
- }
46
- /**
47
- * The properties for the annotations layer
48
- */
49
- export interface AnnotationsLayerProps {
50
- /**
51
- * The layers to display
52
- */
53
- layers: AnnotationLayerData[];
54
- /**
55
- * The id of the active layer
56
- */
57
- activeLayer: string | null;
58
- /**
59
- * The line width for drawing (global setting)
60
- */
61
- lineWidth?: number;
62
- /**
63
- * Whether to enable brush smoothing for drawing
64
- * When true, uses lazy brush algorithm for smoother lines
65
- * Default: true in editor, false in play view
66
- */
67
- smoothingEnabled?: boolean;
68
- }
69
- /**
70
- * The properties for an individual annotation drawing layer
71
- */
72
- export interface AnnotationLayerData {
73
- /**
74
- * The ID of the annotation layer
75
- */
76
- id: string;
77
- /**
78
- * The name of the annotation layer
79
- */
80
- name?: string;
81
- /**
82
- * The opacity of the annotation layer
83
- */
84
- opacity: number;
85
- /**
86
- * The color of the annotation layer
87
- */
88
- color: string;
89
- /**
90
- * The URL of the texture to use for the annotation layer
91
- */
92
- url: string | null;
93
- /**
94
- * Version timestamp for mask data changes (for real-time sync)
95
- */
96
- maskVersion?: number;
97
- /**
98
- * Control who can see the layer
99
- */
100
- visibility: StageMode;
101
- /**
102
- * Visual effect settings for this annotation layer (experimental, not persisted)
103
- */
104
- effect?: AnnotationEffectProps;
105
- }
106
- export interface AnnotationExports {
107
- clear: (layerId: string) => void;
108
- toPng: () => Promise<Blob>;
109
- toRLE: () => Promise<Uint8Array>;
110
- fromRLE: (rleData: Uint8Array, width: number, height: number) => Promise<void>;
111
- loadMask: (layerId: string, rleData: Uint8Array) => Promise<void>;
112
- isDrawing: () => boolean;
113
- }
114
- /**
115
- * Default effect properties for each annotation effect type
116
- */
117
- export declare const AnnotationEffectDefaults: Record<AnnotationEffect, Omit<AnnotationEffectProps, 'type'>>;
118
- /**
119
- * Get the default effect properties for a given effect type
120
- */
121
- export declare const getDefaultEffectProps: (effectType: AnnotationEffect) => AnnotationEffectProps;
@@ -1,71 +0,0 @@
1
- /**
2
- * Visual effect types for annotation layers
3
- */
4
- export var AnnotationEffect;
5
- (function (AnnotationEffect) {
6
- AnnotationEffect[AnnotationEffect["None"] = 0] = "None";
7
- AnnotationEffect[AnnotationEffect["Fire"] = 1] = "Fire";
8
- AnnotationEffect[AnnotationEffect["SpaceTear"] = 2] = "SpaceTear";
9
- AnnotationEffect[AnnotationEffect["Water"] = 3] = "Water";
10
- AnnotationEffect[AnnotationEffect["Magic"] = 4] = "Magic";
11
- AnnotationEffect[AnnotationEffect["Grease"] = 5] = "Grease";
12
- AnnotationEffect[AnnotationEffect["Ice"] = 6] = "Ice";
13
- })(AnnotationEffect || (AnnotationEffect = {}));
14
- /**
15
- * Default effect properties for each annotation effect type
16
- */
17
- export const AnnotationEffectDefaults = {
18
- [AnnotationEffect.None]: {
19
- speed: 1.0,
20
- intensity: 1.0,
21
- softness: 0.5,
22
- border: 0.5,
23
- roughness: 0.0
24
- },
25
- [AnnotationEffect.Fire]: {
26
- speed: 0.94,
27
- intensity: 1.04,
28
- softness: 0.37,
29
- border: 0.4,
30
- roughness: 0.62
31
- },
32
- [AnnotationEffect.SpaceTear]: {
33
- speed: 1.5,
34
- intensity: 1.96,
35
- softness: 0.35,
36
- border: 0.36,
37
- roughness: 0.34
38
- },
39
- [AnnotationEffect.Water]: {
40
- speed: 0.42,
41
- intensity: 1.06,
42
- softness: 0.0,
43
- border: 0.36,
44
- roughness: 0.32
45
- },
46
- [AnnotationEffect.Magic]: {
47
- speed: 0.5,
48
- intensity: 0.98,
49
- softness: 0.24,
50
- border: 0.18,
51
- roughness: 0.5
52
- },
53
- [AnnotationEffect.Grease]: {
54
- speed: 0.26,
55
- intensity: 1.52,
56
- softness: 0.13,
57
- border: 0.57,
58
- roughness: 0.26
59
- },
60
- [AnnotationEffect.Ice]: {
61
- speed: 0.92,
62
- intensity: 1.2,
63
- softness: 0.32,
64
- border: 0.44,
65
- roughness: 0.55
66
- }
67
- };
68
- /**
69
- * Get the default effect properties for a given effect type
70
- */
71
- export const getDefaultEffectProps = (effectType) => (Object.assign({ type: effectType }, AnnotationEffectDefaults[effectType]));
@@ -1,148 +0,0 @@
1
- <script lang="ts">
2
- import * as THREE from 'three';
3
- import { T, useTask, useThrelte } from '@threlte/core';
4
- import type { CursorData, CursorLayerProps } from './types';
5
- import { SceneLayer, SceneLayerOrder } from '../Scene/types';
6
- import { onMount } from 'svelte';
7
-
8
- interface Props {
9
- props: CursorLayerProps;
10
- }
11
-
12
- const { props }: Props = $props();
13
- const { invalidate } = useThrelte();
14
-
15
- // Track current time for fade calculations
16
- let currentTime = $state(Date.now());
17
-
18
- useTask(() => {
19
- currentTime = Date.now();
20
- });
21
-
22
- // Calculate opacity for each cursor based on fade settings
23
- const getCursorOpacity = (cursor: CursorData): number => {
24
- const timeSinceUpdate = currentTime - cursor.lastUpdateTime;
25
-
26
- if (timeSinceUpdate < props.fadeOutDelay) {
27
- return cursor.opacity;
28
- }
29
-
30
- const fadeProgress = (timeSinceUpdate - props.fadeOutDelay) / props.fadeOutDuration;
31
- if (fadeProgress >= 1) {
32
- return 0;
33
- }
34
-
35
- return cursor.opacity * (1 - fadeProgress);
36
- };
37
-
38
- // Calculate cursor size based on grid spacing and display dimensions
39
- const calculateCursorSize = () => {
40
- if (!props.gridSpacing || !props.displaySize || !props.displayResolution) {
41
- return 50;
42
- }
43
-
44
- const worldUnitsPerInch = props.displayResolution.x / props.displaySize.x;
45
- const gridSizeInWorldUnits = props.gridSpacing * worldUnitsPerInch;
46
- const sceneZoom = props.sceneZoom || 1;
47
- const adjustedSize = gridSizeInWorldUnits / sceneZoom;
48
- const targetScale = 0.6;
49
- const finalSize = adjustedSize * targetScale;
50
-
51
- return finalSize;
52
- };
53
-
54
- const targetDiameter = $derived(calculateCursorSize());
55
-
56
- // Create plane geometry for the cursor
57
- const planeGeometry = new THREE.PlaneGeometry(1, 1);
58
-
59
- // Load and create textures for each cursor color
60
- const textureCache = new Map<string, THREE.Texture>();
61
-
62
- const createCursorTexture = (color: string): THREE.Texture => {
63
- // Check cache first
64
- if (textureCache.has(color)) {
65
- return textureCache.get(color)!;
66
- }
67
-
68
- // Create SVG with the specified color
69
- const svg = `
70
- <svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
71
- <defs>
72
- <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">
73
- <feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
74
- <feOffset dx="0" dy="1" result="offsetblur"/>
75
- <feFlood flood-color="#000000" flood-opacity="0.2"/>
76
- <feComposite in2="offsetblur" operator="in"/>
77
- <feMerge>
78
- <feMergeNode/>
79
- <feMergeNode in="SourceGraphic"/>
80
- </feMerge>
81
- </filter>
82
- </defs>
83
- <circle
84
- cx="32"
85
- cy="32"
86
- r="20"
87
- fill="${color}"
88
- stroke="white"
89
- stroke-width="4"
90
- filter="url(#shadow)"
91
- />
92
- </svg>
93
- `;
94
-
95
- // Convert SVG to data URL
96
- const svgDataUrl = 'data:image/svg+xml;base64,' + btoa(svg);
97
-
98
- // Create texture from SVG
99
- const loader = new THREE.TextureLoader();
100
- const texture = loader.load(svgDataUrl, () => {
101
- invalidate();
102
- });
103
-
104
- // Configure texture for best quality
105
- texture.minFilter = THREE.LinearFilter;
106
- texture.magFilter = THREE.LinearFilter;
107
- texture.generateMipmaps = false;
108
- texture.needsUpdate = true;
109
-
110
- // Cache the texture
111
- textureCache.set(color, texture);
112
-
113
- return texture;
114
- };
115
-
116
- // Cleanup textures on unmount
117
- onMount(() => {
118
- return () => {
119
- textureCache.forEach((texture) => texture.dispose());
120
- textureCache.clear();
121
- };
122
- });
123
- </script>
124
-
125
- {#each props.cursors as cursor, index (cursor.id)}
126
- {@const opacity = getCursorOpacity(cursor)}
127
- {@const cursorColor = index === 0 ? '#000000' : cursor.color}
128
-
129
- {#if opacity > 0}
130
- {@const texture = createCursorTexture(cursorColor)}
131
-
132
- <T.Group
133
- position={[cursor.worldPosition.x, cursor.worldPosition.y, cursor.worldPosition.z + 0.1]}
134
- layers={[SceneLayer.Overlay]}
135
- >
136
- <T.Mesh geometry={planeGeometry} scale={[targetDiameter, targetDiameter, 1]} renderOrder={SceneLayerOrder.Cursor}>
137
- <T.MeshBasicMaterial
138
- map={texture}
139
- transparent={true}
140
- {opacity}
141
- depthTest={false}
142
- depthWrite={false}
143
- alphaTest={0.01}
144
- />
145
- </T.Mesh>
146
- </T.Group>
147
- {/if}
148
- {/each}
@@ -1,7 +0,0 @@
1
- import type { CursorLayerProps } from './types';
2
- interface Props {
3
- props: CursorLayerProps;
4
- }
5
- declare const CursorLayer: import("svelte").Component<Props, {}, "">;
6
- type CursorLayer = ReturnType<typeof CursorLayer>;
7
- export default CursorLayer;
@@ -1,26 +0,0 @@
1
- <svg width="64" height="64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Drop shadow -->
3
- <defs>
4
- <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">
5
- <feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
6
- <feOffset dx="0" dy="1" result="offsetblur"/>
7
- <feFlood flood-color="#000000" flood-opacity="0.2"/>
8
- <feComposite in2="offsetblur" operator="in"/>
9
- <feMerge>
10
- <feMergeNode/>
11
- <feMergeNode in="SourceGraphic"/>
12
- </feMerge>
13
- </filter>
14
- </defs>
15
-
16
- <!-- Main circle with white stroke -->
17
- <circle
18
- cx="32"
19
- cy="32"
20
- r="20"
21
- fill="currentColor"
22
- stroke="white"
23
- stroke-width="4"
24
- filter="url(#shadow)"
25
- />
26
- </svg>
@@ -1,2 +0,0 @@
1
- export { default as CursorLayer } from './CursorLayer.svelte';
2
- export type { CursorData, CursorLayerProps } from './types';
@@ -1 +0,0 @@
1
- export { default as CursorLayer } from './CursorLayer.svelte';
@@ -1,28 +0,0 @@
1
- export interface CursorData {
2
- id: string;
3
- worldPosition: {
4
- x: number;
5
- y: number;
6
- z: number;
7
- };
8
- color: string;
9
- label?: string;
10
- opacity: number;
11
- lastUpdateTime: number;
12
- }
13
- export interface CursorLayerProps {
14
- cursors: CursorData[];
15
- showLabels: boolean;
16
- fadeOutDelay: number;
17
- fadeOutDuration: number;
18
- gridSpacing?: number;
19
- displaySize?: {
20
- x: number;
21
- y: number;
22
- };
23
- displayResolution?: {
24
- x: number;
25
- y: number;
26
- };
27
- sceneZoom?: number;
28
- }
@@ -1 +0,0 @@
1
- export {};