@tableslayer/ui 0.1.3 → 0.1.4

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 (205) hide show
  1. package/package.json +2 -13
  2. package/src/lib/components/Avatar/Avatar.svelte +82 -0
  3. package/src/lib/components/Avatar/AvatarFileInput.svelte +85 -0
  4. package/src/lib/components/Avatar/AvatarPopover.svelte +34 -0
  5. package/src/lib/components/Avatar/index.ts +4 -0
  6. package/src/lib/components/Avatar/types.ts +24 -0
  7. package/src/lib/components/BrushSizeSlider/BrushSizeSlider.svelte +174 -0
  8. package/src/lib/components/BrushSizeSlider/index.ts +1 -0
  9. package/src/lib/components/Button/Button.svelte +182 -0
  10. package/src/lib/components/Button/ConfirmActionButton.svelte +98 -0
  11. package/src/lib/components/Button/IconButton.svelte +121 -0
  12. package/src/lib/components/Button/RadioButton.svelte +93 -0
  13. package/src/lib/components/Button/index.ts +5 -0
  14. package/src/lib/components/Button/types.ts +54 -0
  15. package/src/lib/components/CardFan/CardFan.svelte +165 -0
  16. package/src/lib/components/CardFan/index.ts +2 -0
  17. package/src/lib/components/CardFan/types.ts +6 -0
  18. package/src/lib/components/CodeBlock/Code.svelte +7 -0
  19. package/src/lib/components/CodeBlock/CodeBlock.svelte +102 -0
  20. package/src/lib/components/CodeBlock/index.ts +3 -0
  21. package/src/lib/components/CodeBlock/types.ts +10 -0
  22. package/src/lib/components/ColorMode/ColorMode.svelte +8 -0
  23. package/src/lib/components/ColorMode/index.ts +2 -0
  24. package/src/lib/components/ColorMode/types.ts +12 -0
  25. package/src/lib/components/ColorPicker/ColorPicker.svelte +838 -0
  26. package/src/lib/components/ColorPicker/ColorPickerSwatch.svelte +32 -0
  27. package/src/lib/components/ColorPicker/index.ts +3 -0
  28. package/src/lib/components/ColorPicker/types.ts +51 -0
  29. package/src/lib/components/ContextMenu/ContextMenu.svelte +86 -0
  30. package/src/lib/components/ContextMenu/index.ts +2 -0
  31. package/src/lib/components/ContextMenu/types.ts +15 -0
  32. package/src/lib/components/DrawingSliders/DrawingSliders.svelte +379 -0
  33. package/src/lib/components/DrawingSliders/index.ts +1 -0
  34. package/src/lib/components/Editor/Editor.svelte +825 -0
  35. package/src/lib/components/Editor/index.ts +1 -0
  36. package/src/lib/components/FogSliders/FogSliders.svelte +33 -0
  37. package/src/lib/components/FogSliders/index.ts +1 -0
  38. package/src/lib/components/Hr/Hr.svelte +15 -0
  39. package/src/lib/components/Hr/index.ts +1 -0
  40. package/src/lib/components/Icon/Icon.svelte +6 -0
  41. package/src/lib/components/Icon/index.ts +2 -0
  42. package/src/lib/components/Icon/types.ts +20 -0
  43. package/src/lib/components/Input/DualInputSlider.svelte +126 -0
  44. package/src/lib/components/Input/FileInput.svelte +176 -0
  45. package/src/lib/components/Input/FormControl.svelte +150 -0
  46. package/src/lib/components/Input/FormError.svelte +37 -0
  47. package/src/lib/components/Input/Input.svelte +56 -0
  48. package/src/lib/components/Input/InputCheckbox.svelte +99 -0
  49. package/src/lib/components/Input/InputSlider.svelte +86 -0
  50. package/src/lib/components/Input/Label.svelte +19 -0
  51. package/src/lib/components/Input/index.ts +9 -0
  52. package/src/lib/components/Input/types.ts +39 -0
  53. package/src/lib/components/Link/Link.svelte +41 -0
  54. package/src/lib/components/Link/LinkBox.svelte +20 -0
  55. package/src/lib/components/Link/LinkOverlay.svelte +23 -0
  56. package/src/lib/components/Link/index.ts +4 -0
  57. package/src/lib/components/Link/types.ts +17 -0
  58. package/src/lib/components/Loading/Loader.svelte +60 -0
  59. package/src/lib/components/Loading/Skeleton.svelte +9 -0
  60. package/src/lib/components/Loading/index.ts +2 -0
  61. package/src/lib/components/Logo/Logo.svelte +16 -0
  62. package/src/lib/components/Logo/index.ts +1 -0
  63. package/src/lib/components/MarkerTooltip/MarkerTooltip.svelte +435 -0
  64. package/src/lib/components/MarkerTooltip/index.ts +1 -0
  65. package/src/lib/components/Menu/SelectorMenu.svelte +280 -0
  66. package/src/lib/components/Menu/index.ts +2 -0
  67. package/src/lib/components/Menu/types.ts +17 -0
  68. package/src/lib/components/MyCounterButton.svelte +11 -0
  69. package/src/lib/components/Panel/index.ts +2 -0
  70. package/src/lib/components/Panel/panel.svelte +18 -0
  71. package/src/lib/components/Panel/types.ts +8 -0
  72. package/src/lib/components/PersistButton/PersistButton.svelte +100 -0
  73. package/src/lib/components/PersistButton/index.ts +1 -0
  74. package/src/lib/components/Popover/Popover.svelte +81 -0
  75. package/src/lib/components/Popover/index.ts +2 -0
  76. package/src/lib/components/Popover/types.ts +19 -0
  77. package/src/lib/components/PropsTable/PropsTable.svelte +107 -0
  78. package/src/lib/components/RadialMenu/EffectPreview.svelte +36 -0
  79. package/src/lib/components/RadialMenu/EffectPreviewScene.svelte +194 -0
  80. package/src/lib/components/RadialMenu/RadialMenu.svelte +503 -0
  81. package/src/lib/components/RadialMenu/RadialMenuItem.svelte +176 -0
  82. package/src/lib/components/RadialMenu/index.ts +2 -0
  83. package/src/lib/components/RadialMenu/types.ts +35 -0
  84. package/src/lib/components/Select/Select.svelte +342 -0
  85. package/src/lib/components/Select/index.ts +2 -0
  86. package/src/lib/components/Select/types.ts +22 -0
  87. package/src/lib/components/Spacer/Spacer.svelte +14 -0
  88. package/src/lib/components/Spacer/index.ts +2 -0
  89. package/src/lib/components/Spacer/types.ts +5 -0
  90. package/src/lib/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +445 -0
  91. package/src/lib/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +167 -0
  92. package/src/lib/components/Stage/components/AnnotationLayer/types.ts +196 -0
  93. package/src/lib/components/Stage/components/CursorLayer/CursorLayer.svelte +148 -0
  94. package/src/lib/components/Stage/components/CursorLayer/cursor.svg +26 -0
  95. package/src/lib/components/Stage/components/CursorLayer/index.ts +2 -0
  96. package/src/lib/components/Stage/components/CursorLayer/types.ts +23 -0
  97. package/src/lib/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +364 -0
  98. package/src/lib/components/Stage/components/DrawingLayer/types.ts +65 -0
  99. package/src/lib/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +72 -0
  100. package/src/lib/components/Stage/components/EdgeOverlayLayer/types.ts +34 -0
  101. package/src/lib/components/Stage/components/FogLayer/FogLayer.svelte +75 -0
  102. package/src/lib/components/Stage/components/FogLayer/types.ts +51 -0
  103. package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +249 -0
  104. package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +200 -0
  105. package/src/lib/components/Stage/components/FogOfWarLayer/types.ts +116 -0
  106. package/src/lib/components/Stage/components/GridLayer/GridLayer.svelte +20 -0
  107. package/src/lib/components/Stage/components/GridLayer/GridMaterial.svelte +69 -0
  108. package/src/lib/components/Stage/components/GridLayer/types.ts +79 -0
  109. package/src/lib/components/Stage/components/LayerInput/LayerInput.svelte +300 -0
  110. package/src/lib/components/Stage/components/MapLayer/MapLayer.svelte +196 -0
  111. package/src/lib/components/Stage/components/MapLayer/dataSources/GifDataSource.ts +265 -0
  112. package/src/lib/components/Stage/components/MapLayer/dataSources/IMapDataSource.ts +55 -0
  113. package/src/lib/components/Stage/components/MapLayer/dataSources/ImageDataSource.ts +87 -0
  114. package/src/lib/components/Stage/components/MapLayer/dataSources/VideoDataSource.ts +150 -0
  115. package/src/lib/components/Stage/components/MapLayer/dataSources/dataSourceFactory.ts +48 -0
  116. package/src/lib/components/Stage/components/MapLayer/dataSources/index.ts +16 -0
  117. package/src/lib/components/Stage/components/MapLayer/types.ts +58 -0
  118. package/src/lib/components/Stage/components/MarkerLayer/MarkerLayer.svelte +398 -0
  119. package/src/lib/components/Stage/components/MarkerLayer/MarkerToken.svelte +262 -0
  120. package/src/lib/components/Stage/components/MarkerLayer/types.ts +126 -0
  121. package/src/lib/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +364 -0
  122. package/src/lib/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +473 -0
  123. package/src/lib/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.ts +427 -0
  124. package/src/lib/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.ts +105 -0
  125. package/src/lib/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.ts +98 -0
  126. package/src/lib/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.ts +163 -0
  127. package/src/lib/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.ts +102 -0
  128. package/src/lib/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.ts +120 -0
  129. package/src/lib/components/Stage/components/MeasurementLayer/measurements/index.ts +7 -0
  130. package/src/lib/components/Stage/components/MeasurementLayer/types.ts +94 -0
  131. package/src/lib/components/Stage/components/MeasurementLayer/utils/canvasDrawing.ts +357 -0
  132. package/src/lib/components/Stage/components/MeasurementLayer/utils/distanceCalculations.ts +170 -0
  133. package/src/lib/components/Stage/components/ParticleSystem/ParticleSystem.svelte +220 -0
  134. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
  135. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
  136. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
  137. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
  138. package/src/lib/components/Stage/components/ParticleSystem/rng.js +20 -0
  139. package/src/lib/components/Stage/components/ParticleSystem/types.ts +95 -0
  140. package/src/lib/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +144 -0
  141. package/src/lib/components/Stage/components/PerformanceDebugger/index.ts +1 -0
  142. package/src/lib/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +208 -0
  143. package/src/lib/components/Stage/components/PerformanceOverlay/index.ts +1 -0
  144. package/src/lib/components/Stage/components/PointerInputManager/PointerInputManager.svelte +201 -0
  145. package/src/lib/components/Stage/components/Scene/Scene.svelte +651 -0
  146. package/src/lib/components/Stage/components/Scene/luts.ts +24 -0
  147. package/src/lib/components/Stage/components/Scene/types.ts +225 -0
  148. package/src/lib/components/Stage/components/Stage/Stage.svelte +332 -0
  149. package/src/lib/components/Stage/components/Stage/types.ts +136 -0
  150. package/src/lib/components/Stage/components/WeatherLayer/WeatherLayer.svelte +135 -0
  151. package/src/lib/components/Stage/components/WeatherLayer/presets/AshPreset.ts +71 -0
  152. package/src/lib/components/Stage/components/WeatherLayer/presets/LeavesPreset.ts +70 -0
  153. package/src/lib/components/Stage/components/WeatherLayer/presets/RainPreset.ts +68 -0
  154. package/src/lib/components/Stage/components/WeatherLayer/presets/SnowPreset.ts +70 -0
  155. package/src/lib/components/Stage/components/WeatherLayer/presets/index.ts +6 -0
  156. package/src/lib/components/Stage/components/WeatherLayer/types.ts +35 -0
  157. package/src/lib/components/Stage/helpers/clippingPlaneStore.svelte.ts +28 -0
  158. package/src/lib/components/Stage/helpers/debugState.svelte.ts +18 -0
  159. package/src/lib/components/Stage/helpers/grid.ts +548 -0
  160. package/src/lib/components/Stage/helpers/lazyBrush.ts +171 -0
  161. package/src/lib/components/Stage/helpers/performanceMetrics.svelte.ts +220 -0
  162. package/src/lib/components/Stage/helpers/utils.ts +21 -0
  163. package/src/lib/components/Stage/index.ts +49 -0
  164. package/src/lib/components/Stage/shaders/AnnotationEffects.frag +1070 -0
  165. package/src/lib/components/Stage/shaders/Annotations.frag +29 -0
  166. package/src/lib/components/Stage/shaders/Drawing.frag +83 -0
  167. package/src/lib/components/Stage/shaders/Drawing.vert +5 -0
  168. package/src/lib/components/Stage/shaders/Fog.frag +147 -0
  169. package/src/lib/components/Stage/shaders/FractalNoise.frag +96 -0
  170. package/src/lib/components/Stage/shaders/GridShader.frag +174 -0
  171. package/src/lib/components/Stage/shaders/Overlay.frag +23 -0
  172. package/src/lib/components/Stage/shaders/Overlay.vert +0 -0
  173. package/src/lib/components/Stage/shaders/Particles.frag +27 -0
  174. package/src/lib/components/Stage/shaders/Particles.vert +51 -0
  175. package/src/lib/components/Stage/shaders/ToolOutline.frag +59 -0
  176. package/src/lib/components/Stage/shaders/default.vert +8 -0
  177. package/src/lib/components/Stage/types.ts +4 -0
  178. package/src/lib/components/Table/Table.svelte +16 -0
  179. package/src/lib/components/Table/Td.svelte +17 -0
  180. package/src/lib/components/Table/Th.svelte +18 -0
  181. package/src/lib/components/Table/index.ts +4 -0
  182. package/src/lib/components/Table/types.ts +14 -0
  183. package/src/lib/components/Text/Text.svelte +23 -0
  184. package/src/lib/components/Text/index.ts +2 -0
  185. package/src/lib/components/Text/types.ts +12 -0
  186. package/src/lib/components/Title/Title.svelte +54 -0
  187. package/src/lib/components/Title/index.ts +2 -0
  188. package/src/lib/components/Title/types.ts +9 -0
  189. package/src/lib/components/Toast/Toast.svelte +155 -0
  190. package/src/lib/components/Toast/index.ts +5 -0
  191. package/src/lib/components/Toast/toastCookie.ts +24 -0
  192. package/src/lib/components/Toast/types.ts +6 -0
  193. package/src/lib/components/ToolTip/ToolTip.svelte +70 -0
  194. package/src/lib/components/ToolTip/index.ts +2 -0
  195. package/src/lib/components/ToolTip/types.ts +14 -0
  196. package/src/lib/components/index.ts +32 -0
  197. package/src/lib/components/types.ts +0 -0
  198. package/src/lib/index.ts +2 -0
  199. package/src/lib/styles/globals.css +108 -0
  200. package/src/lib/styles/normalize.css +9 -0
  201. package/src/lib/styles/reset.css +133 -0
  202. package/src/lib/styles/utilities.css +179 -0
  203. package/src/lib/styles/vars.css +1103 -0
  204. package/src/lib/types/awareness.ts +17 -0
  205. package/src/lib/utils/rle.ts +217 -0
@@ -0,0 +1,17 @@
1
+ export interface HoveredMarker {
2
+ id: string;
3
+ position: {
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ };
8
+ tooltip: {
9
+ title: string;
10
+ content: string; // Rich text HTML from TipTap
11
+ imageUrl?: string;
12
+ };
13
+ }
14
+
15
+ export interface MarkerAwarenessState {
16
+ hoveredMarker?: HoveredMarker;
17
+ }
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Run-Length Encoding utilities for binary mask compression
3
+ * Optimized for fog and annotation layers
4
+ */
5
+
6
+ /**
7
+ * Encodes a binary mask using Run-Length Encoding
8
+ * @param data - Binary mask data (Uint8Array where each byte is 0 or 255)
9
+ * @returns Encoded RLE data as Uint8Array
10
+ */
11
+ export function encodeRLE(data: Uint8Array): Uint8Array {
12
+ if (data.length === 0) return new Uint8Array(0);
13
+
14
+ const runs: number[] = [];
15
+ let currentValue = data[0];
16
+ let runLength = 1;
17
+
18
+ // First byte indicates the starting value (0 or 1)
19
+ runs.push(currentValue === 0 ? 0 : 1);
20
+
21
+ for (let i = 1; i < data.length; i++) {
22
+ if (data[i] === currentValue) {
23
+ runLength++;
24
+ } else {
25
+ // Store the run length
26
+ pushVarint(runs, runLength);
27
+ currentValue = data[i];
28
+ runLength = 1;
29
+ }
30
+ }
31
+
32
+ // Don't forget the last run
33
+ pushVarint(runs, runLength);
34
+
35
+ return new Uint8Array(runs);
36
+ }
37
+
38
+ /**
39
+ * Decodes RLE data back to binary mask
40
+ * @param encoded - RLE encoded data
41
+ * @param targetLength - Expected length of decoded data
42
+ * @returns Decoded binary mask as Uint8Array
43
+ */
44
+ export function decodeRLE(encoded: Uint8Array, targetLength: number): Uint8Array {
45
+ if (encoded.length === 0) return new Uint8Array(targetLength);
46
+
47
+ const result = new Uint8Array(targetLength);
48
+ let position = 0;
49
+ let index = 0;
50
+
51
+ // First byte indicates the starting value
52
+ const startValue = encoded[index++];
53
+ let currentValue = startValue === 0 ? 0 : 255;
54
+
55
+ while (index < encoded.length && position < targetLength) {
56
+ const [runLength, newIndex] = readVarint(encoded, index);
57
+ index = newIndex;
58
+
59
+ // Fill the result array with the current value
60
+ const end = Math.min(position + runLength, targetLength);
61
+ for (let i = position; i < end; i++) {
62
+ result[i] = currentValue;
63
+ }
64
+
65
+ position = end;
66
+ // Toggle the current value
67
+ currentValue = currentValue === 0 ? 255 : 0;
68
+ }
69
+
70
+ return result;
71
+ }
72
+
73
+ /**
74
+ * Variable-length integer encoding (for efficient storage of run lengths)
75
+ * Uses continuation bit in MSB
76
+ */
77
+ function pushVarint(array: number[], value: number): void {
78
+ while (value > 127) {
79
+ array.push((value & 0x7f) | 0x80);
80
+ value >>>= 7;
81
+ }
82
+ array.push(value & 0x7f);
83
+ }
84
+
85
+ /**
86
+ * Read a variable-length integer from the array
87
+ */
88
+ function readVarint(array: Uint8Array, index: number): [number, number] {
89
+ let value = 0;
90
+ let shift = 0;
91
+
92
+ while (index < array.length) {
93
+ const byte = array[index++];
94
+ value |= (byte & 0x7f) << shift;
95
+ if ((byte & 0x80) === 0) {
96
+ break;
97
+ }
98
+ shift += 7;
99
+ }
100
+
101
+ return [value, index];
102
+ }
103
+
104
+ /**
105
+ * Converts a PNG blob to RLE encoded data
106
+ * @param blob - PNG image blob
107
+ * @param width - Image width
108
+ * @param height - Image height
109
+ * @returns RLE encoded data
110
+ */
111
+ export async function pngToRLE(blob: Blob, width: number, height: number): Promise<Uint8Array> {
112
+ // Create an off-screen canvas
113
+ const canvas = document.createElement('canvas');
114
+ canvas.width = width;
115
+ canvas.height = height;
116
+ const ctx = canvas.getContext('2d');
117
+
118
+ if (!ctx) {
119
+ throw new Error('Failed to get canvas context');
120
+ }
121
+
122
+ // Load the image
123
+ const img = new Image();
124
+ const url = URL.createObjectURL(blob);
125
+
126
+ try {
127
+ await new Promise((resolve, reject) => {
128
+ img.onload = resolve;
129
+ img.onerror = reject;
130
+ img.src = url;
131
+ });
132
+
133
+ // Draw image to canvas
134
+ ctx.drawImage(img, 0, 0, width, height);
135
+
136
+ // Get image data
137
+ const imageData = ctx.getImageData(0, 0, width, height);
138
+ const pixels = imageData.data;
139
+
140
+ // Convert RGBA to binary (using alpha channel)
141
+ const binaryData = new Uint8Array(width * height);
142
+ for (let i = 0; i < binaryData.length; i++) {
143
+ // Use alpha channel (every 4th byte starting at index 3)
144
+ binaryData[i] = pixels[i * 4 + 3] > 127 ? 255 : 0;
145
+ }
146
+
147
+ // Encode to RLE
148
+ return encodeRLE(binaryData);
149
+ } finally {
150
+ URL.revokeObjectURL(url);
151
+ }
152
+ }
153
+
154
+ /**
155
+ * Converts RLE encoded data to a PNG blob
156
+ * @param rleData - RLE encoded data
157
+ * @param width - Image width
158
+ * @param height - Image height
159
+ * @returns PNG image blob
160
+ */
161
+ export async function rleToPng(rleData: Uint8Array, width: number, height: number): Promise<Blob> {
162
+ // Decode RLE to binary
163
+ const binaryData = decodeRLE(rleData, width * height);
164
+
165
+ // Create canvas
166
+ const canvas = document.createElement('canvas');
167
+ canvas.width = width;
168
+ canvas.height = height;
169
+ const ctx = canvas.getContext('2d');
170
+
171
+ if (!ctx) {
172
+ throw new Error('Failed to get canvas context');
173
+ }
174
+
175
+ // Create image data
176
+ const imageData = ctx.createImageData(width, height);
177
+ const pixels = imageData.data;
178
+
179
+ // Convert binary to RGBA
180
+ for (let i = 0; i < binaryData.length; i++) {
181
+ const idx = i * 4;
182
+ const value = binaryData[i];
183
+ pixels[idx] = 0; // R
184
+ pixels[idx + 1] = 0; // G
185
+ pixels[idx + 2] = 0; // B
186
+ pixels[idx + 3] = value; // A (0 or 255)
187
+ }
188
+
189
+ // Put image data to canvas
190
+ ctx.putImageData(imageData, 0, 0);
191
+
192
+ // Convert to blob
193
+ return new Promise((resolve, reject) => {
194
+ canvas.toBlob((blob) => {
195
+ if (blob) {
196
+ resolve(blob);
197
+ } else {
198
+ reject(new Error('Failed to convert canvas to blob'));
199
+ }
200
+ }, 'image/png');
201
+ });
202
+ }
203
+
204
+ /**
205
+ * Gets the size of RLE data when encoded
206
+ */
207
+ export function getRLESize(data: Uint8Array): number {
208
+ return encodeRLE(data).length;
209
+ }
210
+
211
+ /**
212
+ * Estimates compression ratio for RLE encoding
213
+ */
214
+ export function estimateCompressionRatio(data: Uint8Array): number {
215
+ const encoded = encodeRLE(data);
216
+ return data.length / encoded.length;
217
+ }