@netless/fastboard-ui 1.0.0-canary.8 → 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 +91 -89
  3. package/dist/index.js +7341 -3085
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +7364 -3113
  6. package/dist/index.mjs.map +1 -0
  7. package/dist/index.svelte.mjs +7350 -3166
  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/scroll.ts +1 -1
  13. package/src/actions/tippy.ts +6 -11
  14. package/src/behaviors/apps.ts +38 -4
  15. package/src/components/Button/Button.svelte +1 -4
  16. package/src/components/Button/Button.svelte.d.ts +1 -2
  17. package/src/components/Fastboard/Fastboard.scss +14 -2
  18. package/src/components/Fastboard/Fastboard.svelte +15 -5
  19. package/src/components/Fastboard/{Fastboard.svelte.ts → Fastboard.svelte.d.ts} +6 -2
  20. package/src/components/Fastboard/ReplayFastboard.svelte +2 -2
  21. package/src/components/Fastboard/{ReplayFastboard.svelte.ts → ReplayFastboard.svelte.d.ts} +3 -3
  22. package/src/components/Icon/Icon.svelte.d.ts +1 -1
  23. package/src/components/Icons/{PencilEraser.svelte → Drag.svelte} +2 -2
  24. package/src/components/Icons/{PencilEraserFilled.svelte → DragFilled.svelte} +1 -3
  25. package/src/components/Icons/Eraser.svelte +1 -35
  26. package/src/components/Icons/EraserFilled.svelte +2 -2
  27. package/src/components/Icons/Laser.svelte +21 -0
  28. package/src/components/Icons/LaserFilled.svelte +14 -0
  29. package/src/components/Icons/LaserPen.svelte +20 -0
  30. package/src/components/Icons/LaserPenFilled.svelte +20 -0
  31. package/src/components/Icons/index.ts +12 -7
  32. package/src/components/PageControl/PageControl.svelte +4 -3
  33. package/src/components/PageControl/PageControl.svelte.d.ts +1 -1
  34. package/src/components/PlayerControl/PlayerControl.svelte.d.ts +1 -1
  35. package/src/components/RedoUndo/RedoUndo.svelte +2 -1
  36. package/src/components/RedoUndo/RedoUndo.svelte.d.ts +1 -1
  37. package/src/components/Toolbar/Toolbar.scss +14 -4
  38. package/src/components/Toolbar/Toolbar.svelte +34 -25
  39. package/src/components/Toolbar/Toolbar.svelte.d.ts +2 -16
  40. package/src/components/Toolbar/components/Contents.scss +19 -14
  41. package/src/components/Toolbar/components/Contents.svelte +100 -204
  42. package/src/components/Toolbar/components/Slider.scss +3 -1
  43. package/src/components/Toolbar/components/Slider.svelte +0 -1
  44. package/src/components/Toolbar/components/StrokeColor.svelte +12 -7
  45. package/src/components/Toolbar/components/TextColor.svelte +12 -7
  46. package/src/components/Toolbar/components/constants.ts +23 -23
  47. package/src/components/Toolbar/components/helper.ts +24 -2
  48. package/src/components/Toolbar/definitions/Clear.svelte +13 -0
  49. package/src/components/Toolbar/definitions/Clicker.svelte +19 -0
  50. package/src/components/Toolbar/definitions/Eraser.svelte +19 -0
  51. package/src/components/Toolbar/definitions/Hand.svelte +19 -0
  52. package/src/components/Toolbar/definitions/Laser.svelte +19 -0
  53. package/src/components/Toolbar/definitions/Pencil.svelte +23 -0
  54. package/src/components/Toolbar/definitions/Selector.svelte +19 -0
  55. package/src/components/Toolbar/definitions/Shapes.svelte +41 -0
  56. package/src/components/Toolbar/definitions/Text.svelte +20 -0
  57. package/src/components/ZoomControl/ZoomControl.svelte +5 -6
  58. package/src/components/ZoomControl/ZoomControl.svelte.d.ts +1 -1
  59. package/src/components/theme.scss +4 -11
  60. package/src/helpers/index.ts +60 -64
  61. package/src/typings.ts +42 -25
  62. package/dist/index.css +0 -888
  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,46 +1,87 @@
1
- import { FastboardApp, FastboardPlayer } from '@netless/fastboard-core';
2
- import { SvelteComponentTyped } from 'svelte';
1
+ import { Color, FastboardApp, FastboardPlayer } from '@netless/fastboard-core';
2
+ import { SvelteComponentTyped } from 'svelte/internal';
3
+ export { SvelteComponentTyped } from 'svelte/internal';
3
4
 
4
- declare interface PageControlProps {
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 {
5
60
  app?: FastboardApp | null;
6
61
  theme?: Theme;
7
62
  language?: Language;
8
- icons?: GenericIcon<"prev" | "next" | "add">;
63
+ icons?: GenericIcon<"undo" | "redo">;
9
64
  }
10
65
 
11
- declare class PageControl extends SvelteComponentTyped<PageControlProps> {}
66
+ declare class RedoUndo extends SvelteComponentTyped<RedoUndoProps> {}
12
67
 
13
- declare interface PlayerControlProps {
14
- player?: FastboardPlayer | null;
68
+ declare interface PageControlProps {
69
+ app?: FastboardApp | null;
15
70
  theme?: Theme;
16
71
  language?: Language;
17
- icons?: GenericIcon<"play" | "pause" | "loading">;
72
+ icons?: GenericIcon<"prev" | "next" | "add">;
18
73
  }
19
74
 
20
- declare class PlayerControl extends SvelteComponentTyped<PlayerControlProps> {}
75
+ declare class PageControl extends SvelteComponentTyped<PageControlProps> {}
21
76
 
22
- declare interface RedoUndoProps {
77
+ declare interface ZoomControlProps {
23
78
  app?: FastboardApp | null;
24
79
  theme?: Theme;
25
80
  language?: Language;
26
- icons?: GenericIcon<"undo" | "redo">;
81
+ icons?: GenericIcon<"plus" | "minus" | "reset">;
27
82
  }
28
83
 
29
- declare class RedoUndo extends SvelteComponentTyped<RedoUndoProps> {}
30
-
31
- declare interface ToolbarConfig {
32
- apps?: {
33
- enable?: boolean;
34
- };
35
- eraser?: {
36
- /**
37
- * - delete: remove shapes under eraser
38
- * - pencil: wipe out part of strokes under eraser, like a real eraser
39
- * - both (default): will show a panel to choose different behavior
40
- */
41
- behavior?: "delete" | "pencil" | "both";
42
- };
43
- }
84
+ declare class ZoomControl extends SvelteComponentTyped<ZoomControlProps> {}
44
85
 
45
86
  declare interface ToolbarProps {
46
87
  app?: FastboardApp | null;
@@ -51,74 +92,39 @@ declare interface ToolbarProps {
51
92
 
52
93
  declare class Toolbar extends SvelteComponentTyped<ToolbarProps> {}
53
94
 
54
- declare interface ZoomControlProps {
55
- app?: FastboardApp | null;
95
+ declare interface PlayerControlProps {
96
+ player?: FastboardPlayer | null;
56
97
  theme?: Theme;
57
98
  language?: Language;
58
- icons?: GenericIcon<"plus" | "minus" | "reset">;
99
+ icons?: GenericIcon<"play" | "pause" | "loading">;
59
100
  }
60
101
 
61
- declare class ZoomControl extends SvelteComponentTyped<ZoomControlProps> {}
62
-
63
- interface SvelteAction<T = void> {
64
- (node: HTMLElement, parameters: T): void | {
65
- update?: (parameters: T) => void;
66
- destroy?: () => void;
67
- };
68
- }
69
- declare type Theme = "light" | "dark";
70
- declare type Language = "en" | "zh-CN";
71
- declare type IconType = "normal" | "disable";
72
- declare type GenericIcon<K extends string, E extends string = IconType> = {
73
- [key in K]: {
74
- [kind in E]: string;
75
- };
76
- };
77
- declare type I18nData<T extends string> = Record<Language, Record<T, string>>;
78
- interface FastboardUIConfig {
79
- toolbar?: {
80
- enable?: boolean;
81
- } & ToolbarConfig;
82
- redo_undo?: {
83
- enable?: boolean;
84
- icons?: RedoUndoProps["icons"];
85
- };
86
- zoom_control?: {
87
- enable?: boolean;
88
- icons?: ZoomControlProps["icons"];
89
- };
90
- page_control?: {
91
- enable?: boolean;
92
- icons?: PageControlProps["icons"];
93
- };
94
- }
95
- interface ReplayFastboardUIConfig {
96
- player_control?: {
97
- enable?: boolean;
98
- icons?: PlayerControlProps["icons"];
99
- };
100
- }
102
+ declare class PlayerControl extends SvelteComponentTyped<PlayerControlProps> {}
101
103
 
102
104
  declare interface ReplayFastboardProps {
103
- player?: FastboardPlayer | null;
104
- theme?: Theme;
105
- language?: Language;
106
- config?: ReplayFastboardUIConfig;
107
- containerRef?: (container: HTMLDivElement | null) => void;
108
- }
109
- declare class ReplayFastboard extends SvelteComponentTyped<ReplayFastboardProps> {
105
+ player?: FastboardPlayer | null;
106
+ theme?: Theme;
107
+ language?: Language;
108
+ containerRef?: (container: HTMLDivElement | null) => void;
109
+ config?: ReplayFastboardUIConfig;
110
110
  }
111
111
 
112
+ declare class ReplayFastboard extends SvelteComponentTyped<ReplayFastboardProps> {}
113
+
112
114
  declare interface FastboardProps {
113
- app?: FastboardApp | null;
114
- theme?: Theme;
115
- language?: Language;
116
- containerRef?: (container: HTMLDivElement | null) => void;
117
- config?: FastboardUIConfig;
118
- }
119
- declare class Fastboard extends SvelteComponentTyped<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;
120
124
  }
121
125
 
126
+ declare class Fastboard extends SvelteComponentTyped<FastboardProps> {}
127
+
122
128
  interface UI {
123
129
  /** render UI to div */
124
130
  mount(div: Element, props?: FastboardProps): UI;
@@ -126,8 +132,6 @@ interface UI {
126
132
  update(props?: FastboardProps): void;
127
133
  /** remove UI */
128
134
  destroy(): void;
129
- /** div == null ? destroy() : mount() */
130
- setElement(div: Element | null): void;
131
135
  }
132
136
  /**
133
137
  * @example
@@ -142,8 +146,6 @@ interface ReplayUI {
142
146
  update(props?: ReplayFastboardProps): void;
143
147
  /** remove UI */
144
148
  destroy(): void;
145
- /** div == null ? destroy() : mount() */
146
- setElement(div: Element | null): void;
147
149
  }
148
150
  /**
149
151
  * @example
@@ -171,6 +173,6 @@ declare class AppsInToolbar {
171
173
  clear(): void;
172
174
  }
173
175
 
174
- declare const stockedApps: AppsInToolbar;
176
+ declare const apps: AppsInToolbar;
175
177
 
176
- 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 };