@netless/fastboard-react 0.2.11 → 0.3.0-canary.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 (105) hide show
  1. package/README.md +49 -0
  2. package/dist/index.d.ts +11 -140
  3. package/dist/index.js +73 -2130
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +71 -2129
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +16 -24
  8. package/src/Fastboard.tsx +12 -0
  9. package/src/PageControl.tsx +11 -0
  10. package/src/RedoUndo.tsx +8 -0
  11. package/src/Toolbar.tsx +8 -0
  12. package/src/ZoomControl.tsx +11 -0
  13. package/src/hooks.tsx +53 -0
  14. package/src/index.tsx +19 -0
  15. package/src/style.scss +3 -26
  16. package/src/behaviors/style.ts +0 -4
  17. package/src/components/Fastboard.scss +0 -46
  18. package/src/components/Fastboard.tsx +0 -108
  19. package/src/components/PageControl/PageControl.scss +0 -84
  20. package/src/components/PageControl/PageControl.tsx +0 -101
  21. package/src/components/PageControl/hooks.ts +0 -24
  22. package/src/components/PageControl/index.ts +0 -2
  23. package/src/components/PlayerControl/PlayerControl.scss +0 -146
  24. package/src/components/PlayerControl/PlayerControl.tsx +0 -131
  25. package/src/components/PlayerControl/components/Button.tsx +0 -44
  26. package/src/components/PlayerControl/hooks.ts +0 -88
  27. package/src/components/PlayerControl/icons/Loading.tsx +0 -13
  28. package/src/components/PlayerControl/icons/Pause.tsx +0 -13
  29. package/src/components/PlayerControl/icons/Play.tsx +0 -13
  30. package/src/components/PlayerControl/icons/index.ts +0 -10
  31. package/src/components/PlayerControl/index.ts +0 -2
  32. package/src/components/RedoUndo/RedoUndo.scss +0 -56
  33. package/src/components/RedoUndo/RedoUndo.tsx +0 -76
  34. package/src/components/RedoUndo/hooks.ts +0 -18
  35. package/src/components/RedoUndo/index.ts +0 -2
  36. package/src/components/ReplayFastboard.tsx +0 -36
  37. package/src/components/Toolbar/Content.tsx +0 -89
  38. package/src/components/Toolbar/Toolbar.scss +0 -343
  39. package/src/components/Toolbar/Toolbar.tsx +0 -84
  40. package/src/components/Toolbar/components/ApplianceButtons.tsx +0 -108
  41. package/src/components/Toolbar/components/AppsButton.tsx +0 -134
  42. package/src/components/Toolbar/components/Button.tsx +0 -45
  43. package/src/components/Toolbar/components/ColorBox.tsx +0 -55
  44. package/src/components/Toolbar/components/CutLine.tsx +0 -8
  45. package/src/components/Toolbar/components/PencilButton.tsx +0 -66
  46. package/src/components/Toolbar/components/ShapesButton.tsx +0 -135
  47. package/src/components/Toolbar/components/Slider.tsx +0 -26
  48. package/src/components/Toolbar/components/TextButton.tsx +0 -62
  49. package/src/components/Toolbar/components/UpDownButtons.tsx +0 -49
  50. package/src/components/Toolbar/components/assets/cocos.png +0 -0
  51. package/src/components/Toolbar/components/assets/collapsed.png +0 -0
  52. package/src/components/Toolbar/components/assets/countdown.png +0 -0
  53. package/src/components/Toolbar/components/assets/expanded.png +0 -0
  54. package/src/components/Toolbar/components/assets/geogebra.png +0 -0
  55. package/src/components/Toolbar/components/assets/vscode.png +0 -0
  56. package/src/components/Toolbar/const.ts +0 -32
  57. package/src/components/Toolbar/hooks.ts +0 -89
  58. package/src/components/Toolbar/icons/Apps.tsx +0 -16
  59. package/src/components/Toolbar/icons/Arrow.tsx +0 -13
  60. package/src/components/Toolbar/icons/Circle.tsx +0 -13
  61. package/src/components/Toolbar/icons/Clean.tsx +0 -16
  62. package/src/components/Toolbar/icons/Clicker.tsx +0 -19
  63. package/src/components/Toolbar/icons/Collapse.tsx +0 -13
  64. package/src/components/Toolbar/icons/Diamond.tsx +0 -13
  65. package/src/components/Toolbar/icons/Down.tsx +0 -13
  66. package/src/components/Toolbar/icons/Eraser.tsx +0 -16
  67. package/src/components/Toolbar/icons/Expand.tsx +0 -13
  68. package/src/components/Toolbar/icons/Laser.tsx +0 -21
  69. package/src/components/Toolbar/icons/Line.tsx +0 -13
  70. package/src/components/Toolbar/icons/Loading.tsx +0 -13
  71. package/src/components/Toolbar/icons/Pencil.tsx +0 -16
  72. package/src/components/Toolbar/icons/Rectangle.tsx +0 -13
  73. package/src/components/Toolbar/icons/Selector.tsx +0 -13
  74. package/src/components/Toolbar/icons/SpeechBalloon.tsx +0 -17
  75. package/src/components/Toolbar/icons/Star.tsx +0 -17
  76. package/src/components/Toolbar/icons/Text.tsx +0 -13
  77. package/src/components/Toolbar/icons/Triangle.tsx +0 -13
  78. package/src/components/Toolbar/icons/Up.tsx +0 -13
  79. package/src/components/Toolbar/icons/index.ts +0 -42
  80. package/src/components/Toolbar/index.ts +0 -2
  81. package/src/components/ZoomControl/ZoomControl.scss +0 -84
  82. package/src/components/ZoomControl/ZoomControl.tsx +0 -96
  83. package/src/components/ZoomControl/hooks.ts +0 -50
  84. package/src/components/ZoomControl/index.ts +0 -2
  85. package/src/components/hooks.ts +0 -66
  86. package/src/components/tippy-util.ts +0 -8
  87. package/src/i18n/en.json +0 -31
  88. package/src/i18n/index.ts +0 -29
  89. package/src/i18n/zh-CN.json +0 -32
  90. package/src/icons/Left.tsx +0 -15
  91. package/src/icons/Minus.tsx +0 -15
  92. package/src/icons/Plus.tsx +0 -15
  93. package/src/icons/Redo.tsx +0 -19
  94. package/src/icons/Reset.tsx +0 -17
  95. package/src/icons/Right.tsx +0 -15
  96. package/src/icons/Undo.tsx +0 -19
  97. package/src/icons/WhiteboardAdd.tsx +0 -26
  98. package/src/icons/index.tsx +0 -11
  99. package/src/index.ts +0 -12
  100. package/src/internal/helpers.ts +0 -31
  101. package/src/internal/hooks.ts +0 -23
  102. package/src/internal/index.ts +0 -2
  103. package/src/theme.ts +0 -36
  104. package/src/typings.ts +0 -15
  105. package/src/vanilla/index.tsx +0 -28
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ ## @netless/fastboard-react
2
+
3
+ The React wrapper of [@netless/fastboard-ui](https://github.com/netless-io/fastboard/tree/main/packages/fastboard-ui).
4
+
5
+ ## Usage
6
+
7
+ ```js
8
+ import React, { useEffect, useState } from "react";
9
+ import ReactDOM from "react-dom";
10
+ import { createFastboard, Fastboard } from "@netless/fastboard-react";
11
+
12
+ function App() {
13
+ const [app, setApp] = useState(null);
14
+
15
+ useEffect(() => {
16
+ let app_instance;
17
+
18
+ createFastboard({
19
+ sdkConfig: {
20
+ appIdentifier: "whiteboard_app_id",
21
+ },
22
+ joinRoom: {
23
+ uid: "unique_user_id",
24
+ uuid: "room-uuid",
25
+ roomToken: "NETLESSROOM_...",
26
+ },
27
+ managerConfig: {
28
+ cursor: true,
29
+ },
30
+ }).then(app => {
31
+ setApp((app_instance = app));
32
+ });
33
+
34
+ return () => {
35
+ if (app_instance) {
36
+ app_instance.destroy();
37
+ }
38
+ };
39
+ }, []);
40
+
41
+ return <Fastboard app={app} />;
42
+ }
43
+
44
+ ReactDOM.render(<App />, document.getElementById("app"));
45
+ ```
46
+
47
+ ### License
48
+
49
+ MIT @ [netless](https://github.com/netless-io)
package/dist/index.d.ts CHANGED
@@ -1,146 +1,17 @@
1
- import * as React from 'react';
2
- import React__default, { ForwardedRef } from 'react';
3
- import { FastboardApp, FastboardReadable, AppsStatus, FastboardPlayer } from '@netless/fastboard-core';
4
- import { MemberState, ApplianceNames, ShapeType, Color, Player, PlayerPhase } from 'white-web-sdk';
1
+ export * from '@netless/fastboard-core';
2
+ import { RedoUndoProps, ZoomControlProps, PageControlProps, ToolbarProps, FastboardProps, ReplayFastboardProps } from '@netless/fastboard-ui';
3
+ export { FastboardProps, GenericIcon, Language, PageControlProps, RedoUndoProps, ReplayFastboardProps, Theme, ToolbarProps, ZoomControlProps } from '@netless/fastboard-ui';
4
+ import * as react from 'react';
5
5
 
6
- declare type Theme = "light" | "dark";
7
- declare type Language = "en" | "zh-CN";
8
- interface IconProps {
9
- theme?: Theme;
10
- active?: boolean;
11
- }
12
- interface CommonProps {
13
- theme?: Theme;
14
- }
15
- declare type GenericIcon<K extends string, E extends string = "disable"> = Partial<Record<`${K}Icon${Capitalize<E | "">}`, string>>;
6
+ declare const RedoUndo: react.FunctionComponent<RedoUndoProps>;
16
7
 
17
- declare const FastboardAppContext: React.Context<FastboardApp | null>;
18
- declare const ThemeContext: React.Context<Theme>;
19
- declare function useTheme(userTheme?: Theme | null): Theme;
20
- declare function useFastboardApp(): FastboardApp;
21
- declare function useFastboardValue<T>(val: FastboardReadable<T>): T;
22
- declare function useWritable(): boolean;
23
- declare function useBoxState(): "minimized" | "maximized" | "normal" | undefined;
24
- declare function useFocusedApp(): string | undefined;
25
- declare function useMaximized(): boolean;
26
- declare function useHideControls(): boolean | "toolbar-only";
8
+ declare const ZoomControl: react.FunctionComponent<ZoomControlProps>;
27
9
 
28
- declare function useRedoUndo(): {
29
- redoSteps: number;
30
- undoSteps: number;
31
- redo: () => void;
32
- undo: () => void;
33
- };
10
+ declare const PageControl: react.FunctionComponent<PageControlProps>;
34
11
 
35
- declare type RedoUndoProps = CommonProps & GenericIcon<"undo" | "redo">;
36
- declare function RedoUndo({ theme, undoIcon, undoIconDisable, redoIcon, redoIconDisable }: RedoUndoProps): JSX.Element;
12
+ declare const Toolbar: react.FunctionComponent<ToolbarProps>;
37
13
 
38
- declare const ScalePoints: readonly number[];
39
- declare function useZoomControl(): {
40
- scale: number;
41
- resetCamera: () => void;
42
- zoomIn: () => void;
43
- zoomOut: () => void;
44
- };
14
+ declare const Fastboard: react.FunctionComponent<FastboardProps>;
15
+ declare const ReplayFastboard: react.FunctionComponent<ReplayFastboardProps>;
45
16
 
46
- declare type ZoomControlProps = CommonProps & GenericIcon<"reset" | "minus" | "plus">;
47
- declare function ZoomControl({ theme, resetIcon, resetIconDisable, minusIcon, minusIconDisable, plusIcon, plusIconDisable, }: ZoomControlProps): JSX.Element;
48
-
49
- declare function usePageControl(): {
50
- pageIndex: number;
51
- pageCount: number;
52
- prevPage: () => Promise<void>;
53
- nextPage: () => Promise<void>;
54
- addPage: () => Promise<void>;
55
- };
56
-
57
- declare type PageControlProps = CommonProps & GenericIcon<"add" | "prev" | "next">;
58
- declare function PageControl({ theme, addIcon, addIconDisable, prevIcon, prevIconDisable, nextIcon, nextIconDisable, }: PageControlProps): JSX.Element;
59
-
60
- declare const ShapesMap: {
61
- readonly rectangle: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
62
- readonly ellipse: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
63
- readonly straight: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
64
- readonly arrow: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
65
- readonly pentagram: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
66
- readonly rhombus: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
67
- readonly triangle: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
68
- readonly speechBalloon: React.MemoExoticComponent<(props: IconProps) => JSX.Element>;
69
- };
70
-
71
- declare type UnifiedShape = keyof typeof ShapesMap;
72
- interface ToolbarHook {
73
- readonly writable: boolean;
74
- readonly memberState: MemberState | undefined;
75
- readonly lastShape: UnifiedShape;
76
- readonly appsStatus: AppsStatus;
77
- cleanCurrentScene(): void;
78
- setAppliance(appliance: ApplianceNames, shape?: ShapeType): void;
79
- setStrokeWidth(width: number): void;
80
- setStrokeColor(color: Color): void;
81
- }
82
- declare function useRoomState(): MemberState;
83
- declare function useAppsStatus(): AppsStatus;
84
- declare function useToolbar(): ToolbarHook;
85
- declare const EmptyToolbarHook: ToolbarHook;
86
-
87
- declare type ToolbarProps = CommonProps & {
88
- icons?: GenericIcon<"clicker" | "selector" | "pencil" | "eraser" | "clean" | "expand" | "collapse" | "up" | "down" | "text" | "apps">;
89
- };
90
- declare function Toolbar({ theme, icons }: ToolbarProps): JSX.Element;
91
-
92
- declare function usePlayerControl(player?: Player | null): {
93
- phase: PlayerPhase;
94
- currentTime: number;
95
- totalTime: number;
96
- speed: number;
97
- setSpeed: (speed: number) => void;
98
- togglePlay: () => void;
99
- seekToProgressTime: (time: number) => void;
100
- };
101
-
102
- declare type PlayerControlProps = {
103
- autoHide?: boolean;
104
- player?: FastboardPlayer;
105
- } & Omit<CommonProps, "room"> & GenericIcon<"play" | "pause" | "loading">;
106
- declare function PlayerControl({ theme, autoHide, player: player_, ...icons }: PlayerControlProps): JSX.Element;
107
-
108
- interface FastboardProps {
109
- app?: FastboardApp | null;
110
- theme?: Theme;
111
- layout?: {
112
- Toolbar?: boolean;
113
- RedoUndo?: boolean;
114
- ZoomControl?: boolean;
115
- PageControl?: boolean;
116
- };
117
- language?: Language;
118
- }
119
- declare type DivProps = React__default.DetailedHTMLProps<React__default.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
120
- declare type WithForwardedRef<T = HTMLDivElement> = {
121
- forwardedRef: ForwardedRef<T>;
122
- };
123
- declare const Fastboard: React__default.ForwardRefExoticComponent<Pick<FastboardProps & React__default.ClassAttributes<HTMLDivElement> & React__default.HTMLAttributes<HTMLDivElement>, keyof React__default.HTMLAttributes<HTMLDivElement> | "key" | keyof FastboardProps> & React__default.RefAttributes<HTMLDivElement>>;
124
-
125
- interface ReplayFastboardProps {
126
- player?: FastboardPlayer | null;
127
- theme?: Theme;
128
- autoHideControl?: boolean;
129
- }
130
- declare const ReplayFastboard: React__default.ForwardRefExoticComponent<Pick<ReplayFastboardProps & React__default.ClassAttributes<HTMLDivElement> & React__default.HTMLAttributes<HTMLDivElement>, keyof React__default.HTMLAttributes<HTMLDivElement> | "key" | keyof ReplayFastboardProps> & React__default.RefAttributes<HTMLDivElement>>;
131
-
132
- declare type MountProps = Omit<FastboardProps & DivProps, "ref">;
133
- /**
134
- * Mount fastboard app to some dom, returns the disposer, which will unmount the app.
135
- * @example
136
- * let app = await createFastboard({ ...config })
137
- * const { update, destroy } = mount(app, document.getElementById("whiteboard"))
138
- * update({ theme: 'dark' })
139
- * destroy()
140
- */
141
- declare function mount(app: FastboardApp, dom: HTMLElement, props: MountProps): {
142
- update(props: MountProps): void;
143
- destroy(): void;
144
- };
145
-
146
- export { CommonProps, DivProps, EmptyToolbarHook, Fastboard, FastboardAppContext, FastboardProps, GenericIcon, IconProps, Language, MountProps, PageControl, PageControlProps, PlayerControl, PlayerControlProps, RedoUndo, RedoUndoProps, ReplayFastboard, ReplayFastboardProps, ScalePoints, Theme, ThemeContext, Toolbar, ToolbarHook, ToolbarProps, UnifiedShape, WithForwardedRef, ZoomControl, ZoomControlProps, mount, useAppsStatus, useBoxState, useFastboardApp, useFastboardValue, useFocusedApp, useHideControls, useMaximized, usePageControl, usePlayerControl, useRedoUndo, useRoomState, useTheme, useToolbar, useWritable, useZoomControl };
17
+ export { Fastboard, PageControl, RedoUndo, ReplayFastboard, Toolbar, ZoomControl };