@netless/fastboard-ui 1.0.0-canary.9 → 1.0.0

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 (64) hide show
  1. package/dist/full.d.ts +178 -0
  2. package/dist/index.d.ts +74 -75
  3. package/dist/index.js +4200 -3679
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +4188 -3650
  6. package/dist/index.mjs.map +1 -0
  7. package/dist/index.svelte.mjs +6102 -6540
  8. package/dist/index.svelte.mjs.map +1 -0
  9. package/dist/lite.d.ts +178 -0
  10. package/lite.d.ts +1 -0
  11. package/package.json +19 -10
  12. package/src/actions/tippy.ts +6 -11
  13. package/src/behaviors/apps.ts +38 -4
  14. package/src/components/Button/Button.svelte +1 -4
  15. package/src/components/Button/Button.svelte.d.ts +1 -2
  16. package/src/components/Fastboard/Fastboard.scss +14 -2
  17. package/src/components/Fastboard/Fastboard.svelte +15 -5
  18. package/src/components/Fastboard/Fastboard.svelte.d.ts +6 -2
  19. package/src/components/Fastboard/ReplayFastboard.svelte +2 -2
  20. package/src/components/Fastboard/ReplayFastboard.svelte.d.ts +3 -3
  21. package/src/components/Icon/Icon.svelte.d.ts +1 -1
  22. package/src/components/Icons/{PencilEraser.svelte → Drag.svelte} +2 -2
  23. package/src/components/Icons/{PencilEraserFilled.svelte → DragFilled.svelte} +1 -3
  24. package/src/components/Icons/Eraser.svelte +1 -35
  25. package/src/components/Icons/EraserFilled.svelte +2 -2
  26. package/src/components/Icons/Laser.svelte +21 -0
  27. package/src/components/Icons/LaserFilled.svelte +14 -0
  28. package/src/components/Icons/LaserPen.svelte +20 -0
  29. package/src/components/Icons/LaserPenFilled.svelte +20 -0
  30. package/src/components/Icons/index.ts +12 -11
  31. package/src/components/PageControl/PageControl.svelte +4 -3
  32. package/src/components/PageControl/PageControl.svelte.d.ts +1 -1
  33. package/src/components/PlayerControl/PlayerControl.svelte.d.ts +1 -1
  34. package/src/components/RedoUndo/RedoUndo.svelte +2 -1
  35. package/src/components/RedoUndo/RedoUndo.svelte.d.ts +1 -1
  36. package/src/components/Toolbar/Toolbar.scss +14 -4
  37. package/src/components/Toolbar/Toolbar.svelte +34 -27
  38. package/src/components/Toolbar/Toolbar.svelte.d.ts +2 -19
  39. package/src/components/Toolbar/components/Contents.scss +19 -14
  40. package/src/components/Toolbar/components/Contents.svelte +98 -235
  41. package/src/components/Toolbar/components/Slider.scss +3 -1
  42. package/src/components/Toolbar/components/StrokeColor.svelte +12 -7
  43. package/src/components/Toolbar/components/TextColor.svelte +12 -7
  44. package/src/components/Toolbar/components/constants.ts +22 -36
  45. package/src/components/Toolbar/components/helper.ts +24 -2
  46. package/src/components/Toolbar/definitions/Clear.svelte +13 -0
  47. package/src/components/Toolbar/definitions/Clicker.svelte +19 -0
  48. package/src/components/Toolbar/definitions/Eraser.svelte +19 -0
  49. package/src/components/Toolbar/definitions/Hand.svelte +19 -0
  50. package/src/components/Toolbar/definitions/Laser.svelte +19 -0
  51. package/src/components/Toolbar/definitions/Pencil.svelte +23 -0
  52. package/src/components/Toolbar/definitions/Selector.svelte +19 -0
  53. package/src/components/Toolbar/definitions/Shapes.svelte +41 -0
  54. package/src/components/Toolbar/definitions/Text.svelte +20 -0
  55. package/src/components/ZoomControl/ZoomControl.svelte +5 -6
  56. package/src/components/ZoomControl/ZoomControl.svelte.d.ts +1 -1
  57. package/src/components/theme.scss +4 -11
  58. package/src/helpers/index.ts +60 -64
  59. package/src/typings.ts +42 -25
  60. package/dist/index.css +0 -888
  61. package/src/components/Icons/Curve.svelte +0 -10
  62. package/src/components/Icons/CurveDashed.svelte +0 -16
  63. package/src/components/Toolbar/components/PencilEraserSize.svelte +0 -27
  64. /package/src/components/Toolbar/components/{Shapes.svelte → SelectShapes.svelte} +0 -0
package/dist/full.d.ts ADDED
@@ -0,0 +1,178 @@
1
+ import { Color, FastboardApp, FastboardPlayer } from '@netless/fastboard-core/full';
2
+ import { SvelteComponentTyped } from 'svelte/internal';
3
+ export { SvelteComponentTyped } from 'svelte/internal';
4
+
5
+ interface SvelteAction<T = void> {
6
+ (node: HTMLElement, parameters: T): void | {
7
+ update?: (parameters: T) => void;
8
+ destroy?: () => void;
9
+ };
10
+ }
11
+ type Theme = "light" | "dark";
12
+ type Language = "en" | "zh-CN";
13
+ type IconType = "normal" | "disable";
14
+ type GenericIcon<K extends string, E extends string = IconType> = {
15
+ [key in K]: {
16
+ [kind in E]: string;
17
+ };
18
+ };
19
+ type I18nData<T extends string> = Record<Language, Record<T, string>>;
20
+ type ToolbarItem = "clicker" | "selector" | "pencil" | "text" | "shapes" | "eraser" | "clear" | "hand" | "laserPointer";
21
+ interface ToolbarConfig {
22
+ /** @default "left" */
23
+ placement?: "left" | "right";
24
+ /** @default ["clicker", "selector", "pencil", "text", "shapes", "eraser", "clear"] */
25
+ items?: ToolbarItem[];
26
+ /**
27
+ * Note: updating this option does not take effect when the element was mounted.
28
+ * Make sure to set this option in `UI.mount(div, { configs: { toolbar: { collapsed: true } } })`.
29
+ * @default false
30
+ */
31
+ collapsed?: boolean;
32
+ /** Control the last button which opens apps stock on toolbar. */
33
+ apps?: {
34
+ enable?: boolean;
35
+ };
36
+ /** 颜色 */
37
+ colors?: Color[];
38
+ }
39
+ interface FastboardUIConfig {
40
+ toolbar?: {
41
+ enable?: boolean;
42
+ } & ToolbarConfig;
43
+ redo_undo?: {
44
+ enable?: boolean;
45
+ };
46
+ zoom_control?: {
47
+ enable?: boolean;
48
+ };
49
+ page_control?: {
50
+ enable?: boolean;
51
+ };
52
+ }
53
+ interface ReplayFastboardUIConfig {
54
+ player_control?: {
55
+ enable?: boolean;
56
+ };
57
+ }
58
+
59
+ declare interface RedoUndoProps {
60
+ app?: FastboardApp | null;
61
+ theme?: Theme;
62
+ language?: Language;
63
+ icons?: GenericIcon<"undo" | "redo">;
64
+ }
65
+
66
+ declare class RedoUndo extends SvelteComponentTyped<RedoUndoProps> {}
67
+
68
+ declare interface PageControlProps {
69
+ app?: FastboardApp | null;
70
+ theme?: Theme;
71
+ language?: Language;
72
+ icons?: GenericIcon<"prev" | "next" | "add">;
73
+ }
74
+
75
+ declare class PageControl extends SvelteComponentTyped<PageControlProps> {}
76
+
77
+ declare interface ZoomControlProps {
78
+ app?: FastboardApp | null;
79
+ theme?: Theme;
80
+ language?: Language;
81
+ icons?: GenericIcon<"plus" | "minus" | "reset">;
82
+ }
83
+
84
+ declare class ZoomControl extends SvelteComponentTyped<ZoomControlProps> {}
85
+
86
+ declare interface ToolbarProps {
87
+ app?: FastboardApp | null;
88
+ theme?: Theme;
89
+ language?: Language;
90
+ config?: ToolbarConfig;
91
+ }
92
+
93
+ declare class Toolbar extends SvelteComponentTyped<ToolbarProps> {}
94
+
95
+ declare interface PlayerControlProps {
96
+ player?: FastboardPlayer | null;
97
+ theme?: Theme;
98
+ language?: Language;
99
+ icons?: GenericIcon<"play" | "pause" | "loading">;
100
+ }
101
+
102
+ declare class PlayerControl extends SvelteComponentTyped<PlayerControlProps> {}
103
+
104
+ declare interface ReplayFastboardProps {
105
+ player?: FastboardPlayer | null;
106
+ theme?: Theme;
107
+ language?: Language;
108
+ containerRef?: (container: HTMLDivElement | null) => void;
109
+ config?: ReplayFastboardUIConfig;
110
+ }
111
+
112
+ declare class ReplayFastboard extends SvelteComponentTyped<ReplayFastboardProps> {}
113
+
114
+ declare interface FastboardProps {
115
+ app?: FastboardApp | null;
116
+ theme?: Theme;
117
+ language?: Language;
118
+ /**
119
+ * Note: updating this option does not take effect when the element was mounted.
120
+ * Make sure to set this option in `UI.mount(div, { containerRef })`.
121
+ */
122
+ containerRef?: (container: HTMLDivElement | null) => void;
123
+ config?: FastboardUIConfig;
124
+ }
125
+
126
+ declare class Fastboard extends SvelteComponentTyped<FastboardProps> {}
127
+
128
+ interface UI {
129
+ /** render UI to div */
130
+ mount(div: Element, props?: FastboardProps): UI;
131
+ /** update UI (theme, language, etc.) */
132
+ update(props?: FastboardProps): void;
133
+ /** remove UI */
134
+ destroy(): void;
135
+ }
136
+ /**
137
+ * @example
138
+ * let ui = createUI(fastboardApp, document.getElementById("whiteboard"));
139
+ * ui.update({ theme: "dark" })
140
+ */
141
+ declare function createUI(app?: FastboardApp | null, div?: Element): UI;
142
+ interface ReplayUI {
143
+ /** render UI to div */
144
+ mount(div: Element, props?: ReplayFastboardProps): ReplayUI;
145
+ /** update UI (theme, language, etc.) */
146
+ update(props?: ReplayFastboardProps): void;
147
+ /** remove UI */
148
+ destroy(): void;
149
+ }
150
+ /**
151
+ * @example
152
+ * let ui = createReplayUI(fastboardPlayer, document.getElementById("whiteboard"));
153
+ * ui.update({ theme: "dark" })
154
+ */
155
+ declare function createReplayUI(player?: FastboardPlayer | null, div?: Element): ReplayUI;
156
+
157
+ interface AppInToolbar {
158
+ kind: string;
159
+ icon: string;
160
+ label: string;
161
+ onClick: (app: FastboardApp) => void;
162
+ }
163
+ declare class AppsInToolbar {
164
+ private _data;
165
+ _listeners: Array<(data: AppInToolbar[]) => void>;
166
+ constructor(_data: AppInToolbar[]);
167
+ get data(): AppInToolbar[];
168
+ get length(): number;
169
+ subscribe(fn: (data: AppInToolbar[]) => void): () => void;
170
+ push(...data: AppInToolbar[]): void;
171
+ insert(data: AppInToolbar, index: number): void;
172
+ delete(filter: (data: AppInToolbar) => boolean): void;
173
+ clear(): void;
174
+ }
175
+
176
+ declare const apps: AppsInToolbar;
177
+
178
+ export { AppInToolbar, AppsInToolbar, Fastboard, FastboardProps, FastboardUIConfig, GenericIcon, I18nData, IconType, Language, PageControl, PageControlProps, PlayerControl, PlayerControlProps, RedoUndo, RedoUndoProps, ReplayFastboard, ReplayFastboardProps, ReplayFastboardUIConfig, ReplayUI, SvelteAction, Theme, Toolbar, ToolbarConfig, ToolbarItem, ToolbarProps, UI, ZoomControl, ZoomControlProps, apps, createReplayUI, createUI };
package/dist/index.d.ts CHANGED
@@ -1,67 +1,6 @@
1
- import { FastboardApp, FastboardPlayer } from '@netless/fastboard-core';
2
- import { SvelteComponentTyped } from 'svelte';
3
-
4
- declare interface PageControlProps {
5
- app?: FastboardApp | null;
6
- theme?: Theme;
7
- language?: Language;
8
- icons?: GenericIcon<"prev" | "next" | "add">;
9
- }
10
-
11
- declare class PageControl extends SvelteComponentTyped<PageControlProps> {}
12
-
13
- declare interface PlayerControlProps {
14
- player?: FastboardPlayer | null;
15
- theme?: Theme;
16
- language?: Language;
17
- icons?: GenericIcon<"play" | "pause" | "loading">;
18
- }
19
-
20
- declare class PlayerControl extends SvelteComponentTyped<PlayerControlProps> {}
21
-
22
- declare interface RedoUndoProps {
23
- app?: FastboardApp | null;
24
- theme?: Theme;
25
- language?: Language;
26
- icons?: GenericIcon<"undo" | "redo">;
27
- }
28
-
29
- declare class RedoUndo extends SvelteComponentTyped<RedoUndoProps> {}
30
-
31
- declare interface ToolbarConfig {
32
- pencil?: {
33
- dotted?: boolean;
34
- };
35
- apps?: {
36
- enable?: boolean;
37
- };
38
- eraser?: {
39
- /**
40
- * - delete: remove shapes under eraser
41
- * - pencil: wipe out part of strokes under eraser, like a real eraser
42
- * - both (default): will show a panel to choose different behavior
43
- */
44
- behavior?: "delete" | "pencil" | "both";
45
- };
46
- }
47
-
48
- declare interface ToolbarProps {
49
- app?: FastboardApp | null;
50
- theme?: Theme;
51
- language?: Language;
52
- config?: ToolbarConfig;
53
- }
54
-
55
- declare class Toolbar extends SvelteComponentTyped<ToolbarProps> {}
56
-
57
- declare interface ZoomControlProps {
58
- app?: FastboardApp | null;
59
- theme?: Theme;
60
- language?: Language;
61
- icons?: GenericIcon<"plus" | "minus" | "reset">;
62
- }
63
-
64
- declare class ZoomControl extends SvelteComponentTyped<ZoomControlProps> {}
1
+ import { Color, FastboardApp, FastboardPlayer } from '@netless/fastboard-core';
2
+ import { SvelteComponentTyped } from 'svelte/internal';
3
+ export { SvelteComponentTyped } from 'svelte/internal';
65
4
 
66
5
  interface SvelteAction<T = void> {
67
6
  (node: HTMLElement, parameters: T): void | {
@@ -78,36 +17,96 @@ type GenericIcon<K extends string, E extends string = IconType> = {
78
17
  };
79
18
  };
80
19
  type I18nData<T extends string> = Record<Language, Record<T, string>>;
20
+ type ToolbarItem = "clicker" | "selector" | "pencil" | "text" | "shapes" | "eraser" | "clear" | "hand" | "laserPointer";
21
+ interface ToolbarConfig {
22
+ /** @default "left" */
23
+ placement?: "left" | "right";
24
+ /** @default ["clicker", "selector", "pencil", "text", "shapes", "eraser", "clear"] */
25
+ items?: ToolbarItem[];
26
+ /**
27
+ * Note: updating this option does not take effect when the element was mounted.
28
+ * Make sure to set this option in `UI.mount(div, { configs: { toolbar: { collapsed: true } } })`.
29
+ * @default false
30
+ */
31
+ collapsed?: boolean;
32
+ /** Control the last button which opens apps stock on toolbar. */
33
+ apps?: {
34
+ enable?: boolean;
35
+ };
36
+ /** 颜色 */
37
+ colors?: Color[];
38
+ }
81
39
  interface FastboardUIConfig {
82
40
  toolbar?: {
83
41
  enable?: boolean;
84
42
  } & ToolbarConfig;
85
43
  redo_undo?: {
86
44
  enable?: boolean;
87
- icons?: RedoUndoProps["icons"];
88
45
  };
89
46
  zoom_control?: {
90
47
  enable?: boolean;
91
- icons?: ZoomControlProps["icons"];
92
48
  };
93
49
  page_control?: {
94
50
  enable?: boolean;
95
- icons?: PageControlProps["icons"];
96
51
  };
97
52
  }
98
53
  interface ReplayFastboardUIConfig {
99
54
  player_control?: {
100
55
  enable?: boolean;
101
- icons?: PlayerControlProps["icons"];
102
56
  };
103
57
  }
104
58
 
59
+ declare interface RedoUndoProps {
60
+ app?: FastboardApp | null;
61
+ theme?: Theme;
62
+ language?: Language;
63
+ icons?: GenericIcon<"undo" | "redo">;
64
+ }
65
+
66
+ declare class RedoUndo extends SvelteComponentTyped<RedoUndoProps> {}
67
+
68
+ declare interface PageControlProps {
69
+ app?: FastboardApp | null;
70
+ theme?: Theme;
71
+ language?: Language;
72
+ icons?: GenericIcon<"prev" | "next" | "add">;
73
+ }
74
+
75
+ declare class PageControl extends SvelteComponentTyped<PageControlProps> {}
76
+
77
+ declare interface ZoomControlProps {
78
+ app?: FastboardApp | null;
79
+ theme?: Theme;
80
+ language?: Language;
81
+ icons?: GenericIcon<"plus" | "minus" | "reset">;
82
+ }
83
+
84
+ declare class ZoomControl extends SvelteComponentTyped<ZoomControlProps> {}
85
+
86
+ declare interface ToolbarProps {
87
+ app?: FastboardApp | null;
88
+ theme?: Theme;
89
+ language?: Language;
90
+ config?: ToolbarConfig;
91
+ }
92
+
93
+ declare class Toolbar extends SvelteComponentTyped<ToolbarProps> {}
94
+
95
+ declare interface PlayerControlProps {
96
+ player?: FastboardPlayer | null;
97
+ theme?: Theme;
98
+ language?: Language;
99
+ icons?: GenericIcon<"play" | "pause" | "loading">;
100
+ }
101
+
102
+ declare class PlayerControl extends SvelteComponentTyped<PlayerControlProps> {}
103
+
105
104
  declare interface ReplayFastboardProps {
106
105
  player?: FastboardPlayer | null;
107
106
  theme?: Theme;
108
107
  language?: Language;
109
- config?: ReplayFastboardUIConfig;
110
108
  containerRef?: (container: HTMLDivElement | null) => void;
109
+ config?: ReplayFastboardUIConfig;
111
110
  }
112
111
 
113
112
  declare class ReplayFastboard extends SvelteComponentTyped<ReplayFastboardProps> {}
@@ -116,6 +115,10 @@ declare interface FastboardProps {
116
115
  app?: FastboardApp | null;
117
116
  theme?: Theme;
118
117
  language?: Language;
118
+ /**
119
+ * Note: updating this option does not take effect when the element was mounted.
120
+ * Make sure to set this option in `UI.mount(div, { containerRef })`.
121
+ */
119
122
  containerRef?: (container: HTMLDivElement | null) => void;
120
123
  config?: FastboardUIConfig;
121
124
  }
@@ -129,8 +132,6 @@ interface UI {
129
132
  update(props?: FastboardProps): void;
130
133
  /** remove UI */
131
134
  destroy(): void;
132
- /** div == null ? destroy() : mount() */
133
- setElement(div: Element | null): void;
134
135
  }
135
136
  /**
136
137
  * @example
@@ -145,8 +146,6 @@ interface ReplayUI {
145
146
  update(props?: ReplayFastboardProps): void;
146
147
  /** remove UI */
147
148
  destroy(): void;
148
- /** div == null ? destroy() : mount() */
149
- setElement(div: Element | null): void;
150
149
  }
151
150
  /**
152
151
  * @example
@@ -174,6 +173,6 @@ declare class AppsInToolbar {
174
173
  clear(): void;
175
174
  }
176
175
 
177
- declare const stockedApps: AppsInToolbar;
176
+ declare const apps: AppsInToolbar;
178
177
 
179
- export { AppInToolbar, AppsInToolbar, Fastboard, FastboardProps, FastboardUIConfig, GenericIcon, I18nData, IconType, Language, PageControl, PageControlProps, PlayerControl, PlayerControlProps, RedoUndo, RedoUndoProps, ReplayFastboard, ReplayFastboardProps, ReplayFastboardUIConfig, ReplayUI, SvelteAction, Theme, Toolbar, ToolbarProps, UI, ZoomControl, ZoomControlProps, createReplayUI, createUI, stockedApps };
178
+ export { AppInToolbar, AppsInToolbar, Fastboard, FastboardProps, FastboardUIConfig, GenericIcon, I18nData, IconType, Language, PageControl, PageControlProps, PlayerControl, PlayerControlProps, RedoUndo, RedoUndoProps, ReplayFastboard, ReplayFastboardProps, ReplayFastboardUIConfig, ReplayUI, SvelteAction, Theme, Toolbar, ToolbarConfig, ToolbarItem, ToolbarProps, UI, ZoomControl, ZoomControlProps, apps, createReplayUI, createUI };