@netless/app-slide 0.2.2 → 0.3.0-canary.2

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 (59) hide show
  1. package/README-zh.md +1 -4
  2. package/README.md +1 -4
  3. package/dist/Refrigerator.d.ts +13 -0
  4. package/dist/SlideViewer.d.ts +66 -0
  5. package/dist/constants.d.ts +2 -0
  6. package/dist/{DocsViewer/icons → icons}/arrow-left.d.ts +0 -0
  7. package/dist/{DocsViewer/icons → icons}/arrow-right.d.ts +0 -0
  8. package/dist/{DocsViewer/icons → icons}/pause.d.ts +0 -0
  9. package/dist/{DocsViewer/icons → icons}/play.d.ts +0 -0
  10. package/dist/{DocsViewer/icons → icons}/sidebar.d.ts +0 -0
  11. package/dist/index.d.ts +10 -35
  12. package/dist/main.cjs.js +177 -177
  13. package/dist/main.cjs.js.map +1 -1
  14. package/dist/main.es.js +1918 -2478
  15. package/dist/main.es.js.map +1 -1
  16. package/dist/main.iife.js +254 -254
  17. package/dist/main.iife.js.map +1 -1
  18. package/dist/typings.d.ts +21 -9
  19. package/dist/utils.d.ts +1 -0
  20. package/package.json +2 -2
  21. package/src/Refrigerator.ts +66 -0
  22. package/src/SlideViewer.ts +557 -0
  23. package/src/constants.ts +3 -0
  24. package/src/fancy-scrollbar.scss +57 -0
  25. package/src/{DocsViewer/icons → icons}/arrow-left.ts +0 -0
  26. package/src/{DocsViewer/icons → icons}/arrow-right.ts +0 -0
  27. package/src/{DocsViewer/icons → icons}/pause.ts +0 -0
  28. package/src/{DocsViewer/icons → icons}/play.ts +0 -0
  29. package/src/{DocsViewer/icons → icons}/sidebar.ts +0 -0
  30. package/src/index.ts +216 -205
  31. package/src/style.scss +247 -5
  32. package/src/typings.ts +23 -10
  33. package/src/utils.ts +3 -0
  34. package/dist/DocsViewer/index.d.ts +0 -53
  35. package/dist/SlideController/helpers.d.ts +0 -6
  36. package/dist/SlideController/index.d.ts +0 -60
  37. package/dist/SlideDocsViewer/index.d.ts +0 -45
  38. package/dist/SlidePreviewer/index.d.ts +0 -52
  39. package/dist/utils/bgcolor.d.ts +0 -3
  40. package/dist/utils/freezer.d.ts +0 -22
  41. package/dist/utils/helpers.d.ts +0 -6
  42. package/dist/utils/logger.d.ts +0 -39
  43. package/src/DocsViewer/icons/arrow-left.svg +0 -4
  44. package/src/DocsViewer/icons/arrow-right.svg +0 -4
  45. package/src/DocsViewer/icons/pause.svg +0 -4
  46. package/src/DocsViewer/icons/play.svg +0 -4
  47. package/src/DocsViewer/icons/sidebar.svg +0 -4
  48. package/src/DocsViewer/index.ts +0 -368
  49. package/src/DocsViewer/style.scss +0 -228
  50. package/src/DocsViewer/variables.scss +0 -1
  51. package/src/SlideController/helpers.ts +0 -48
  52. package/src/SlideController/index.ts +0 -356
  53. package/src/SlideDocsViewer/index.ts +0 -210
  54. package/src/SlideDocsViewer/style.scss +0 -11
  55. package/src/SlidePreviewer/index.ts +0 -226
  56. package/src/utils/bgcolor.ts +0 -45
  57. package/src/utils/freezer.ts +0 -75
  58. package/src/utils/helpers.ts +0 -26
  59. package/src/utils/logger.ts +0 -106
package/src/style.scss CHANGED
@@ -1,14 +1,256 @@
1
- @import "./DocsViewer/style.scss";
2
- @import "./SlideDocsViewer/style.scss";
1
+ @import "./fancy-scrollbar.scss";
3
2
 
4
- .netless-app-slide-slide {
3
+ $namespace: "netless-app-slide";
4
+
5
+ .#{$namespace}-content {
6
+ position: relative;
7
+ height: 100%;
8
+ overflow: hidden;
9
+ }
10
+
11
+ .#{$namespace}-slide {
5
12
  width: 100%;
6
13
  height: 100%;
14
+ }
15
+
16
+ .#{$namespace}-preview-mask {
17
+ display: none;
18
+ position: absolute;
19
+ z-index: 6000;
20
+ top: 0;
21
+ left: 0;
22
+ width: 100%;
23
+ height: 100%;
24
+ }
25
+
26
+ .#{$namespace}-preview {
27
+ display: flex;
28
+ flex-direction: column;
29
+ align-items: center;
30
+ position: absolute;
31
+ z-index: 6100;
32
+ top: 0;
33
+ left: 0;
34
+ width: 33%;
35
+ max-width: 200px;
36
+ height: 100%;
37
+ padding-top: 10px;
38
+ transform: translateX(-100%);
39
+ background: rgba(237, 237, 240, 0.9);
40
+ box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.11);
41
+ transition: transform 0.4s;
42
+ }
43
+
44
+ .#{$namespace}-preview-active {
45
+ .#{$namespace}-preview-mask {
46
+ display: block;
47
+ }
48
+
49
+ .#{$namespace}-preview {
50
+ transform: translateX(0);
51
+ }
52
+ }
53
+
54
+ .#{$namespace}-preview-page {
55
+ position: relative;
56
+ display: block;
57
+ width: 55%;
58
+ margin-bottom: 10px;
59
+ font-size: 0;
60
+ color: transparent;
61
+ outline: none;
62
+ border: 7px solid transparent;
63
+ border-radius: 4px;
64
+ transition: border-color 0.3s;
65
+ user-select: none;
66
+
67
+ &:hover,
68
+ &.#{$namespace}-preview-page-active {
69
+ border-color: rgba(68, 78, 96, 0.1);
70
+ }
71
+
72
+ & > img {
73
+ width: 100%;
74
+ height: auto;
75
+ box-sizing: border-box;
76
+ border: 1px solid rgba(0, 0, 0, 0.5);
77
+ border-radius: 1px;
78
+ background-color: rgba(255, 255, 255, 1);
79
+ box-shadow: 0 2px 8px rgb(0 0 0 / 30%);
80
+ }
81
+ }
82
+
83
+ .#{$namespace}-preview-page-name {
84
+ position: absolute;
85
+ top: 1px;
86
+ left: -10px;
87
+ transform: translate(-100%);
88
+ text-align: right;
89
+ font-size: 12px;
90
+ color: #5f5f5f;
91
+ user-select: none;
92
+ }
93
+
94
+ .#{$namespace}-footer {
95
+ box-sizing: border-box;
96
+ height: 26px;
7
97
  display: flex;
8
98
  align-items: center;
99
+ padding: 0 16px;
100
+ border-top: 1px solid #eeeef7;
101
+ color: #191919;
102
+ }
103
+
104
+ .#{$namespace}-float-footer {
105
+ width: 100%;
106
+ min-height: 26px;
107
+ position: absolute;
108
+ left: 0;
109
+ bottom: 0;
110
+ z-index: 2000;
111
+ background: rgba(249, 249, 252, 0.9);
112
+ transition: opacity 0.4s;
113
+ }
114
+
115
+ .#{$namespace}-footer-btn {
116
+ box-sizing: border-box;
117
+ width: 26px;
118
+ height: 26px;
119
+ font-size: 0;
120
+ margin: 0;
121
+ padding: 3px;
122
+ border: none;
123
+ border-radius: 1px;
124
+ outline: none;
125
+ color: currentColor;
126
+ background: transparent;
127
+ transition: background 0.4s;
128
+ cursor: pointer;
129
+ user-select: none;
130
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
131
+
132
+ &:hover {
133
+ background: rgba(237, 237, 240, 0.9);
134
+ }
135
+
136
+ @media (hover: none) {
137
+ &:hover {
138
+ background: transparent !important;
139
+ }
140
+ }
141
+
142
+ & > svg {
143
+ width: 100%;
144
+ height: 100%;
145
+ }
146
+
147
+ & > svg:nth-of-type(2) {
148
+ display: none;
149
+ }
150
+
151
+ &.#{$namespace}-footer-btn-playing {
152
+ & > svg:nth-of-type(1) {
153
+ display: none;
154
+ }
155
+
156
+ & > svg:nth-of-type(2) {
157
+ display: initial;
158
+ }
159
+ }
160
+
161
+ & ~ & {
162
+ margin-left: 15px;
163
+ }
164
+ }
165
+
166
+ .#{$namespace}-page-jumps {
167
+ flex: 1;
168
+ display: flex;
9
169
  justify-content: center;
170
+ align-items: center;
171
+ }
172
+
173
+ .#{$namespace}-page-number {
174
+ margin-left: auto;
175
+ font-size: 13px;
176
+ user-select: none;
177
+ white-space: nowrap;
178
+ word-break: keep-all;
179
+ }
180
+
181
+ .#{$namespace}-page-number-input {
182
+ border: none;
183
+ outline: none;
184
+ width: 3em;
185
+ margin: 0;
186
+ padding: 0 2px;
187
+ text-align: right;
188
+ font-size: 13px;
189
+ line-height: 1;
190
+ font-weight: normal;
191
+ font-family: inherit;
192
+ border-radius: 2px;
193
+ color: currentColor;
194
+ background: transparent;
195
+ transition: background 0.4s;
196
+ user-select: text;
197
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
10
198
 
11
- canvas {
12
- transform: scale(var(--netless-app-slide-scale, 1));
199
+ &:hover,
200
+ &:focus,
201
+ &:active {
202
+ background: #fff;
203
+ box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
204
+ }
205
+ }
206
+
207
+ .#{$namespace}-readonly {
208
+ .#{$namespace}-footer-btn {
209
+ cursor: not-allowed;
210
+
211
+ &:hover {
212
+ background: transparent;
213
+ }
214
+ }
215
+
216
+ .#{$namespace}-page-number-input {
217
+ cursor: not-allowed;
218
+
219
+ &:hover,
220
+ &:focus,
221
+ &:active {
222
+ background: transparent;
223
+ box-shadow: none;
224
+ }
225
+
226
+ &:disabled {
227
+ color: inherit;
228
+ }
229
+ }
230
+
231
+ &.#{$namespace}-float-footer {
232
+ display: none;
233
+ }
234
+ }
235
+
236
+ .telebox-color-scheme-dark {
237
+ .#{$namespace}-page-number-input {
238
+ color: #a6a6a8;
239
+ }
240
+ .#{$namespace}-page-number-input:active,
241
+ .#{$namespace}-page-number-input:focus,
242
+ .#{$namespace}-page-number-input:hover {
243
+ color: #222;
244
+ }
245
+ .#{$namespace}-footer {
246
+ color: #a6a6a8;
247
+ background: #2d2d33;
248
+ border-top: none;
249
+ }
250
+ .#{$namespace}-footer-btn:hover {
251
+ background: #212126;
252
+ }
253
+ .#{$namespace}-preview {
254
+ background: rgba(50, 50, 50, 0.9);
13
255
  }
14
256
  }
package/src/typings.ts CHANGED
@@ -1,23 +1,36 @@
1
1
  import type { Slide, SLIDE_EVENTS, SyncEvent } from "@netless/slide";
2
+ import type { RegisterParams } from "@netless/window-manager";
2
3
 
3
4
  export type SlideState = Slide["slideState"];
4
5
 
6
+ export type AddHooks = NonNullable<RegisterParams["addHooks"]>;
7
+
5
8
  export interface Attributes {
6
9
  /** convert task id */
7
10
  taskId: string;
8
- /** base url of converted resources */
11
+ /** base url of converted resources, default `https://convertcdn.netless.link/dynamicConvert` */
9
12
  url: string;
10
13
  /** internal state of slide, do not change */
11
14
  state: SlideState | null;
12
15
  }
13
16
 
14
- export type MagixPayload = {
15
- type: typeof SLIDE_EVENTS.syncDispatch;
16
- payload: SyncEvent;
17
- };
18
-
19
- export type MagixEvents = {
20
- [SLIDE_EVENTS.syncDispatch]: MagixPayload;
21
- };
17
+ export interface MagixEvents {
18
+ [SLIDE_EVENTS.syncDispatch]: SyncEvent;
19
+ }
22
20
 
23
- export interface A {}
21
+ export interface AppOptions {
22
+ /** show debug controller */
23
+ debug?: boolean;
24
+ /** scale */
25
+ resolution?: number;
26
+ /** background color for slide animations */
27
+ bgColor?: string;
28
+ /** minimal fps (default: 25) */
29
+ minFPS?: number;
30
+ /** maximal fps (default: 30) */
31
+ maxFPS?: number;
32
+ /** automatically decrease fps (default: true) */
33
+ autoFPS?: boolean;
34
+ /** whether to re-scale automatically (default: true) */
35
+ autoResolution?: boolean;
36
+ }
package/src/utils.ts ADDED
@@ -0,0 +1,3 @@
1
+ export function noop() {
2
+ return;
3
+ }
@@ -1,53 +0,0 @@
1
- import { SideEffectManager } from "side-effect-manager";
2
- export interface DocsViewerPage {
3
- src: string;
4
- height: number;
5
- width: number;
6
- thumbnail?: string;
7
- }
8
- export interface DocsViewerConfig {
9
- readonly: boolean;
10
- onNewPageIndex: (index: number) => void;
11
- onPlay?: () => void;
12
- }
13
- export declare class DocsViewer {
14
- constructor({ readonly, onNewPageIndex, onPlay }: DocsViewerConfig);
15
- protected readonly: boolean;
16
- protected onNewPageIndex: (index: number) => void;
17
- protected onPlay?: () => void;
18
- private _pages;
19
- set pages(value: DocsViewerPage[]);
20
- get pages(): DocsViewerPage[];
21
- $content: HTMLElement;
22
- $preview: HTMLElement;
23
- $previewMask: HTMLElement;
24
- $footer: HTMLElement;
25
- $pageNumberInput: HTMLInputElement;
26
- $totalPage: HTMLSpanElement;
27
- $btnPlay: HTMLButtonElement;
28
- $btnSidebar: HTMLButtonElement;
29
- pageIndex: number;
30
- unmount(): void;
31
- setReadonly(readonly: boolean): void;
32
- destroy(): void;
33
- setPageIndex(pageIndex: number): void;
34
- refreshTotalPage(): void;
35
- setSmallBox(isSmallBox: boolean): void;
36
- render(): HTMLElement;
37
- protected renderContent(): HTMLElement;
38
- private previewLazyLoad?;
39
- protected renderPreview(): HTMLElement;
40
- private refreshPreview;
41
- protected renderPreviewMask(): HTMLElement;
42
- setPaused: () => void;
43
- setPlaying: () => void;
44
- refreshBtnSidebar(): void;
45
- protected renderFooter(): HTMLElement;
46
- protected renderFooterBtn(className: string, $icon: SVGElement, $iconActive?: SVGElement): HTMLButtonElement;
47
- protected togglePreview(isShowPreview?: boolean): void;
48
- protected wrapClassName(className: string): string;
49
- protected namespace: string;
50
- protected isShowPreview: boolean;
51
- protected isSmallBox: boolean;
52
- protected sideEffect: SideEffectManager;
53
- }
@@ -1,6 +0,0 @@
1
- import type { AppContext, Room } from "@netless/window-manager";
2
- import type { Slide } from "@netless/slide";
3
- import type { DocsViewerPage } from "../DocsViewer";
4
- import type { Attributes } from "../typings";
5
- export declare function createDocsViewerPages(slide: Slide): DocsViewerPage[];
6
- export declare function syncSceneWithSlide(room: Room, context: AppContext<Attributes>, slide: Slide, baseScenePath: string): void;
@@ -1,60 +0,0 @@
1
- import type { AppContext } from "@netless/window-manager";
2
- import type { Attributes, MagixEvents } from "../typings";
3
- import type { AppOptions } from "..";
4
- import { Slide } from "@netless/slide";
5
- export { syncSceneWithSlide, createDocsViewerPages } from "./helpers";
6
- export declare const DefaultUrl = "https://convertcdn.netless.link/dynamicConvert";
7
- export declare const MaxPollCount = 40;
8
- export declare const EmptyAttributes: Attributes;
9
- export interface SlideControllerOptions {
10
- context: AppContext<Attributes, MagixEvents, AppOptions>;
11
- anchor: HTMLDivElement;
12
- onPageChanged: (page: number) => void;
13
- onTransitionStart: () => void;
14
- onTransitionEnd: () => void;
15
- onError: (args: {
16
- error: Error;
17
- }) => void;
18
- }
19
- export declare class SlideController {
20
- readonly context: SlideControllerOptions["context"];
21
- readonly slide: Slide;
22
- private readonly room?;
23
- private readonly player?;
24
- private readonly sideEffect;
25
- private readonly onPageChanged;
26
- private readonly onTransitionStart;
27
- private readonly onTransitionEnd;
28
- private readonly onError;
29
- private syncStateOnceFlag;
30
- private visible;
31
- private savedIsFrozen;
32
- constructor({ context, anchor, onPageChanged, onTransitionStart, onTransitionEnd, onError, }: SlideControllerOptions);
33
- ready: boolean;
34
- private resolveReady;
35
- readonly readyPromise: Promise<void>;
36
- jumpToPage(page: number): void;
37
- private initialize;
38
- private kickStart;
39
- private registerEventListeners;
40
- private onSyncDispatch;
41
- private magixEventListener;
42
- private syncStateOnce;
43
- private onStateChange;
44
- private pollCount;
45
- private pollReadyState;
46
- private _pageCount;
47
- get pageCount(): number;
48
- get page(): number;
49
- private createSlide;
50
- private destroyed;
51
- destroy(): void;
52
- timestamp: () => number;
53
- isFrozen: boolean;
54
- private _toFreeze;
55
- private freezePromise;
56
- private afterFreeze;
57
- freeze: () => void;
58
- unfreeze: () => Promise<void>;
59
- private onVisibilityChange;
60
- }
@@ -1,45 +0,0 @@
1
- import type { ReadonlyTeleBox, View } from "@netless/window-manager";
2
- import type { SlideController, SlideControllerOptions } from "../SlideController";
3
- import { SideEffectManager } from "side-effect-manager";
4
- import { DocsViewer } from "../DocsViewer";
5
- export declare const ClickThroughAppliances: Set<string>;
6
- export declare type MountSlideOptions = Omit<SlideControllerOptions, "context" | "onPageChanged"> & {
7
- onReady: () => void;
8
- };
9
- export interface SlideDocsViewerConfig {
10
- box: ReadonlyTeleBox;
11
- view: View;
12
- mountSlideController: (options: MountSlideOptions) => SlideController;
13
- mountWhiteboard: (dom: HTMLDivElement) => void;
14
- }
15
- export declare class SlideDocsViewer {
16
- viewer: DocsViewer;
17
- slideController: SlideController | null;
18
- protected readonly box: ReadonlyTeleBox;
19
- protected readonly whiteboardView: SlideDocsViewerConfig["view"];
20
- protected readonly mountSlideController: SlideDocsViewerConfig["mountSlideController"];
21
- protected readonly mountWhiteboard: SlideDocsViewerConfig["mountWhiteboard"];
22
- private isViewMounted;
23
- constructor({ box, view, mountSlideController, mountWhiteboard }: SlideDocsViewerConfig);
24
- $slide: HTMLDivElement;
25
- $whiteboardView: HTMLDivElement;
26
- render(): void;
27
- protected renderSlideContainer(): HTMLDivElement;
28
- protected renderWhiteboardView(): HTMLDivElement;
29
- mount(): this;
30
- protected onError: ({ error }: {
31
- error: Error;
32
- }) => void;
33
- protected refreshPages: () => void;
34
- protected getPageIndex(page: number): number;
35
- unmount(): this;
36
- setReadonly(readonly: boolean): void;
37
- destroy(): void;
38
- toggleClickThrough(tool?: string): void;
39
- protected scaleDocsToFit: () => void;
40
- protected onPlay: () => void;
41
- protected onNewPageIndex: (index: number) => void;
42
- protected sideEffect: SideEffectManager;
43
- protected wrapClassName(className: string): string;
44
- protected namespace: string;
45
- }
@@ -1,52 +0,0 @@
1
- import { Slide } from "@netless/slide";
2
- import { DocsViewer } from "../DocsViewer";
3
- export interface PreviewParams {
4
- container: HTMLElement;
5
- taskId: string;
6
- url?: string;
7
- debug?: boolean;
8
- }
9
- export default function previewSlide({ container, taskId, url, debug, }: PreviewParams): SlidePreviewer;
10
- export declare class SlidePreviewer {
11
- readonly viewer: DocsViewer;
12
- readonly bgColor: string;
13
- readonly target: HTMLElement;
14
- slide: Slide | null;
15
- debug: boolean;
16
- $slide: HTMLDivElement;
17
- private readonly sideEffect;
18
- ready: boolean;
19
- private resolveReady;
20
- readonly readyPromise: Promise<void>;
21
- constructor(config: {
22
- target: HTMLElement;
23
- });
24
- render(): void;
25
- /**
26
- * In case you have a different window -- for example, in electron.
27
- * Use this method to re-register hotkeys.
28
- *
29
- * @example
30
- * previewer.registerHotKeys(windowLike)
31
- */
32
- registerHotKeys(windowLike: Window): void;
33
- private hotkeyListener;
34
- mount(taskId: string, url: string): void;
35
- protected renderStyle(): HTMLElement;
36
- protected registerEventListeners(): void;
37
- protected onPageChanged: (page: number) => void;
38
- protected onTransitionStart: () => void;
39
- protected onTransitionEnd: () => void;
40
- protected onError: ({ error }: {
41
- error: Error;
42
- }) => void;
43
- private destroyed;
44
- destroy(): void;
45
- protected refreshPages: () => void;
46
- protected getPageIndex(page: number): number;
47
- protected renderSlideContainer(): HTMLDivElement;
48
- protected onPlay: () => void;
49
- protected onNewPageIndex: (index: number) => void;
50
- protected wrapClassName(className: string): string;
51
- protected namespace: string;
52
- }
@@ -1,3 +0,0 @@
1
- export declare function guessBgColor(el: HTMLElement): string;
2
- export declare function toHex(color: string): string;
3
- export declare function cachedGetBgColor(el: HTMLElement): string;
@@ -1,22 +0,0 @@
1
- import type { RegisterParams } from "@netless/window-manager";
2
- export interface FreezableSlide {
3
- freeze: () => void;
4
- unfreeze: () => void;
5
- }
6
- export declare let useFreezer: boolean;
7
- export declare const FreezerLength = 2;
8
- export declare const apps: {
9
- map: Map<string, FreezableSlide>;
10
- queue: string[];
11
- validateQueue(): void;
12
- set(appId: string, slide: FreezableSlide): void;
13
- delete(appId: string): void;
14
- focus(appId: string): void;
15
- };
16
- export declare type AddHooks = NonNullable<RegisterParams["addHooks"]>;
17
- /**
18
- * Put this function in your register code:
19
- * `WindowManager.register({ addHooks })`
20
- * So that it will automatically freeze the app when it is not in focus.
21
- */
22
- export declare const addHooks: AddHooks;
@@ -1,6 +0,0 @@
1
- export declare function clamp(value: number, min: number, max: number): number;
2
- export declare function flattenEvent(ev: MouseEvent | TouchEvent): MouseEvent | Touch;
3
- export declare function preventEvent(ev: Event): void;
4
- export declare function isObj(obj: unknown): boolean;
5
- export declare function wait(ms: number): Promise<void>;
6
- export declare function deepClone<T>(obj: T): T;
@@ -1,39 +0,0 @@
1
- import type { AppContext, Displayer } from "@netless/window-manager";
2
- import type { SlideController } from "../SlideController";
3
- declare type DebugMessage = {
4
- slide: boolean | "__instance" | "__debug";
5
- };
6
- declare type RoomLogger = {
7
- debug: (...args: any) => void;
8
- info: (...args: any) => void;
9
- warn: (...args: any) => void;
10
- };
11
- declare class Logger {
12
- enable: boolean;
13
- apps: Record<string, {
14
- context?: AppContext | null;
15
- controller?: SlideController | null;
16
- }>;
17
- setAppContext(appId: string, context: AppContext | null): void;
18
- setAppController(appId: string, controller: SlideController | null): void;
19
- deleteApp(appId: string): void;
20
- level: "debug" | "verbose";
21
- roomLogger: RoomLogger | null;
22
- constructor(enable: boolean);
23
- initialize(): void;
24
- dispose(): void;
25
- log(...args: any[]): void;
26
- verbose(...args: any[]): void;
27
- warn(...args: any[]): void;
28
- /**
29
- * @example
30
- * window.postMessage({ slide: '__debug' })
31
- * window.dispatchEvent(new MessageEvent('message', { data: { slide: '__debug' } }))
32
- */
33
- _onMessage: (ev: MessageEvent<DebugMessage> | CustomEvent<DebugMessage>) => void;
34
- }
35
- export declare const logger: Logger;
36
- export declare const log: (...args: any[]) => void;
37
- export declare const verbose: (...args: any[]) => void;
38
- export declare const setRoomLogger: (displayer: Displayer) => void;
39
- export {};
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
2
- <path
3
- d="M177.81 249.959L337.473 90.295c2.722-2.865 2.651-7.378-.143-10.1-2.793-2.65-7.163-2.65-9.956 0l-164.75 164.75c-2.793 2.793-2.793 7.306 0 10.1l164.75 164.75c2.865 2.722 7.378 2.65 10.099-.143 2.651-2.794 2.651-7.163 0-9.957L177.809 249.959z" />
4
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
2
- <path
3
- d="M322.19 250.041L162.527 409.705c-2.722 2.865-2.651 7.378.143 10.1 2.793 2.65 7.163 2.65 9.956 0l164.75-164.75c2.793-2.793 2.793-7.306 0-10.1l-164.75-164.75c-2.865-2.722-7.378-2.65-10.099.143-2.651 2.794-2.651 7.163 0 9.957l159.664 159.736z" />
4
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
2
- <path fill="#1e201d"
3
- d="M312.491 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261zM165.257 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261z" />
4
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
2
- <path fill="#1e201d"
3
- d="M418.158 257.419L174.663 413.33c-6.017 3.919-15.708 3.772-21.291-.29-2.791-2.018-4.295-4.483-4.295-7.084V94.109c0-5.65 6.883-10.289 15.271-10.289 4.298 0 8.391 1.307 11.181 3.332l242.629 155.484c6.016 3.917 6.451 10.292.649 14.491-.216.154-.432.154-.649.292zM170.621 391.288l223.116-141.301L170.71 107.753l-.089 283.535z" />
4
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
2
- <path
3
- d="M50 8H14c-3.309 0-6 2.691-6 6v36c0 3.309 2.691 6 6 6h36c3.309 0 6-2.691 6-6V14c0-3.309-2.691-6-6-6zM12 50V14c0-1.103.897-2 2-2h8v40h-8c-1.103 0-2-.897-2-2zm40 0c0 1.103-.897 2-2 2H26V12h24c1.103 0 2 .897 2 2z" />
4
- </svg>