@netless/fastboard-ui 1.0.0-canary.0 → 1.0.0-canary.10

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 (46) hide show
  1. package/dist/index.css +888 -0
  2. package/dist/index.d.ts +95 -69
  3. package/dist/index.js +7338 -2009
  4. package/dist/index.mjs +7342 -2011
  5. package/dist/index.svelte.mjs +10001 -3775
  6. package/package.json +6 -3
  7. package/src/actions/scroll.ts +1 -1
  8. package/src/actions/tippy.ts +9 -5
  9. package/src/behaviors/apps.ts +4 -38
  10. package/src/components/Button/Button.svelte +4 -1
  11. package/src/components/Button/Button.svelte.d.ts +2 -2
  12. package/src/components/Fastboard/Fastboard.scss +2 -3
  13. package/src/components/Fastboard/Fastboard.svelte +11 -4
  14. package/src/components/Fastboard/{Fastboard.svelte.ts → Fastboard.svelte.d.ts} +1 -1
  15. package/src/components/Fastboard/ReplayFastboard.svelte +13 -3
  16. package/src/components/Fastboard/{ReplayFastboard.svelte.ts → ReplayFastboard.svelte.d.ts} +2 -1
  17. package/src/components/Icons/Curve.svelte +10 -0
  18. package/src/components/Icons/CurveDashed.svelte +16 -0
  19. package/src/components/Icons/Eraser.svelte +35 -1
  20. package/src/components/Icons/EraserFilled.svelte +2 -2
  21. package/src/components/Icons/PencilEraser.svelte +16 -0
  22. package/src/components/Icons/PencilEraserFilled.svelte +16 -0
  23. package/src/components/Icons/index.ts +11 -0
  24. package/src/components/PageControl/PageControl.svelte +2 -2
  25. package/src/components/Toolbar/README.md +1 -1
  26. package/src/components/Toolbar/Toolbar.scss +5 -5
  27. package/src/components/Toolbar/Toolbar.svelte +24 -10
  28. package/src/components/Toolbar/Toolbar.svelte.d.ts +18 -1
  29. package/src/components/Toolbar/components/Contents.scss +14 -3
  30. package/src/components/Toolbar/components/Contents.svelte +191 -22
  31. package/src/components/Toolbar/components/PencilEraserSize.svelte +27 -0
  32. package/src/components/Toolbar/components/Shapes.svelte +1 -0
  33. package/src/components/Toolbar/components/Slider.svelte +0 -1
  34. package/src/components/Toolbar/components/StrokeColor.svelte +1 -0
  35. package/src/components/Toolbar/components/TextColor.svelte +1 -0
  36. package/src/components/Toolbar/components/constants.ts +32 -4
  37. package/src/components/Toolbar/components/helper.ts +1 -1
  38. package/src/components/ZoomControl/ZoomControl.svelte +5 -3
  39. package/src/components/theme.scss +11 -4
  40. package/src/helpers/index.ts +72 -48
  41. package/src/index.ts +8 -4
  42. package/src/style.scss +4 -0
  43. package/src/typings.ts +16 -6
  44. package/dist/index.js.map +0 -1
  45. package/dist/index.mjs.map +0 -1
  46. package/dist/index.svelte.mjs.map +0 -1
package/dist/index.css ADDED
@@ -0,0 +1,888 @@
1
+ /* sass:./style.scss */
2
+ .tippy-box[data-animation=fade][data-state=hidden] {
3
+ opacity: 0;
4
+ }
5
+ [data-tippy-root] {
6
+ max-width: calc(100vw - 10px);
7
+ }
8
+ .tippy-box {
9
+ position: relative;
10
+ background-color: #333;
11
+ color: #fff;
12
+ border-radius: 4px;
13
+ font-size: 14px;
14
+ line-height: 1.4;
15
+ white-space: normal;
16
+ outline: 0;
17
+ transition-property:
18
+ transform,
19
+ visibility,
20
+ opacity;
21
+ }
22
+ .tippy-box[data-placement^=top] > .tippy-arrow {
23
+ bottom: 0;
24
+ }
25
+ .tippy-box[data-placement^=top] > .tippy-arrow:before {
26
+ bottom: -7px;
27
+ left: 0;
28
+ border-width: 8px 8px 0;
29
+ border-top-color: initial;
30
+ transform-origin: center top;
31
+ }
32
+ .tippy-box[data-placement^=bottom] > .tippy-arrow {
33
+ top: 0;
34
+ }
35
+ .tippy-box[data-placement^=bottom] > .tippy-arrow:before {
36
+ top: -7px;
37
+ left: 0;
38
+ border-width: 0 8px 8px;
39
+ border-bottom-color: initial;
40
+ transform-origin: center bottom;
41
+ }
42
+ .tippy-box[data-placement^=left] > .tippy-arrow {
43
+ right: 0;
44
+ }
45
+ .tippy-box[data-placement^=left] > .tippy-arrow:before {
46
+ border-width: 8px 0 8px 8px;
47
+ border-left-color: initial;
48
+ right: -7px;
49
+ transform-origin: center left;
50
+ }
51
+ .tippy-box[data-placement^=right] > .tippy-arrow {
52
+ left: 0;
53
+ }
54
+ .tippy-box[data-placement^=right] > .tippy-arrow:before {
55
+ left: -7px;
56
+ border-width: 8px 8px 8px 0;
57
+ border-right-color: initial;
58
+ transform-origin: center right;
59
+ }
60
+ .tippy-box[data-inertia][data-state=visible] {
61
+ transition-timing-function: cubic-bezier(.54, 1.5, .38, 1.11);
62
+ }
63
+ .tippy-arrow {
64
+ width: 16px;
65
+ height: 16px;
66
+ color: #333;
67
+ }
68
+ .tippy-arrow:before {
69
+ content: "";
70
+ position: absolute;
71
+ border-color: transparent;
72
+ border-style: solid;
73
+ }
74
+ .tippy-content {
75
+ position: relative;
76
+ padding: 5px 9px;
77
+ z-index: 1;
78
+ }
79
+ .tippy-box[data-theme~=light] {
80
+ color: #26323d;
81
+ box-shadow:
82
+ 0 0 20px 4px #9aa1b126,
83
+ 0 4px 80px -8px #24282f40,
84
+ 0 4px 4px -2px #5b5e6926;
85
+ background-color: #fff;
86
+ }
87
+ .tippy-box[data-theme~=light][data-placement^=top] > .tippy-arrow:before {
88
+ border-top-color: #fff;
89
+ }
90
+ .tippy-box[data-theme~=light][data-placement^=bottom] > .tippy-arrow:before {
91
+ border-bottom-color: #fff;
92
+ }
93
+ .tippy-box[data-theme~=light][data-placement^=left] > .tippy-arrow:before {
94
+ border-left-color: #fff;
95
+ }
96
+ .tippy-box[data-theme~=light][data-placement^=right] > .tippy-arrow:before {
97
+ border-right-color: #fff;
98
+ }
99
+ .tippy-box[data-theme~=light] > .tippy-backdrop {
100
+ background-color: #fff;
101
+ }
102
+ .tippy-box[data-theme~=light] > .tippy-svg-arrow {
103
+ fill: #fff;
104
+ }
105
+ .fastboard-icon.light .fastboard-icon-stroke-color {
106
+ stroke: var(--fastboard-color, #5d6066);
107
+ }
108
+ .fastboard-icon.light .fastboard-icon-fill-color {
109
+ fill: var(--fastboard-color, #5d6066);
110
+ }
111
+ .fastboard-icon.light.is-active .fastboard-icon-stroke-color {
112
+ stroke: var(--fastboard-active-color, #3381ff);
113
+ }
114
+ .fastboard-icon.light.is-active .fastboard-icon-fill-color {
115
+ fill: var(--fastboard-active-color, #3381ff);
116
+ }
117
+ .fastboard-icon.dark .fastboard-icon-stroke-color {
118
+ stroke: var(--fastboard-color, #7b7e84);
119
+ }
120
+ .fastboard-icon.dark .fastboard-icon-fill-color {
121
+ fill: var(--fastboard-color, #7b7e84);
122
+ }
123
+ .fastboard-icon.dark.is-active .fastboard-icon-stroke-color {
124
+ stroke: var(--fastboard-active-color, #2867cc);
125
+ }
126
+ .fastboard-icon.dark.is-active .fastboard-icon-fill-color {
127
+ fill: var(--fastboard-active-color, #2867cc);
128
+ }
129
+ .fastboard-redo-undo {
130
+ box-sizing: border-box;
131
+ display: inline-flex;
132
+ align-items: center;
133
+ gap: 4px;
134
+ padding: 4px;
135
+ border: 1px solid;
136
+ border-radius: 4px;
137
+ font-size: 14px;
138
+ font-family: system-ui;
139
+ pointer-events: auto;
140
+ backdrop-filter: blur(5px);
141
+ -webkit-backdrop-filter: blur(5px);
142
+ }
143
+ .fastboard-redo-undo * {
144
+ box-sizing: inherit;
145
+ }
146
+ .fastboard-redo-undo.light {
147
+ color: var(--fastboard-color, #5d6066);
148
+ background-color: var(--fastboard-bg-color, rgba(255, 255, 255, .9));
149
+ border-color: var(--fastboard-border-color, #e5e8f0);
150
+ }
151
+ .fastboard-redo-undo.dark {
152
+ color: var(--fastboard-color, #7b7e84);
153
+ background-color: var(--fastboard-bg-color, rgba(20, 24, 30, .9));
154
+ border-color: var(--fastboard-border-color, #383b42);
155
+ }
156
+ .fastboard-redo-undo-btn {
157
+ appearance: none;
158
+ cursor: pointer;
159
+ margin: 0;
160
+ border: 0;
161
+ padding: 0;
162
+ width: 24px;
163
+ height: 24px;
164
+ background-color: #0000;
165
+ border-radius: 4px;
166
+ font-size: 0;
167
+ line-height: 1;
168
+ flex-shrink: 0;
169
+ }
170
+ .fastboard-redo-undo-btn svg,
171
+ .fastboard-redo-undo-btn img {
172
+ width: 100%;
173
+ height: 100%;
174
+ pointer-events: none;
175
+ }
176
+ .fastboard-redo-undo-btn:disabled {
177
+ opacity: .5;
178
+ cursor: not-allowed;
179
+ }
180
+ .fastboard-redo-undo-btn.light:not(:disabled):hover {
181
+ background-color: var(--fastboard-hover-bg-color, #ebf2ff);
182
+ }
183
+ .fastboard-redo-undo-btn.light:not(:disabled).is-active {
184
+ background-color: var(--fastboard-active-bg-color, #ebf2ff);
185
+ }
186
+ .fastboard-redo-undo-btn.dark:not(:disabled):hover {
187
+ background-color: var(--fastboard-hover-bg-color, #383b42);
188
+ }
189
+ .fastboard-redo-undo-btn.dark:not(:disabled).is-active {
190
+ background-color: var(--fastboard-active-bg-color, #383b42);
191
+ }
192
+ .fastboard-zoom-control {
193
+ box-sizing: border-box;
194
+ display: inline-flex;
195
+ align-items: center;
196
+ gap: 4px;
197
+ padding: 4px;
198
+ border: 1px solid;
199
+ border-radius: 4px;
200
+ font-size: 14px;
201
+ font-family: system-ui;
202
+ pointer-events: auto;
203
+ backdrop-filter: blur(5px);
204
+ -webkit-backdrop-filter: blur(5px);
205
+ }
206
+ .fastboard-zoom-control * {
207
+ box-sizing: inherit;
208
+ }
209
+ .fastboard-zoom-control.light {
210
+ color: var(--fastboard-color, #5d6066);
211
+ background-color: var(--fastboard-bg-color, rgba(255, 255, 255, .9));
212
+ border-color: var(--fastboard-border-color, #e5e8f0);
213
+ }
214
+ .fastboard-zoom-control.dark {
215
+ color: var(--fastboard-color, #7b7e84);
216
+ background-color: var(--fastboard-bg-color, rgba(20, 24, 30, .9));
217
+ border-color: var(--fastboard-border-color, #383b42);
218
+ }
219
+ .fastboard-zoom-control-btn {
220
+ appearance: none;
221
+ cursor: pointer;
222
+ margin: 0;
223
+ border: 0;
224
+ padding: 0;
225
+ width: 24px;
226
+ height: 24px;
227
+ background-color: #0000;
228
+ border-radius: 4px;
229
+ font-size: 0;
230
+ line-height: 1;
231
+ flex-shrink: 0;
232
+ }
233
+ .fastboard-zoom-control-btn svg,
234
+ .fastboard-zoom-control-btn img {
235
+ width: 100%;
236
+ height: 100%;
237
+ pointer-events: none;
238
+ }
239
+ .fastboard-zoom-control-btn:disabled {
240
+ opacity: .5;
241
+ cursor: not-allowed;
242
+ }
243
+ .fastboard-zoom-control-btn.light:not(:disabled):hover {
244
+ background-color: var(--fastboard-hover-bg-color, #ebf2ff);
245
+ }
246
+ .fastboard-zoom-control-btn.light:not(:disabled).is-active {
247
+ background-color: var(--fastboard-active-bg-color, #ebf2ff);
248
+ }
249
+ .fastboard-zoom-control-btn.dark:not(:disabled):hover {
250
+ background-color: var(--fastboard-hover-bg-color, #383b42);
251
+ }
252
+ .fastboard-zoom-control-btn.dark:not(:disabled).is-active {
253
+ background-color: var(--fastboard-active-bg-color, #383b42);
254
+ }
255
+ .fastboard-zoom-control-text {
256
+ font-variant-numeric: tabular-nums;
257
+ }
258
+ .fastboard-page-control {
259
+ box-sizing: border-box;
260
+ display: inline-flex;
261
+ align-items: center;
262
+ gap: 4px;
263
+ padding: 4px;
264
+ border: 1px solid;
265
+ border-radius: 4px;
266
+ font-size: 14px;
267
+ font-family: system-ui;
268
+ pointer-events: auto;
269
+ backdrop-filter: blur(5px);
270
+ -webkit-backdrop-filter: blur(5px);
271
+ }
272
+ .fastboard-page-control * {
273
+ box-sizing: inherit;
274
+ }
275
+ .fastboard-page-control.light {
276
+ color: var(--fastboard-color, #5d6066);
277
+ background-color: var(--fastboard-bg-color, rgba(255, 255, 255, .9));
278
+ border-color: var(--fastboard-border-color, #e5e8f0);
279
+ }
280
+ .fastboard-page-control.dark {
281
+ color: var(--fastboard-color, #7b7e84);
282
+ background-color: var(--fastboard-bg-color, rgba(20, 24, 30, .9));
283
+ border-color: var(--fastboard-border-color, #383b42);
284
+ }
285
+ .fastboard-page-control-btn {
286
+ appearance: none;
287
+ cursor: pointer;
288
+ margin: 0;
289
+ border: 0;
290
+ padding: 0;
291
+ width: 24px;
292
+ height: 24px;
293
+ background-color: #0000;
294
+ border-radius: 4px;
295
+ font-size: 0;
296
+ line-height: 1;
297
+ flex-shrink: 0;
298
+ }
299
+ .fastboard-page-control-btn svg,
300
+ .fastboard-page-control-btn img {
301
+ width: 100%;
302
+ height: 100%;
303
+ pointer-events: none;
304
+ }
305
+ .fastboard-page-control-btn:disabled {
306
+ opacity: .5;
307
+ cursor: not-allowed;
308
+ }
309
+ .fastboard-page-control-btn.light:not(:disabled):hover {
310
+ background-color: var(--fastboard-hover-bg-color, #ebf2ff);
311
+ }
312
+ .fastboard-page-control-btn.light:not(:disabled).is-active {
313
+ background-color: var(--fastboard-active-bg-color, #ebf2ff);
314
+ }
315
+ .fastboard-page-control-btn.dark:not(:disabled):hover {
316
+ background-color: var(--fastboard-hover-bg-color, #383b42);
317
+ }
318
+ .fastboard-page-control-btn.dark:not(:disabled).is-active {
319
+ background-color: var(--fastboard-active-bg-color, #383b42);
320
+ }
321
+ .fastboard-page-control-text {
322
+ font-variant-numeric: tabular-nums;
323
+ }
324
+ .fastboard-player-control {
325
+ box-sizing: border-box;
326
+ display: inline-flex;
327
+ align-items: center;
328
+ gap: 4px;
329
+ padding: 4px;
330
+ border: 1px solid;
331
+ border-radius: 4px;
332
+ font-size: 14px;
333
+ font-family: system-ui;
334
+ pointer-events: auto;
335
+ backdrop-filter: blur(5px);
336
+ -webkit-backdrop-filter: blur(5px);
337
+ width: 100%;
338
+ }
339
+ .fastboard-player-control * {
340
+ box-sizing: inherit;
341
+ }
342
+ .fastboard-player-control.light {
343
+ color: var(--fastboard-color, #5d6066);
344
+ background-color: var(--fastboard-bg-color, rgba(255, 255, 255, .9));
345
+ border-color: var(--fastboard-border-color, #e5e8f0);
346
+ }
347
+ .fastboard-player-control.dark {
348
+ color: var(--fastboard-color, #7b7e84);
349
+ background-color: var(--fastboard-bg-color, rgba(20, 24, 30, .9));
350
+ border-color: var(--fastboard-border-color, #383b42);
351
+ }
352
+ .fastboard-player-control-btn {
353
+ appearance: none;
354
+ cursor: pointer;
355
+ margin: 0;
356
+ border: 0;
357
+ padding: 0;
358
+ width: 24px;
359
+ height: 24px;
360
+ background-color: #0000;
361
+ border-radius: 4px;
362
+ font-size: 0;
363
+ line-height: 1;
364
+ flex-shrink: 0;
365
+ display: inline;
366
+ }
367
+ .fastboard-player-control-btn svg,
368
+ .fastboard-player-control-btn img {
369
+ width: 100%;
370
+ height: 100%;
371
+ pointer-events: none;
372
+ }
373
+ .fastboard-player-control-btn:disabled {
374
+ opacity: .5;
375
+ cursor: not-allowed;
376
+ }
377
+ .fastboard-player-control-btn.light:not(:disabled):hover {
378
+ background-color: var(--fastboard-hover-bg-color, #ebf2ff);
379
+ }
380
+ .fastboard-player-control-btn.light:not(:disabled).is-active {
381
+ background-color: var(--fastboard-active-bg-color, #ebf2ff);
382
+ }
383
+ .fastboard-player-control-btn.dark:not(:disabled):hover {
384
+ background-color: var(--fastboard-hover-bg-color, #383b42);
385
+ }
386
+ .fastboard-player-control-btn.dark:not(:disabled).is-active {
387
+ background-color: var(--fastboard-active-bg-color, #383b42);
388
+ }
389
+ .fastboard-player-control-btn.loading svg,
390
+ .fastboard-player-control-btn.loading img {
391
+ animation: fastboard-player-control-rotate .5s linear infinite;
392
+ }
393
+ @keyframes fastboard-player-control-rotate {
394
+ to {
395
+ transform: rotate(360deg);
396
+ }
397
+ }
398
+ .fastboard-player-control-btn.speed {
399
+ width: auto;
400
+ padding: 4px;
401
+ text-align: right;
402
+ font-size: 14px;
403
+ font-variant-numeric: tabular-nums;
404
+ }
405
+ .fastboard-player-control-btn.is-active.light {
406
+ color: var(--fastboard-active-color, #3381ff);
407
+ }
408
+ .fastboard-player-control-btn.is-active.dark {
409
+ color: var(--fastboard-active-color, #2867cc);
410
+ }
411
+ .fastboard-player-control-speed-text,
412
+ .fastboard-player-control-progress {
413
+ font-size: 14px;
414
+ font-variant-numeric: tabular-nums;
415
+ line-height: 16px;
416
+ }
417
+ .fastboard-player-control-progress {
418
+ display: inline-flex;
419
+ align-items: center;
420
+ }
421
+ .fastboard-player-control-panel.speed {
422
+ display: flex;
423
+ flex-direction: column;
424
+ }
425
+ .fastboard-toolbar {
426
+ height: 100%;
427
+ display: flex;
428
+ align-items: center;
429
+ position: relative;
430
+ left: 0;
431
+ transition: left .5s cubic-bezier(.34, 1.56, .64, 1);
432
+ pointer-events: none;
433
+ }
434
+ .fastboard-toolbar.collapsed {
435
+ left: -100%;
436
+ }
437
+ .fastboard-toolbar-handler {
438
+ position: absolute;
439
+ left: 100%;
440
+ width: 17px;
441
+ font-size: 0;
442
+ border-radius: 3px;
443
+ cursor: pointer;
444
+ pointer-events: auto;
445
+ }
446
+ .fastboard-toolbar-handler:focus-visible {
447
+ outline: 2px solid -webkit-focus-ring-color;
448
+ }
449
+ .fastboard-toolbar-handler input[type=checkbox] {
450
+ position: absolute;
451
+ top: 0;
452
+ left: 0;
453
+ appearance: none;
454
+ margin: 0;
455
+ width: 100%;
456
+ height: 100%;
457
+ cursor: pointer;
458
+ opacity: 0;
459
+ z-index: -1;
460
+ }
461
+ .fastboard-toolbar-handler svg {
462
+ opacity: 0;
463
+ transition: opacity .5s 1s;
464
+ pointer-events: none;
465
+ }
466
+ .fastboard-toolbar-handler.light .fastboard-toolbar-handler-bg-color {
467
+ fill: var(--fastboard-bg-color, rgba(255, 255, 255, .9));
468
+ }
469
+ .fastboard-toolbar-handler.light .fastboard-toolbar-handler-border-color {
470
+ stroke: var(--fastboard-border-color, #e5e8f0);
471
+ }
472
+ .fastboard-toolbar-handler.light .fastboard-toolbar-handler-image-stroke-color {
473
+ stroke: var(--fastboard-color, #5d6066);
474
+ }
475
+ .fastboard-toolbar-handler.light .fastboard-toolbar-handler-image-fill-color {
476
+ fill: var(--fastboard-color, #5d6066);
477
+ }
478
+ .fastboard-toolbar-handler.dark .fastboard-toolbar-handler-bg-color {
479
+ fill: var(--fastboard-bg-color, rgba(20, 24, 30, .9));
480
+ }
481
+ .fastboard-toolbar-handler.dark .fastboard-toolbar-handler-border-color {
482
+ stroke: var(--fastboard-border-color, #383b42);
483
+ }
484
+ .fastboard-toolbar-handler.dark .fastboard-toolbar-handler-image-stroke-color {
485
+ stroke: var(--fastboard-color, #7b7e84);
486
+ }
487
+ .fastboard-toolbar-handler.dark .fastboard-toolbar-handler-image-fill-color {
488
+ fill: var(--fastboard-color, #7b7e84);
489
+ }
490
+ .fastboard-toolbar:hover .fastboard-toolbar-handler svg,
491
+ .fastboard-toolbar.collapsed .fastboard-toolbar-handler svg {
492
+ opacity: 1;
493
+ transition: opacity .2s;
494
+ }
495
+ .fastboard-toolbar-btn {
496
+ appearance: none;
497
+ cursor: pointer;
498
+ margin: 0;
499
+ border: 0;
500
+ padding: 4px;
501
+ width: 32px;
502
+ height: 32px;
503
+ background-color: #0000;
504
+ border-radius: 8px;
505
+ font-size: 0;
506
+ line-height: 1;
507
+ flex-shrink: 0;
508
+ }
509
+ .fastboard-toolbar-btn svg,
510
+ .fastboard-toolbar-btn img {
511
+ width: 100%;
512
+ height: 100%;
513
+ pointer-events: none;
514
+ }
515
+ .fastboard-toolbar-btn:disabled {
516
+ opacity: .5;
517
+ cursor: not-allowed;
518
+ }
519
+ .fastboard-toolbar-btn.light:not(:disabled):hover {
520
+ background-color: var(--fastboard-hover-bg-color, #ebf2ff);
521
+ }
522
+ .fastboard-toolbar-btn.light:not(:disabled).is-active {
523
+ background-color: var(--fastboard-active-bg-color, #ebf2ff);
524
+ }
525
+ .fastboard-toolbar-btn.dark:not(:disabled):hover {
526
+ background-color: var(--fastboard-hover-bg-color, #383b42);
527
+ }
528
+ .fastboard-toolbar-btn.dark:not(:disabled).is-active {
529
+ background-color: var(--fastboard-active-bg-color, #383b42);
530
+ }
531
+ .fastboard-slider {
532
+ box-sizing: border-box;
533
+ position: relative;
534
+ width: 100%;
535
+ height: 100%;
536
+ display: flex;
537
+ align-items: center;
538
+ }
539
+ .fastboard-slider * {
540
+ box-sizing: inherit;
541
+ }
542
+ .fastboard-slider-track {
543
+ appearance: none;
544
+ background: rgba(0, 0, 0, 0);
545
+ border: 0;
546
+ border-radius: 26px;
547
+ flex: 1;
548
+ display: block;
549
+ height: 19px;
550
+ margin: 0;
551
+ width: 0;
552
+ min-width: 0;
553
+ padding: 0;
554
+ transition: box-shadow .3s ease;
555
+ cursor: pointer;
556
+ touch-action: manipulation;
557
+ }
558
+ .fastboard-slider-track::-webkit-slider-runnable-track {
559
+ border: 0;
560
+ border-radius: 2.5px;
561
+ height: 5px;
562
+ transition: box-shadow .3s ease;
563
+ user-select: none;
564
+ background-color: #80808040;
565
+ -webkit-user-select: none;
566
+ background-image: linear-gradient(to right, currentColor var(--value, 0%), transparent var(--value, 0%));
567
+ }
568
+ .fastboard-slider-track::-webkit-slider-thumb {
569
+ background: #fff;
570
+ border: 0;
571
+ border-radius: 100%;
572
+ box-shadow: 0 1px 1px #23292f26, 0 0 0 1px #23292f33;
573
+ width: 13px;
574
+ height: 13px;
575
+ position: relative;
576
+ transition: all .2s ease;
577
+ cursor: grab;
578
+ appearance: none;
579
+ margin-top: -4px;
580
+ }
581
+ .fastboard-slider-track::-moz-range-track {
582
+ border: 0;
583
+ border-radius: 2.5px;
584
+ height: 5px;
585
+ transition: box-shadow .3s ease;
586
+ user-select: none;
587
+ background-color: #80808040;
588
+ -webkit-user-select: none;
589
+ }
590
+ .fastboard-slider-track::-moz-range-thumb {
591
+ appearance: none;
592
+ background: #fff;
593
+ border: 0;
594
+ border-radius: 100%;
595
+ box-shadow: 0 1px 1px #23292f26, 0 0 0 1px #23292f33;
596
+ width: 13px;
597
+ height: 13px;
598
+ position: relative;
599
+ transition: all .2s ease;
600
+ cursor: grab;
601
+ }
602
+ .fastboard-slider-track::-moz-range-progress {
603
+ background: currentColor;
604
+ border-radius: 2.5px;
605
+ height: 5px;
606
+ }
607
+ .fastboard-slider-track::-ms-track {
608
+ border: 0;
609
+ border-radius: 2.5px;
610
+ height: 5px;
611
+ transition: box-shadow .3s ease;
612
+ user-select: none;
613
+ background-color: #80808040;
614
+ -webkit-user-select: none;
615
+ color: #0000;
616
+ }
617
+ .fastboard-slider-track::-ms-thumb {
618
+ appearance: none;
619
+ background: #fff;
620
+ border: 0;
621
+ border-radius: 100%;
622
+ box-shadow: 0 1px 1px #23292f26, 0 0 0 1px #23292f33;
623
+ width: 13px;
624
+ height: 13px;
625
+ position: relative;
626
+ transition: all .2s ease;
627
+ cursor: grab;
628
+ margin-top: 0;
629
+ }
630
+ .fastboard-slider-track::-ms-tooltip {
631
+ display: none;
632
+ }
633
+ .fastboard-slider-track::-moz-focus-outer {
634
+ border: 0;
635
+ }
636
+ .fastboard-slider-track.grabbing::-webkit-slider-thumb {
637
+ cursor: grabbing;
638
+ }
639
+ .fastboard-slider-track.light {
640
+ color: var(--fastboard-active-color, #3381ff);
641
+ }
642
+ .fastboard-slider-track.dark {
643
+ color: var(--fastboard-active-color, #2867cc);
644
+ }
645
+ .fastboard-toolbar-contents {
646
+ box-sizing: border-box;
647
+ display: inline-flex;
648
+ align-items: center;
649
+ gap: 4px;
650
+ border: 1px solid;
651
+ border-radius: 4px;
652
+ font-size: 14px;
653
+ font-family: system-ui;
654
+ pointer-events: auto;
655
+ backdrop-filter: blur(5px);
656
+ -webkit-backdrop-filter: blur(5px);
657
+ padding: 2px 0;
658
+ gap: 0;
659
+ flex-direction: column;
660
+ }
661
+ .fastboard-toolbar-contents * {
662
+ box-sizing: inherit;
663
+ }
664
+ .fastboard-toolbar-contents.light {
665
+ color: var(--fastboard-color, #5d6066);
666
+ background-color: var(--fastboard-bg-color, rgba(255, 255, 255, .9));
667
+ border-color: var(--fastboard-border-color, #e5e8f0);
668
+ }
669
+ .fastboard-toolbar-contents.dark {
670
+ color: var(--fastboard-color, #7b7e84);
671
+ background-color: var(--fastboard-bg-color, rgba(20, 24, 30, .9));
672
+ border-color: var(--fastboard-border-color, #383b42);
673
+ }
674
+ .fastboard-toolbar-contents > .fastboard-toolbar-btn {
675
+ margin: 2px 4px;
676
+ }
677
+ .fastboard-toolbar-btn-interactive {
678
+ position: relative;
679
+ }
680
+ .fastboard-toolbar-triangle {
681
+ width: 0px;
682
+ height: 0px;
683
+ border-bottom: 3px solid;
684
+ border-left: 3px solid rgba(0, 0, 0, 0);
685
+ position: absolute;
686
+ bottom: 0;
687
+ right: 0;
688
+ }
689
+ .fastboard-toolbar-btn:focus + .fastboard-toolbar-triangle {
690
+ opacity: 0;
691
+ }
692
+ .fastboard-toolbar-scrollable {
693
+ padding: 2px 4px;
694
+ overflow: hidden;
695
+ display: flex;
696
+ flex-direction: column;
697
+ gap: 0;
698
+ }
699
+ .fastboard-toolbar-tooltip {
700
+ display: inline-flex;
701
+ align-items: center;
702
+ gap: 4px;
703
+ }
704
+ .fastboard-toolbar-hotkey {
705
+ display: inline-flex;
706
+ margin-right: -4px;
707
+ width: 24px;
708
+ height: 24px;
709
+ align-items: center;
710
+ justify-content: center;
711
+ background-color: #ffffff1a;
712
+ border-radius: 4px;
713
+ }
714
+ .fastboard-toolbar-panel-wrapper {
715
+ display: none;
716
+ }
717
+ .fastboard-toolbar-panel {
718
+ display: flex;
719
+ flex-direction: column;
720
+ }
721
+ .fastboard-toolbar-panel-divider {
722
+ height: .5px;
723
+ width: 100%;
724
+ margin: 4px 0;
725
+ background-color: #ffffff26;
726
+ }
727
+ .fastboard-toolbar-slider.pencil-eraser-size {
728
+ width: 136px;
729
+ }
730
+ .fastboard-toolbar-colors,
731
+ .fastboard-toolbar-shapes {
732
+ display: grid;
733
+ align-self: center;
734
+ grid-template: repeat(2, 1fr)/repeat(4, 1fr);
735
+ align-items: center;
736
+ justify-items: center;
737
+ gap: 4px;
738
+ }
739
+ .fastboard-toolbar-shape-btn,
740
+ .fastboard-toolbar-color-btn {
741
+ width: 24px;
742
+ height: 24px;
743
+ padding: 0;
744
+ display: inline-flex;
745
+ align-items: center;
746
+ justify-content: center;
747
+ }
748
+ .fastboard-toolbar-color-btn {
749
+ border: 1px solid rgba(0, 0, 0, 0);
750
+ }
751
+ .fastboard-toolbar-color-btn.light.is-active {
752
+ border-color: var(--fastboard-active-color, #3381ff);
753
+ }
754
+ .fastboard-toolbar-color-btn.dark.is-active {
755
+ border-color: var(--fastboard-active-color, #2867cc);
756
+ }
757
+ .fastboard-toolbar-color-item {
758
+ display: inline-block;
759
+ width: 16px;
760
+ height: 16px;
761
+ border-radius: 4px;
762
+ pointer-events: none;
763
+ }
764
+ .fastboard-toolbar-panel.apps {
765
+ display: grid;
766
+ grid-template-columns: repeat(min(var(--n, 3), 3), minmax(max-content, 1fr));
767
+ gap: 4px;
768
+ }
769
+ .fastboard-toolbar-app-btn {
770
+ margin: 0;
771
+ border: 0;
772
+ border-radius: 2px;
773
+ padding: 4px 6px;
774
+ background-color: #0000;
775
+ display: inline-flex;
776
+ flex-direction: column;
777
+ align-items: center;
778
+ gap: 4px;
779
+ font-size: 0;
780
+ }
781
+ .fastboard-toolbar-app-btn:disabled {
782
+ opacity: .8;
783
+ }
784
+ .fastboard-toolbar-app-btn-icon {
785
+ width: 32px;
786
+ height: 32px;
787
+ pointer-events: none;
788
+ }
789
+ .fastboard-toolbar-app-btn-text {
790
+ font-size: 14px;
791
+ line-height: 1;
792
+ max-width: 100%;
793
+ overflow: hidden;
794
+ text-overflow: ellipsis;
795
+ }
796
+ .fastboard-toolbar-app-btn.is-loading {
797
+ cursor: progress;
798
+ }
799
+ .fastboard-toolbar-app-btn.is-failed {
800
+ cursor: not-allowed;
801
+ opacity: .5;
802
+ }
803
+ .fastboard-toolbar-app-btn:not(:disabled, .is-loading, .is-failed):hover.light {
804
+ cursor: pointer;
805
+ background-color: var(--fastboard-hover-bg-color, #ebf2ff);
806
+ }
807
+ .fastboard-toolbar-app-btn-text.light {
808
+ color: var(--fastboard-color, #5d6066);
809
+ }
810
+ .fastboard-toolbar-app-btn:not(:disabled, .is-loading, .is-failed):hover.dark {
811
+ cursor: pointer;
812
+ background-color: var(--fastboard-hover-bg-color, #383b42);
813
+ }
814
+ .fastboard-toolbar-app-btn-text.dark {
815
+ color: var(--fastboard-color, #7b7e84);
816
+ }
817
+ .fastboard-root {
818
+ position: relative;
819
+ width: 100%;
820
+ height: 100%;
821
+ overflow: hidden;
822
+ }
823
+ .fastboard-view {
824
+ position: absolute;
825
+ top: 0;
826
+ left: 0;
827
+ width: 100%;
828
+ height: 100%;
829
+ }
830
+ .fastboard-left {
831
+ display: flex;
832
+ align-items: center;
833
+ position: absolute;
834
+ bottom: 50px;
835
+ top: 8px;
836
+ left: 0;
837
+ z-index: 200;
838
+ pointer-events: none;
839
+ }
840
+ .fastboard-left .fastboard-toolbar {
841
+ padding-left: 8px;
842
+ }
843
+ .fastboard-bottom-left,
844
+ .fastboard-bottom,
845
+ .fastboard-bottom-right {
846
+ display: flex;
847
+ gap: 10px;
848
+ position: absolute;
849
+ bottom: 8px;
850
+ left: 8px;
851
+ z-index: 200;
852
+ pointer-events: none;
853
+ }
854
+ .fastboard-bottom-right {
855
+ left: auto;
856
+ right: 8px;
857
+ }
858
+ .fastboard-bottom {
859
+ right: 8px;
860
+ }
861
+ .fastboard-left.hidden *,
862
+ .fastboard-bottom.hidden *,
863
+ .fastboard-bottom-left.hidden *,
864
+ .fastboard-bottom-right.hidden * {
865
+ opacity: 0;
866
+ pointer-events: none;
867
+ }
868
+ .fastboard-tip {
869
+ font-family: inherit;
870
+ color: #d5d9e0;
871
+ background-color: #03060d;
872
+ }
873
+ .fastboard-tip[data-placement^=right] > .tippy-arrow:before {
874
+ top: 4px;
875
+ border-width: 4px;
876
+ border-right-color: #03060d;
877
+ }
878
+ .fastboard-tip[data-placement^=top] > .tippy-arrow:before {
879
+ left: 4px;
880
+ border-width: 4px;
881
+ border-top-color: #03060d;
882
+ }
883
+ .fastboard-panel .tippy-content {
884
+ padding: 8px;
885
+ }
886
+ .netless-whiteboard:focus-visible {
887
+ outline: none;
888
+ }