@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.
- package/LICENSE.md +105 -0
- package/README.md +45 -0
- package/dist/components/Avatar/Avatar.svelte +82 -0
- package/dist/components/Avatar/Avatar.svelte.d.ts +4 -0
- package/dist/components/Avatar/AvatarFileInput.svelte +85 -0
- package/dist/components/Avatar/AvatarFileInput.svelte.d.ts +4 -0
- package/dist/components/Avatar/AvatarPopover.svelte +34 -0
- package/dist/components/Avatar/AvatarPopover.svelte.d.ts +4 -0
- package/dist/components/Avatar/index.d.ts +4 -0
- package/dist/components/Avatar/index.js +4 -0
- package/dist/components/Avatar/types.d.ts +21 -0
- package/dist/components/Avatar/types.js +1 -0
- package/dist/components/BrushSizeSlider/BrushSizeSlider.svelte +174 -0
- package/dist/components/BrushSizeSlider/BrushSizeSlider.svelte.d.ts +11 -0
- package/dist/components/BrushSizeSlider/index.d.ts +1 -0
- package/dist/components/BrushSizeSlider/index.js +1 -0
- package/dist/components/Button/Button.svelte +182 -0
- package/dist/components/Button/Button.svelte.d.ts +26 -0
- package/dist/components/Button/ConfirmActionButton.svelte +98 -0
- package/dist/components/Button/ConfirmActionButton.svelte.d.ts +4 -0
- package/dist/components/Button/IconButton.svelte +121 -0
- package/dist/components/Button/IconButton.svelte.d.ts +4 -0
- package/dist/components/Button/RadioButton.svelte +93 -0
- package/dist/components/Button/RadioButton.svelte.d.ts +15 -0
- package/dist/components/Button/index.d.ts +5 -0
- package/dist/components/Button/index.js +5 -0
- package/dist/components/Button/types.d.ts +55 -0
- package/dist/components/Button/types.js +1 -0
- package/dist/components/CardFan/CardFan.svelte +165 -0
- package/dist/components/CardFan/CardFan.svelte.d.ts +4 -0
- package/dist/components/CardFan/index.d.ts +2 -0
- package/dist/components/CardFan/index.js +2 -0
- package/dist/components/CardFan/types.d.ts +5 -0
- package/dist/components/CardFan/types.js +1 -0
- package/dist/components/CodeBlock/Code.svelte +7 -0
- package/dist/components/CodeBlock/Code.svelte.d.ts +4 -0
- package/dist/components/CodeBlock/CodeBlock.svelte +102 -0
- package/dist/components/CodeBlock/CodeBlock.svelte.d.ts +4 -0
- package/dist/components/CodeBlock/index.d.ts +3 -0
- package/dist/components/CodeBlock/index.js +3 -0
- package/dist/components/CodeBlock/types.d.ts +9 -0
- package/dist/components/CodeBlock/types.js +1 -0
- package/dist/components/ColorMode/ColorMode.svelte +8 -0
- package/dist/components/ColorMode/ColorMode.svelte.d.ts +4 -0
- package/dist/components/ColorMode/index.d.ts +2 -0
- package/dist/components/ColorMode/index.js +1 -0
- package/dist/components/ColorMode/types.d.ts +10 -0
- package/dist/components/ColorMode/types.js +1 -0
- package/dist/components/ColorPicker/ColorPicker.svelte +838 -0
- package/dist/components/ColorPicker/ColorPicker.svelte.d.ts +4 -0
- package/dist/components/ColorPicker/ColorPickerSwatch.svelte +32 -0
- package/dist/components/ColorPicker/ColorPickerSwatch.svelte.d.ts +6 -0
- package/dist/components/ColorPicker/index.d.ts +3 -0
- package/dist/components/ColorPicker/index.js +3 -0
- package/dist/components/ColorPicker/types.d.ts +60 -0
- package/dist/components/ColorPicker/types.js +1 -0
- package/dist/components/ContextMenu/ContextMenu.svelte +86 -0
- package/dist/components/ContextMenu/ContextMenu.svelte.d.ts +4 -0
- package/dist/components/ContextMenu/index.d.ts +2 -0
- package/dist/components/ContextMenu/index.js +2 -0
- package/dist/components/ContextMenu/types.d.ts +13 -0
- package/dist/components/ContextMenu/types.js +1 -0
- package/dist/components/DrawingSliders/DrawingSliders.svelte +379 -0
- package/dist/components/DrawingSliders/DrawingSliders.svelte.d.ts +16 -0
- package/dist/components/DrawingSliders/index.d.ts +1 -0
- package/dist/components/DrawingSliders/index.js +1 -0
- package/dist/components/Editor/Editor.svelte +825 -0
- package/dist/components/Editor/Editor.svelte.d.ts +11 -0
- package/dist/components/Editor/index.d.ts +1 -0
- package/dist/components/Editor/index.js +1 -0
- package/dist/components/FogSliders/FogSliders.svelte +33 -0
- package/dist/components/FogSliders/FogSliders.svelte.d.ts +7 -0
- package/dist/components/FogSliders/index.d.ts +1 -0
- package/dist/components/FogSliders/index.js +1 -0
- package/dist/components/Hr/Hr.svelte +15 -0
- package/dist/components/Hr/Hr.svelte.d.ts +3 -0
- package/dist/components/Hr/index.d.ts +1 -0
- package/dist/components/Hr/index.js +1 -0
- package/dist/components/Icon/Icon.svelte +6 -0
- package/dist/components/Icon/Icon.svelte.d.ts +4 -0
- package/dist/components/Icon/index.d.ts +2 -0
- package/dist/components/Icon/index.js +1 -0
- package/dist/components/Icon/types.d.ts +18 -0
- package/dist/components/Icon/types.js +1 -0
- package/dist/components/Input/DualInputSlider.svelte +126 -0
- package/dist/components/Input/DualInputSlider.svelte.d.ts +4 -0
- package/dist/components/Input/FileInput.svelte +176 -0
- package/dist/components/Input/FileInput.svelte.d.ts +21 -0
- package/dist/components/Input/FormControl.svelte +150 -0
- package/dist/components/Input/FormControl.svelte.d.ts +41 -0
- package/dist/components/Input/FormError.svelte +37 -0
- package/dist/components/Input/FormError.svelte.d.ts +13 -0
- package/dist/components/Input/Input.svelte +56 -0
- package/dist/components/Input/Input.svelte.d.ts +4 -0
- package/dist/components/Input/InputCheckbox.svelte +99 -0
- package/dist/components/Input/InputCheckbox.svelte.d.ts +4 -0
- package/dist/components/Input/InputSlider.svelte +86 -0
- package/dist/components/Input/InputSlider.svelte.d.ts +4 -0
- package/dist/components/Input/Label.svelte +19 -0
- package/dist/components/Input/Label.svelte.d.ts +4 -0
- package/dist/components/Input/index.d.ts +9 -0
- package/dist/components/Input/index.js +9 -0
- package/dist/components/Input/types.d.ts +33 -0
- package/dist/components/Input/types.js +1 -0
- package/dist/components/Link/Link.svelte +41 -0
- package/dist/components/Link/Link.svelte.d.ts +4 -0
- package/dist/components/Link/LinkBox.svelte +20 -0
- package/dist/components/Link/LinkBox.svelte.d.ts +4 -0
- package/dist/components/Link/LinkOverlay.svelte +23 -0
- package/dist/components/Link/LinkOverlay.svelte.d.ts +4 -0
- package/dist/components/Link/index.d.ts +4 -0
- package/dist/components/Link/index.js +4 -0
- package/dist/components/Link/types.d.ts +15 -0
- package/dist/components/Link/types.js +1 -0
- package/dist/components/Loading/Loader.svelte +60 -0
- package/dist/components/Loading/Loader.svelte.d.ts +3 -0
- package/dist/components/Loading/Skeleton.svelte +9 -0
- package/dist/components/Loading/Skeleton.svelte.d.ts +26 -0
- package/dist/components/Loading/index.d.ts +2 -0
- package/dist/components/Loading/index.js +2 -0
- package/dist/components/Logo/Logo.svelte +16 -0
- package/dist/components/Logo/Logo.svelte.d.ts +7 -0
- package/dist/components/Logo/index.d.ts +1 -0
- package/dist/components/Logo/index.js +1 -0
- package/dist/components/MarkerTooltip/MarkerTooltip.svelte +435 -0
- package/dist/components/MarkerTooltip/MarkerTooltip.svelte.d.ts +35 -0
- package/dist/components/MarkerTooltip/index.d.ts +1 -0
- package/dist/components/MarkerTooltip/index.js +1 -0
- package/dist/components/Menu/SelectorMenu.svelte +280 -0
- package/dist/components/Menu/SelectorMenu.svelte.d.ts +4 -0
- package/dist/components/Menu/index.d.ts +2 -0
- package/dist/components/Menu/index.js +2 -0
- package/dist/components/Menu/types.d.ts +20 -0
- package/dist/components/Menu/types.js +1 -0
- package/dist/components/MyCounterButton.svelte +11 -0
- package/dist/components/MyCounterButton.svelte.d.ts +3 -0
- package/dist/components/Panel/index.d.ts +2 -0
- package/dist/components/Panel/index.js +2 -0
- package/dist/components/Panel/panel.svelte +18 -0
- package/dist/components/Panel/panel.svelte.d.ts +4 -0
- package/dist/components/Panel/types.d.ts +7 -0
- package/dist/components/Panel/types.js +1 -0
- package/dist/components/PersistButton/PersistButton.svelte +100 -0
- package/dist/components/PersistButton/PersistButton.svelte.d.ts +12 -0
- package/dist/components/PersistButton/index.d.ts +1 -0
- package/dist/components/PersistButton/index.js +1 -0
- package/dist/components/Popover/Popover.svelte +81 -0
- package/dist/components/Popover/Popover.svelte.d.ts +6 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Popover/index.js +2 -0
- package/dist/components/Popover/types.d.ts +17 -0
- package/dist/components/Popover/types.js +1 -0
- package/dist/components/PropsTable/PropsTable.svelte +107 -0
- package/dist/components/PropsTable/PropsTable.svelte.d.ts +26 -0
- package/dist/components/RadialMenu/EffectPreview.svelte +36 -0
- package/dist/components/RadialMenu/EffectPreview.svelte.d.ts +9 -0
- package/dist/components/RadialMenu/EffectPreviewScene.svelte +194 -0
- package/dist/components/RadialMenu/EffectPreviewScene.svelte.d.ts +8 -0
- package/dist/components/RadialMenu/RadialMenu.svelte +503 -0
- package/dist/components/RadialMenu/RadialMenu.svelte.d.ts +4 -0
- package/dist/components/RadialMenu/RadialMenuItem.svelte +176 -0
- package/dist/components/RadialMenu/RadialMenuItem.svelte.d.ts +11 -0
- package/dist/components/RadialMenu/index.d.ts +2 -0
- package/dist/components/RadialMenu/index.js +2 -0
- package/dist/components/RadialMenu/types.d.ts +35 -0
- package/dist/components/RadialMenu/types.js +1 -0
- package/dist/components/Select/Select.svelte +342 -0
- package/dist/components/Select/Select.svelte.d.ts +4 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.js +2 -0
- package/dist/components/Select/types.d.ts +24 -0
- package/dist/components/Select/types.js +1 -0
- package/dist/components/Spacer/Spacer.svelte +14 -0
- package/dist/components/Spacer/Spacer.svelte.d.ts +4 -0
- package/dist/components/Spacer/index.d.ts +2 -0
- package/dist/components/Spacer/index.js +2 -0
- package/dist/components/Spacer/types.d.ts +4 -0
- package/dist/components/Spacer/types.js +1 -0
- package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +445 -0
- package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte.d.ts +19 -0
- package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +167 -0
- package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte.d.ts +20 -0
- package/dist/components/Stage/components/AnnotationLayer/types.d.ts +121 -0
- package/dist/components/Stage/components/AnnotationLayer/types.js +71 -0
- package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte +148 -0
- package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte.d.ts +7 -0
- package/dist/components/Stage/components/CursorLayer/cursor.svg +26 -0
- package/dist/components/Stage/components/CursorLayer/index.d.ts +2 -0
- package/dist/components/Stage/components/CursorLayer/index.js +1 -0
- package/dist/components/Stage/components/CursorLayer/types.d.ts +28 -0
- package/dist/components/Stage/components/CursorLayer/types.js +1 -0
- package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +364 -0
- package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte.d.ts +24 -0
- package/dist/components/Stage/components/DrawingLayer/types.d.ts +56 -0
- package/dist/components/Stage/components/DrawingLayer/types.js +23 -0
- package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +72 -0
- package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte.d.ts +11 -0
- package/dist/components/Stage/components/EdgeOverlayLayer/types.d.ts +29 -0
- package/dist/components/Stage/components/EdgeOverlayLayer/types.js +1 -0
- package/dist/components/Stage/components/FogLayer/FogLayer.svelte +75 -0
- package/dist/components/Stage/components/FogLayer/FogLayer.svelte.d.ts +11 -0
- package/dist/components/Stage/components/FogLayer/types.d.ts +42 -0
- package/dist/components/Stage/components/FogLayer/types.js +1 -0
- package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +249 -0
- package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte.d.ts +19 -0
- package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +200 -0
- package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte.d.ts +18 -0
- package/dist/components/Stage/components/FogOfWarLayer/types.d.ts +143 -0
- package/dist/components/Stage/components/FogOfWarLayer/types.js +1 -0
- package/dist/components/Stage/components/GridLayer/GridLayer.svelte +20 -0
- package/dist/components/Stage/components/GridLayer/GridLayer.svelte.d.ts +12 -0
- package/dist/components/Stage/components/GridLayer/GridMaterial.svelte +69 -0
- package/dist/components/Stage/components/GridLayer/GridMaterial.svelte.d.ts +10 -0
- package/dist/components/Stage/components/GridLayer/types.d.ts +65 -0
- package/dist/components/Stage/components/GridLayer/types.js +10 -0
- package/dist/components/Stage/components/LayerInput/LayerInput.svelte +300 -0
- package/dist/components/Stage/components/LayerInput/LayerInput.svelte.d.ts +20 -0
- package/dist/components/Stage/components/MapLayer/MapLayer.svelte +196 -0
- package/dist/components/Stage/components/MapLayer/MapLayer.svelte.d.ts +24 -0
- package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.d.ts +93 -0
- package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.js +229 -0
- package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.d.ts +51 -0
- package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.js +1 -0
- package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.d.ts +49 -0
- package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.js +87 -0
- package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.d.ts +52 -0
- package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.js +141 -0
- package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.d.ts +21 -0
- package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.js +44 -0
- package/dist/components/Stage/components/MapLayer/dataSources/index.d.ts +15 -0
- package/dist/components/Stage/components/MapLayer/dataSources/index.js +14 -0
- package/dist/components/Stage/components/MapLayer/types.d.ts +54 -0
- package/dist/components/Stage/components/MapLayer/types.js +9 -0
- package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte +398 -0
- package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte.d.ts +24 -0
- package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte +262 -0
- package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte.d.ts +27 -0
- package/dist/components/Stage/components/MarkerLayer/types.d.ts +109 -0
- package/dist/components/Stage/components/MarkerLayer/types.js +21 -0
- package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +364 -0
- package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte.d.ts +49 -0
- package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +473 -0
- package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte.d.ts +24 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.d.ts +150 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.js +274 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.d.ts +10 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.js +58 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.d.ts +9 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.js +66 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.d.ts +10 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.js +103 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.d.ts +9 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.js +75 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.d.ts +9 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.js +73 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/index.d.ts +2 -0
- package/dist/components/Stage/components/MeasurementLayer/measurements/index.js +7 -0
- package/dist/components/Stage/components/MeasurementLayer/types.d.ts +76 -0
- package/dist/components/Stage/components/MeasurementLayer/types.js +9 -0
- package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.d.ts +83 -0
- package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.js +267 -0
- package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.d.ts +74 -0
- package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.js +130 -0
- package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte +220 -0
- package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte.d.ts +9 -0
- package/dist/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
- package/dist/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
- package/dist/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
- package/dist/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
- package/dist/components/Stage/components/ParticleSystem/rng.d.ts +7 -0
- package/dist/components/Stage/components/ParticleSystem/rng.js +20 -0
- package/dist/components/Stage/components/ParticleSystem/types.d.ts +88 -0
- package/dist/components/Stage/components/ParticleSystem/types.js +37 -0
- package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +144 -0
- package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte.d.ts +19 -0
- package/dist/components/Stage/components/PerformanceDebugger/index.d.ts +1 -0
- package/dist/components/Stage/components/PerformanceDebugger/index.js +1 -0
- package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +208 -0
- package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte.d.ts +7 -0
- package/dist/components/Stage/components/PerformanceOverlay/index.d.ts +1 -0
- package/dist/components/Stage/components/PerformanceOverlay/index.js +1 -0
- package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte +201 -0
- package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte.d.ts +17 -0
- package/dist/components/Stage/components/Scene/Scene.svelte +651 -0
- package/dist/components/Stage/components/Scene/Scene.svelte.d.ts +88 -0
- package/dist/components/Stage/components/Scene/luts.d.ts +7 -0
- package/dist/components/Stage/components/Scene/luts.js +33 -0
- package/dist/components/Stage/components/Scene/types.d.ts +207 -0
- package/dist/components/Stage/components/Scene/types.js +35 -0
- package/dist/components/Stage/components/Stage/Stage.svelte +332 -0
- package/dist/components/Stage/components/Stage/Stage.svelte.d.ts +86 -0
- package/dist/components/Stage/components/Stage/types.d.ts +163 -0
- package/dist/components/Stage/components/Stage/types.js +5 -0
- package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte +135 -0
- package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte.d.ts +13 -0
- package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.d.ts +3 -0
- package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.js +69 -0
- package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.d.ts +3 -0
- package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.js +68 -0
- package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.d.ts +3 -0
- package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.js +67 -0
- package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.d.ts +3 -0
- package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.js +68 -0
- package/dist/components/Stage/components/WeatherLayer/presets/index.d.ts +5 -0
- package/dist/components/Stage/components/WeatherLayer/presets/index.js +5 -0
- package/dist/components/Stage/components/WeatherLayer/types.d.ts +31 -0
- package/dist/components/Stage/components/WeatherLayer/types.js +9 -0
- package/dist/components/Stage/helpers/clippingPlaneStore.svelte.d.ts +7 -0
- package/dist/components/Stage/helpers/clippingPlaneStore.svelte.js +23 -0
- package/dist/components/Stage/helpers/debugState.svelte.d.ts +10 -0
- package/dist/components/Stage/helpers/debugState.svelte.js +13 -0
- package/dist/components/Stage/helpers/grid.d.ts +72 -0
- package/dist/components/Stage/helpers/grid.js +444 -0
- package/dist/components/Stage/helpers/lazyBrush.d.ts +63 -0
- package/dist/components/Stage/helpers/lazyBrush.js +137 -0
- package/dist/components/Stage/helpers/performanceMetrics.svelte.d.ts +62 -0
- package/dist/components/Stage/helpers/performanceMetrics.svelte.js +165 -0
- package/dist/components/Stage/helpers/utils.d.ts +3 -0
- package/dist/components/Stage/helpers/utils.js +18 -0
- package/dist/components/Stage/index.d.ts +21 -0
- package/dist/components/Stage/index.js +21 -0
- package/dist/components/Stage/shaders/AnnotationEffects.frag +1070 -0
- package/dist/components/Stage/shaders/Annotations.frag +29 -0
- package/dist/components/Stage/shaders/Drawing.frag +83 -0
- package/dist/components/Stage/shaders/Drawing.vert +5 -0
- package/dist/components/Stage/shaders/Fog.frag +147 -0
- package/dist/components/Stage/shaders/FractalNoise.frag +96 -0
- package/dist/components/Stage/shaders/GridShader.frag +174 -0
- package/dist/components/Stage/shaders/Overlay.frag +23 -0
- package/dist/components/Stage/shaders/Overlay.vert +0 -0
- package/dist/components/Stage/shaders/Particles.frag +27 -0
- package/dist/components/Stage/shaders/Particles.vert +51 -0
- package/dist/components/Stage/shaders/ToolOutline.frag +59 -0
- package/dist/components/Stage/shaders/default.vert +8 -0
- package/dist/components/Stage/types.d.ts +4 -0
- package/dist/components/Stage/types.js +1 -0
- package/dist/components/Table/Table.svelte +16 -0
- package/dist/components/Table/Table.svelte.d.ts +4 -0
- package/dist/components/Table/Td.svelte +17 -0
- package/dist/components/Table/Td.svelte.d.ts +4 -0
- package/dist/components/Table/Th.svelte +18 -0
- package/dist/components/Table/Th.svelte.d.ts +4 -0
- package/dist/components/Table/index.d.ts +4 -0
- package/dist/components/Table/index.js +4 -0
- package/dist/components/Table/types.d.ts +11 -0
- package/dist/components/Table/types.js +1 -0
- package/dist/components/Text/Text.svelte +23 -0
- package/dist/components/Text/Text.svelte.d.ts +4 -0
- package/dist/components/Text/index.d.ts +2 -0
- package/dist/components/Text/index.js +2 -0
- package/dist/components/Text/types.d.ts +11 -0
- package/dist/components/Text/types.js +1 -0
- package/dist/components/Title/Title.svelte +54 -0
- package/dist/components/Title/Title.svelte.d.ts +4 -0
- package/dist/components/Title/index.d.ts +2 -0
- package/dist/components/Title/index.js +2 -0
- package/dist/components/Title/types.d.ts +8 -0
- package/dist/components/Title/types.js +1 -0
- package/dist/components/Toast/Toast.svelte +155 -0
- package/dist/components/Toast/Toast.svelte.d.ts +5 -0
- package/dist/components/Toast/index.d.ts +3 -0
- package/dist/components/Toast/index.js +5 -0
- package/dist/components/Toast/toastCookie.d.ts +7 -0
- package/dist/components/Toast/toastCookie.js +17 -0
- package/dist/components/Toast/types.d.ts +6 -0
- package/dist/components/Toast/types.js +1 -0
- package/dist/components/ToolTip/ToolTip.svelte +70 -0
- package/dist/components/ToolTip/ToolTip.svelte.d.ts +4 -0
- package/dist/components/ToolTip/index.d.ts +2 -0
- package/dist/components/ToolTip/index.js +2 -0
- package/dist/components/ToolTip/types.d.ts +14 -0
- package/dist/components/ToolTip/types.js +1 -0
- package/dist/components/index.d.ts +32 -0
- package/dist/components/index.js +32 -0
- package/dist/components/types.d.ts +0 -0
- package/dist/components/types.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/styles/globals.css +108 -0
- package/dist/styles/normalize.css +9 -0
- package/dist/styles/reset.css +133 -0
- package/dist/styles/utilities.css +179 -0
- package/dist/styles/vars.css +1103 -0
- package/dist/types/awareness.d.ts +16 -0
- package/dist/types/awareness.js +1 -0
- package/dist/utils/rle.d.ts +41 -0
- package/dist/utils/rle.js +201 -0
- package/package.json +110 -0
package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// prettier-ignore
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import { MeasurementType } from '../types';
|
|
4
|
+
import { drawCircle } from '../utils/canvasDrawing';
|
|
5
|
+
import { BaseMeasurement } from './BaseMeasurement';
|
|
6
|
+
export class RectangleMeasurement extends BaseMeasurement {
|
|
7
|
+
constructor(startPoint, measurementProps, displayProps, gridProps) {
|
|
8
|
+
super(MeasurementType.Square, startPoint, measurementProps, displayProps, gridProps);
|
|
9
|
+
}
|
|
10
|
+
renderShape() {
|
|
11
|
+
// Calculate the distance from center to mouse position
|
|
12
|
+
const distance = this.startPoint.distanceTo(this.endPoint);
|
|
13
|
+
// For a square, use the same distance for both width and height
|
|
14
|
+
// This creates a square where the distance from center to edge equals the distance to the mouse
|
|
15
|
+
const halfSize = distance;
|
|
16
|
+
const squareSize = halfSize * 2;
|
|
17
|
+
// Create canvas for the square
|
|
18
|
+
const canvas = document.createElement('canvas');
|
|
19
|
+
const context = canvas.getContext('2d', { colorSpace: 'srgb' });
|
|
20
|
+
// Add padding for outline and corner points
|
|
21
|
+
const padding = Math.max(this.markerSize + this.outlineThickness, 40);
|
|
22
|
+
const canvasSize = squareSize + padding * 2;
|
|
23
|
+
canvas.width = Math.max(canvasSize, 100);
|
|
24
|
+
canvas.height = Math.max(canvasSize, 100);
|
|
25
|
+
// Clear canvas
|
|
26
|
+
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
27
|
+
// Canvas center coordinates
|
|
28
|
+
const canvasCenterX = canvas.width / 2;
|
|
29
|
+
const canvasCenterY = canvas.height / 2;
|
|
30
|
+
// Calculate square position on canvas (centered)
|
|
31
|
+
const rectX = canvasCenterX - halfSize;
|
|
32
|
+
const rectY = canvasCenterY - halfSize;
|
|
33
|
+
// Draw square with dashed pattern
|
|
34
|
+
if (squareSize > 0) {
|
|
35
|
+
// First draw the fill
|
|
36
|
+
context.fillStyle = this.color;
|
|
37
|
+
context.globalAlpha = 0.2;
|
|
38
|
+
context.fillRect(rectX, rectY, squareSize, squareSize);
|
|
39
|
+
context.globalAlpha = 1.0;
|
|
40
|
+
// Draw the outline with dashed pattern if needed
|
|
41
|
+
if (this.outlineThickness > 0) {
|
|
42
|
+
context.strokeStyle = this.outlineColor;
|
|
43
|
+
context.lineWidth = this.thickness + this.outlineThickness * 2;
|
|
44
|
+
context.setLineDash([20, 10]); // Dashed pattern
|
|
45
|
+
context.strokeRect(rectX, rectY, squareSize, squareSize);
|
|
46
|
+
}
|
|
47
|
+
// Draw the main stroke with dashed pattern
|
|
48
|
+
context.strokeStyle = this.color;
|
|
49
|
+
context.lineWidth = this.thickness;
|
|
50
|
+
context.setLineDash([20, 10]); // Dashed pattern
|
|
51
|
+
context.strokeRect(rectX, rectY, squareSize, squareSize);
|
|
52
|
+
// Reset dash pattern for other elements
|
|
53
|
+
context.setLineDash([]);
|
|
54
|
+
}
|
|
55
|
+
// Draw center point (like circle measurement)
|
|
56
|
+
drawCircle(context, canvasCenterX, canvasCenterY, this.markerSize / 2, this.color, this.outlineColor, this.outlineThickness);
|
|
57
|
+
// Draw corner points
|
|
58
|
+
const cornerRadius = this.markerSize / 2;
|
|
59
|
+
// Top-left corner
|
|
60
|
+
drawCircle(context, rectX, rectY, cornerRadius, this.color, this.outlineColor, this.outlineThickness);
|
|
61
|
+
// Top-right corner
|
|
62
|
+
drawCircle(context, rectX + squareSize, rectY, cornerRadius, this.color, this.outlineColor, this.outlineThickness);
|
|
63
|
+
// Bottom-right corner
|
|
64
|
+
drawCircle(context, rectX + squareSize, rectY + squareSize, cornerRadius, this.color, this.outlineColor, this.outlineThickness);
|
|
65
|
+
// Bottom-left corner
|
|
66
|
+
drawCircle(context, rectX, rectY + squareSize, cornerRadius, this.color, this.outlineColor, this.outlineThickness);
|
|
67
|
+
const texture = new THREE.CanvasTexture(canvas);
|
|
68
|
+
texture.needsUpdate = true;
|
|
69
|
+
this.updateShapeMesh(new THREE.PlaneGeometry(canvas.width, canvas.height), texture);
|
|
70
|
+
// Position the square at the center point (startPoint), like circle measurement
|
|
71
|
+
this.shapeMesh.position.set(this.startPoint.x, this.startPoint.y, 0);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { BaseMeasurement } from './BaseMeasurement';
|
|
2
|
+
export { LineMeasurement } from './LineMeasurement';
|
|
3
|
+
// TODO: Add other measurement types as they are implemented
|
|
4
|
+
// export { CircleMeasurement } from './CircleMeasurement';
|
|
5
|
+
// export { BeamMeasurement } from './BeamMeasurement';
|
|
6
|
+
// export { ConeMeasurement } from './ConeMeasurement';
|
|
7
|
+
// export { SquareMeasurement } from './SquareMeasurement';
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export declare enum MeasurementType {
|
|
3
|
+
Line = 1,
|
|
4
|
+
Beam = 2,
|
|
5
|
+
Cone = 3,
|
|
6
|
+
Circle = 4,
|
|
7
|
+
Square = 5
|
|
8
|
+
}
|
|
9
|
+
export interface Measurement {
|
|
10
|
+
id: string;
|
|
11
|
+
type: MeasurementType;
|
|
12
|
+
startPoint: THREE.Vector2;
|
|
13
|
+
endPoint: THREE.Vector2;
|
|
14
|
+
distance: number;
|
|
15
|
+
unit: string;
|
|
16
|
+
createdAt: number;
|
|
17
|
+
}
|
|
18
|
+
export interface MeasurementLayerProps {
|
|
19
|
+
/**
|
|
20
|
+
* The type of measurement to display
|
|
21
|
+
*/
|
|
22
|
+
type: MeasurementType;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to snap to grid
|
|
25
|
+
*/
|
|
26
|
+
snapToGrid: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Enable DMG 252 diagonal movement rules (only applies when snapping to square grid)
|
|
29
|
+
* First diagonal = 5ft, second = 10ft, alternating
|
|
30
|
+
*/
|
|
31
|
+
enableDMG252: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Auto-hide delay in milliseconds (default 3000ms)
|
|
34
|
+
*/
|
|
35
|
+
autoHideDelay: number;
|
|
36
|
+
/**
|
|
37
|
+
* Color of the measurement line
|
|
38
|
+
*/
|
|
39
|
+
color: string;
|
|
40
|
+
/**
|
|
41
|
+
* Thickness of the measurement line
|
|
42
|
+
*/
|
|
43
|
+
thickness: number;
|
|
44
|
+
/**
|
|
45
|
+
* Diameter of the measurement markers/points
|
|
46
|
+
*/
|
|
47
|
+
markerSize: number;
|
|
48
|
+
/**
|
|
49
|
+
* Opacity of the measurement
|
|
50
|
+
*/
|
|
51
|
+
opacity: number;
|
|
52
|
+
/**
|
|
53
|
+
* Whether to show distance text
|
|
54
|
+
*/
|
|
55
|
+
showDistance: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Thickness of the text outline
|
|
58
|
+
*/
|
|
59
|
+
outlineThickness: number;
|
|
60
|
+
/**
|
|
61
|
+
* Color of the text outline
|
|
62
|
+
*/
|
|
63
|
+
outlineColor: string;
|
|
64
|
+
/**
|
|
65
|
+
* Width of beam measurements in world grid units
|
|
66
|
+
*/
|
|
67
|
+
beamWidth: number;
|
|
68
|
+
/**
|
|
69
|
+
* Angle of cone measurements in degrees
|
|
70
|
+
*/
|
|
71
|
+
coneAngle: number;
|
|
72
|
+
/**
|
|
73
|
+
* Fadeout animation duration in milliseconds (default 500ms)
|
|
74
|
+
*/
|
|
75
|
+
fadeoutTime: number;
|
|
76
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export var MeasurementType;
|
|
3
|
+
(function (MeasurementType) {
|
|
4
|
+
MeasurementType[MeasurementType["Line"] = 1] = "Line";
|
|
5
|
+
MeasurementType[MeasurementType["Beam"] = 2] = "Beam";
|
|
6
|
+
MeasurementType[MeasurementType["Cone"] = 3] = "Cone";
|
|
7
|
+
MeasurementType[MeasurementType["Circle"] = 4] = "Circle";
|
|
8
|
+
MeasurementType[MeasurementType["Square"] = 5] = "Square";
|
|
9
|
+
})(MeasurementType || (MeasurementType = {}));
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for drawing shapes on canvas
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Draws a line, optionally with an outline
|
|
6
|
+
* @param context Canvas 2D context
|
|
7
|
+
* @param startX Start X coordinate
|
|
8
|
+
* @param startY Start Y coordinate
|
|
9
|
+
* @param endX End X coordinate
|
|
10
|
+
* @param endY End Y coordinate
|
|
11
|
+
* @param color Line color
|
|
12
|
+
* @param thickness Line thickness
|
|
13
|
+
* @param outlineColor Optional outline color
|
|
14
|
+
* @param outlineThickness Optional outline thickness
|
|
15
|
+
*/
|
|
16
|
+
export declare function drawLine(context: CanvasRenderingContext2D, startX: number, startY: number, endX: number, endY: number, color: string, thickness: number, outlineColor?: string, outlineThickness?: number): void;
|
|
17
|
+
/**
|
|
18
|
+
* Draws a circle, optionally with an outline
|
|
19
|
+
* @param context Canvas 2D context
|
|
20
|
+
* @param x Center X coordinate
|
|
21
|
+
* @param y Center Y coordinate
|
|
22
|
+
* @param radius Circle radius
|
|
23
|
+
* @param color Circle color
|
|
24
|
+
* @param outlineColor Optional outline color
|
|
25
|
+
* @param outlineThickness Optional outline thickness
|
|
26
|
+
*/
|
|
27
|
+
export declare function drawCircle(context: CanvasRenderingContext2D, x: number, y: number, radius: number, color: string, outlineColor?: string, outlineThickness?: number): void;
|
|
28
|
+
/**
|
|
29
|
+
* Draws a large circle with stroke and optional fill
|
|
30
|
+
* @param context Canvas 2D context
|
|
31
|
+
* @param x Center X coordinate
|
|
32
|
+
* @param y Center Y coordinate
|
|
33
|
+
* @param radius Circle radius
|
|
34
|
+
* @param strokeColor Stroke color
|
|
35
|
+
* @param strokeThickness Stroke thickness
|
|
36
|
+
* @param fillColor Optional fill color
|
|
37
|
+
* @param fillOpacity Optional fill opacity (0-1)
|
|
38
|
+
* @param outlineColor Optional outline color
|
|
39
|
+
* @param outlineThickness Optional outline thickness
|
|
40
|
+
*/
|
|
41
|
+
export declare function drawLargeCircle(context: CanvasRenderingContext2D, x: number, y: number, radius: number, strokeColor: string, strokeThickness: number, fillColor?: string, fillOpacity?: number, outlineColor?: string, outlineThickness?: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* Draws a rectangle with stroke and optional fill
|
|
44
|
+
* @param context Canvas 2D context
|
|
45
|
+
* @param x Top-left X coordinate
|
|
46
|
+
* @param y Top-left Y coordinate
|
|
47
|
+
* @param width Rectangle width
|
|
48
|
+
* @param height Rectangle height
|
|
49
|
+
* @param strokeColor Stroke color
|
|
50
|
+
* @param strokeThickness Stroke thickness
|
|
51
|
+
* @param fillColor Optional fill color
|
|
52
|
+
* @param fillOpacity Optional fill opacity (0-1)
|
|
53
|
+
* @param outlineColor Optional outline color
|
|
54
|
+
* @param outlineThickness Optional outline thickness
|
|
55
|
+
*/
|
|
56
|
+
export declare function drawRectangle(context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, strokeColor: string, strokeThickness: number, fillColor?: string, fillOpacity?: number, outlineColor?: string, outlineThickness?: number): void;
|
|
57
|
+
/**
|
|
58
|
+
* Draws a cone/sector with stroke and optional fill
|
|
59
|
+
* @param context Canvas 2D context
|
|
60
|
+
* @param x Center X coordinate
|
|
61
|
+
* @param y Center Y coordinate
|
|
62
|
+
* @param radius Cone radius
|
|
63
|
+
* @param startAngle Start angle in radians
|
|
64
|
+
* @param endAngle End angle in radians
|
|
65
|
+
* @param strokeColor Stroke color
|
|
66
|
+
* @param strokeThickness Stroke thickness
|
|
67
|
+
* @param fillColor Optional fill color
|
|
68
|
+
* @param fillOpacity Optional fill opacity (0-1)
|
|
69
|
+
* @param outlineColor Optional outline color
|
|
70
|
+
* @param outlineThickness Optional outline thickness
|
|
71
|
+
*/
|
|
72
|
+
export declare function drawCone(context: CanvasRenderingContext2D, x: number, y: number, radius: number, startAngle: number, endAngle: number, strokeColor: string, strokeThickness: number, fillColor?: string, fillOpacity?: number, outlineColor?: string, outlineThickness?: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a text canvas with consistent styling
|
|
75
|
+
* @param text The text to display
|
|
76
|
+
* @param fontSize Font size in pixels
|
|
77
|
+
* @param color Text color
|
|
78
|
+
* @param outlineColor Outline color
|
|
79
|
+
* @param outlineThickness Outline thickness
|
|
80
|
+
* @param units Optional units text to display in smaller font
|
|
81
|
+
* @returns Canvas element with rendered text
|
|
82
|
+
*/
|
|
83
|
+
export declare function createTextCanvas(text: string, fontSize: number, color: string, outlineColor?: string, _outlineThickness?: number, units?: string): HTMLCanvasElement;
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for drawing shapes on canvas
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Draws a line, optionally with an outline
|
|
6
|
+
* @param context Canvas 2D context
|
|
7
|
+
* @param startX Start X coordinate
|
|
8
|
+
* @param startY Start Y coordinate
|
|
9
|
+
* @param endX End X coordinate
|
|
10
|
+
* @param endY End Y coordinate
|
|
11
|
+
* @param color Line color
|
|
12
|
+
* @param thickness Line thickness
|
|
13
|
+
* @param outlineColor Optional outline color
|
|
14
|
+
* @param outlineThickness Optional outline thickness
|
|
15
|
+
*/
|
|
16
|
+
export function drawLine(context, startX, startY, endX, endY, color, thickness, outlineColor, outlineThickness) {
|
|
17
|
+
// Draw outline if specified
|
|
18
|
+
if (outlineColor && outlineThickness) {
|
|
19
|
+
context.strokeStyle = outlineColor;
|
|
20
|
+
context.lineWidth = thickness + outlineThickness * 2;
|
|
21
|
+
context.lineCap = 'round';
|
|
22
|
+
context.lineJoin = 'round';
|
|
23
|
+
context.beginPath();
|
|
24
|
+
context.moveTo(startX, startY);
|
|
25
|
+
context.lineTo(endX, endY);
|
|
26
|
+
context.stroke();
|
|
27
|
+
}
|
|
28
|
+
// Draw the line
|
|
29
|
+
context.strokeStyle = color;
|
|
30
|
+
context.lineWidth = thickness;
|
|
31
|
+
context.lineCap = 'round';
|
|
32
|
+
context.lineJoin = 'round';
|
|
33
|
+
context.beginPath();
|
|
34
|
+
context.moveTo(startX, startY);
|
|
35
|
+
context.lineTo(endX, endY);
|
|
36
|
+
context.stroke();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Draws a circle, optionally with an outline
|
|
40
|
+
* @param context Canvas 2D context
|
|
41
|
+
* @param x Center X coordinate
|
|
42
|
+
* @param y Center Y coordinate
|
|
43
|
+
* @param radius Circle radius
|
|
44
|
+
* @param color Circle color
|
|
45
|
+
* @param outlineColor Optional outline color
|
|
46
|
+
* @param outlineThickness Optional outline thickness
|
|
47
|
+
*/
|
|
48
|
+
export function drawCircle(context, x, y, radius, color, outlineColor, outlineThickness) {
|
|
49
|
+
// Draw outline if specified
|
|
50
|
+
if (outlineColor && outlineThickness) {
|
|
51
|
+
context.beginPath();
|
|
52
|
+
context.arc(x, y, radius + outlineThickness, 0, Math.PI * 2);
|
|
53
|
+
context.fillStyle = outlineColor;
|
|
54
|
+
context.fill();
|
|
55
|
+
}
|
|
56
|
+
// Draw the circle
|
|
57
|
+
context.beginPath();
|
|
58
|
+
context.arc(x, y, radius, 0, Math.PI * 2);
|
|
59
|
+
context.fillStyle = color;
|
|
60
|
+
context.fill();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Draws a large circle with stroke and optional fill
|
|
64
|
+
* @param context Canvas 2D context
|
|
65
|
+
* @param x Center X coordinate
|
|
66
|
+
* @param y Center Y coordinate
|
|
67
|
+
* @param radius Circle radius
|
|
68
|
+
* @param strokeColor Stroke color
|
|
69
|
+
* @param strokeThickness Stroke thickness
|
|
70
|
+
* @param fillColor Optional fill color
|
|
71
|
+
* @param fillOpacity Optional fill opacity (0-1)
|
|
72
|
+
* @param outlineColor Optional outline color
|
|
73
|
+
* @param outlineThickness Optional outline thickness
|
|
74
|
+
*/
|
|
75
|
+
export function drawLargeCircle(context, x, y, radius, strokeColor, strokeThickness, fillColor, fillOpacity, outlineColor, outlineThickness) {
|
|
76
|
+
// Draw fill if specified
|
|
77
|
+
if (fillColor && fillOpacity !== undefined) {
|
|
78
|
+
const originalAlpha = context.globalAlpha;
|
|
79
|
+
context.globalAlpha = fillOpacity;
|
|
80
|
+
context.fillStyle = fillColor;
|
|
81
|
+
context.beginPath();
|
|
82
|
+
context.arc(x, y, radius, 0, 2 * Math.PI);
|
|
83
|
+
context.fill();
|
|
84
|
+
context.globalAlpha = originalAlpha;
|
|
85
|
+
}
|
|
86
|
+
// Draw outline if specified
|
|
87
|
+
if (outlineColor && outlineThickness) {
|
|
88
|
+
context.strokeStyle = outlineColor;
|
|
89
|
+
context.lineWidth = strokeThickness + outlineThickness * 2;
|
|
90
|
+
context.beginPath();
|
|
91
|
+
context.arc(x, y, radius, 0, 2 * Math.PI);
|
|
92
|
+
context.stroke();
|
|
93
|
+
}
|
|
94
|
+
// Draw the main stroke
|
|
95
|
+
context.strokeStyle = strokeColor;
|
|
96
|
+
context.lineWidth = strokeThickness;
|
|
97
|
+
context.beginPath();
|
|
98
|
+
context.arc(x, y, radius, 0, 2 * Math.PI);
|
|
99
|
+
context.stroke();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Draws a rectangle with stroke and optional fill
|
|
103
|
+
* @param context Canvas 2D context
|
|
104
|
+
* @param x Top-left X coordinate
|
|
105
|
+
* @param y Top-left Y coordinate
|
|
106
|
+
* @param width Rectangle width
|
|
107
|
+
* @param height Rectangle height
|
|
108
|
+
* @param strokeColor Stroke color
|
|
109
|
+
* @param strokeThickness Stroke thickness
|
|
110
|
+
* @param fillColor Optional fill color
|
|
111
|
+
* @param fillOpacity Optional fill opacity (0-1)
|
|
112
|
+
* @param outlineColor Optional outline color
|
|
113
|
+
* @param outlineThickness Optional outline thickness
|
|
114
|
+
*/
|
|
115
|
+
export function drawRectangle(context, x, y, width, height, strokeColor, strokeThickness, fillColor, fillOpacity, outlineColor, outlineThickness) {
|
|
116
|
+
// Draw fill if specified
|
|
117
|
+
if (fillColor && fillOpacity !== undefined) {
|
|
118
|
+
const originalAlpha = context.globalAlpha;
|
|
119
|
+
context.globalAlpha = fillOpacity;
|
|
120
|
+
context.fillStyle = fillColor;
|
|
121
|
+
context.fillRect(x, y, width, height);
|
|
122
|
+
context.globalAlpha = originalAlpha;
|
|
123
|
+
}
|
|
124
|
+
// Draw outline if specified
|
|
125
|
+
if (outlineColor && outlineThickness) {
|
|
126
|
+
context.strokeStyle = outlineColor;
|
|
127
|
+
context.lineWidth = strokeThickness + outlineThickness * 2;
|
|
128
|
+
context.strokeRect(x, y, width, height);
|
|
129
|
+
}
|
|
130
|
+
// Draw the main stroke
|
|
131
|
+
context.strokeStyle = strokeColor;
|
|
132
|
+
context.lineWidth = strokeThickness;
|
|
133
|
+
context.strokeRect(x, y, width, height);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Draws a cone/sector with stroke and optional fill
|
|
137
|
+
* @param context Canvas 2D context
|
|
138
|
+
* @param x Center X coordinate
|
|
139
|
+
* @param y Center Y coordinate
|
|
140
|
+
* @param radius Cone radius
|
|
141
|
+
* @param startAngle Start angle in radians
|
|
142
|
+
* @param endAngle End angle in radians
|
|
143
|
+
* @param strokeColor Stroke color
|
|
144
|
+
* @param strokeThickness Stroke thickness
|
|
145
|
+
* @param fillColor Optional fill color
|
|
146
|
+
* @param fillOpacity Optional fill opacity (0-1)
|
|
147
|
+
* @param outlineColor Optional outline color
|
|
148
|
+
* @param outlineThickness Optional outline thickness
|
|
149
|
+
*/
|
|
150
|
+
export function drawCone(context, x, y, radius, startAngle, endAngle, strokeColor, strokeThickness, fillColor, fillOpacity, outlineColor, outlineThickness) {
|
|
151
|
+
// Invert angles for canvas coordinate system (Y increases downward)
|
|
152
|
+
const invertedStartAngle = -endAngle;
|
|
153
|
+
const invertedEndAngle = -startAngle;
|
|
154
|
+
// Draw fill if specified
|
|
155
|
+
if (fillColor && fillOpacity !== undefined) {
|
|
156
|
+
const originalAlpha = context.globalAlpha;
|
|
157
|
+
context.globalAlpha = fillOpacity;
|
|
158
|
+
context.fillStyle = fillColor;
|
|
159
|
+
context.beginPath();
|
|
160
|
+
context.moveTo(x, y);
|
|
161
|
+
context.arc(x, y, radius, invertedStartAngle, invertedEndAngle);
|
|
162
|
+
context.closePath();
|
|
163
|
+
context.fill();
|
|
164
|
+
context.globalAlpha = originalAlpha;
|
|
165
|
+
}
|
|
166
|
+
// Draw outline if specified
|
|
167
|
+
if (outlineColor && outlineThickness) {
|
|
168
|
+
context.strokeStyle = outlineColor;
|
|
169
|
+
context.lineWidth = strokeThickness + outlineThickness * 2;
|
|
170
|
+
context.beginPath();
|
|
171
|
+
context.moveTo(x, y);
|
|
172
|
+
context.arc(x, y, radius, invertedStartAngle, invertedEndAngle);
|
|
173
|
+
context.closePath();
|
|
174
|
+
context.stroke();
|
|
175
|
+
}
|
|
176
|
+
// Draw the main stroke
|
|
177
|
+
context.strokeStyle = strokeColor;
|
|
178
|
+
context.lineWidth = strokeThickness;
|
|
179
|
+
context.beginPath();
|
|
180
|
+
context.moveTo(x, y);
|
|
181
|
+
context.arc(x, y, radius, invertedStartAngle, invertedEndAngle);
|
|
182
|
+
context.closePath();
|
|
183
|
+
context.stroke();
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Creates a text canvas with consistent styling
|
|
187
|
+
* @param text The text to display
|
|
188
|
+
* @param fontSize Font size in pixels
|
|
189
|
+
* @param color Text color
|
|
190
|
+
* @param outlineColor Outline color
|
|
191
|
+
* @param outlineThickness Outline thickness
|
|
192
|
+
* @param units Optional units text to display in smaller font
|
|
193
|
+
* @returns Canvas element with rendered text
|
|
194
|
+
*/
|
|
195
|
+
export function createTextCanvas(text, fontSize, color, outlineColor = '#000000',
|
|
196
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
197
|
+
_outlineThickness = 16, units) {
|
|
198
|
+
const canvas = document.createElement('canvas');
|
|
199
|
+
const context = canvas.getContext('2d', { colorSpace: 'srgb' });
|
|
200
|
+
// Set canvas size
|
|
201
|
+
canvas.width = 256;
|
|
202
|
+
canvas.height = 256;
|
|
203
|
+
// Set composite operation to ensure proper alpha blending
|
|
204
|
+
context.globalCompositeOperation = 'source-over';
|
|
205
|
+
// Clear canvas to fully transparent (alpha = 0)
|
|
206
|
+
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
207
|
+
// Set text properties with semi-bold font
|
|
208
|
+
context.font = `600 ${fontSize}px Inter`;
|
|
209
|
+
context.textAlign = 'center';
|
|
210
|
+
context.textBaseline = 'alphabetic';
|
|
211
|
+
if (units) {
|
|
212
|
+
// Split rendering for number and units
|
|
213
|
+
const unitsFontSize = fontSize * 0.5; // 50% of the main font size
|
|
214
|
+
// Measure both parts with the same font we'll use for drawing
|
|
215
|
+
context.font = `600 ${fontSize}px Inter`;
|
|
216
|
+
const numberWidth = context.measureText(text).width;
|
|
217
|
+
context.font = `600 ${unitsFontSize}px Inter`;
|
|
218
|
+
const unitsWidth = context.measureText(' ' + units).width;
|
|
219
|
+
const totalWidth = numberWidth + unitsWidth;
|
|
220
|
+
// Calculate padding for the background box
|
|
221
|
+
const padding = fontSize * 0.3;
|
|
222
|
+
const boxWidth = totalWidth + padding * 2;
|
|
223
|
+
const boxHeight = fontSize + padding;
|
|
224
|
+
const boxX = (canvas.width - boxWidth) / 2;
|
|
225
|
+
const boxY = (canvas.height - boxHeight) / 2;
|
|
226
|
+
// Draw background box
|
|
227
|
+
context.fillStyle = color;
|
|
228
|
+
context.fillRect(boxX, boxY, boxWidth, boxHeight);
|
|
229
|
+
// Calculate starting position to center the combined text
|
|
230
|
+
const startX = (canvas.width - totalWidth) / 2;
|
|
231
|
+
// Center the text vertically - the baseline should be at the vertical center plus some offset
|
|
232
|
+
const baselineY = canvas.height / 2 + fontSize * 0.35;
|
|
233
|
+
// Draw number text
|
|
234
|
+
context.font = `600 ${fontSize}px Inter`;
|
|
235
|
+
context.textAlign = 'left';
|
|
236
|
+
context.textBaseline = 'alphabetic';
|
|
237
|
+
context.fillStyle = outlineColor;
|
|
238
|
+
context.fillText(text, startX, baselineY);
|
|
239
|
+
// Re-measure the actual rendered width to ensure proper spacing
|
|
240
|
+
const actualNumberWidth = context.measureText(text).width;
|
|
241
|
+
// Draw units text in smaller font, aligned to same baseline
|
|
242
|
+
context.font = `600 ${unitsFontSize}px Inter`;
|
|
243
|
+
context.textBaseline = 'alphabetic';
|
|
244
|
+
context.fillText(' ' + units, startX + actualNumberWidth, baselineY);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
// Original behavior for text without units
|
|
248
|
+
// Measure text for box dimensions
|
|
249
|
+
context.font = `600 ${fontSize}px Inter`;
|
|
250
|
+
const textMetrics = context.measureText(text);
|
|
251
|
+
const padding = fontSize * 0.3;
|
|
252
|
+
const boxWidth = textMetrics.width + padding * 2;
|
|
253
|
+
const boxHeight = fontSize + padding;
|
|
254
|
+
const boxX = (canvas.width - boxWidth) / 2;
|
|
255
|
+
const boxY = (canvas.height - boxHeight) / 2;
|
|
256
|
+
// Draw background box
|
|
257
|
+
context.fillStyle = color;
|
|
258
|
+
context.fillRect(boxX, boxY, boxWidth, boxHeight);
|
|
259
|
+
// Center the text vertically - the baseline should be at the vertical center plus some offset
|
|
260
|
+
const baselineY = canvas.height / 2 + fontSize * 0.35;
|
|
261
|
+
// Draw text on top
|
|
262
|
+
context.textBaseline = 'alphabetic';
|
|
263
|
+
context.fillStyle = outlineColor;
|
|
264
|
+
context.fillText(text, canvas.width / 2, baselineY);
|
|
265
|
+
}
|
|
266
|
+
return canvas;
|
|
267
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { GridType } from '../../GridLayer/types';
|
|
3
|
+
/**
|
|
4
|
+
* Calculate hex grid distance between two points
|
|
5
|
+
* @param startPoint Start point in pixel coordinates
|
|
6
|
+
* @param endPoint End point in pixel coordinates
|
|
7
|
+
* @param gridSpacing Grid spacing in inches
|
|
8
|
+
* @param displaySize Display size in inches
|
|
9
|
+
* @param displayResolution Display resolution in pixels
|
|
10
|
+
* @param worldGridSize The real-world size of one hex
|
|
11
|
+
* @param returnHexCount If true, returns hex count instead of world units
|
|
12
|
+
* @returns Distance in world grid units or hex count
|
|
13
|
+
*/
|
|
14
|
+
export declare function calculateHexGridDistance(startPoint: THREE.Vector2, endPoint: THREE.Vector2, gridSpacing: number, displaySize: {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
}, displayResolution: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
}, worldGridSize?: number, returnHexCount?: boolean): number;
|
|
21
|
+
/**
|
|
22
|
+
* Calculate grid-based distance between two points
|
|
23
|
+
* @param startPoint Start point in pixel coordinates
|
|
24
|
+
* @param endPoint End point in pixel coordinates
|
|
25
|
+
* @param gridSpacing Grid spacing in inches
|
|
26
|
+
* @param displaySize Display size in inches
|
|
27
|
+
* @param displayResolution Display resolution in pixels
|
|
28
|
+
* @param gridType Type of grid (square or hex)
|
|
29
|
+
* @param snapToGrid Whether snapping is enabled
|
|
30
|
+
* @param enableDMG252 Whether to use DMG 252 diagonal rules
|
|
31
|
+
* @param worldGridSize The real-world size of one grid square
|
|
32
|
+
* @param worldGridUnits The units for the world grid size
|
|
33
|
+
* @returns Distance in world grid units
|
|
34
|
+
*/
|
|
35
|
+
export declare function calculateLineDistance(startPoint: THREE.Vector2, endPoint: THREE.Vector2, gridSpacing: number, displaySize: {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
}, displayResolution: {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
}, gridType?: GridType, snapToGrid?: boolean, enableDMG252?: boolean, worldGridSize?: number, _worldGridUnits?: string): number;
|
|
42
|
+
/**
|
|
43
|
+
* Calculate D&D diagonal movement distance
|
|
44
|
+
* In D&D, diagonal movement costs 1.5 times normal movement
|
|
45
|
+
* This is implemented as: max(dx, dy) + min(dx, dy) * 0.5
|
|
46
|
+
*/
|
|
47
|
+
export declare function calculateDnDDiagonalDistance(startPoint: THREE.Vector2, endPoint: THREE.Vector2): number;
|
|
48
|
+
/**
|
|
49
|
+
* Calculate distance using DMG 252 diagonal movement rules
|
|
50
|
+
* First diagonal = 1 grid unit, second = 2 grid units, alternating
|
|
51
|
+
* Only applies when snapping to square grid
|
|
52
|
+
*/
|
|
53
|
+
export declare function calculateDMG252Distance(startPoint: THREE.Vector2, endPoint: THREE.Vector2): number;
|
|
54
|
+
/**
|
|
55
|
+
* Calculate radius from center point to edge point
|
|
56
|
+
*/
|
|
57
|
+
export declare function calculateRadius(centerPoint: THREE.Vector2, edgePoint: THREE.Vector2): number;
|
|
58
|
+
/**
|
|
59
|
+
* Calculate area of a circle
|
|
60
|
+
*/
|
|
61
|
+
export declare function calculateCircleArea(radius: number): number;
|
|
62
|
+
/**
|
|
63
|
+
* Calculate area of a square
|
|
64
|
+
*/
|
|
65
|
+
export declare function calculateSquareArea(sideLength: number): number;
|
|
66
|
+
/**
|
|
67
|
+
* Convert pixels to game units (assuming 1 inch = 1 unit)
|
|
68
|
+
* This is a placeholder - actual conversion depends on grid scale
|
|
69
|
+
*/
|
|
70
|
+
export declare function pixelsToUnits(pixels: number, pixelsPerUnit?: number): number;
|
|
71
|
+
/**
|
|
72
|
+
* Convert game units to pixels
|
|
73
|
+
*/
|
|
74
|
+
export declare function unitsToPixels(units: number, pixelsPerUnit?: number): number;
|