@tableslayer/ui 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/dist/components/MarkerTooltip/MarkerTooltip.svelte +9 -1
  2. package/dist/components/MarkerTooltip/MarkerTooltip.svelte.d.ts +13 -16
  3. package/dist/components/index.d.ts +0 -5
  4. package/dist/components/index.js +0 -5
  5. package/package.json +1 -8
  6. package/dist/components/DrawingSliders/DrawingSliders.svelte +0 -379
  7. package/dist/components/DrawingSliders/DrawingSliders.svelte.d.ts +0 -16
  8. package/dist/components/DrawingSliders/index.d.ts +0 -1
  9. package/dist/components/DrawingSliders/index.js +0 -1
  10. package/dist/components/MyCounterButton.svelte +0 -11
  11. package/dist/components/MyCounterButton.svelte.d.ts +0 -3
  12. package/dist/components/PropsTable/PropsTable.svelte +0 -107
  13. package/dist/components/PropsTable/PropsTable.svelte.d.ts +0 -26
  14. package/dist/components/RadialMenu/EffectPreview.svelte +0 -36
  15. package/dist/components/RadialMenu/EffectPreview.svelte.d.ts +0 -9
  16. package/dist/components/RadialMenu/EffectPreviewScene.svelte +0 -194
  17. package/dist/components/RadialMenu/EffectPreviewScene.svelte.d.ts +0 -8
  18. package/dist/components/RadialMenu/RadialMenu.svelte +0 -503
  19. package/dist/components/RadialMenu/RadialMenu.svelte.d.ts +0 -4
  20. package/dist/components/RadialMenu/RadialMenuItem.svelte +0 -176
  21. package/dist/components/RadialMenu/RadialMenuItem.svelte.d.ts +0 -11
  22. package/dist/components/RadialMenu/index.d.ts +0 -2
  23. package/dist/components/RadialMenu/index.js +0 -2
  24. package/dist/components/RadialMenu/types.d.ts +0 -35
  25. package/dist/components/RadialMenu/types.js +0 -1
  26. package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +0 -445
  27. package/dist/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte.d.ts +0 -19
  28. package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +0 -167
  29. package/dist/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte.d.ts +0 -20
  30. package/dist/components/Stage/components/AnnotationLayer/types.d.ts +0 -121
  31. package/dist/components/Stage/components/AnnotationLayer/types.js +0 -71
  32. package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte +0 -148
  33. package/dist/components/Stage/components/CursorLayer/CursorLayer.svelte.d.ts +0 -7
  34. package/dist/components/Stage/components/CursorLayer/cursor.svg +0 -26
  35. package/dist/components/Stage/components/CursorLayer/index.d.ts +0 -2
  36. package/dist/components/Stage/components/CursorLayer/index.js +0 -1
  37. package/dist/components/Stage/components/CursorLayer/types.d.ts +0 -28
  38. package/dist/components/Stage/components/CursorLayer/types.js +0 -1
  39. package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +0 -364
  40. package/dist/components/Stage/components/DrawingLayer/DrawingMaterial.svelte.d.ts +0 -24
  41. package/dist/components/Stage/components/DrawingLayer/types.d.ts +0 -56
  42. package/dist/components/Stage/components/DrawingLayer/types.js +0 -23
  43. package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +0 -72
  44. package/dist/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte.d.ts +0 -11
  45. package/dist/components/Stage/components/EdgeOverlayLayer/types.d.ts +0 -29
  46. package/dist/components/Stage/components/EdgeOverlayLayer/types.js +0 -1
  47. package/dist/components/Stage/components/FogLayer/FogLayer.svelte +0 -75
  48. package/dist/components/Stage/components/FogLayer/FogLayer.svelte.d.ts +0 -11
  49. package/dist/components/Stage/components/FogLayer/types.d.ts +0 -42
  50. package/dist/components/Stage/components/FogLayer/types.js +0 -1
  51. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +0 -249
  52. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte.d.ts +0 -19
  53. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +0 -200
  54. package/dist/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte.d.ts +0 -18
  55. package/dist/components/Stage/components/FogOfWarLayer/types.d.ts +0 -143
  56. package/dist/components/Stage/components/FogOfWarLayer/types.js +0 -1
  57. package/dist/components/Stage/components/GridLayer/GridLayer.svelte +0 -20
  58. package/dist/components/Stage/components/GridLayer/GridLayer.svelte.d.ts +0 -12
  59. package/dist/components/Stage/components/GridLayer/GridMaterial.svelte +0 -69
  60. package/dist/components/Stage/components/GridLayer/GridMaterial.svelte.d.ts +0 -10
  61. package/dist/components/Stage/components/GridLayer/types.d.ts +0 -65
  62. package/dist/components/Stage/components/GridLayer/types.js +0 -10
  63. package/dist/components/Stage/components/LayerInput/LayerInput.svelte +0 -300
  64. package/dist/components/Stage/components/LayerInput/LayerInput.svelte.d.ts +0 -20
  65. package/dist/components/Stage/components/MapLayer/MapLayer.svelte +0 -196
  66. package/dist/components/Stage/components/MapLayer/MapLayer.svelte.d.ts +0 -24
  67. package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.d.ts +0 -93
  68. package/dist/components/Stage/components/MapLayer/dataSources/GifDataSource.js +0 -229
  69. package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.d.ts +0 -51
  70. package/dist/components/Stage/components/MapLayer/dataSources/IMapDataSource.js +0 -1
  71. package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.d.ts +0 -49
  72. package/dist/components/Stage/components/MapLayer/dataSources/ImageDataSource.js +0 -87
  73. package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.d.ts +0 -52
  74. package/dist/components/Stage/components/MapLayer/dataSources/VideoDataSource.js +0 -141
  75. package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.d.ts +0 -21
  76. package/dist/components/Stage/components/MapLayer/dataSources/dataSourceFactory.js +0 -44
  77. package/dist/components/Stage/components/MapLayer/dataSources/index.d.ts +0 -15
  78. package/dist/components/Stage/components/MapLayer/dataSources/index.js +0 -14
  79. package/dist/components/Stage/components/MapLayer/types.d.ts +0 -54
  80. package/dist/components/Stage/components/MapLayer/types.js +0 -9
  81. package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte +0 -398
  82. package/dist/components/Stage/components/MarkerLayer/MarkerLayer.svelte.d.ts +0 -24
  83. package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte +0 -262
  84. package/dist/components/Stage/components/MarkerLayer/MarkerToken.svelte.d.ts +0 -27
  85. package/dist/components/Stage/components/MarkerLayer/types.d.ts +0 -109
  86. package/dist/components/Stage/components/MarkerLayer/types.js +0 -21
  87. package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +0 -364
  88. package/dist/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte.d.ts +0 -49
  89. package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +0 -473
  90. package/dist/components/Stage/components/MeasurementLayer/MeasurementManager.svelte.d.ts +0 -24
  91. package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.d.ts +0 -150
  92. package/dist/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.js +0 -274
  93. package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.d.ts +0 -10
  94. package/dist/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.js +0 -58
  95. package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.d.ts +0 -9
  96. package/dist/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.js +0 -66
  97. package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.d.ts +0 -10
  98. package/dist/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.js +0 -103
  99. package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.d.ts +0 -9
  100. package/dist/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.js +0 -75
  101. package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.d.ts +0 -9
  102. package/dist/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.js +0 -73
  103. package/dist/components/Stage/components/MeasurementLayer/measurements/index.d.ts +0 -2
  104. package/dist/components/Stage/components/MeasurementLayer/measurements/index.js +0 -7
  105. package/dist/components/Stage/components/MeasurementLayer/types.d.ts +0 -76
  106. package/dist/components/Stage/components/MeasurementLayer/types.js +0 -9
  107. package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.d.ts +0 -83
  108. package/dist/components/Stage/components/MeasurementLayer/utils/canvasDrawing.js +0 -267
  109. package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.d.ts +0 -74
  110. package/dist/components/Stage/components/MeasurementLayer/utils/distanceCalculations.js +0 -130
  111. package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte +0 -220
  112. package/dist/components/Stage/components/ParticleSystem/ParticleSystem.svelte.d.ts +0 -9
  113. package/dist/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
  114. package/dist/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
  115. package/dist/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
  116. package/dist/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
  117. package/dist/components/Stage/components/ParticleSystem/rng.d.ts +0 -7
  118. package/dist/components/Stage/components/ParticleSystem/rng.js +0 -20
  119. package/dist/components/Stage/components/ParticleSystem/types.d.ts +0 -88
  120. package/dist/components/Stage/components/ParticleSystem/types.js +0 -37
  121. package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +0 -144
  122. package/dist/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte.d.ts +0 -19
  123. package/dist/components/Stage/components/PerformanceDebugger/index.d.ts +0 -1
  124. package/dist/components/Stage/components/PerformanceDebugger/index.js +0 -1
  125. package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +0 -208
  126. package/dist/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte.d.ts +0 -7
  127. package/dist/components/Stage/components/PerformanceOverlay/index.d.ts +0 -1
  128. package/dist/components/Stage/components/PerformanceOverlay/index.js +0 -1
  129. package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte +0 -201
  130. package/dist/components/Stage/components/PointerInputManager/PointerInputManager.svelte.d.ts +0 -17
  131. package/dist/components/Stage/components/Scene/Scene.svelte +0 -651
  132. package/dist/components/Stage/components/Scene/Scene.svelte.d.ts +0 -88
  133. package/dist/components/Stage/components/Scene/luts.d.ts +0 -7
  134. package/dist/components/Stage/components/Scene/luts.js +0 -33
  135. package/dist/components/Stage/components/Scene/types.d.ts +0 -207
  136. package/dist/components/Stage/components/Scene/types.js +0 -35
  137. package/dist/components/Stage/components/Stage/Stage.svelte +0 -332
  138. package/dist/components/Stage/components/Stage/Stage.svelte.d.ts +0 -86
  139. package/dist/components/Stage/components/Stage/types.d.ts +0 -163
  140. package/dist/components/Stage/components/Stage/types.js +0 -5
  141. package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte +0 -135
  142. package/dist/components/Stage/components/WeatherLayer/WeatherLayer.svelte.d.ts +0 -13
  143. package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.d.ts +0 -3
  144. package/dist/components/Stage/components/WeatherLayer/presets/AshPreset.js +0 -69
  145. package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.d.ts +0 -3
  146. package/dist/components/Stage/components/WeatherLayer/presets/LeavesPreset.js +0 -68
  147. package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.d.ts +0 -3
  148. package/dist/components/Stage/components/WeatherLayer/presets/RainPreset.js +0 -67
  149. package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.d.ts +0 -3
  150. package/dist/components/Stage/components/WeatherLayer/presets/SnowPreset.js +0 -68
  151. package/dist/components/Stage/components/WeatherLayer/presets/index.d.ts +0 -5
  152. package/dist/components/Stage/components/WeatherLayer/presets/index.js +0 -5
  153. package/dist/components/Stage/components/WeatherLayer/types.d.ts +0 -31
  154. package/dist/components/Stage/components/WeatherLayer/types.js +0 -9
  155. package/dist/components/Stage/helpers/clippingPlaneStore.svelte.d.ts +0 -7
  156. package/dist/components/Stage/helpers/clippingPlaneStore.svelte.js +0 -23
  157. package/dist/components/Stage/helpers/debugState.svelte.d.ts +0 -10
  158. package/dist/components/Stage/helpers/debugState.svelte.js +0 -13
  159. package/dist/components/Stage/helpers/grid.d.ts +0 -72
  160. package/dist/components/Stage/helpers/grid.js +0 -444
  161. package/dist/components/Stage/helpers/lazyBrush.d.ts +0 -63
  162. package/dist/components/Stage/helpers/lazyBrush.js +0 -137
  163. package/dist/components/Stage/helpers/performanceMetrics.svelte.d.ts +0 -62
  164. package/dist/components/Stage/helpers/performanceMetrics.svelte.js +0 -165
  165. package/dist/components/Stage/helpers/utils.d.ts +0 -3
  166. package/dist/components/Stage/helpers/utils.js +0 -18
  167. package/dist/components/Stage/index.d.ts +0 -21
  168. package/dist/components/Stage/index.js +0 -21
  169. package/dist/components/Stage/shaders/AnnotationEffects.frag +0 -1070
  170. package/dist/components/Stage/shaders/Annotations.frag +0 -29
  171. package/dist/components/Stage/shaders/Drawing.frag +0 -83
  172. package/dist/components/Stage/shaders/Drawing.vert +0 -5
  173. package/dist/components/Stage/shaders/Fog.frag +0 -147
  174. package/dist/components/Stage/shaders/FractalNoise.frag +0 -96
  175. package/dist/components/Stage/shaders/GridShader.frag +0 -174
  176. package/dist/components/Stage/shaders/Overlay.frag +0 -23
  177. package/dist/components/Stage/shaders/Overlay.vert +0 -0
  178. package/dist/components/Stage/shaders/Particles.frag +0 -27
  179. package/dist/components/Stage/shaders/Particles.vert +0 -51
  180. package/dist/components/Stage/shaders/ToolOutline.frag +0 -59
  181. package/dist/components/Stage/shaders/default.vert +0 -8
  182. package/dist/components/Stage/types.d.ts +0 -4
  183. package/dist/components/Stage/types.js +0 -1
@@ -1,7 +1,15 @@
1
1
  <script lang="ts">
2
- import { MarkerVisibility } from '../Stage/components/MarkerLayer/types';
3
2
  import { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';
4
3
  import { Editor } from '../Editor';
4
+
5
+ // Duplicated from @tableslayer/stage to avoid circular dependency
6
+ const MarkerVisibility = {
7
+ Always: 0,
8
+ DM: 1,
9
+ Player: 2,
10
+ Hover: 3
11
+ } as const;
12
+ type MarkerVisibility = (typeof MarkerVisibility)[keyof typeof MarkerVisibility];
5
13
  import { onMount, onDestroy } from 'svelte';
6
14
  import { IconPin, IconPinFilled } from '@tabler/icons-svelte';
7
15
 
@@ -1,17 +1,15 @@
1
- import { MarkerVisibility } from '../Stage/components/MarkerLayer/types';
2
- interface MarkerData {
3
- id: string;
4
- title?: string;
5
- note?: unknown;
6
- visibility?: MarkerVisibility;
7
- size?: number;
8
- tooltip?: {
1
+ declare const MarkerTooltip: import("svelte").Component<{
2
+ marker: {
3
+ id: string;
9
4
  title?: string;
10
- content?: unknown;
11
- };
12
- }
13
- interface Props {
14
- marker: MarkerData | null;
5
+ note?: unknown;
6
+ visibility?: 0 | 1 | 2 | 3;
7
+ size?: number;
8
+ tooltip?: {
9
+ title?: string;
10
+ content?: unknown;
11
+ };
12
+ } | null;
15
13
  position: {
16
14
  x: number;
17
15
  y: number;
@@ -26,10 +24,9 @@ interface Props {
26
24
  element: HTMLElement;
27
25
  bounds: DOMRect;
28
26
  }>;
29
- preferredPlacement?: 'top' | 'bottom' | 'left' | 'right';
27
+ preferredPlacement?: "top" | "bottom" | "left" | "right";
30
28
  onTooltipMount?: (element: HTMLElement, bounds: DOMRect) => void;
31
29
  onTooltipUnmount?: (element: HTMLElement) => void;
32
- }
33
- declare const MarkerTooltip: import("svelte").Component<Props, {}, "">;
30
+ }, {}, "">;
34
31
  type MarkerTooltip = ReturnType<typeof MarkerTooltip>;
35
32
  export default MarkerTooltip;
@@ -6,7 +6,6 @@ export * from './CodeBlock';
6
6
  export * from './ColorMode';
7
7
  export * from './ColorPicker';
8
8
  export * from './ContextMenu';
9
- export * from './DrawingSliders';
10
9
  export * from './Editor';
11
10
  export * from './FogSliders';
12
11
  export * from './Hr';
@@ -16,15 +15,11 @@ export * from './Link';
16
15
  export * from './Loading';
17
16
  export * from './Logo';
18
17
  export * from './Menu';
19
- export { default as MyCounterButton } from './MyCounterButton.svelte';
20
18
  export * from './Panel';
21
19
  export * from './PersistButton';
22
20
  export * from './Popover';
23
- export { default as PropsTable } from './PropsTable/PropsTable.svelte';
24
- export * from './RadialMenu';
25
21
  export * from './Select';
26
22
  export * from './Spacer';
27
- export * from './Stage';
28
23
  export * from './Table';
29
24
  export * from './Text';
30
25
  export * from './Title';
@@ -6,7 +6,6 @@ export * from './CodeBlock';
6
6
  export * from './ColorMode';
7
7
  export * from './ColorPicker';
8
8
  export * from './ContextMenu';
9
- export * from './DrawingSliders';
10
9
  export * from './Editor';
11
10
  export * from './FogSliders';
12
11
  export * from './Hr';
@@ -16,15 +15,11 @@ export * from './Link';
16
15
  export * from './Loading';
17
16
  export * from './Logo';
18
17
  export * from './Menu';
19
- export { default as MyCounterButton } from './MyCounterButton.svelte';
20
18
  export * from './Panel';
21
19
  export * from './PersistButton';
22
20
  export * from './Popover';
23
- export { default as PropsTable } from './PropsTable/PropsTable.svelte';
24
- export * from './RadialMenu';
25
21
  export * from './Select';
26
22
  export * from './Spacer';
27
- export * from './Stage';
28
23
  export * from './Table';
29
24
  export * from './Text';
30
25
  export * from './Title';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tableslayer/ui",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "license": "FSL-1.1-ALv2",
5
5
  "repository": {
6
6
  "type": "git",
@@ -65,7 +65,6 @@
65
65
  "@tableslayer/tsconfig": "workspace:*",
66
66
  "@types/chroma-js": "^3.1.2",
67
67
  "@types/marked": "^6.0.0",
68
- "@types/three": "0.182.0",
69
68
  "marked": "^17.0.2",
70
69
  "svelte": "5.51.2",
71
70
  "svelte-check": "^4.4.0",
@@ -76,8 +75,6 @@
76
75
  "dependencies": {
77
76
  "@floating-ui/dom": "^1.7.5",
78
77
  "@tabler/icons-svelte": "^3.36.1",
79
- "@threlte/core": "8.3.1",
80
- "@threlte/extras": "9.7.1",
81
78
  "@tiptap/core": "^3.19.0",
82
79
  "@tiptap/extension-link": "^3.19.0",
83
80
  "@tiptap/extension-typography": "^3.19.0",
@@ -85,11 +82,7 @@
85
82
  "@tiptap/starter-kit": "^3.19.0",
86
83
  "chroma-js": "^3.2.0",
87
84
  "class-variance-authority": "^0.7.1",
88
- "gifuct-js": "^2.1.2",
89
- "lazy-brush": "^2.0.2",
90
- "postprocessing": "6.38.2",
91
85
  "shiki": "^3.22.0",
92
- "three": "0.182.0",
93
86
  "uuid": "^13.0.0",
94
87
  "zod": "^4.3.6"
95
88
  },
@@ -1,379 +0,0 @@
1
- <script lang="ts">
2
- import { Popover } from '../Popover';
3
- import { Icon } from '../Icon';
4
- import { IconButton } from '../Button';
5
- import {
6
- IconBoxMultiple,
7
- IconBoxMultiple1,
8
- IconBoxMultiple2,
9
- IconBoxMultiple3,
10
- IconBoxMultiple4,
11
- IconBoxMultiple5,
12
- IconBoxMultiple6,
13
- IconBoxMultiple7,
14
- IconBoxMultiple8,
15
- IconBoxMultiple9
16
- } from '@tabler/icons-svelte';
17
- import type { ComponentType } from 'svelte';
18
- import { AnnotationEffect } from '../Stage/components/AnnotationLayer/types';
19
- import EffectPreview from '../RadialMenu/EffectPreview.svelte';
20
-
21
- // Color palette - 10 colors
22
- const COLORS = [
23
- '#d73e2e', // red
24
- '#ffa500', // orange
25
- '#ffd93d', // yellow
26
- '#6bcf7f', // green
27
- '#2e86ab', // blue
28
- '#b197fc', // purple
29
- '#f06595', // pink
30
- '#20c997', // turquoise
31
- '#ffffff', // white
32
- '#2a2a2a' // dark
33
- ];
34
-
35
- // Effects array
36
- const EFFECTS = [
37
- AnnotationEffect.Fire,
38
- AnnotationEffect.Water,
39
- AnnotationEffect.Ice,
40
- AnnotationEffect.Magic,
41
- AnnotationEffect.Grease,
42
- AnnotationEffect.SpaceTear
43
- ];
44
-
45
- // Effect colors for the opacity slider gradient
46
- const EFFECT_COLORS: Record<AnnotationEffect, string> = {
47
- [AnnotationEffect.None]: '#ffffff',
48
- [AnnotationEffect.Fire]: '#ff4d1a',
49
- [AnnotationEffect.Water]: '#3380cc',
50
- [AnnotationEffect.Ice]: '#b3d9ff',
51
- [AnnotationEffect.Magic]: '#9333ea',
52
- [AnnotationEffect.Grease]: '#4d3319',
53
- [AnnotationEffect.SpaceTear]: '#330066'
54
- };
55
-
56
- interface Props {
57
- opacity: number;
58
- brushSize: number;
59
- color: string;
60
- activeLayerIndex: number;
61
- currentEffect?: AnnotationEffect;
62
- onOpacityChange: (value: number) => void;
63
- onBrushSizeChange: (value: number) => void;
64
- onColorChange: (color: string, opacity: number) => void;
65
- onEffectChange?: (effect: AnnotationEffect) => void;
66
- onLayersClick: () => void;
67
- }
68
-
69
- let {
70
- opacity,
71
- brushSize,
72
- color,
73
- activeLayerIndex,
74
- currentEffect = AnnotationEffect.None,
75
- onOpacityChange,
76
- onBrushSizeChange,
77
- onColorChange,
78
- onEffectChange,
79
- onLayersClick
80
- }: Props = $props();
81
-
82
- // Select the appropriate icon based on layer count
83
- const layerIcons: ComponentType[] = [
84
- IconBoxMultiple1,
85
- IconBoxMultiple2,
86
- IconBoxMultiple3,
87
- IconBoxMultiple4,
88
- IconBoxMultiple5,
89
- IconBoxMultiple6,
90
- IconBoxMultiple7,
91
- IconBoxMultiple8,
92
- IconBoxMultiple9
93
- ];
94
-
95
- const layerIcon = $derived.by(() => {
96
- // activeLayerIndex is 1-based (1st layer, 2nd layer, etc.)
97
- return activeLayerIndex <= 9 && activeLayerIndex > 0 ? layerIcons[activeLayerIndex - 1] : IconBoxMultiple;
98
- });
99
-
100
- // Check if current selection is an effect
101
- const hasEffect = $derived(currentEffect !== AnnotationEffect.None);
102
-
103
- // Brush size is now stored as a percentage (0.01% to 5%)
104
- // Use quadratic curve for slider to give more precision to lower values
105
- // Slider range: 0-100, maps to percentage range: 0.01-5.0
106
- // At 50% slider we want 2%, so we use: percentage = 0.0008 * slider^2
107
- // This gives: 10% → 0.08%, 50% → 2%, 100% → 8% (capped at 5%)
108
- const percentageToSlider = (percentage: number): number => {
109
- // Inverse: slider = sqrt(percentage / 0.0008)
110
- // Clamp to minimum of 0.01
111
- const clampedPercentage = Math.max(0.01, percentage);
112
- return Math.sqrt(clampedPercentage / 0.0008);
113
- };
114
-
115
- const sliderToPercentage = (slider: number): number => {
116
- // Quadratic curve: percentage = 0.0008 * slider^2
117
- const percentage = 0.0008 * slider * slider;
118
- return Math.max(0.01, Math.min(5.0, percentage));
119
- };
120
-
121
- let brushSliderValue = $derived(percentageToSlider(brushSize));
122
-
123
- const handleBrushSliderChange = (value: number) => {
124
- const actualPercentage = sliderToPercentage(value);
125
- onBrushSizeChange(actualPercentage);
126
- };
127
-
128
- const handleColorSelect = (selectedColor: string, close?: () => void) => {
129
- onColorChange(selectedColor, opacity);
130
- // Clear any active effect when selecting a color
131
- onEffectChange?.(AnnotationEffect.None);
132
- close?.();
133
- };
134
-
135
- const handleEffectSelect = (effect: AnnotationEffect, close?: () => void) => {
136
- // Set color to match the effect for the opacity slider gradient
137
- onColorChange(EFFECT_COLORS[effect], opacity);
138
- onEffectChange?.(effect);
139
- close?.();
140
- };
141
-
142
- // Touch event handlers for better mobile support
143
- const handleTouchStart = (e: TouchEvent) => {
144
- // Prevent default to avoid conflicts with other touch interactions
145
- e.stopPropagation();
146
- };
147
-
148
- const handleTouchMove = (e: TouchEvent) => {
149
- // Prevent scrolling while adjusting sliders
150
- e.preventDefault();
151
- e.stopPropagation();
152
- };
153
- </script>
154
-
155
- <div class="drawingSliders">
156
- <div class="drawingSliders__slider">
157
- <Popover portal="body" positioning={{ placement: 'left', gutter: 12 }}>
158
- {#snippet trigger()}
159
- <button class="drawingSliders__colorSwatch" aria-label="Change annotation color or effect">
160
- {#if hasEffect}
161
- <EffectPreview effectType={currentEffect} size="2rem" shape="rounded" />
162
- {:else}
163
- <span class="drawingSliders__colorSwatchInner" style:background-color={color} style:opacity></span>
164
- {/if}
165
- </button>
166
- {/snippet}
167
- {#snippet content({ contentProps })}
168
- <div class="drawingSliders__swatchGrid">
169
- {#each COLORS as swatchColor}
170
- <button
171
- class="drawingSliders__gridItem"
172
- onclick={() => handleColorSelect(swatchColor, contentProps.close)}
173
- aria-label="Select color {swatchColor}"
174
- >
175
- <span class="drawingSliders__gridSwatch" style:background-color={swatchColor}></span>
176
- </button>
177
- {/each}
178
- {#each EFFECTS as effect}
179
- <button
180
- class="drawingSliders__gridItem"
181
- onclick={() => handleEffectSelect(effect, contentProps.close)}
182
- aria-label="Select effect"
183
- >
184
- <EffectPreview effectType={effect} size="2rem" shape="rounded" />
185
- </button>
186
- {/each}
187
- </div>
188
- {/snippet}
189
- </Popover>
190
- <input
191
- id="opacity-slider"
192
- type="range"
193
- class="drawingSliders__input drawingSliders__input--opacity"
194
- style="--slider-color: {color}"
195
- min="0"
196
- max="1"
197
- step="0.01"
198
- value={opacity}
199
- oninput={(e) => onOpacityChange(Number(e.currentTarget.value))}
200
- ontouchstart={handleTouchStart}
201
- ontouchmove={handleTouchMove}
202
- />
203
- <div class="drawingSliders__value">{Math.round(opacity * 100)}%</div>
204
- </div>
205
-
206
- <div class="drawingSliders__slider">
207
- <input
208
- id="brush-size-slider"
209
- type="range"
210
- class="drawingSliders__input"
211
- min="0"
212
- max="100"
213
- step="0.1"
214
- value={brushSliderValue}
215
- oninput={(e) => handleBrushSliderChange(Number(e.currentTarget.value))}
216
- ontouchstart={handleTouchStart}
217
- ontouchmove={handleTouchMove}
218
- />
219
- <div class="drawingSliders__value">{brushSize.toFixed(2)}%</div>
220
- </div>
221
-
222
- <IconButton
223
- variant="ghost"
224
- onclick={onLayersClick}
225
- aria-label="Toggle annotation layers panel"
226
- title="Manage drawing layers"
227
- >
228
- <Icon Icon={layerIcon} size="1.25rem" />
229
- </IconButton>
230
- </div>
231
-
232
- <style>
233
- .drawingSliders {
234
- position: absolute;
235
- top: 50%;
236
- right: 1rem;
237
- transform: translateY(-50%);
238
- display: flex;
239
- flex-direction: column;
240
- gap: 1rem;
241
- z-index: 10;
242
- pointer-events: auto;
243
- background-color: var(--bg);
244
- border: var(--borderThin);
245
- border-radius: var(--radius-2);
246
- padding: 0.5rem 0rem;
247
- align-items: center;
248
- }
249
-
250
- .drawingSliders__slider {
251
- display: flex;
252
- flex-direction: column;
253
- align-items: center;
254
- gap: 1rem;
255
- }
256
-
257
- .drawingSliders__input {
258
- writing-mode: vertical-lr;
259
- direction: rtl;
260
- width: 32px;
261
- height: 120px;
262
- -webkit-appearance: none;
263
- appearance: none;
264
- background: var(--contrastLow);
265
- border-radius: var(--radius-1);
266
- cursor: pointer;
267
- touch-action: none; /* Prevent default touch behaviors */
268
- outline: none;
269
- }
270
-
271
- .drawingSliders__input--opacity {
272
- background: linear-gradient(to top, transparent, var(--slider-color));
273
- }
274
-
275
- /* Webkit browsers (Chrome, Safari, Edge) */
276
- .drawingSliders__input::-webkit-slider-track {
277
- width: 32px;
278
- height: 120px;
279
- background: transparent;
280
- border: none;
281
- }
282
-
283
- .drawingSliders__input::-webkit-slider-thumb {
284
- -webkit-appearance: none;
285
- appearance: none;
286
- width: 32px;
287
- height: 14px;
288
- background: var(--contrastHigh);
289
- border: none;
290
- border-radius: var(--radius-1);
291
- cursor: grab;
292
- box-shadow: 0 0px 2px rgba(0, 0, 0, 0.2);
293
- }
294
-
295
- .drawingSliders__input::-webkit-slider-thumb:active {
296
- cursor: grabbing;
297
- }
298
-
299
- /* Firefox */
300
- .drawingSliders__input::-moz-range-track {
301
- width: 32px;
302
- height: 120px;
303
- background: var(--contrastLow);
304
- border-radius: var(--radius-2);
305
- }
306
-
307
- .drawingSliders__input--opacity::-moz-range-track {
308
- background: linear-gradient(to top, transparent, var(--slider-color));
309
- }
310
-
311
- .drawingSliders__input::-moz-range-thumb {
312
- width: 32px;
313
- height: 14px;
314
- background: var(--contrastHigh);
315
- border: none;
316
- border-radius: var(--radius-2);
317
- cursor: grab;
318
- box-shadow: 0 0px 2px rgba(0, 0, 0, 0.2);
319
- }
320
-
321
- .drawingSliders__input::-moz-range-thumb:active {
322
- cursor: grabbing;
323
- }
324
-
325
- .drawingSliders__value {
326
- font-size: 0.875rem;
327
- font-weight: 600;
328
- color: var(--fg);
329
- min-width: 3rem;
330
- text-align: center;
331
- }
332
-
333
- .drawingSliders__colorSwatch {
334
- width: 2rem;
335
- height: 2rem;
336
- border-radius: var(--radius-2);
337
- cursor: pointer;
338
- transition: border-color 0.2s;
339
- padding: 0;
340
- border: none;
341
- background: transparent;
342
- overflow: hidden;
343
- }
344
-
345
- .drawingSliders__colorSwatchInner {
346
- display: block;
347
- width: 100%;
348
- height: 100%;
349
- border-radius: var(--radius-2);
350
- }
351
-
352
- .drawingSliders__swatchGrid {
353
- display: grid;
354
- grid-template-columns: repeat(4, 1fr);
355
- gap: 0.5rem;
356
- background-color: var(--bg);
357
- border-radius: var(--radius-2);
358
- }
359
-
360
- .drawingSliders__gridItem {
361
- width: 2rem;
362
- height: 2rem;
363
- border-radius: var(--radius-2);
364
- cursor: pointer;
365
- border: none;
366
- padding: 0;
367
- background: transparent;
368
- display: flex;
369
- align-items: center;
370
- justify-content: center;
371
- overflow: hidden;
372
- }
373
-
374
- .drawingSliders__gridSwatch {
375
- width: 2rem;
376
- height: 2rem;
377
- border-radius: var(--radius-1);
378
- }
379
- </style>
@@ -1,16 +0,0 @@
1
- import { AnnotationEffect } from '../Stage/components/AnnotationLayer/types';
2
- interface Props {
3
- opacity: number;
4
- brushSize: number;
5
- color: string;
6
- activeLayerIndex: number;
7
- currentEffect?: AnnotationEffect;
8
- onOpacityChange: (value: number) => void;
9
- onBrushSizeChange: (value: number) => void;
10
- onColorChange: (color: string, opacity: number) => void;
11
- onEffectChange?: (effect: AnnotationEffect) => void;
12
- onLayersClick: () => void;
13
- }
14
- declare const DrawingSliders: import("svelte").Component<Props, {}, "">;
15
- type DrawingSliders = ReturnType<typeof DrawingSliders>;
16
- export default DrawingSliders;
@@ -1 +0,0 @@
1
- export { default as DrawingSliders } from './DrawingSliders.svelte';
@@ -1 +0,0 @@
1
- export { default as DrawingSliders } from './DrawingSliders.svelte';
@@ -1,11 +0,0 @@
1
- <script lang="ts">
2
- let count = $state(0);
3
-
4
- function handleClick() {
5
- count += 1;
6
- }
7
- </script>
8
-
9
- <button onclick={handleClick}>
10
- clicks: {count}
11
- </button>
@@ -1,3 +0,0 @@
1
- declare const MyCounterButton: import("svelte").Component<Record<string, never>, {}, "">;
2
- type MyCounterButton = ReturnType<typeof MyCounterButton>;
3
- export default MyCounterButton;
@@ -1,107 +0,0 @@
1
- <script>
2
- import jsonData from '@tableslayer/ui/typedoc.json';
3
- import Markdown from '@magidoc/plugin-svelte-marked';
4
- import { Table, Th, Td, Title, Spacer } from '@tableslayer/ui';
5
- export let componentName = '';
6
-
7
- const getComponentData = (componentName) => {
8
- const component = jsonData.children.find(
9
- (child) => child.name === componentName && child.variant === 'declaration'
10
- );
11
-
12
- if (!component) return null;
13
-
14
- const props = jsonData.children.find((child) => child.name === `${componentName}Props`);
15
-
16
- return props?.type ?? null;
17
- };
18
-
19
- const getPropsList = (type) => {
20
- if (type?.type === 'intersection') {
21
- // Handle intersection types (e.g., ButtonProps extending HTMLButtonAttributes)
22
- return type.types?.filter((t) => t.type === 'reflection').flatMap((t) => t.declaration.children) || [];
23
- }
24
- if (type?.type === 'reflection') {
25
- // Handle reflection types (e.g., ToolTipProps)
26
- return type.declaration.children || [];
27
- }
28
- return [];
29
- };
30
-
31
- const getExtendedProps = (type) => {
32
- if (type?.type === 'intersection') {
33
- return (
34
- type.types
35
- ?.filter((t) => t.type === 'reference')
36
- ?.map((t) => `${t.name}`)
37
- .join(', ') || ''
38
- );
39
- }
40
- return '';
41
- };
42
-
43
- const getComment = (prop) => {
44
- return prop?.comment?.summary?.map((s) => s.text).join(' ') || '';
45
- };
46
-
47
- const getDefaultValue = (prop) => {
48
- const defaultTag = prop?.comment?.blockTags?.find((tag) => tag.tag === '@default');
49
- return defaultTag ? defaultTag.content[0]?.text || '' : '';
50
- };
51
-
52
- const componentType = getComponentData(componentName);
53
- const extendedProps = getExtendedProps(componentType);
54
- const propsList = getPropsList(componentType);
55
- </script>
56
-
57
- {#if componentType}
58
- <Title as="h3" size="sm">{componentName} Properties</Title>
59
- <Spacer size="0.5rem" />
60
-
61
- {#if extendedProps}
62
- <p>
63
- <strong>Extends:</strong>
64
- {extendedProps}
65
- </p>
66
- <Spacer />
67
- {/if}
68
-
69
- <Table>
70
- <thead>
71
- <tr>
72
- <Th>Property</Th>
73
- <Th>Type</Th>
74
- <Th>Description</Th>
75
- <Th>Default</Th>
76
- </tr>
77
- </thead>
78
- <tbody>
79
- {#each propsList as prop}
80
- <tr>
81
- <Td>
82
- <strong>
83
- {prop.name}
84
- {#if !prop.flags.isOptional}
85
- *
86
- {/if}
87
- </strong>
88
- </Td>
89
- <Td>
90
- {#if prop.type.type === 'intrinsic'}
91
- {prop.type.name}
92
- {/if}
93
- {#if prop.type.type === 'union'}
94
- {prop.type.types.map((type) => type.value || type.name).join(' | ')}
95
- {:else if prop.type.type === 'reference'}
96
- {prop.type.name}
97
- {/if}
98
- </Td>
99
- <Td><Markdown source={getComment(prop)} /></Td>
100
- <Td><Markdown source={getDefaultValue(prop)} /></Td>
101
- </tr>
102
- {/each}
103
- </tbody>
104
- </Table>
105
- {:else}
106
- <p>No data available for {componentName}.</p>
107
- {/if}