@netless/fastboard-ui 0.3.2-canary.5 → 0.3.3

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 (110) hide show
  1. package/LICENSE.txt +21 -21
  2. package/README.md +7 -7
  3. package/dist/index.d.ts +102 -102
  4. package/dist/index.js +30 -23
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +30 -23
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/index.svelte.mjs +22 -17
  9. package/dist/index.svelte.mjs.map +1 -1
  10. package/package.json +4 -5
  11. package/src/actions/height.ts +43 -43
  12. package/src/actions/scroll.ts +31 -31
  13. package/src/actions/tippy.ts +71 -71
  14. package/src/behaviors/apps.ts +74 -74
  15. package/src/behaviors/index.ts +1 -1
  16. package/src/components/Button/Button.svelte +51 -51
  17. package/src/components/Button/Button.svelte.d.ts +26 -26
  18. package/src/components/Button/index.ts +2 -2
  19. package/src/components/Fastboard/Fastboard.scss +61 -61
  20. package/src/components/Fastboard/Fastboard.svelte +80 -80
  21. package/src/components/Fastboard/Fastboard.svelte.ts +14 -14
  22. package/src/components/Fastboard/ReplayFastboard.svelte +43 -43
  23. package/src/components/Fastboard/ReplayFastboard.svelte.ts +13 -13
  24. package/src/components/Fastboard/index.ts +5 -5
  25. package/src/components/Icon/Icon.svelte +11 -11
  26. package/src/components/Icon/Icon.svelte.d.ts +10 -10
  27. package/src/components/Icon/index.ts +2 -2
  28. package/src/components/Icons/Apps.svelte +49 -49
  29. package/src/components/Icons/Arrow.svelte +16 -16
  30. package/src/components/Icons/ArrowBolded.svelte +17 -17
  31. package/src/components/Icons/Balloon.svelte +16 -16
  32. package/src/components/Icons/BalloonBolded.svelte +16 -16
  33. package/src/components/Icons/Circle.svelte +20 -20
  34. package/src/components/Icons/CircleBolded.svelte +20 -20
  35. package/src/components/Icons/Clean.svelte +14 -14
  36. package/src/components/Icons/Clear.svelte +16 -16
  37. package/src/components/Icons/Click.svelte +16 -16
  38. package/src/components/Icons/ClickFilled.svelte +10 -10
  39. package/src/components/Icons/Diamond.svelte +16 -16
  40. package/src/components/Icons/Down.svelte +16 -16
  41. package/src/components/Icons/Eraser.svelte +16 -16
  42. package/src/components/Icons/EraserFilled.svelte +16 -16
  43. package/src/components/Icons/Icons.scss +20 -20
  44. package/src/components/Icons/Left.svelte +16 -16
  45. package/src/components/Icons/Line.svelte +16 -16
  46. package/src/components/Icons/LineBolded.svelte +16 -16
  47. package/src/components/Icons/Loading.svelte +10 -10
  48. package/src/components/Icons/Minus.svelte +16 -16
  49. package/src/components/Icons/Pause.svelte +10 -10
  50. package/src/components/Icons/Pencil.svelte +29 -29
  51. package/src/components/Icons/PencilFilled.svelte +16 -16
  52. package/src/components/Icons/Play.svelte +10 -10
  53. package/src/components/Icons/Plus.svelte +16 -16
  54. package/src/components/Icons/Rectangle.svelte +16 -16
  55. package/src/components/Icons/RectangleBolded.svelte +16 -16
  56. package/src/components/Icons/Redo.svelte +15 -15
  57. package/src/components/Icons/Reset.svelte +26 -26
  58. package/src/components/Icons/Rhombus.svelte +16 -16
  59. package/src/components/Icons/RhombusBolded.svelte +16 -16
  60. package/src/components/Icons/Right.svelte +16 -16
  61. package/src/components/Icons/Selector.svelte +24 -24
  62. package/src/components/Icons/SelectorFilled.svelte +18 -18
  63. package/src/components/Icons/SpeechBalloon.svelte +16 -16
  64. package/src/components/Icons/Star.svelte +16 -16
  65. package/src/components/Icons/StarBolded.svelte +16 -16
  66. package/src/components/Icons/Text.svelte +16 -16
  67. package/src/components/Icons/TextFilled.svelte +17 -17
  68. package/src/components/Icons/Triangle.svelte +16 -16
  69. package/src/components/Icons/TriangleBolded.svelte +16 -16
  70. package/src/components/Icons/Undo.svelte +15 -15
  71. package/src/components/Icons/Up.svelte +16 -16
  72. package/src/components/Icons/WhiteboardAdd.svelte +34 -34
  73. package/src/components/Icons/index.ts +93 -93
  74. package/src/components/PageControl/PageControl.scss +15 -15
  75. package/src/components/PageControl/PageControl.svelte +79 -79
  76. package/src/components/PageControl/PageControl.svelte.d.ts +13 -13
  77. package/src/components/PageControl/index.ts +2 -2
  78. package/src/components/PlayerControl/PlayerControl.scss +57 -57
  79. package/src/components/PlayerControl/PlayerControl.svelte +153 -153
  80. package/src/components/PlayerControl/PlayerControl.svelte.d.ts +13 -13
  81. package/src/components/PlayerControl/index.ts +2 -2
  82. package/src/components/RedoUndo/RedoUndo.scss +11 -11
  83. package/src/components/RedoUndo/RedoUndo.svelte +60 -60
  84. package/src/components/RedoUndo/RedoUndo.svelte.d.ts +13 -13
  85. package/src/components/RedoUndo/index.ts +2 -2
  86. package/src/components/Toolbar/README.md +57 -57
  87. package/src/components/Toolbar/Toolbar.scss +78 -78
  88. package/src/components/Toolbar/Toolbar.svelte +62 -62
  89. package/src/components/Toolbar/Toolbar.svelte.d.ts +13 -13
  90. package/src/components/Toolbar/components/Contents.scss +168 -168
  91. package/src/components/Toolbar/components/Contents.svelte +202 -197
  92. package/src/components/Toolbar/components/Shapes.svelte +85 -85
  93. package/src/components/Toolbar/components/Slider.scss +119 -119
  94. package/src/components/Toolbar/components/Slider.svelte +54 -54
  95. package/src/components/Toolbar/components/StrokeColor.svelte +39 -39
  96. package/src/components/Toolbar/components/StrokeWidth.svelte +20 -20
  97. package/src/components/Toolbar/components/TextColor.svelte +39 -39
  98. package/src/components/Toolbar/components/constants.ts +80 -80
  99. package/src/components/Toolbar/components/helper.ts +24 -24
  100. package/src/components/Toolbar/index.ts +2 -2
  101. package/src/components/ZoomControl/ZoomControl.scss +15 -15
  102. package/src/components/ZoomControl/ZoomControl.svelte +99 -99
  103. package/src/components/ZoomControl/ZoomControl.svelte.d.ts +13 -13
  104. package/src/components/ZoomControl/index.ts +2 -2
  105. package/src/components/helpers.ts +3 -3
  106. package/src/components/theme.scss +92 -92
  107. package/src/components/variables.scss +69 -69
  108. package/src/index.ts +13 -13
  109. package/src/style.scss +36 -36
  110. package/src/typings.ts +38 -38
@@ -1,57 +1,57 @@
1
- ## Fastboard Toolbar
2
-
3
- ```
4
- +---+ vertically center of the viewport
5
- | ^ |-+ up/down button to do scroll
6
- : / :<| collapse/expand button to toggle toolbar to the left
7
- | v |-+
8
- +---+ dynamic height according to the viewport
9
- ```
10
-
11
- This doc will give you an overview of how the toolbar structures, from top (outer) to bottom (inner).
12
-
13
- ### The Outmost Container
14
-
15
- <pre>--- content
16
- &uarr;
17
- : |&larr; handler
18
- &darr;
19
- ---</pre>
20
-
21
- ```svelte
22
- <container style="height: 100%; display: flex; align-items: center">
23
- <content style="height: {computed_height}px" />
24
- <handler style="position: absolute; left: 100%" />
25
- </container>
26
- ```
27
-
28
- - Container has the full height for further calculations.
29
- - Content is actually visible parts, it has background color.\
30
- Its height will be calculated later.
31
- - Handler is the button to collapse/expand the toolbar.
32
-
33
- ### The Content
34
-
35
- <pre>------- content
36
- ^ up button
37
- .---. scrollable area
38
- : :
39
- '---'
40
- v down button
41
- -------</pre>
42
-
43
- ```svelte
44
- <content style="height: {computed_height}px">
45
- <up-button />
46
- <scrollable-area style="overflow: hidden" />
47
- <down-button />
48
- </content>
49
- ```
50
-
51
- The `computed_height` is calculated by:
52
-
53
- ```js
54
- const max_height = button_height * 2 + scrollable_area_full_height;
55
- let full_height = container.height;
56
- computed_height = full_height < max_height ? full_height : max_height;
57
- ```
1
+ ## Fastboard Toolbar
2
+
3
+ ```
4
+ +---+ vertically center of the viewport
5
+ | ^ |-+ up/down button to do scroll
6
+ : / :<| collapse/expand button to toggle toolbar to the left
7
+ | v |-+
8
+ +---+ dynamic height according to the viewport
9
+ ```
10
+
11
+ This doc will give you an overview of how the toolbar structures, from top (outer) to bottom (inner).
12
+
13
+ ### The Outmost Container
14
+
15
+ <pre>--- content
16
+ &uarr;
17
+ : |&larr; handler
18
+ &darr;
19
+ ---</pre>
20
+
21
+ ```svelte
22
+ <container style="height: 100%; display: flex; align-items: center">
23
+ <content style="height: {computed_height}px" />
24
+ <handler style="position: absolute; left: 100%" />
25
+ </container>
26
+ ```
27
+
28
+ - Container has the full height for further calculations.
29
+ - Content is actually visible parts, it has background color.\
30
+ Its height will be calculated later.
31
+ - Handler is the button to collapse/expand the toolbar.
32
+
33
+ ### The Content
34
+
35
+ <pre>------- content
36
+ ^ up button
37
+ .---. scrollable area
38
+ : :
39
+ '---'
40
+ v down button
41
+ -------</pre>
42
+
43
+ ```svelte
44
+ <content style="height: {computed_height}px">
45
+ <up-button />
46
+ <scrollable-area style="overflow: hidden" />
47
+ <down-button />
48
+ </content>
49
+ ```
50
+
51
+ The `computed_height` is calculated by:
52
+
53
+ ```js
54
+ const max_height = button_height * 2 + scrollable_area_full_height;
55
+ let full_height = container.height;
56
+ computed_height = full_height < max_height ? full_height : max_height;
57
+ ```
@@ -1,78 +1,78 @@
1
- @import "../theme.scss";
2
-
3
- $name: "fastboard-toolbar";
4
-
5
- .#{$name} {
6
- height: 100%;
7
- display: flex;
8
- align-items: center;
9
- position: relative;
10
- transform: translateX(0);
11
- transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
12
- pointer-events: none;
13
-
14
- &.collapsed {
15
- transform: translateX(-100%);
16
- }
17
- }
18
-
19
- .#{$name}-handler {
20
- position: absolute;
21
- left: 100%;
22
- width: 17px;
23
- font-size: 0;
24
- border-radius: 3px;
25
- cursor: pointer;
26
- pointer-events: auto;
27
-
28
- &:focus-within {
29
- outline: 2px solid -webkit-focus-ring-color;
30
- }
31
-
32
- input[type="checkbox"] {
33
- position: absolute;
34
- top: 0;
35
- left: 0;
36
- appearance: none;
37
- margin: 0;
38
- width: 100%;
39
- height: 100%;
40
- cursor: pointer;
41
- opacity: 0;
42
- z-index: -1;
43
- }
44
-
45
- svg {
46
- opacity: 0;
47
- transition: opacity 0.5s 1s;
48
- pointer-events: none;
49
- }
50
-
51
- @each $name, $theme in $themes {
52
- &.#{$name} &-bg-color {
53
- fill: read($theme, "bg-color");
54
- }
55
- &.#{$name} &-border-color {
56
- stroke: read($theme, "border-color");
57
- }
58
- &.#{$name} &-image-stroke-color {
59
- stroke: read($theme, "color");
60
- }
61
- &.#{$name} &-image-fill-color {
62
- fill: read($theme, "color");
63
- }
64
- }
65
- }
66
-
67
- .#{$name}:hover .#{$name}-handler svg,
68
- .#{$name}.collapsed .#{$name}-handler svg {
69
- opacity: 1;
70
- transition: opacity 0.2s;
71
- }
72
-
73
- .#{$name}-btn {
74
- @include btn(32px, 4px);
75
- }
76
-
77
- @import "./components/Slider.scss";
78
- @import "./components/Contents.scss";
1
+ @import "../theme.scss";
2
+
3
+ $name: "fastboard-toolbar";
4
+
5
+ .#{$name} {
6
+ height: 100%;
7
+ display: flex;
8
+ align-items: center;
9
+ position: relative;
10
+ transform: translateX(0);
11
+ transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
12
+ pointer-events: none;
13
+
14
+ &.collapsed {
15
+ transform: translateX(-100%);
16
+ }
17
+ }
18
+
19
+ .#{$name}-handler {
20
+ position: absolute;
21
+ left: 100%;
22
+ width: 17px;
23
+ font-size: 0;
24
+ border-radius: 3px;
25
+ cursor: pointer;
26
+ pointer-events: auto;
27
+
28
+ &:focus-within {
29
+ outline: 2px solid -webkit-focus-ring-color;
30
+ }
31
+
32
+ input[type="checkbox"] {
33
+ position: absolute;
34
+ top: 0;
35
+ left: 0;
36
+ appearance: none;
37
+ margin: 0;
38
+ width: 100%;
39
+ height: 100%;
40
+ cursor: pointer;
41
+ opacity: 0;
42
+ z-index: -1;
43
+ }
44
+
45
+ svg {
46
+ opacity: 0;
47
+ transition: opacity 0.5s 1s;
48
+ pointer-events: none;
49
+ }
50
+
51
+ @each $name, $theme in $themes {
52
+ &.#{$name} &-bg-color {
53
+ fill: read($theme, "bg-color");
54
+ }
55
+ &.#{$name} &-border-color {
56
+ stroke: read($theme, "border-color");
57
+ }
58
+ &.#{$name} &-image-stroke-color {
59
+ stroke: read($theme, "color");
60
+ }
61
+ &.#{$name} &-image-fill-color {
62
+ fill: read($theme, "color");
63
+ }
64
+ }
65
+ }
66
+
67
+ .#{$name}:hover .#{$name}-handler svg,
68
+ .#{$name}.collapsed .#{$name}-handler svg {
69
+ opacity: 1;
70
+ transition: opacity 0.2s;
71
+ }
72
+
73
+ .#{$name}-btn {
74
+ @include btn(32px, 4px);
75
+ }
76
+
77
+ @import "./components/Slider.scss";
78
+ @import "./components/Contents.scss";
@@ -1,62 +1,62 @@
1
- <script lang="ts">
2
- import type { FastboardApp } from "@netless/fastboard-core";
3
- import type { Language, Theme, ToolbarConfig } from "../../typings";
4
- import { writable as svelte_writable } from "svelte/store";
5
- import { height } from "../../actions/height";
6
- import { clamp } from "../helpers";
7
- import Contents from "./components/Contents.svelte";
8
-
9
- export let app: FastboardApp | null | undefined = null;
10
- export let theme: Theme = "light";
11
- export let language: Language = "en";
12
- export let config: ToolbarConfig = {};
13
-
14
- const name = "fastboard-toolbar";
15
- const extra_height = (32 + 4 + 4) * 2;
16
-
17
- $: writable = app?.writable;
18
- $: disabled = !$writable;
19
-
20
- let collapsed = false;
21
- let container_height = svelte_writable(0);
22
- let scroll_height = svelte_writable(0);
23
-
24
- $: computed_height = clamp($container_height, extra_height, $scroll_height + extra_height);
25
- $: scrollable = $scroll_height + extra_height > $container_height;
26
-
27
- $: hide_apps = config.apps?.enable === false;
28
- </script>
29
-
30
- <div class="{name} {theme}" class:collapsed use:height={container_height}>
31
- <div class="{name}-contents {theme}" style:height={scrollable ? computed_height + "px" : "auto"}>
32
- <Contents
33
- {app}
34
- {theme}
35
- {language}
36
- {disabled}
37
- {scroll_height}
38
- {computed_height}
39
- {scrollable}
40
- {hide_apps}
41
- />
42
- </div>
43
- <label class="{name}-handler {theme}">
44
- <input type="checkbox" bind:checked={collapsed} />
45
- <svg fill="none" stroke-width="2" viewBox="0 0 32 120">
46
- <path
47
- fill="#fff"
48
- stroke="none"
49
- d="m0 0 24 16q6 4 6 14v60q0 10-6 14L0 120"
50
- class="{name}-handler-bg-color"
51
- />
52
- <path stroke="#000" d="m0 0 24 16q6 4 6 14v60q0 10-6 14L0 120" class="{name}-handler-border-color" />
53
- {#if collapsed}
54
- <path stroke="#000" d="M10 52v16" class="{name}-handler-image-stroke-color" />
55
- <path fill="#000" stroke="none" d="M14 52v16l8-8z" class="{name}-handler-image-fill-color" />
56
- {:else}
57
- <path stroke="#000" d="M20 52v16" class="{name}-handler-image-stroke-color" />
58
- <path fill="#000" stroke="none" d="M16 52v16l-8-8z" class="{name}-handler-image-fill-color" />
59
- {/if}
60
- </svg>
61
- </label>
62
- </div>
1
+ <script lang="ts">
2
+ import type { FastboardApp } from "@netless/fastboard-core";
3
+ import type { Language, Theme, ToolbarConfig } from "../../typings";
4
+ import { writable as svelte_writable } from "svelte/store";
5
+ import { height } from "../../actions/height";
6
+ import { clamp } from "../helpers";
7
+ import Contents from "./components/Contents.svelte";
8
+
9
+ export let app: FastboardApp | null | undefined = null;
10
+ export let theme: Theme = "light";
11
+ export let language: Language = "en";
12
+ export let config: ToolbarConfig = {};
13
+
14
+ const name = "fastboard-toolbar";
15
+ const extra_height = (32 + 4 + 4) * 2;
16
+
17
+ $: writable = app?.writable;
18
+ $: disabled = !$writable;
19
+
20
+ let collapsed = false;
21
+ let container_height = svelte_writable(0);
22
+ let scroll_height = svelte_writable(0);
23
+
24
+ $: computed_height = clamp($container_height, extra_height, $scroll_height + extra_height);
25
+ $: scrollable = $scroll_height + extra_height > $container_height;
26
+
27
+ $: hide_apps = config.apps?.enable === false;
28
+ </script>
29
+
30
+ <div class="{name} {theme}" class:collapsed use:height={container_height}>
31
+ <div class="{name}-contents {theme}" style:height={scrollable ? computed_height + "px" : "auto"}>
32
+ <Contents
33
+ {app}
34
+ {theme}
35
+ {language}
36
+ {disabled}
37
+ {scroll_height}
38
+ {computed_height}
39
+ {scrollable}
40
+ {hide_apps}
41
+ />
42
+ </div>
43
+ <label class="{name}-handler {theme}">
44
+ <input type="checkbox" bind:checked={collapsed} />
45
+ <svg fill="none" stroke-width="2" viewBox="0 0 32 120">
46
+ <path
47
+ fill="#fff"
48
+ stroke="none"
49
+ d="m0 0 24 16q6 4 6 14v60q0 10-6 14L0 120"
50
+ class="{name}-handler-bg-color"
51
+ />
52
+ <path stroke="#000" d="m0 0 24 16q6 4 6 14v60q0 10-6 14L0 120" class="{name}-handler-border-color" />
53
+ {#if collapsed}
54
+ <path stroke="#000" d="M10 52v16" class="{name}-handler-image-stroke-color" />
55
+ <path fill="#000" stroke="none" d="M14 52v16l8-8z" class="{name}-handler-image-fill-color" />
56
+ {:else}
57
+ <path stroke="#000" d="M20 52v16" class="{name}-handler-image-stroke-color" />
58
+ <path fill="#000" stroke="none" d="M16 52v16l-8-8z" class="{name}-handler-image-fill-color" />
59
+ {/if}
60
+ </svg>
61
+ </label>
62
+ </div>
@@ -1,13 +1,13 @@
1
- import type { FastboardApp } from "@netless/fastboard-core";
2
- import type { Theme, Language, ToolbarConfig } from "../../typings";
3
- import { SvelteComponentTyped } from "svelte";
4
-
5
- export declare interface ToolbarProps {
6
- app?: FastboardApp | null;
7
- theme?: Theme;
8
- language?: Language;
9
- config?: ToolbarConfig;
10
- }
11
-
12
- declare class Toolbar extends SvelteComponentTyped<ToolbarProps> {}
13
- export default Toolbar;
1
+ import type { FastboardApp } from "@netless/fastboard-core";
2
+ import type { Theme, Language, ToolbarConfig } from "../../typings";
3
+ import { SvelteComponentTyped } from "svelte";
4
+
5
+ export declare interface ToolbarProps {
6
+ app?: FastboardApp | null;
7
+ theme?: Theme;
8
+ language?: Language;
9
+ config?: ToolbarConfig;
10
+ }
11
+
12
+ declare class Toolbar extends SvelteComponentTyped<ToolbarProps> {}
13
+ export default Toolbar;