@tableslayer/ui 0.0.1

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 (388) hide show
  1. package/LICENSE.md +105 -0
  2. package/README.md +45 -0
  3. package/dist/components/Avatar/Avatar.svelte +82 -0
  4. package/dist/components/Avatar/Avatar.svelte.d.ts +4 -0
  5. package/dist/components/Avatar/AvatarFileInput.svelte +85 -0
  6. package/dist/components/Avatar/AvatarFileInput.svelte.d.ts +4 -0
  7. package/dist/components/Avatar/AvatarPopover.svelte +34 -0
  8. package/dist/components/Avatar/AvatarPopover.svelte.d.ts +4 -0
  9. package/dist/components/Avatar/index.d.ts +4 -0
  10. package/dist/components/Avatar/index.js +4 -0
  11. package/dist/components/Avatar/types.d.ts +21 -0
  12. package/dist/components/Avatar/types.js +1 -0
  13. package/dist/components/BrushSizeSlider/BrushSizeSlider.svelte +174 -0
  14. package/dist/components/BrushSizeSlider/BrushSizeSlider.svelte.d.ts +11 -0
  15. package/dist/components/BrushSizeSlider/index.d.ts +1 -0
  16. package/dist/components/BrushSizeSlider/index.js +1 -0
  17. package/dist/components/Button/Button.svelte +182 -0
  18. package/dist/components/Button/Button.svelte.d.ts +26 -0
  19. package/dist/components/Button/ConfirmActionButton.svelte +98 -0
  20. package/dist/components/Button/ConfirmActionButton.svelte.d.ts +4 -0
  21. package/dist/components/Button/IconButton.svelte +121 -0
  22. package/dist/components/Button/IconButton.svelte.d.ts +4 -0
  23. package/dist/components/Button/RadioButton.svelte +93 -0
  24. package/dist/components/Button/RadioButton.svelte.d.ts +15 -0
  25. package/dist/components/Button/index.d.ts +5 -0
  26. package/dist/components/Button/index.js +5 -0
  27. package/dist/components/Button/types.d.ts +55 -0
  28. package/dist/components/Button/types.js +1 -0
  29. package/dist/components/CardFan/CardFan.svelte +165 -0
  30. package/dist/components/CardFan/CardFan.svelte.d.ts +4 -0
  31. package/dist/components/CardFan/index.d.ts +2 -0
  32. package/dist/components/CardFan/index.js +2 -0
  33. package/dist/components/CardFan/types.d.ts +5 -0
  34. package/dist/components/CardFan/types.js +1 -0
  35. package/dist/components/CodeBlock/Code.svelte +7 -0
  36. package/dist/components/CodeBlock/Code.svelte.d.ts +4 -0
  37. package/dist/components/CodeBlock/CodeBlock.svelte +102 -0
  38. package/dist/components/CodeBlock/CodeBlock.svelte.d.ts +4 -0
  39. package/dist/components/CodeBlock/index.d.ts +3 -0
  40. package/dist/components/CodeBlock/index.js +3 -0
  41. package/dist/components/CodeBlock/types.d.ts +9 -0
  42. package/dist/components/CodeBlock/types.js +1 -0
  43. package/dist/components/ColorMode/ColorMode.svelte +8 -0
  44. package/dist/components/ColorMode/ColorMode.svelte.d.ts +4 -0
  45. package/dist/components/ColorMode/index.d.ts +2 -0
  46. package/dist/components/ColorMode/index.js +1 -0
  47. package/dist/components/ColorMode/types.d.ts +10 -0
  48. package/dist/components/ColorMode/types.js +1 -0
  49. package/dist/components/ColorPicker/ColorPicker.svelte +838 -0
  50. package/dist/components/ColorPicker/ColorPicker.svelte.d.ts +4 -0
  51. package/dist/components/ColorPicker/ColorPickerSwatch.svelte +32 -0
  52. package/dist/components/ColorPicker/ColorPickerSwatch.svelte.d.ts +6 -0
  53. package/dist/components/ColorPicker/index.d.ts +3 -0
  54. package/dist/components/ColorPicker/index.js +3 -0
  55. package/dist/components/ColorPicker/types.d.ts +60 -0
  56. package/dist/components/ColorPicker/types.js +1 -0
  57. package/dist/components/ContextMenu/ContextMenu.svelte +86 -0
  58. package/dist/components/ContextMenu/ContextMenu.svelte.d.ts +4 -0
  59. package/dist/components/ContextMenu/index.d.ts +2 -0
  60. package/dist/components/ContextMenu/index.js +2 -0
  61. package/dist/components/ContextMenu/types.d.ts +13 -0
  62. package/dist/components/ContextMenu/types.js +1 -0
  63. package/dist/components/DrawingSliders/DrawingSliders.svelte +379 -0
  64. package/dist/components/DrawingSliders/DrawingSliders.svelte.d.ts +16 -0
  65. package/dist/components/DrawingSliders/index.d.ts +1 -0
  66. package/dist/components/DrawingSliders/index.js +1 -0
  67. package/dist/components/Editor/Editor.svelte +825 -0
  68. package/dist/components/Editor/Editor.svelte.d.ts +11 -0
  69. package/dist/components/Editor/index.d.ts +1 -0
  70. package/dist/components/Editor/index.js +1 -0
  71. package/dist/components/FogSliders/FogSliders.svelte +33 -0
  72. package/dist/components/FogSliders/FogSliders.svelte.d.ts +7 -0
  73. package/dist/components/FogSliders/index.d.ts +1 -0
  74. package/dist/components/FogSliders/index.js +1 -0
  75. package/dist/components/Hr/Hr.svelte +15 -0
  76. package/dist/components/Hr/Hr.svelte.d.ts +3 -0
  77. package/dist/components/Hr/index.d.ts +1 -0
  78. package/dist/components/Hr/index.js +1 -0
  79. package/dist/components/Icon/Icon.svelte +6 -0
  80. package/dist/components/Icon/Icon.svelte.d.ts +4 -0
  81. package/dist/components/Icon/index.d.ts +2 -0
  82. package/dist/components/Icon/index.js +1 -0
  83. package/dist/components/Icon/types.d.ts +18 -0
  84. package/dist/components/Icon/types.js +1 -0
  85. package/dist/components/Input/DualInputSlider.svelte +126 -0
  86. package/dist/components/Input/DualInputSlider.svelte.d.ts +4 -0
  87. package/dist/components/Input/FileInput.svelte +176 -0
  88. package/dist/components/Input/FileInput.svelte.d.ts +21 -0
  89. package/dist/components/Input/FormControl.svelte +150 -0
  90. package/dist/components/Input/FormControl.svelte.d.ts +41 -0
  91. package/dist/components/Input/FormError.svelte +37 -0
  92. package/dist/components/Input/FormError.svelte.d.ts +13 -0
  93. package/dist/components/Input/Input.svelte +56 -0
  94. package/dist/components/Input/Input.svelte.d.ts +4 -0
  95. package/dist/components/Input/InputCheckbox.svelte +99 -0
  96. package/dist/components/Input/InputCheckbox.svelte.d.ts +4 -0
  97. package/dist/components/Input/InputSlider.svelte +86 -0
  98. package/dist/components/Input/InputSlider.svelte.d.ts +4 -0
  99. package/dist/components/Input/Label.svelte +19 -0
  100. package/dist/components/Input/Label.svelte.d.ts +4 -0
  101. package/dist/components/Input/index.d.ts +9 -0
  102. package/dist/components/Input/index.js +9 -0
  103. package/dist/components/Input/types.d.ts +33 -0
  104. package/dist/components/Input/types.js +1 -0
  105. package/dist/components/Link/Link.svelte +41 -0
  106. package/dist/components/Link/Link.svelte.d.ts +4 -0
  107. package/dist/components/Link/LinkBox.svelte +20 -0
  108. package/dist/components/Link/LinkBox.svelte.d.ts +4 -0
  109. package/dist/components/Link/LinkOverlay.svelte +23 -0
  110. package/dist/components/Link/LinkOverlay.svelte.d.ts +4 -0
  111. package/dist/components/Link/index.d.ts +4 -0
  112. package/dist/components/Link/index.js +4 -0
  113. package/dist/components/Link/types.d.ts +15 -0
  114. package/dist/components/Link/types.js +1 -0
  115. package/dist/components/Loading/Loader.svelte +60 -0
  116. package/dist/components/Loading/Loader.svelte.d.ts +3 -0
  117. package/dist/components/Loading/Skeleton.svelte +9 -0
  118. package/dist/components/Loading/Skeleton.svelte.d.ts +26 -0
  119. package/dist/components/Loading/index.d.ts +2 -0
  120. package/dist/components/Loading/index.js +2 -0
  121. package/dist/components/Logo/Logo.svelte +16 -0
  122. package/dist/components/Logo/Logo.svelte.d.ts +7 -0
  123. package/dist/components/Logo/index.d.ts +1 -0
  124. package/dist/components/Logo/index.js +1 -0
  125. package/dist/components/MarkerTooltip/MarkerTooltip.svelte +435 -0
  126. package/dist/components/MarkerTooltip/MarkerTooltip.svelte.d.ts +35 -0
  127. package/dist/components/MarkerTooltip/index.d.ts +1 -0
  128. package/dist/components/MarkerTooltip/index.js +1 -0
  129. package/dist/components/Menu/SelectorMenu.svelte +280 -0
  130. package/dist/components/Menu/SelectorMenu.svelte.d.ts +4 -0
  131. package/dist/components/Menu/index.d.ts +2 -0
  132. package/dist/components/Menu/index.js +2 -0
  133. package/dist/components/Menu/types.d.ts +20 -0
  134. package/dist/components/Menu/types.js +1 -0
  135. package/dist/components/MyCounterButton.svelte +11 -0
  136. package/dist/components/MyCounterButton.svelte.d.ts +3 -0
  137. package/dist/components/Panel/index.d.ts +2 -0
  138. package/dist/components/Panel/index.js +2 -0
  139. package/dist/components/Panel/panel.svelte +18 -0
  140. package/dist/components/Panel/panel.svelte.d.ts +4 -0
  141. package/dist/components/Panel/types.d.ts +7 -0
  142. package/dist/components/Panel/types.js +1 -0
  143. package/dist/components/PersistButton/PersistButton.svelte +100 -0
  144. package/dist/components/PersistButton/PersistButton.svelte.d.ts +12 -0
  145. package/dist/components/PersistButton/index.d.ts +1 -0
  146. package/dist/components/PersistButton/index.js +1 -0
  147. package/dist/components/Popover/Popover.svelte +81 -0
  148. package/dist/components/Popover/Popover.svelte.d.ts +6 -0
  149. package/dist/components/Popover/index.d.ts +2 -0
  150. package/dist/components/Popover/index.js +2 -0
  151. package/dist/components/Popover/types.d.ts +17 -0
  152. package/dist/components/Popover/types.js +1 -0
  153. package/dist/components/PropsTable/PropsTable.svelte +107 -0
  154. package/dist/components/PropsTable/PropsTable.svelte.d.ts +26 -0
  155. package/dist/components/RadialMenu/EffectPreview.svelte +36 -0
  156. package/dist/components/RadialMenu/EffectPreview.svelte.d.ts +9 -0
  157. package/dist/components/RadialMenu/EffectPreviewScene.svelte +194 -0
  158. package/dist/components/RadialMenu/EffectPreviewScene.svelte.d.ts +8 -0
  159. package/dist/components/RadialMenu/RadialMenu.svelte +503 -0
  160. package/dist/components/RadialMenu/RadialMenu.svelte.d.ts +4 -0
  161. package/dist/components/RadialMenu/RadialMenuItem.svelte +176 -0
  162. package/dist/components/RadialMenu/RadialMenuItem.svelte.d.ts +11 -0
  163. package/dist/components/RadialMenu/index.d.ts +2 -0
  164. package/dist/components/RadialMenu/index.js +2 -0
  165. package/dist/components/RadialMenu/types.d.ts +35 -0
  166. package/dist/components/RadialMenu/types.js +1 -0
  167. package/dist/components/Select/Select.svelte +342 -0
  168. package/dist/components/Select/Select.svelte.d.ts +4 -0
  169. package/dist/components/Select/index.d.ts +2 -0
  170. package/dist/components/Select/index.js +2 -0
  171. package/dist/components/Select/types.d.ts +24 -0
  172. package/dist/components/Select/types.js +1 -0
  173. package/dist/components/Spacer/Spacer.svelte +14 -0
  174. package/dist/components/Spacer/Spacer.svelte.d.ts +4 -0
  175. package/dist/components/Spacer/index.d.ts +2 -0
  176. package/dist/components/Spacer/index.js +2 -0
  177. package/dist/components/Spacer/types.d.ts +4 -0
  178. package/dist/components/Spacer/types.js +1 -0
  179. package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +445 -0
  180. package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte.d.ts +19 -0
  181. package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +167 -0
  182. package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte.d.ts +20 -0
  183. package/dist/components/Stage/components/AnnotationLayer/types.d.ts +121 -0
  184. package/dist/components/Stage/components/AnnotationLayer/types.js +71 -0
  185. package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte +148 -0
  186. package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte.d.ts +7 -0
  187. package/dist/components/Stage/components/CursorLayer/cursor.svg +26 -0
  188. package/dist/components/Stage/components/CursorLayer/index.d.ts +2 -0
  189. package/dist/components/Stage/components/CursorLayer/index.js +1 -0
  190. package/dist/components/Stage/components/CursorLayer/types.d.ts +28 -0
  191. package/dist/components/Stage/components/CursorLayer/types.js +1 -0
  192. package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +364 -0
  193. package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte.d.ts +24 -0
  194. package/dist/components/Stage/components/DrawingLayer/types.d.ts +56 -0
  195. package/dist/components/Stage/components/DrawingLayer/types.js +23 -0
  196. package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +72 -0
  197. package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte.d.ts +11 -0
  198. package/dist/components/Stage/components/EdgeOverlayLayer/types.d.ts +29 -0
  199. package/dist/components/Stage/components/EdgeOverlayLayer/types.js +1 -0
  200. package/dist/components/Stage/components/FogLayer/FogLayer.svelte +75 -0
  201. package/dist/components/Stage/components/FogLayer/FogLayer.svelte.d.ts +11 -0
  202. package/dist/components/Stage/components/FogLayer/types.d.ts +42 -0
  203. package/dist/components/Stage/components/FogLayer/types.js +1 -0
  204. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +249 -0
  205. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte.d.ts +19 -0
  206. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +200 -0
  207. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte.d.ts +18 -0
  208. package/dist/components/Stage/components/FogOfWarLayer/types.d.ts +143 -0
  209. package/dist/components/Stage/components/FogOfWarLayer/types.js +1 -0
  210. package/dist/components/Stage/components/GridLayer/GridLayer.svelte +20 -0
  211. package/dist/components/Stage/components/GridLayer/GridLayer.svelte.d.ts +12 -0
  212. package/dist/components/Stage/components/GridLayer/GridMaterial.svelte +69 -0
  213. package/dist/components/Stage/components/GridLayer/GridMaterial.svelte.d.ts +10 -0
  214. package/dist/components/Stage/components/GridLayer/types.d.ts +65 -0
  215. package/dist/components/Stage/components/GridLayer/types.js +10 -0
  216. package/dist/components/Stage/components/LayerInput/LayerInput.svelte +300 -0
  217. package/dist/components/Stage/components/LayerInput/LayerInput.svelte.d.ts +20 -0
  218. package/dist/components/Stage/components/MapLayer/MapLayer.svelte +196 -0
  219. package/dist/components/Stage/components/MapLayer/MapLayer.svelte.d.ts +24 -0
  220. package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.d.ts +93 -0
  221. package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.js +229 -0
  222. package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.d.ts +51 -0
  223. package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.js +1 -0
  224. package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.d.ts +49 -0
  225. package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.js +87 -0
  226. package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.d.ts +52 -0
  227. package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.js +141 -0
  228. package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.d.ts +21 -0
  229. package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.js +44 -0
  230. package/dist/components/Stage/components/MapLayer/dataSources/index.d.ts +15 -0
  231. package/dist/components/Stage/components/MapLayer/dataSources/index.js +14 -0
  232. package/dist/components/Stage/components/MapLayer/types.d.ts +54 -0
  233. package/dist/components/Stage/components/MapLayer/types.js +9 -0
  234. package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte +398 -0
  235. package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte.d.ts +24 -0
  236. package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte +262 -0
  237. package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte.d.ts +27 -0
  238. package/dist/components/Stage/components/MarkerLayer/types.d.ts +109 -0
  239. package/dist/components/Stage/components/MarkerLayer/types.js +21 -0
  240. package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +364 -0
  241. package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte.d.ts +49 -0
  242. package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +473 -0
  243. package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte.d.ts +24 -0
  244. package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.d.ts +150 -0
  245. package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.js +274 -0
  246. package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.d.ts +10 -0
  247. package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.js +58 -0
  248. package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.d.ts +9 -0
  249. package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.js +66 -0
  250. package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.d.ts +10 -0
  251. package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.js +103 -0
  252. package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.d.ts +9 -0
  253. package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.js +75 -0
  254. package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.d.ts +9 -0
  255. package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.js +73 -0
  256. package/dist/components/Stage/components/MeasurementLayer/measurements/index.d.ts +2 -0
  257. package/dist/components/Stage/components/MeasurementLayer/measurements/index.js +7 -0
  258. package/dist/components/Stage/components/MeasurementLayer/types.d.ts +76 -0
  259. package/dist/components/Stage/components/MeasurementLayer/types.js +9 -0
  260. package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.d.ts +83 -0
  261. package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.js +267 -0
  262. package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.d.ts +74 -0
  263. package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.js +130 -0
  264. package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte +220 -0
  265. package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte.d.ts +9 -0
  266. package/dist/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
  267. package/dist/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
  268. package/dist/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
  269. package/dist/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
  270. package/dist/components/Stage/components/ParticleSystem/rng.d.ts +7 -0
  271. package/dist/components/Stage/components/ParticleSystem/rng.js +20 -0
  272. package/dist/components/Stage/components/ParticleSystem/types.d.ts +88 -0
  273. package/dist/components/Stage/components/ParticleSystem/types.js +37 -0
  274. package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +144 -0
  275. package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte.d.ts +19 -0
  276. package/dist/components/Stage/components/PerformanceDebugger/index.d.ts +1 -0
  277. package/dist/components/Stage/components/PerformanceDebugger/index.js +1 -0
  278. package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +208 -0
  279. package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte.d.ts +7 -0
  280. package/dist/components/Stage/components/PerformanceOverlay/index.d.ts +1 -0
  281. package/dist/components/Stage/components/PerformanceOverlay/index.js +1 -0
  282. package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte +201 -0
  283. package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte.d.ts +17 -0
  284. package/dist/components/Stage/components/Scene/Scene.svelte +651 -0
  285. package/dist/components/Stage/components/Scene/Scene.svelte.d.ts +88 -0
  286. package/dist/components/Stage/components/Scene/luts.d.ts +7 -0
  287. package/dist/components/Stage/components/Scene/luts.js +33 -0
  288. package/dist/components/Stage/components/Scene/types.d.ts +207 -0
  289. package/dist/components/Stage/components/Scene/types.js +35 -0
  290. package/dist/components/Stage/components/Stage/Stage.svelte +332 -0
  291. package/dist/components/Stage/components/Stage/Stage.svelte.d.ts +86 -0
  292. package/dist/components/Stage/components/Stage/types.d.ts +163 -0
  293. package/dist/components/Stage/components/Stage/types.js +5 -0
  294. package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte +135 -0
  295. package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte.d.ts +13 -0
  296. package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.d.ts +3 -0
  297. package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.js +69 -0
  298. package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.d.ts +3 -0
  299. package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.js +68 -0
  300. package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.d.ts +3 -0
  301. package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.js +67 -0
  302. package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.d.ts +3 -0
  303. package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.js +68 -0
  304. package/dist/components/Stage/components/WeatherLayer/presets/index.d.ts +5 -0
  305. package/dist/components/Stage/components/WeatherLayer/presets/index.js +5 -0
  306. package/dist/components/Stage/components/WeatherLayer/types.d.ts +31 -0
  307. package/dist/components/Stage/components/WeatherLayer/types.js +9 -0
  308. package/dist/components/Stage/helpers/clippingPlaneStore.svelte.d.ts +7 -0
  309. package/dist/components/Stage/helpers/clippingPlaneStore.svelte.js +23 -0
  310. package/dist/components/Stage/helpers/debugState.svelte.d.ts +10 -0
  311. package/dist/components/Stage/helpers/debugState.svelte.js +13 -0
  312. package/dist/components/Stage/helpers/grid.d.ts +72 -0
  313. package/dist/components/Stage/helpers/grid.js +444 -0
  314. package/dist/components/Stage/helpers/lazyBrush.d.ts +63 -0
  315. package/dist/components/Stage/helpers/lazyBrush.js +137 -0
  316. package/dist/components/Stage/helpers/performanceMetrics.svelte.d.ts +62 -0
  317. package/dist/components/Stage/helpers/performanceMetrics.svelte.js +165 -0
  318. package/dist/components/Stage/helpers/utils.d.ts +3 -0
  319. package/dist/components/Stage/helpers/utils.js +18 -0
  320. package/dist/components/Stage/index.d.ts +21 -0
  321. package/dist/components/Stage/index.js +21 -0
  322. package/dist/components/Stage/shaders/AnnotationEffects.frag +1070 -0
  323. package/dist/components/Stage/shaders/Annotations.frag +29 -0
  324. package/dist/components/Stage/shaders/Drawing.frag +83 -0
  325. package/dist/components/Stage/shaders/Drawing.vert +5 -0
  326. package/dist/components/Stage/shaders/Fog.frag +147 -0
  327. package/dist/components/Stage/shaders/FractalNoise.frag +96 -0
  328. package/dist/components/Stage/shaders/GridShader.frag +174 -0
  329. package/dist/components/Stage/shaders/Overlay.frag +23 -0
  330. package/dist/components/Stage/shaders/Overlay.vert +0 -0
  331. package/dist/components/Stage/shaders/Particles.frag +27 -0
  332. package/dist/components/Stage/shaders/Particles.vert +51 -0
  333. package/dist/components/Stage/shaders/ToolOutline.frag +59 -0
  334. package/dist/components/Stage/shaders/default.vert +8 -0
  335. package/dist/components/Stage/types.d.ts +4 -0
  336. package/dist/components/Stage/types.js +1 -0
  337. package/dist/components/Table/Table.svelte +16 -0
  338. package/dist/components/Table/Table.svelte.d.ts +4 -0
  339. package/dist/components/Table/Td.svelte +17 -0
  340. package/dist/components/Table/Td.svelte.d.ts +4 -0
  341. package/dist/components/Table/Th.svelte +18 -0
  342. package/dist/components/Table/Th.svelte.d.ts +4 -0
  343. package/dist/components/Table/index.d.ts +4 -0
  344. package/dist/components/Table/index.js +4 -0
  345. package/dist/components/Table/types.d.ts +11 -0
  346. package/dist/components/Table/types.js +1 -0
  347. package/dist/components/Text/Text.svelte +23 -0
  348. package/dist/components/Text/Text.svelte.d.ts +4 -0
  349. package/dist/components/Text/index.d.ts +2 -0
  350. package/dist/components/Text/index.js +2 -0
  351. package/dist/components/Text/types.d.ts +11 -0
  352. package/dist/components/Text/types.js +1 -0
  353. package/dist/components/Title/Title.svelte +54 -0
  354. package/dist/components/Title/Title.svelte.d.ts +4 -0
  355. package/dist/components/Title/index.d.ts +2 -0
  356. package/dist/components/Title/index.js +2 -0
  357. package/dist/components/Title/types.d.ts +8 -0
  358. package/dist/components/Title/types.js +1 -0
  359. package/dist/components/Toast/Toast.svelte +155 -0
  360. package/dist/components/Toast/Toast.svelte.d.ts +5 -0
  361. package/dist/components/Toast/index.d.ts +3 -0
  362. package/dist/components/Toast/index.js +5 -0
  363. package/dist/components/Toast/toastCookie.d.ts +7 -0
  364. package/dist/components/Toast/toastCookie.js +17 -0
  365. package/dist/components/Toast/types.d.ts +6 -0
  366. package/dist/components/Toast/types.js +1 -0
  367. package/dist/components/ToolTip/ToolTip.svelte +70 -0
  368. package/dist/components/ToolTip/ToolTip.svelte.d.ts +4 -0
  369. package/dist/components/ToolTip/index.d.ts +2 -0
  370. package/dist/components/ToolTip/index.js +2 -0
  371. package/dist/components/ToolTip/types.d.ts +14 -0
  372. package/dist/components/ToolTip/types.js +1 -0
  373. package/dist/components/index.d.ts +32 -0
  374. package/dist/components/index.js +32 -0
  375. package/dist/components/types.d.ts +0 -0
  376. package/dist/components/types.js +1 -0
  377. package/dist/index.d.ts +2 -0
  378. package/dist/index.js +2 -0
  379. package/dist/styles/globals.css +108 -0
  380. package/dist/styles/normalize.css +9 -0
  381. package/dist/styles/reset.css +133 -0
  382. package/dist/styles/utilities.css +179 -0
  383. package/dist/styles/vars.css +1103 -0
  384. package/dist/types/awareness.d.ts +16 -0
  385. package/dist/types/awareness.js +1 -0
  386. package/dist/utils/rle.d.ts +41 -0
  387. package/dist/utils/rle.js +201 -0
  388. package/package.json +110 -0
@@ -0,0 +1,5 @@
1
+ import AshPreset from './AshPreset';
2
+ import LeavesPreset from './LeavesPreset';
3
+ import RainPreset from './RainPreset';
4
+ import SnowPreset from './SnowPreset';
5
+ export { AshPreset, LeavesPreset, RainPreset, SnowPreset };
@@ -0,0 +1,31 @@
1
+ import type { KernelSize } from 'postprocessing';
2
+ import type { ParticleSystemProps } from '../ParticleSystem/types';
3
+ export declare enum WeatherType {
4
+ None = 0,
5
+ Rain = 1,
6
+ Snow = 2,
7
+ Leaves = 3,
8
+ Ash = 4,
9
+ Custom = 99
10
+ }
11
+ export interface DepthOfFieldConfig {
12
+ enabled: boolean;
13
+ focus: number;
14
+ focalLength: number;
15
+ bokehScale: number;
16
+ kernelSize: KernelSize;
17
+ }
18
+ export interface WeatherLayerPreset {
19
+ fov: number;
20
+ intensity: number;
21
+ opacity: number;
22
+ depthOfField: DepthOfFieldConfig;
23
+ particles: ParticleSystemProps;
24
+ }
25
+ export interface WeatherLayerProps {
26
+ type: WeatherType;
27
+ fov?: number;
28
+ intensity?: number;
29
+ opacity?: number;
30
+ custom?: WeatherLayerPreset;
31
+ }
@@ -0,0 +1,9 @@
1
+ export var WeatherType;
2
+ (function (WeatherType) {
3
+ WeatherType[WeatherType["None"] = 0] = "None";
4
+ WeatherType[WeatherType["Rain"] = 1] = "Rain";
5
+ WeatherType[WeatherType["Snow"] = 2] = "Snow";
6
+ WeatherType[WeatherType["Leaves"] = 3] = "Leaves";
7
+ WeatherType[WeatherType["Ash"] = 4] = "Ash";
8
+ WeatherType[WeatherType["Custom"] = 99] = "Custom";
9
+ })(WeatherType || (WeatherType = {}));
@@ -0,0 +1,7 @@
1
+ import * as THREE from 'three';
2
+ import type { SceneLayerProps } from '../components/Scene/types';
3
+ import type { DisplayProps } from '../components/Stage/types';
4
+ export declare const clippingPlaneStore: {
5
+ value: THREE.Plane[];
6
+ };
7
+ export declare function updateClippingPlanes(sceneProps: SceneLayerProps, displayProps: DisplayProps): void;
@@ -0,0 +1,23 @@
1
+ import * as THREE from 'three';
2
+ export const clippingPlaneStore = $state({
3
+ value: [
4
+ new THREE.Plane(new THREE.Vector3(-1, 0, 0)),
5
+ new THREE.Plane(new THREE.Vector3(1, 0, 0)),
6
+ new THREE.Plane(new THREE.Vector3(0, 1, 0)),
7
+ new THREE.Plane(new THREE.Vector3(0, -1, 0))
8
+ ]
9
+ });
10
+ export function updateClippingPlanes(sceneProps, displayProps) {
11
+ // Whenever the scene is translated/zoomed, update the clipping planes
12
+ const { x, y } = sceneProps.offset;
13
+ const worldExtents = {
14
+ x: sceneProps.zoom * (displayProps.resolution.x / 2),
15
+ y: sceneProps.zoom * (displayProps.resolution.y / 2)
16
+ };
17
+ clippingPlaneStore.value = [
18
+ new THREE.Plane(new THREE.Vector3(-1, 0, 0), worldExtents.x + x),
19
+ new THREE.Plane(new THREE.Vector3(1, 0, 0), worldExtents.x - x),
20
+ new THREE.Plane(new THREE.Vector3(0, 1, 0), worldExtents.y - y),
21
+ new THREE.Plane(new THREE.Vector3(0, -1, 0), worldExtents.y + y)
22
+ ];
23
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Global debug state that persists independently of stageProps.
3
+ * This prevents debug settings from being reset when stageProps are rebuilt.
4
+ */
5
+ export declare const debugState: {
6
+ enableMetrics: boolean;
7
+ logMetricsToConsole: boolean;
8
+ };
9
+ export declare const setDebugEnabled: (enabled: boolean) => void;
10
+ export declare const isDebugEnabled: () => boolean;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Global debug state that persists independently of stageProps.
3
+ * This prevents debug settings from being reset when stageProps are rebuilt.
4
+ */
5
+ export const debugState = $state({
6
+ enableMetrics: false,
7
+ logMetricsToConsole: false
8
+ });
9
+ export const setDebugEnabled = (enabled) => {
10
+ debugState.enableMetrics = enabled;
11
+ debugState.logMetricsToConsole = enabled;
12
+ };
13
+ export const isDebugEnabled = () => debugState.enableMetrics;
@@ -0,0 +1,72 @@
1
+ import * as THREE from 'three';
2
+ import { type GridLayerProps } from '../components/GridLayer/types';
3
+ import type { DisplayProps } from '../components/Stage/types';
4
+ /**
5
+ * Gets the size of a grid cell in pixels
6
+ * @param gridType Type of grid (square or hex)
7
+ * @param gridSizePixels Base grid size in pixels
8
+ * @returns Width of grid cell in pixels
9
+ */
10
+ export declare function getGridCellSize(grid: GridLayerProps, display: DisplayProps): number;
11
+ /**
12
+ * Calculates the grid origin for Map defined mode
13
+ * Matches the shader logic for grid positioning
14
+ * @param grid Grid configuration
15
+ * @param display Display properties
16
+ * @returns Grid origin in pixels (from top-left corner)
17
+ */
18
+ export declare function getGridOrigin(grid: GridLayerProps, display: DisplayProps): THREE.Vector2;
19
+ /**
20
+ * Snaps a position to the nearest grid intersection based on the current grid configuration
21
+ * @param position Position to snap (in screen coordinates, relative to center)
22
+ * @param grid Grid configuration
23
+ * @param display Display properties
24
+ * @param centerOnly For hex grids, whether to snap to centers only (used for measurements)
25
+ * @returns Snapped position (in screen coordinates, relative to center)
26
+ */
27
+ export declare function snapToGrid(position: THREE.Vector2, grid: GridLayerProps, display: DisplayProps, centerOnly?: boolean): THREE.Vector2;
28
+ /**
29
+ * Hex coordinate type using axial coordinates (q, r)
30
+ */
31
+ export interface HexCoordinate {
32
+ q: number;
33
+ r: number;
34
+ }
35
+ /**
36
+ * Cube coordinate type for hex calculations (x, y, z where x + y + z = 0)
37
+ */
38
+ export interface CubeCoordinate {
39
+ x: number;
40
+ y: number;
41
+ z: number;
42
+ }
43
+ /**
44
+ * Converts pixel coordinates to hex grid coordinates
45
+ * Returns the grid indices of the hex containing the point
46
+ * @param point Position in pixel coordinates
47
+ * @param spacing Grid spacing in pixels
48
+ * @returns Hex grid coordinates (indices and grid type)
49
+ */
50
+ export declare function pixelToHex(point: THREE.Vector2, spacing: number): HexCoordinate & {
51
+ isGrid2?: boolean;
52
+ };
53
+ /**
54
+ * Converts hex grid coordinates to pixel coordinates
55
+ * For flat-topped hexagons in offset coordinate system
56
+ * @param hex Hex grid coordinates in offset format
57
+ * @param spacing Grid spacing in pixels (width of hex)
58
+ * @returns Position in pixel coordinates
59
+ */
60
+ export declare function hexToPixel(hex: HexCoordinate, spacing: number): THREE.Vector2;
61
+ /**
62
+ * Calculates the hex distance between two hex positions
63
+ * Returns 1 for adjacent hexes, 2 for hexes with one between them, etc.
64
+ * @param hex1 First hex coordinate (with isGrid2 flag)
65
+ * @param hex2 Second hex coordinate (with isGrid2 flag)
66
+ * @returns Number of hexes in the shortest path
67
+ */
68
+ export declare function hexDistance(hex1: HexCoordinate & {
69
+ isGrid2?: boolean;
70
+ }, hex2: HexCoordinate & {
71
+ isGrid2?: boolean;
72
+ }): number;
@@ -0,0 +1,444 @@
1
+ import * as THREE from 'three';
2
+ import { GridMode, GridType } from '../components/GridLayer/types';
3
+ // Hexagonal grid offset factor
4
+ const s = { x: 1.0, y: 1.7320508 }; // sqrt(3)
5
+ /**
6
+ * Gets the size of a grid cell in pixels
7
+ * @param gridType Type of grid (square or hex)
8
+ * @param gridSizePixels Base grid size in pixels
9
+ * @returns Width of grid cell in pixels
10
+ */
11
+ export function getGridCellSize(grid, display) {
12
+ return (grid.spacing * display.resolution.x) / display.size.x;
13
+ }
14
+ /**
15
+ * Calculates the grid origin for Map defined mode
16
+ * Matches the shader logic for grid positioning
17
+ * @param grid Grid configuration
18
+ * @param display Display properties
19
+ * @returns Grid origin in pixels (from top-left corner)
20
+ */
21
+ export function getGridOrigin(grid, display) {
22
+ // In FillSpace mode, grid is centered with padding
23
+ if ((grid.gridMode || 0) === GridMode.FillSpace) {
24
+ // Grid starts at padding position
25
+ return new THREE.Vector2(display.padding.x, display.padding.y);
26
+ }
27
+ // In MapDefined mode, calculate based on grid size
28
+ if (!grid.fixedGridCount) {
29
+ // Fallback to padding if no fixed count
30
+ return new THREE.Vector2(display.padding.x, display.padding.y);
31
+ }
32
+ // Calculate pixel pitch (inches per pixel)
33
+ const pixelPitchX = display.size.x / display.resolution.x;
34
+ const pixelPitchY = display.size.y / display.resolution.y;
35
+ // Calculate grid spacing in pixels
36
+ const gridSpacingX = grid.spacing / pixelPitchX;
37
+ const gridSpacingY = grid.spacing / pixelPitchY;
38
+ // Calculate total grid size in pixels (must match shader calculation)
39
+ // This matches the shader: gridSize_px = gridSpacing_px * gridCount + uLineThickness / 2.0
40
+ const gridWidthPx = gridSpacingX * grid.fixedGridCount.x + grid.lineThickness / 2.0;
41
+ const gridHeightPx = gridSpacingY * grid.fixedGridCount.y + grid.lineThickness / 2.0;
42
+ let originX;
43
+ let originY;
44
+ // If grid fits horizontally, center it; otherwise align left
45
+ if (gridWidthPx <= display.resolution.x) {
46
+ originX = (display.resolution.x - gridWidthPx) / 2.0;
47
+ }
48
+ else {
49
+ originX = 0;
50
+ }
51
+ // If grid fits vertically, center it; otherwise align top
52
+ if (gridHeightPx <= display.resolution.y) {
53
+ originY = (display.resolution.y - gridHeightPx) / 2.0;
54
+ }
55
+ else {
56
+ // Grid overflows - start at top (Y=0 in screen coordinates)
57
+ originY = 0;
58
+ }
59
+ return new THREE.Vector2(originX, originY);
60
+ }
61
+ /**
62
+ * Snaps a position to the nearest square grid intersection
63
+ * @param position Position to snap in pixels
64
+ * @param spacing Grid spacing in pixels
65
+ * @returns Snapped position in pixels
66
+ */
67
+ function snapToSquareGrid(position, spacing) {
68
+ const roundedX = Math.round(position.x / spacing.x) * spacing.x;
69
+ const roundedY = Math.round(position.y / spacing.y) * spacing.y;
70
+ return new THREE.Vector2(roundedX, roundedY);
71
+ }
72
+ /**
73
+ * Snaps a position to the nearest hexagonal grid center only
74
+ * Exactly matches the shader's getHex implementation
75
+ * @param position Position to snap in pixels
76
+ * @param spacing Grid spacing in pixels
77
+ * @returns The nearest hex center position
78
+ */
79
+ function snapToHexCenter(position, spacing) {
80
+ // Exact match of shader's getHex function
81
+ // First normalize by spacing like the shader does: hexUv = getHex(coords / spacing)
82
+ const p = new THREE.Vector2(position.x / spacing.x, position.y / spacing.y);
83
+ // vec4 hC = floor(vec4(p, p - vec2(0.5, 1.0)) / s.xyxy) + 0.5;
84
+ // where s = vec2(1.0, 1.7320508)
85
+ const hC = {
86
+ x: Math.floor(p.x / s.x) + 0.5,
87
+ y: Math.floor(p.y / s.y) + 0.5,
88
+ z: Math.floor((p.x - 0.5) / s.x) + 0.5,
89
+ w: Math.floor((p.y - 1.0) / s.y) + 0.5
90
+ };
91
+ // vec4 h = vec4(p - hC.xy * s, p - (hC.zw + 0.5) * s);
92
+ const h = {
93
+ x: p.x - hC.x * s.x,
94
+ y: p.y - hC.y * s.y,
95
+ z: p.x - (hC.z + 0.5) * s.x,
96
+ w: p.y - (hC.w + 0.5) * s.y
97
+ };
98
+ // dot(h.xy, h.xy) < dot(h.zw, h.zw)
99
+ const dist1 = h.x * h.x + h.y * h.y;
100
+ const dist2 = h.z * h.z + h.w * h.w;
101
+ // The shader returns the relative position, but we want the actual center
102
+ // So we need to convert back to the center position
103
+ let center;
104
+ if (dist1 < dist2) {
105
+ // First grid center
106
+ center = new THREE.Vector2(hC.x * s.x, hC.y * s.y);
107
+ }
108
+ else {
109
+ // Second grid center (offset)
110
+ center = new THREE.Vector2((hC.z + 0.5) * s.x, (hC.w + 0.5) * s.y);
111
+ }
112
+ // Scale back to pixel coordinates
113
+ return new THREE.Vector2(center.x * spacing.x, center.y * spacing.y);
114
+ }
115
+ /**
116
+ * Snaps a position to the nearest hexagonal grid intersection (includes vertices and edges)
117
+ * Based on the shader's hexagonal grid implementation
118
+ * @param position Position to snap in pixels
119
+ * @param spacing Grid spacing in pixels
120
+ * @returns The distance to the nearest center and the center
121
+ */
122
+ function distanceToHexCenter(position, spacing) {
123
+ // This function finds the nearest center in a hexagonal grid. The centers of a
124
+ // hexagonal grid can be represented by two offset square grids. The two grids
125
+ // are offset by half the grid spacing in the x direction and sqrt(3)/2 times
126
+ // the grid spacing in the y direction.
127
+ // Calculate the nearest cell for first grid
128
+ const gridPoints = {
129
+ first: {
130
+ x: Math.floor(position.x / (spacing.x * s.x)) + 0.5,
131
+ y: Math.floor(position.y / (spacing.y * s.y)) + 0.5
132
+ },
133
+ // Offset in x and y directions
134
+ second: {
135
+ x: Math.floor((position.x - s.x * spacing.x * 0.5) / (spacing.x * s.x)) + 0.5,
136
+ y: Math.floor((position.y - s.y * spacing.y * 0.5) / (spacing.y * s.y)) + 0.5
137
+ },
138
+ // Additional grid offset in y direction by spacing/sqrt(3)
139
+ third: {
140
+ x: Math.floor(position.x / (spacing.x * s.x)) + 0.5,
141
+ y: Math.floor((position.y - spacing.y / Math.sqrt(3)) / (spacing.y * s.y)) + 0.5
142
+ },
143
+ // Additional grid offset in y direction by spacing/sqrt(3)
144
+ fourth: {
145
+ x: Math.floor(position.x / (spacing.x * s.x)) + 0.5,
146
+ y: Math.floor((position.y + spacing.y / Math.sqrt(3)) / (spacing.y * s.y)) + 0.5
147
+ }
148
+ };
149
+ // Calculate the centers
150
+ const center1 = new THREE.Vector2(gridPoints.first.x * spacing.x * s.x, gridPoints.first.y * spacing.y * s.y);
151
+ const center2 = new THREE.Vector2((gridPoints.second.x + 0.5) * spacing.x * s.x, (gridPoints.second.y + 0.5) * spacing.y * s.y);
152
+ const center3 = new THREE.Vector2(gridPoints.third.x * spacing.x * s.x, gridPoints.third.y * spacing.y * s.y + spacing.y / Math.sqrt(3));
153
+ const center4 = new THREE.Vector2(gridPoints.fourth.x * spacing.x * s.x, gridPoints.fourth.y * spacing.y * s.y - spacing.y / Math.sqrt(3));
154
+ // Calculate vertices around each center (line intersections)
155
+ const getHexVertices = (center) => {
156
+ const vertices = [];
157
+ const radius = spacing.x; // Distance from center to vertex
158
+ for (let i = 0; i < 6; i++) {
159
+ const angle = (Math.PI / 3) * i;
160
+ vertices.push(new THREE.Vector2(center.x + radius * Math.cos(angle), center.y + radius * Math.sin(angle)));
161
+ }
162
+ return vertices;
163
+ };
164
+ // Get vertices for each center
165
+ const vertices1 = getHexVertices(center1);
166
+ const vertices2 = getHexVertices(center2);
167
+ const vertices3 = getHexVertices(center3);
168
+ const vertices4 = getHexVertices(center4);
169
+ // Calculate distances to all points (centers and vertices)
170
+ const distances = [
171
+ { d: Math.pow(position.x - center1.x, 2) + Math.pow(position.y - center1.y, 2), point: center1 },
172
+ { d: Math.pow(position.x - center2.x, 2) + Math.pow(position.y - center2.y, 2), point: center2 },
173
+ { d: Math.pow(position.x - center3.x, 2) + Math.pow(position.y - center3.y, 2), point: center3 },
174
+ { d: Math.pow(position.x - center4.x, 2) + Math.pow(position.y - center4.y, 2), point: center4 },
175
+ ...vertices1.map((v) => ({
176
+ d: Math.pow(position.x - v.x, 2) + Math.pow(position.y - v.y, 2),
177
+ point: v
178
+ })),
179
+ ...vertices2.map((v) => ({
180
+ d: Math.pow(position.x - v.x, 2) + Math.pow(position.y - v.y, 2),
181
+ point: v
182
+ })),
183
+ ...vertices3.map((v) => ({
184
+ d: Math.pow(position.x - v.x, 2) + Math.pow(position.y - v.y, 2),
185
+ point: v
186
+ })),
187
+ ...vertices4.map((v) => ({
188
+ d: Math.pow(position.x - v.x, 2) + Math.pow(position.y - v.y, 2),
189
+ point: v
190
+ }))
191
+ ];
192
+ // Find the closest point
193
+ const closest = distances.reduce((prev, curr) => (curr.d < prev.d ? curr : prev));
194
+ return closest.point;
195
+ }
196
+ /**
197
+ * Snaps a position to the nearest grid intersection based on the current grid configuration
198
+ * @param position Position to snap (in screen coordinates, relative to center)
199
+ * @param grid Grid configuration
200
+ * @param display Display properties
201
+ * @param centerOnly For hex grids, whether to snap to centers only (used for measurements)
202
+ * @returns Snapped position (in screen coordinates, relative to center)
203
+ */
204
+ export function snapToGrid(position, grid, display, centerOnly = false) {
205
+ // Compute the pixel pitch in inches
206
+ const pixelsPerInch = new THREE.Vector2(display.resolution.x / display.size.x, display.resolution.y / display.size.y);
207
+ // Compute the grid spacing in pixels
208
+ const gridSpacingPixels = new THREE.Vector2(grid.spacing * pixelsPerInch.x, grid.spacing * pixelsPerInch.y);
209
+ // In Map defined mode, we need to adjust for the grid origin and shader offset
210
+ if (grid.gridMode === GridMode.MapDefined && grid.fixedGridCount) {
211
+ // Get the grid origin in screen coordinates
212
+ const gridOrigin = getGridOrigin(grid, display);
213
+ // Convert position from center-relative to top-left relative (screen coords)
214
+ const screenPos = new THREE.Vector2(position.x + display.resolution.x / 2, display.resolution.y / 2 - position.y // Flip Y axis
215
+ );
216
+ // Convert to grid-relative coordinates
217
+ let gridRelativePos = new THREE.Vector2(screenPos.x - gridOrigin.x, screenPos.y - gridOrigin.y);
218
+ // Account for the shader offset (t / 4.0) that shifts the visual grid lines
219
+ const shaderOffset = grid.lineThickness / 4.0;
220
+ gridRelativePos.x -= shaderOffset;
221
+ gridRelativePos.y -= shaderOffset;
222
+ let snappedGridPos;
223
+ if (grid.gridType === GridType.Square) {
224
+ // For square grids, snap to cell centers (half-spacing increments)
225
+ const halfSpacing = new THREE.Vector2(gridSpacingPixels.x / 2.0, gridSpacingPixels.y / 2.0);
226
+ snappedGridPos = snapToSquareGrid(gridRelativePos, halfSpacing);
227
+ }
228
+ else {
229
+ // For hex grids, use center-only snapping if requested (e.g., for measurements)
230
+ if (centerOnly) {
231
+ snappedGridPos = snapToHexCenter(gridRelativePos, gridSpacingPixels);
232
+ }
233
+ else {
234
+ // Otherwise allow snapping to vertices and edges too
235
+ snappedGridPos = distanceToHexCenter(gridRelativePos, gridSpacingPixels);
236
+ }
237
+ }
238
+ // Add back the shader offset
239
+ snappedGridPos.x += shaderOffset;
240
+ snappedGridPos.y += shaderOffset;
241
+ // Convert back to screen coordinates
242
+ const snappedScreenPos = new THREE.Vector2(snappedGridPos.x + gridOrigin.x, snappedGridPos.y + gridOrigin.y);
243
+ // Convert back to center-relative coordinates
244
+ const result = new THREE.Vector2(snappedScreenPos.x - display.resolution.x / 2, display.resolution.y / 2 - snappedScreenPos.y // Flip Y axis back
245
+ );
246
+ return result;
247
+ }
248
+ // Fill space mode - use the original simple logic
249
+ if (grid.gridType === GridType.Square) {
250
+ // For square grids, snap to cell centers (half-spacing increments)
251
+ const halfSpacing = new THREE.Vector2(gridSpacingPixels.x / 2.0, gridSpacingPixels.y / 2.0);
252
+ return snapToSquareGrid(position, halfSpacing);
253
+ }
254
+ else {
255
+ // For hex grids, use center-only snapping if requested (e.g., for measurements)
256
+ if (centerOnly) {
257
+ return snapToHexCenter(position, gridSpacingPixels);
258
+ }
259
+ else {
260
+ // Otherwise allow snapping to vertices and edges too
261
+ return distanceToHexCenter(position, gridSpacingPixels);
262
+ }
263
+ }
264
+ }
265
+ /**
266
+ * Rounds fractional hex coordinates to the nearest hex
267
+ * @param hex Fractional hex coordinates
268
+ * @returns Rounded hex coordinates
269
+ */
270
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
271
+ function hexRound(hex) {
272
+ // Convert to cube coordinates for rounding
273
+ const cube = axialToCube(hex);
274
+ let rx = Math.round(cube.x);
275
+ let ry = Math.round(cube.y);
276
+ let rz = Math.round(cube.z);
277
+ const xDiff = Math.abs(rx - cube.x);
278
+ const yDiff = Math.abs(ry - cube.y);
279
+ const zDiff = Math.abs(rz - cube.z);
280
+ // Reset the coordinate with the largest rounding error
281
+ if (xDiff > yDiff && xDiff > zDiff) {
282
+ rx = -ry - rz;
283
+ }
284
+ else if (yDiff > zDiff) {
285
+ ry = -rx - rz;
286
+ }
287
+ else {
288
+ rz = -rx - ry;
289
+ }
290
+ return cubeToAxial({ x: rx, y: ry, z: rz });
291
+ }
292
+ /**
293
+ * Converts axial hex coordinates to cube coordinates
294
+ * @param hex Axial coordinates
295
+ * @returns Cube coordinates
296
+ */
297
+ function axialToCube(hex) {
298
+ const x = hex.q;
299
+ const z = hex.r;
300
+ const y = -x - z;
301
+ return { x, y, z };
302
+ }
303
+ /**
304
+ * Converts cube coordinates to axial hex coordinates
305
+ * @param cube Cube coordinates
306
+ * @returns Axial coordinates
307
+ */
308
+ function cubeToAxial(cube) {
309
+ return { q: cube.x, r: cube.z };
310
+ }
311
+ /**
312
+ * Converts pixel coordinates to hex grid coordinates
313
+ * Returns the grid indices of the hex containing the point
314
+ * @param point Position in pixel coordinates
315
+ * @param spacing Grid spacing in pixels
316
+ * @returns Hex grid coordinates (indices and grid type)
317
+ */
318
+ export function pixelToHex(point, spacing) {
319
+ // Exact match of shader's getHex function
320
+ const p = new THREE.Vector2(point.x / spacing, point.y / spacing);
321
+ // Calculate candidate grid positions
322
+ const hC = {
323
+ x: Math.floor(p.x / s.x) + 0.5,
324
+ y: Math.floor(p.y / s.y) + 0.5,
325
+ z: Math.floor((p.x - 0.5) / s.x) + 0.5,
326
+ w: Math.floor((p.y - 1.0) / s.y) + 0.5
327
+ };
328
+ // Calculate relative positions
329
+ const h = {
330
+ x: p.x - hC.x * s.x,
331
+ y: p.y - hC.y * s.y,
332
+ z: p.x - (hC.z + 0.5) * s.x,
333
+ w: p.y - (hC.w + 0.5) * s.y
334
+ };
335
+ // Choose the closer center
336
+ const dist1 = h.x * h.x + h.y * h.y;
337
+ const dist2 = h.z * h.z + h.w * h.w;
338
+ if (dist1 < dist2) {
339
+ // Grid 1 - use the indices directly
340
+ return { q: Math.floor(hC.x), r: Math.floor(hC.y), isGrid2: false };
341
+ }
342
+ else {
343
+ // Grid 2 - offset grid
344
+ return { q: Math.floor(hC.z), r: Math.floor(hC.w), isGrid2: true };
345
+ }
346
+ }
347
+ /**
348
+ * Converts hex grid coordinates to pixel coordinates
349
+ * For flat-topped hexagons in offset coordinate system
350
+ * @param hex Hex grid coordinates in offset format
351
+ * @param spacing Grid spacing in pixels (width of hex)
352
+ * @returns Position in pixel coordinates
353
+ */
354
+ export function hexToPixel(hex, spacing) {
355
+ const hexHeight = spacing * Math.sqrt(3);
356
+ const hexWidth = spacing;
357
+ // Calculate pixel position
358
+ let x;
359
+ const y = hex.r * hexHeight * 0.75; // Rows overlap by 1/4
360
+ if (hex.r % 2 === 0) {
361
+ // Even row - no offset
362
+ x = hex.q * hexWidth;
363
+ }
364
+ else {
365
+ // Odd row - offset by half a hex width
366
+ x = hex.q * hexWidth + hexWidth / 2;
367
+ }
368
+ return new THREE.Vector2(x, y);
369
+ }
370
+ /**
371
+ * Calculates the hex distance between two hex positions
372
+ * Returns 1 for adjacent hexes, 2 for hexes with one between them, etc.
373
+ * @param hex1 First hex coordinate (with isGrid2 flag)
374
+ * @param hex2 Second hex coordinate (with isGrid2 flag)
375
+ * @returns Number of hexes in the shortest path
376
+ */
377
+ export function hexDistance(hex1, hex2) {
378
+ // Special case: if the indices and grid types are identical, distance is 0
379
+ if (hex1.q === hex2.q && hex1.r === hex2.r && hex1.isGrid2 === hex2.isGrid2) {
380
+ return 0;
381
+ }
382
+ // For the shader's two-grid system, we can use a simpler approach
383
+ // The grids are offset by (0.5, 0.5) in grid units
384
+ // This creates a regular hex pattern
385
+ // Calculate effective positions in a unified coordinate system
386
+ let q1 = hex1.q * 2; // Scale up to avoid fractions
387
+ let r1 = hex1.r * 2;
388
+ let q2 = hex2.q * 2;
389
+ let r2 = hex2.r * 2;
390
+ // Adjust for grid 2 offset
391
+ if (hex1.isGrid2) {
392
+ q1 += 1;
393
+ r1 += 1;
394
+ }
395
+ if (hex2.isGrid2) {
396
+ q2 += 1;
397
+ r2 += 1;
398
+ }
399
+ // Now we have positions in a unified grid where each hex is at integer coordinates
400
+ // For pointy-top hexagons arranged by the shader's method:
401
+ // Adjacent hexes differ by specific patterns
402
+ const dq = Math.abs(q2 - q1);
403
+ const dr = Math.abs(r2 - r1);
404
+ // For pointy-top hexagons in the shader's two-grid system:
405
+ // Direct neighbors can be at different patterns depending on direction
406
+ // Simple case: same column (dq === 0)
407
+ if (dq === 0) {
408
+ // Moving directly north/south
409
+ // Adjacent hexes are at dr = 1 (switching between grid1 and grid2)
410
+ // Two hexes away are at dr = 2 (same grid type)
411
+ return dr;
412
+ }
413
+ // Same row (dr === 0)
414
+ if (dr === 0) {
415
+ // Moving directly east/west
416
+ // In the shader's arrangement, moving horizontally by 2 units = 1 hex
417
+ return Math.ceil(dq / 2);
418
+ }
419
+ // Diagonal movement in the two-grid system
420
+ // The actual hex distance depends on the specific arrangement
421
+ // Use Manhattan distance as an approximation, then adjust
422
+ const manhattan = dq + dr;
423
+ // In the shader's hex arrangement:
424
+ // - Direct neighbors are at manhattan distance 2 (e.g., (0,0) to (1,1))
425
+ // - Hexes with one between are at manhattan distance 4
426
+ // So we divide by 2
427
+ const distance = Math.ceil(manhattan / 2);
428
+ // However, we need to account for the hex geometry
429
+ // Some diagonal moves are shorter in hex distance
430
+ // If both dq and dr are non-zero and similar, it's a diagonal move
431
+ if (dq > 0 && dr > 0) {
432
+ // For true hex distance, we need to consider that some diagonals are direct neighbors
433
+ // In a hex grid, you can move diagonally in 6 directions
434
+ const minDiff = Math.min(dq, dr);
435
+ const maxDiff = Math.max(dq, dr);
436
+ // If moving equally in both directions, it's a direct diagonal
437
+ if (minDiff === maxDiff) {
438
+ return minDiff;
439
+ }
440
+ // Otherwise, it's a combination of diagonal and straight moves
441
+ return minDiff + Math.ceil((maxDiff - minDiff) / 2);
442
+ }
443
+ return distance;
444
+ }
@@ -0,0 +1,63 @@
1
+ import * as THREE from 'three';
2
+ export interface LazyBrushConfig {
3
+ radius?: number;
4
+ enabled?: boolean;
5
+ friction?: number;
6
+ initialPoint?: {
7
+ x: number;
8
+ y: number;
9
+ };
10
+ }
11
+ export declare class LazyBrushManager {
12
+ private lazyBrush;
13
+ private isEnabled;
14
+ private friction;
15
+ private hasStarted;
16
+ private currentStrokePoints;
17
+ constructor(config?: LazyBrushConfig);
18
+ /**
19
+ * Updates the lazy brush configuration
20
+ */
21
+ updateConfig(config: Partial<LazyBrushConfig>): void;
22
+ /**
23
+ * Starts a new stroke
24
+ */
25
+ startStroke(point: THREE.Vector2): void;
26
+ /**
27
+ * Updates the current stroke with a new point
28
+ * Returns an array of interpolated points to draw
29
+ */
30
+ updateStroke(point: THREE.Vector2): THREE.Vector2[];
31
+ /**
32
+ * Ends the current stroke
33
+ */
34
+ endStroke(): void;
35
+ /**
36
+ * Gets the current lazy pointer position
37
+ */
38
+ getLazyPosition(): THREE.Vector2 | null;
39
+ /**
40
+ * Gets the current brush position (smoothed)
41
+ */
42
+ getBrushPosition(): THREE.Vector2 | null;
43
+ /**
44
+ * Resets the lazy brush
45
+ */
46
+ reset(): void;
47
+ /**
48
+ * Returns whether lazy brush is enabled
49
+ */
50
+ get enabled(): boolean;
51
+ /**
52
+ * Sets whether lazy brush is enabled
53
+ */
54
+ set enabled(value: boolean);
55
+ /**
56
+ * Gets the lazy radius
57
+ */
58
+ get radius(): number;
59
+ /**
60
+ * Sets the lazy radius
61
+ */
62
+ set radius(value: number);
63
+ }