@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,88 +0,0 @@
1
- import * as THREE from 'three';
2
- import { type StageProps } from '../Stage/types';
3
- import type { CursorData } from '../CursorLayer/types';
4
- interface Props {
5
- props: StageProps;
6
- cursors?: CursorData[];
7
- trackLocalCursor?: boolean;
8
- receivedMeasurement?: {
9
- startPoint: {
10
- x: number;
11
- y: number;
12
- };
13
- endPoint: {
14
- x: number;
15
- y: number;
16
- };
17
- type: number;
18
- beamWidth?: number;
19
- coneAngle?: number;
20
- color?: string;
21
- thickness?: number;
22
- outlineColor?: string;
23
- outlineThickness?: number;
24
- opacity?: number;
25
- markerSize?: number;
26
- autoHideDelay?: number;
27
- fadeoutTime?: number;
28
- showDistance?: boolean;
29
- snapToGrid?: boolean;
30
- enableDMG252?: boolean;
31
- } | null;
32
- }
33
- declare const Scene: import("svelte").Component<Props, {
34
- fill: () => void;
35
- fit: () => void;
36
- generateThumbnail: (quality?: number) => Promise<Blob>;
37
- annotations: {
38
- clear: (layerId: string) => void;
39
- toRLE: () => Promise<Uint8Array<ArrayBufferLike>>;
40
- fromRLE: (rleData: Uint8Array, width: number, height: number) => Promise<void>;
41
- loadMask: (layerId: string, rleData: Uint8Array) => Promise<void>;
42
- isDrawing: () => boolean;
43
- };
44
- map: {
45
- fill: () => void;
46
- fit: () => void;
47
- getSize: () => {
48
- width: number;
49
- height: number;
50
- } | null;
51
- };
52
- fogOfWar: {
53
- clear: () => void;
54
- reset: () => void;
55
- toPng: () => Promise<Blob>;
56
- toRLE: () => Promise<Uint8Array<ArrayBufferLike>>;
57
- fromRLE: (rleData: Uint8Array, width: number, height: number) => Promise<void>;
58
- isDrawing: () => boolean;
59
- };
60
- markers: {
61
- readonly isHoveringMarker: boolean;
62
- readonly isDraggingMarker: boolean;
63
- readonly hoveredMarker: import("../MarkerLayer/types").Marker | null;
64
- readonly selectedMarker: import("../MarkerLayer/types").Marker | null;
65
- maintainHover: (maintain: boolean) => void;
66
- onSceneChange: () => void;
67
- };
68
- measurement: {
69
- getCurrentMeasurement: () => {
70
- startPoint: THREE.Vector2 | null;
71
- endPoint: THREE.Vector2 | null;
72
- type: number;
73
- } | null;
74
- isDrawing: () => boolean;
75
- };
76
- getMarkerSizeInScreenSpace: (markerSize?: number) => number;
77
- getMarkerScreenPosition: (marker: {
78
- position?: {
79
- x: number;
80
- y: number;
81
- };
82
- }) => {
83
- x: number;
84
- y: number;
85
- } | null;
86
- }, "">;
87
- type Scene = ReturnType<typeof Scene>;
88
- export default Scene;
@@ -1,7 +0,0 @@
1
- import { LookupTexture } from 'postprocessing';
2
- /**
3
- * Gets a LUT
4
- * @param url The URL of the LUT to get
5
- * @returns A promise that resolves to the LookupTexture
6
- */
7
- export declare const getLUT: (url: string | null) => Promise<LookupTexture | null>;
@@ -1,33 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { LookupTexture } from 'postprocessing';
11
- import * as THREE from 'three';
12
- import { LUTCubeLoader } from 'three/examples/jsm/loaders/LUTCubeLoader';
13
- const loadingManager = new THREE.LoadingManager();
14
- const lutLoader = new LUTCubeLoader(loadingManager);
15
- /**
16
- * Gets a LUT
17
- * @param url The URL of the LUT to get
18
- * @returns A promise that resolves to the LookupTexture
19
- */
20
- export const getLUT = (url) => __awaiter(void 0, void 0, void 0, function* () {
21
- if (!url)
22
- return null;
23
- const result = yield lutLoader.loadAsync(url);
24
- try {
25
- const lookupTexture = LookupTexture.from(result.texture3D);
26
- lookupTexture.colorSpace = THREE.LinearSRGBColorSpace;
27
- return lookupTexture;
28
- }
29
- catch (error) {
30
- console.error(error);
31
- return null;
32
- }
33
- });
@@ -1,207 +0,0 @@
1
- import type { ToneMappingMode } from 'postprocessing';
2
- export declare enum SceneLoadingState {
3
- LoadingMap = 1,
4
- Resizing = 2,
5
- Rendering = 3,
6
- Initialized = 4
7
- }
8
- export declare enum SceneRotation {
9
- Deg0 = 0,
10
- Deg90 = 90,
11
- Deg180 = 180,
12
- Deg270 = 270
13
- }
14
- export declare enum SceneLayer {
15
- Main = 0,
16
- Overlay = 1,
17
- Input = 2
18
- }
19
- export declare enum SceneLayerOrder {
20
- Background = 0,
21
- Map = 10,
22
- Fog = 20,
23
- Weather = 30,
24
- EffectAnnotation = 35,// Effect annotations render under fog of war
25
- Marker = 37,// Markers render above effect annotations but below fog of war
26
- FogOfWar = 40,
27
- Grid = 50,
28
- EdgeOverlay = 70,
29
- Annotation = 80,// Color annotations render over fog of war
30
- Measurement = 90,
31
- Cursor = 100
32
- }
33
- export interface SceneLayerProps {
34
- /**
35
- * Whether the scene layer should auto fit
36
- */
37
- autoFit: boolean;
38
- /**
39
- * The position of the scene layer within the canvas
40
- */
41
- offset: {
42
- x: number;
43
- y: number;
44
- };
45
- /**
46
- * The rotation of the scene layer in degrees
47
- */
48
- rotation: SceneRotation;
49
- /**
50
- * The scale of the scene layer
51
- */
52
- zoom: number;
53
- }
54
- import type { Marker } from '../MarkerLayer/types';
55
- export interface SceneExports {
56
- fill: () => void;
57
- fit: () => void;
58
- generateThumbnail: () => Promise<Blob>;
59
- getMarkerScreenPosition: (marker: Marker) => {
60
- x: number;
61
- y: number;
62
- } | null;
63
- annotations: {
64
- clear: (layerId: string) => void;
65
- toRLE: () => Promise<Uint8Array>;
66
- fromRLE: (rleData: Uint8Array, width: number, height: number) => Promise<void>;
67
- loadMask: (layerId: string, rleData: Uint8Array) => Promise<void>;
68
- isDrawing: () => boolean;
69
- };
70
- fogOfWar: {
71
- clear: () => void;
72
- reset: () => void;
73
- toPng: () => Promise<Blob>;
74
- toRLE: () => Promise<Uint8Array>;
75
- fromRLE: (rleData: Uint8Array, width: number, height: number) => Promise<void>;
76
- isDrawing: () => boolean;
77
- };
78
- map: {
79
- fit: () => void;
80
- fill: () => void;
81
- getSize: () => {
82
- width: number;
83
- height: number;
84
- } | null;
85
- };
86
- markers: {
87
- isHoveringMarker: boolean;
88
- isDraggingMarker: boolean;
89
- hoveredMarker: Marker | null;
90
- selectedMarker: Marker | null;
91
- maintainHover: (maintain: boolean) => void;
92
- onSceneChange: () => void;
93
- };
94
- getMarkerSizeInScreenSpace: (markerSize: number) => number;
95
- measurement: {
96
- getCurrentMeasurement: () => {
97
- startPoint: {
98
- x: number;
99
- y: number;
100
- } | null;
101
- endPoint: {
102
- x: number;
103
- y: number;
104
- } | null;
105
- type: number;
106
- } | null;
107
- isDrawing: () => boolean;
108
- };
109
- }
110
- /**
111
- * Properties for post-processing effects
112
- */
113
- export interface PostProcessingProps {
114
- /**
115
- * Whether post-processing is enabled
116
- */
117
- enabled: boolean;
118
- /**
119
- * Bloom effect properties
120
- */
121
- bloom: {
122
- /**
123
- * Whether the bloom effect is enabled
124
- */
125
- enabled: boolean;
126
- /**
127
- * Overall intensity of the bloom effect (0-1)
128
- */
129
- intensity: number;
130
- /**
131
- * Luminance threshold for what pixels will bloom (0-1)
132
- */
133
- threshold: number;
134
- /**
135
- * How smoothly the bloom transitions at the threshold (0-1)
136
- */
137
- smoothing: number;
138
- /**
139
- * Radius of the bloom effect
140
- */
141
- radius: number;
142
- /**
143
- * Levels of the bloom effect
144
- */
145
- levels: number;
146
- /**
147
- * Whether to apply mipmap blur
148
- */
149
- mipmapBlur: boolean;
150
- };
151
- /**
152
- * Chromatic aberration effect properties
153
- */
154
- chromaticAberration: {
155
- /**
156
- * Whether the chromatic aberration effect is enabled
157
- */
158
- enabled: boolean;
159
- /**
160
- * The offset of the chromatic aberration effect
161
- */
162
- offset: number;
163
- };
164
- /**
165
- * LUT effect properties
166
- */
167
- lut: {
168
- /**
169
- * Whether the LUT3D effect is enabled
170
- */
171
- enabled: boolean;
172
- /**
173
- * The URL of the LUT to use
174
- */
175
- url: string | null;
176
- };
177
- /**
178
- * Tone mapping effect properties
179
- */
180
- toneMapping: {
181
- /**
182
- * Whether the tone mapping effect is enabled
183
- */
184
- enabled: boolean;
185
- /**
186
- * The mode of the tone mapping effect
187
- */
188
- mode: ToneMappingMode;
189
- };
190
- /**
191
- * Vignette effect properties
192
- */
193
- vignette: {
194
- /**
195
- * Whether the vignette effect is enabled
196
- */
197
- enabled: boolean;
198
- /**
199
- * How far from the center the vignette starts (0-1)
200
- */
201
- offset: number;
202
- /**
203
- * How dark the vignette effect is (0-1)
204
- */
205
- darkness: number;
206
- };
207
- }
@@ -1,35 +0,0 @@
1
- export var SceneLoadingState;
2
- (function (SceneLoadingState) {
3
- SceneLoadingState[SceneLoadingState["LoadingMap"] = 1] = "LoadingMap";
4
- SceneLoadingState[SceneLoadingState["Resizing"] = 2] = "Resizing";
5
- SceneLoadingState[SceneLoadingState["Rendering"] = 3] = "Rendering";
6
- SceneLoadingState[SceneLoadingState["Initialized"] = 4] = "Initialized";
7
- })(SceneLoadingState || (SceneLoadingState = {}));
8
- export var SceneRotation;
9
- (function (SceneRotation) {
10
- SceneRotation[SceneRotation["Deg0"] = 0] = "Deg0";
11
- SceneRotation[SceneRotation["Deg90"] = 90] = "Deg90";
12
- SceneRotation[SceneRotation["Deg180"] = 180] = "Deg180";
13
- SceneRotation[SceneRotation["Deg270"] = 270] = "Deg270";
14
- })(SceneRotation || (SceneRotation = {}));
15
- export var SceneLayer;
16
- (function (SceneLayer) {
17
- SceneLayer[SceneLayer["Main"] = 0] = "Main";
18
- SceneLayer[SceneLayer["Overlay"] = 1] = "Overlay";
19
- SceneLayer[SceneLayer["Input"] = 2] = "Input";
20
- })(SceneLayer || (SceneLayer = {}));
21
- export var SceneLayerOrder;
22
- (function (SceneLayerOrder) {
23
- SceneLayerOrder[SceneLayerOrder["Background"] = 0] = "Background";
24
- SceneLayerOrder[SceneLayerOrder["Map"] = 10] = "Map";
25
- SceneLayerOrder[SceneLayerOrder["Fog"] = 20] = "Fog";
26
- SceneLayerOrder[SceneLayerOrder["Weather"] = 30] = "Weather";
27
- SceneLayerOrder[SceneLayerOrder["EffectAnnotation"] = 35] = "EffectAnnotation";
28
- SceneLayerOrder[SceneLayerOrder["Marker"] = 37] = "Marker";
29
- SceneLayerOrder[SceneLayerOrder["FogOfWar"] = 40] = "FogOfWar";
30
- SceneLayerOrder[SceneLayerOrder["Grid"] = 50] = "Grid";
31
- SceneLayerOrder[SceneLayerOrder["EdgeOverlay"] = 70] = "EdgeOverlay";
32
- SceneLayerOrder[SceneLayerOrder["Annotation"] = 80] = "Annotation";
33
- SceneLayerOrder[SceneLayerOrder["Measurement"] = 90] = "Measurement";
34
- SceneLayerOrder[SceneLayerOrder["Cursor"] = 100] = "Cursor";
35
- })(SceneLayerOrder || (SceneLayerOrder = {}));
@@ -1,332 +0,0 @@
1
- <script lang="ts">
2
- import { Canvas, T } from '@threlte/core';
3
- import * as THREE from 'three';
4
- import type { Callbacks, StageProps } from './types';
5
- import Scene from '../Scene/Scene.svelte';
6
- import { type SceneExports, SceneLayerOrder } from '../Scene/types';
7
- import { setContext } from 'svelte';
8
- import { PerfMonitor } from '@threlte/extras';
9
- import { MarkerTooltip } from '../../../MarkerTooltip';
10
-
11
- import type { CursorData } from './types';
12
-
13
- /**
14
- * Creates a custom WebGL renderer with high-performance settings.
15
- * This fixes Chrome/Mac performance issues by:
16
- * - Requesting high-performance GPU mode (critical for macOS)
17
- * - Disabling unnecessary features like stencil buffer
18
- */
19
- const createRenderer = (canvas: HTMLCanvasElement) => {
20
- return new THREE.WebGLRenderer({
21
- canvas,
22
- powerPreference: 'high-performance',
23
- antialias: true,
24
- alpha: false,
25
- stencil: false,
26
- depth: true
27
- });
28
- };
29
-
30
- interface Props {
31
- props: StageProps;
32
- callbacks: Callbacks;
33
- receivedMeasurement?: {
34
- startPoint: { x: number; y: number };
35
- endPoint: { x: number; y: number };
36
- type: number;
37
- beamWidth?: number;
38
- coneAngle?: number;
39
- // Visual properties
40
- color?: string;
41
- thickness?: number;
42
- outlineColor?: string;
43
- outlineThickness?: number;
44
- opacity?: number;
45
- markerSize?: number;
46
- // Timing properties
47
- autoHideDelay?: number;
48
- fadeoutTime?: number;
49
- // Distance properties
50
- showDistance?: boolean;
51
- snapToGrid?: boolean;
52
- enableDMG252?: boolean;
53
- } | null;
54
- cursors?: CursorData[];
55
- trackLocalCursor?: boolean;
56
- hoveredMarkerId?: string | null;
57
- pinnedMarkerIds?: string[];
58
- onPinToggle?: (markerId: string, pinned: boolean) => void;
59
- }
60
-
61
- let {
62
- props,
63
- callbacks,
64
- receivedMeasurement = null,
65
- cursors = [],
66
- trackLocalCursor = false,
67
- hoveredMarkerId = null,
68
- pinnedMarkerIds = [],
69
- onPinToggle
70
- }: Props = $props();
71
-
72
- let sceneRef = $state<SceneExports>();
73
- let containerElement = $state<HTMLDivElement>();
74
- let tooltipPosition = $state<{ x: number; y: number } | null>(null);
75
- interface MarkerData {
76
- id: string;
77
- title?: string;
78
- note?: unknown;
79
- visibility?: number;
80
- size?: number;
81
- tooltip?: {
82
- title?: string;
83
- content?: unknown;
84
- };
85
- }
86
-
87
- let hoveredMarkerData = $state<MarkerData | null>(null);
88
- let markerSizeInPixels = $state<number>(40);
89
-
90
- let pinnedTooltips = $state<
91
- Array<{
92
- marker: MarkerData;
93
- position: { x: number; y: number };
94
- preferredPlacement: 'top' | 'bottom' | 'left' | 'right';
95
- }>
96
- >([]);
97
-
98
- const renderedTooltips = new Map<string, { element: HTMLElement; bounds: DOMRect }>();
99
-
100
- let stageContext = $state({ mode: props.mode, hoveredMarkerId, pinnedMarkerIds });
101
- setContext('stage', stageContext);
102
-
103
- $effect(() => {
104
- stageContext.mode = props.mode;
105
- stageContext.hoveredMarkerId = hoveredMarkerId;
106
- stageContext.pinnedMarkerIds = pinnedMarkerIds;
107
- });
108
-
109
- setContext('callbacks', callbacks);
110
-
111
- export const annotations = {
112
- clear: (layerId: string) => sceneRef?.annotations.clear(layerId),
113
- toRLE: () => sceneRef?.annotations?.toRLE() ?? Promise.resolve(new Uint8Array()),
114
- fromRLE: (rleData: Uint8Array, width: number, height: number) =>
115
- sceneRef?.annotations?.fromRLE(rleData, width, height) ?? Promise.resolve(),
116
- loadMask: (layerId: string, rleData: Uint8Array) =>
117
- sceneRef?.annotations?.loadMask(layerId, rleData) ?? Promise.resolve(),
118
- isDrawing: () => sceneRef?.annotations?.isDrawing() ?? false
119
- };
120
-
121
- export const map = {
122
- fill: () => sceneRef?.map.fill(),
123
- fit: () => sceneRef?.map.fit(),
124
- getSize: () => sceneRef?.map?.getSize?.() ?? null
125
- };
126
-
127
- export const fogOfWar = {
128
- clear: () => sceneRef?.fogOfWar.clear(),
129
- reset: () => sceneRef?.fogOfWar.reset(),
130
- toPng: () => sceneRef?.fogOfWar.toPng() ?? Promise.resolve(new Blob()),
131
- toRLE: () => sceneRef?.fogOfWar.toRLE() ?? Promise.resolve(new Uint8Array()),
132
- fromRLE: (rleData: Uint8Array, width: number, height: number) =>
133
- sceneRef?.fogOfWar.fromRLE(rleData, width, height) ?? Promise.resolve(),
134
- isDrawing: () => sceneRef?.fogOfWar?.isDrawing() ?? false
135
- };
136
-
137
- export const scene = {
138
- fill: () => sceneRef?.fill(),
139
- fit: () => sceneRef?.fit(),
140
- generateThumbnail: () => sceneRef?.generateThumbnail() ?? Promise.resolve(new Blob())
141
- };
142
-
143
- export const markers = {
144
- get isHoveringMarker() {
145
- return sceneRef?.markers?.isHoveringMarker ?? false;
146
- },
147
- get isDraggingMarker() {
148
- return sceneRef?.markers?.isDraggingMarker ?? false;
149
- }
150
- };
151
-
152
- export const measurement = {
153
- getCurrentMeasurement: () => sceneRef?.measurement?.getCurrentMeasurement() ?? null,
154
- isDrawing: () => sceneRef?.measurement?.isDrawing() ?? false
155
- };
156
-
157
- /**
158
- * Called when the scene changes to clear all transient state.
159
- * Clears tooltips, marker hover/selection, and other scene-specific state.
160
- */
161
- export function onSceneChange() {
162
- // Clear tooltip state
163
- hoveredMarkerData = null;
164
- tooltipPosition = null;
165
-
166
- // Clear marker interaction state
167
- sceneRef?.markers?.onSceneChange?.();
168
- }
169
-
170
- $effect(() => {
171
- // Update marker size when zoom changes or marker data changes
172
- const zoom = props.scene.zoom;
173
- if (sceneRef?.getMarkerSizeInScreenSpace) {
174
- const markerSize = hoveredMarkerData?.size || 1;
175
- markerSizeInPixels = sceneRef.getMarkerSizeInScreenSpace(markerSize);
176
- }
177
- // Use zoom to avoid unused variable warning
178
- void zoom;
179
- });
180
-
181
- $effect(() => {
182
- // Only show pinned tooltips in DM mode when activeLayer is None (0) or Marker (2)
183
- // In player mode, always show pinned tooltips
184
- const shouldShowPinnedTooltips = props.mode === 1 || props.activeLayer === 0 || props.activeLayer === 2;
185
-
186
- if (
187
- pinnedMarkerIds &&
188
- pinnedMarkerIds.length > 0 &&
189
- containerElement &&
190
- sceneRef?.getMarkerScreenPosition &&
191
- shouldShowPinnedTooltips
192
- ) {
193
- const newPinnedTooltips = [];
194
-
195
- const placementPatterns = [
196
- ['top', 'bottom', 'left', 'right'],
197
- ['bottom', 'top', 'right', 'left'],
198
- ['left', 'right', 'top', 'bottom'],
199
- ['right', 'left', 'bottom', 'top']
200
- ];
201
-
202
- for (let i = 0; i < pinnedMarkerIds.length; i++) {
203
- const markerId = pinnedMarkerIds[i];
204
- const marker = props.marker.markers.find((m) => m.id === markerId);
205
- if (marker) {
206
- const screenPos = sceneRef.getMarkerScreenPosition(marker);
207
- if (screenPos) {
208
- const pattern = placementPatterns[i % placementPatterns.length];
209
- const preferredPlacement = pattern[0] as 'top' | 'bottom' | 'left' | 'right';
210
-
211
- newPinnedTooltips.push({ marker, position: screenPos, preferredPlacement });
212
- }
213
- }
214
- }
215
- pinnedTooltips = newPinnedTooltips;
216
- } else {
217
- pinnedTooltips = [];
218
- }
219
- });
220
-
221
- $effect(() => {
222
- let markerForTooltip = null;
223
-
224
- if (props.mode === 0) {
225
- const hoveredMarker = sceneRef?.markers?.hoveredMarker;
226
- const isDragging = sceneRef?.markers?.isDraggingMarker;
227
- // Only show tooltips when activeLayer is None (0) or Marker (2)
228
- // MapLayerType: None = 0, FogOfWar = 1, Marker = 2, Annotation = 3, Measurement = 4
229
- const isMarkerOrNoneLayer = props.activeLayer === 0 || props.activeLayer === 2;
230
- if (hoveredMarker && !pinnedMarkerIds.includes(hoveredMarker.id) && !isDragging && isMarkerOrNoneLayer) {
231
- // Look up the current marker from the markers array by ID to handle Y.js updates
232
- // This prevents stale marker references from breaking tooltips after sync
233
- const currentMarker = props.marker.markers.find((m) => m.id === hoveredMarker.id);
234
- markerForTooltip = currentMarker || hoveredMarker;
235
- }
236
- } else if (props.mode === 1) {
237
- // Player mode - only show tooltips for markers where:
238
- // 1. The marker is pinned (handled separately in pinnedTooltips)
239
- // 2. The marker visibility is "On hover" (MarkerVisibility.Hover = 3) AND DM is hovering
240
- // 3. The marker visibility is "Everyone" (MarkerVisibility.Always = 0) AND DM is hovering
241
- let dmBroadcastMarker = null;
242
- if (hoveredMarkerId) {
243
- if (!pinnedMarkerIds.includes(hoveredMarkerId)) {
244
- const marker = props.marker.markers.find((m) => m.id === hoveredMarkerId);
245
- // Only show if marker visibility is "On hover" or "Everyone"
246
- // MarkerVisibility: Always = 0, DM = 1, Player = 2, Hover = 3
247
- if (marker && (marker.visibility === 0 || marker.visibility === 3)) {
248
- dmBroadcastMarker = marker;
249
- }
250
- }
251
- }
252
-
253
- // In player mode, also check if player has selected a marker
254
- // But only show tooltip if it has appropriate visibility (not DM-only)
255
- const selectedByPlayer = sceneRef?.markers?.selectedMarker;
256
- const isDragging = sceneRef?.markers?.isDraggingMarker;
257
- let selectedNotPinned = null;
258
- if (selectedByPlayer && !pinnedMarkerIds.includes(selectedByPlayer.id) && !isDragging) {
259
- // Only show if marker visibility is not DM-only (i.e., not visibility = 1)
260
- // MarkerVisibility: Always = 0, DM = 1, Player = 2, Hover = 3
261
- if (selectedByPlayer.visibility !== 1) {
262
- selectedNotPinned = selectedByPlayer;
263
- }
264
- }
265
-
266
- markerForTooltip = dmBroadcastMarker || selectedNotPinned;
267
- }
268
-
269
- if (markerForTooltip && containerElement) {
270
- hoveredMarkerData = markerForTooltip;
271
- const screenPos = sceneRef?.getMarkerScreenPosition?.(markerForTooltip);
272
- if (screenPos) {
273
- tooltipPosition = screenPos;
274
- }
275
- } else {
276
- hoveredMarkerData = null;
277
- tooltipPosition = null;
278
- }
279
- });
280
- </script>
281
-
282
- <div bind:this={containerElement} style="height: 100%; width: 100%; position: relative;">
283
- <Canvas {createRenderer} renderMode="always">
284
- <T.Mesh scale={[100000, 100000, 1]} layers={[SceneLayerOrder.Background]}>
285
- <T.PlaneGeometry />
286
- <T.MeshBasicMaterial color={props.backgroundColor} />
287
- </T.Mesh>
288
-
289
- <Scene bind:this={sceneRef} {props} {receivedMeasurement} {cursors} {trackLocalCursor} />
290
- {#if props.debug.enableStats}
291
- <PerfMonitor logsPerSecond={props.debug.loggingRate} anchorX={'right'} anchorY={'bottom'} />
292
- {/if}
293
- </Canvas>
294
-
295
- {#each pinnedTooltips as { marker, position, preferredPlacement }, index}
296
- <MarkerTooltip
297
- {marker}
298
- {position}
299
- {containerElement}
300
- markerDiameter={sceneRef?.getMarkerSizeInScreenSpace ? sceneRef.getMarkerSizeInScreenSpace(marker.size || 1) : 40}
301
- isDM={props.mode === 0}
302
- isPinned={true}
303
- {onPinToggle}
304
- {preferredPlacement}
305
- existingTooltips={Array.from(renderedTooltips.values()).filter((t, i) => i < index)}
306
- onTooltipMount={(element, bounds) => {
307
- renderedTooltips.set(marker.id, { element, bounds });
308
- }}
309
- onTooltipUnmount={() => {
310
- renderedTooltips.delete(marker.id);
311
- }}
312
- />
313
- {/each}
314
-
315
- {#if hoveredMarkerData}
316
- <MarkerTooltip
317
- marker={hoveredMarkerData}
318
- position={tooltipPosition}
319
- {containerElement}
320
- markerDiameter={markerSizeInPixels}
321
- isDM={props.mode === 0}
322
- isPinned={false}
323
- {onPinToggle}
324
- existingTooltips={Array.from(renderedTooltips.values())}
325
- onTooltipHover={(isHovering) => {
326
- if (props.mode === 0 && sceneRef?.markers?.maintainHover) {
327
- sceneRef.markers.maintainHover(isHovering);
328
- }
329
- }}
330
- />
331
- {/if}
332
- </div>