bigbluebutton-html-plugin-sdk 0.0.70 → 0.0.71
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.
- package/README.md +101 -3
- package/dist/cjs/asset-persistence/enums.d.ts +6 -0
- package/dist/cjs/asset-persistence/enums.js +12 -0
- package/dist/cjs/asset-persistence/enums.js.map +1 -0
- package/dist/cjs/asset-persistence/hook.d.ts +2 -0
- package/dist/cjs/asset-persistence/hook.js +16 -0
- package/dist/cjs/asset-persistence/hook.js.map +1 -0
- package/dist/cjs/asset-persistence/types.d.ts +8 -0
- package/dist/cjs/asset-persistence/types.js +3 -0
- package/dist/cjs/asset-persistence/types.js.map +1 -0
- package/dist/cjs/core/api/BbbPluginSdk.js +2 -0
- package/dist/cjs/core/api/BbbPluginSdk.js.map +1 -1
- package/dist/cjs/core/api/types.d.ts +8 -0
- package/dist/cjs/data-consumption/domain/users/current-user/types.d.ts +5 -0
- package/dist/cjs/ui-commands/camera/commands.d.ts +17 -0
- package/dist/cjs/ui-commands/camera/commands.js +36 -0
- package/dist/cjs/ui-commands/camera/commands.js.map +1 -0
- package/dist/cjs/ui-commands/camera/enums.d.ts +4 -0
- package/dist/cjs/ui-commands/camera/enums.js +9 -0
- package/dist/cjs/ui-commands/camera/enums.js.map +1 -0
- package/dist/cjs/ui-commands/camera/types.d.ts +11 -0
- package/dist/cjs/ui-commands/camera/types.js +3 -0
- package/dist/cjs/ui-commands/camera/types.js.map +1 -0
- package/dist/cjs/ui-commands/commands.d.ts +5 -0
- package/dist/cjs/ui-commands/commands.js +8 -6
- package/dist/cjs/ui-commands/commands.js.map +1 -1
- package/dist/cjs/ui-commands/notification/commands.d.ts +4 -0
- package/dist/cjs/ui-commands/notification/commands.js +8 -0
- package/dist/cjs/ui-commands/notification/commands.js.map +1 -1
- package/dist/cjs/ui-commands/notification/enums.d.ts +2 -1
- package/dist/cjs/ui-commands/notification/enums.js +2 -1
- package/dist/cjs/ui-commands/notification/enums.js.map +1 -1
- package/dist/cjs/ui-commands/notification/types.d.ts +4 -0
- package/dist/cjs/ui-commands/types.d.ts +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,10 +4,13 @@ This repository contains the SDK for developing BigBlueButton plugins.
|
|
|
4
4
|
Plugins are React components that can be loaded from external sources
|
|
5
5
|
by the BigBlueButton HTML5 client to extend its functionalities.
|
|
6
6
|
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
An overview of the plugin architecture and capabilities can be found [here](https://github.com/bigbluebutton/plugins/blob/main/README.md#capabilities-and-technical-details).
|
|
10
|
+
|
|
7
11
|
## Examples
|
|
8
12
|
|
|
9
|
-
A variety of example implementations to manipulate different parts of the
|
|
10
|
-
BBB client can be found in the [`samples`](samples) folder.
|
|
13
|
+
A variety of example implementations to manipulate different parts of the BBB client can be found in the [`samples`](samples) folder.
|
|
11
14
|
|
|
12
15
|
## Usage
|
|
13
16
|
|
|
@@ -110,6 +113,44 @@ While the plugin can be hosted on any Server, it is also possible to host the bu
|
|
|
110
113
|
a BigBlueButton server. For that you copy `dist/SampleActionButtonDropdownPlugin.js` and `dist/manifest.json` to the folder `/var/www/bigbluebutton-default/assets/plugins/sampleActionButtonDropdownPlugin`.
|
|
111
114
|
In this case, the your manifest URL will be `https://<your-host>/plugins/sampleActionButtonDropdownPlugin/manifest.json`.
|
|
112
115
|
|
|
116
|
+
### Manifest Json
|
|
117
|
+
|
|
118
|
+
Here is as complete `manifet.json` example with all possible configurations:
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"requiredSdkVersion": "~0.0.59",
|
|
123
|
+
"name": "MyPlugin",
|
|
124
|
+
"javascriptEntrypointUrl": "MyPlugin.js",
|
|
125
|
+
"localesBaseUrl": "https://cdn.domain.com/my-plugin/", // Optional
|
|
126
|
+
"dataChannels":[
|
|
127
|
+
{
|
|
128
|
+
"name": "public-channel",
|
|
129
|
+
"pushPermission": ["moderator","presenter"], // "moderator","presenter", "all"
|
|
130
|
+
"replaceOrDeletePermission": ["moderator", "creator"] // "moderator", "presenter","all", "creator"
|
|
131
|
+
}
|
|
132
|
+
], // One can enable more data-channels to better organize client communication
|
|
133
|
+
"eventPersistence": {
|
|
134
|
+
"isEnabled": true, // By default it is not enabled
|
|
135
|
+
"maximumPayloadSizeInBytes": 1024,
|
|
136
|
+
"rateLimiting": {
|
|
137
|
+
"messagesAllowedPerSecond": 10,
|
|
138
|
+
"messagesAllowedPerMinute": 20
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"remoteDataSources": [
|
|
142
|
+
{
|
|
143
|
+
"name": "allUsers",
|
|
144
|
+
"url": "${meta_pluginSettingsUserInformation}",
|
|
145
|
+
"fetchMode": "onMeetingCreate",
|
|
146
|
+
"permissions": ["moderator", "viewer"]
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
To better understand remote-data-sources, please, refer to [this section](#external-data-resources)
|
|
153
|
+
|
|
113
154
|
## API
|
|
114
155
|
|
|
115
156
|
### Extensible UI areas
|
|
@@ -303,7 +344,7 @@ See usage ahead:
|
|
|
303
344
|
|
|
304
345
|
So the idea is that we have a `uiCommands` object and at a point, there will be the command to do the intended action, such as open the chat form and/or fill it, as demonstrated above
|
|
305
346
|
|
|
306
|
-
|
|
347
|
+
### Server Commands
|
|
307
348
|
|
|
308
349
|
`serverCommands` object: It contains all the possible commands available to the developer to interact with the BBB core server, see the ones implemented down below:
|
|
309
350
|
|
|
@@ -386,6 +427,63 @@ pluginApi.getRemoteData('allUsers').then((response: Response) => {
|
|
|
386
427
|
});
|
|
387
428
|
```
|
|
388
429
|
|
|
430
|
+
### Event persistence
|
|
431
|
+
|
|
432
|
+
This feature will allow the developer to save an information (which is basically an event) in the `event.xml` file of the meeting if it's being recorded.
|
|
433
|
+
|
|
434
|
+
To use it, one first need to add the following lines to their `manifest.json`:
|
|
435
|
+
|
|
436
|
+
```json
|
|
437
|
+
{
|
|
438
|
+
// ...rest of manifest configuration
|
|
439
|
+
"eventPersistence": {
|
|
440
|
+
"isEnabled": true,
|
|
441
|
+
"maximumPayloadSizeInBytes": 1024,
|
|
442
|
+
"rateLimiting": {
|
|
443
|
+
"messagesAllowedPerSecond": 10,
|
|
444
|
+
"messagesAllowedPerMinute": 20
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
Then, the API in the SDK for that is:
|
|
451
|
+
|
|
452
|
+
```ts
|
|
453
|
+
pluginApi.persistEvent(eventName: string, payloadJson: Object);
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
See example in the `sample-use-meeting` plugin here in this repository. It is as follows:
|
|
457
|
+
|
|
458
|
+
```ts
|
|
459
|
+
useEffect(() => {
|
|
460
|
+
setInterval(() => {
|
|
461
|
+
pluginLogger.info('persisting event');
|
|
462
|
+
pluginApi.persistEvent('eventFromUseMeetingSample', { foo: 'bar' });
|
|
463
|
+
}, 5000);
|
|
464
|
+
}, []);
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
After the meeting is ended (considering it has been recorded), one can simply do the following steps to see the events:
|
|
468
|
+
|
|
469
|
+
In the server terminal run:
|
|
470
|
+
```bash
|
|
471
|
+
sudo updatedb
|
|
472
|
+
vi $(locate events.xml | grep <meeting-id>)
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Where `<meeting-id>` is the id of the the meeting you just recorded. Then, amongst all the other events in the file, if you search it, you will find the following:
|
|
476
|
+
|
|
477
|
+
```xml
|
|
478
|
+
<event timestamp="25004947" module="PLUGIN" eventname="PluginGeneratedEvent">
|
|
479
|
+
<payloadJson>{"foo":"bar"}</payloadJson>
|
|
480
|
+
<pluginEventName>eventFromUseMeetingSample</pluginEventName>
|
|
481
|
+
<date>2024-10-30T18:00:11.929Z</date>
|
|
482
|
+
<pluginName>SampleUseMeeting</pluginName>
|
|
483
|
+
<userId>w_sxlfjbcb0yxs</userId>
|
|
484
|
+
<timestampUTC>1730311211929</timestampUTC>
|
|
485
|
+
</event>
|
|
486
|
+
```
|
|
389
487
|
|
|
390
488
|
### Frequently Asked Questions (FAQ)
|
|
391
489
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssetType = exports.AssetPersistenceEvents = void 0;
|
|
4
|
+
var AssetPersistenceEvents;
|
|
5
|
+
(function (AssetPersistenceEvents) {
|
|
6
|
+
AssetPersistenceEvents["ASSET_PERSISTED"] = "PLUGIN_ASSET_PERSISTED";
|
|
7
|
+
})(AssetPersistenceEvents || (exports.AssetPersistenceEvents = AssetPersistenceEvents = {}));
|
|
8
|
+
var AssetType;
|
|
9
|
+
(function (AssetType) {
|
|
10
|
+
AssetType["PRESENTATION"] = "PLUGIN_ASSET_PERSISTENCE_TYPE_PRESENTATION";
|
|
11
|
+
})(AssetType || (exports.AssetType = AssetType = {}));
|
|
12
|
+
//# sourceMappingURL=enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/asset-persistence/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,sBAEX;AAFD,WAAY,sBAAsB;IAChC,oEAA0C,CAAA;AAC5C,CAAC,EAFW,sBAAsB,sCAAtB,sBAAsB,QAEjC;AAED,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,wEAA2D,CAAA;AAC7D,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.persistAssetFunctionWrapper = void 0;
|
|
4
|
+
var enums_1 = require("./enums");
|
|
5
|
+
var persistAssetFunctionWrapper = function (pluginName, assetUrl, typeOfAsset, assetName) {
|
|
6
|
+
window.dispatchEvent(new CustomEvent(enums_1.AssetPersistenceEvents.ASSET_PERSISTED, {
|
|
7
|
+
detail: {
|
|
8
|
+
pluginName: pluginName,
|
|
9
|
+
assetUrl: assetUrl,
|
|
10
|
+
typeOfAsset: typeOfAsset,
|
|
11
|
+
assetName: assetName,
|
|
12
|
+
},
|
|
13
|
+
}));
|
|
14
|
+
};
|
|
15
|
+
exports.persistAssetFunctionWrapper = persistAssetFunctionWrapper;
|
|
16
|
+
//# sourceMappingURL=hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/asset-persistence/hook.ts"],"names":[],"mappings":";;;AAGA,iCAA4D;AAErD,IAAM,2BAA2B,GAAG,UACzC,UAAkB,EAClB,QAAgB,EAChB,WAAsB,EACtB,SAAkB;IAElB,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CACU,8BAAsB,CAAC,eAAe,EAAE;QAC/D,MAAM,EAAE;YACN,UAAU,YAAA;YACV,QAAQ,UAAA;YACR,WAAW,aAAA;YACX,SAAS,WAAA;SACV;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,2BAA2B,+BAiBtC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AssetType } from './enums';
|
|
2
|
+
export interface AssetPersistenceDetails {
|
|
3
|
+
pluginName: string;
|
|
4
|
+
assetUrl: string;
|
|
5
|
+
typeOfAsset: AssetType;
|
|
6
|
+
assetName?: string;
|
|
7
|
+
}
|
|
8
|
+
export type PersistAssetFunction = (assetUrl: string, typeOfAsset: AssetType, assetName?: string) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/asset-persistence/types.ts"],"names":[],"mappings":""}
|
|
@@ -24,6 +24,7 @@ var commands_2 = require("../../server-commands/commands");
|
|
|
24
24
|
var hooks_13 = require("../../learning-analytics-dashboard/hooks");
|
|
25
25
|
var utils_1 = require("../../remote-data/utils");
|
|
26
26
|
var hooks_14 = require("../../event-persistence/hooks");
|
|
27
|
+
var hook_1 = require("../../asset-persistence/hook");
|
|
27
28
|
/**
|
|
28
29
|
* Class responsible for either initialize or get the PluginApi
|
|
29
30
|
*
|
|
@@ -73,6 +74,7 @@ var BbbPluginSdk = /** @class */ (function () {
|
|
|
73
74
|
pluginApi.sendGenericDataForLearningAnalyticsDashboard = function (data) { return (0, hooks_13.sendGenericDataForLearningAnalyticsDashboard)(data, pluginName); };
|
|
74
75
|
pluginApi.getRemoteData = function (dataSourceName) { return (0, utils_1.getRemoteData)(dataSourceName, pluginName); };
|
|
75
76
|
pluginApi.persistEvent = function (eventName, payload) { return (0, hooks_14.persistEventFunctionWrapper)(pluginName, eventName, payload); };
|
|
77
|
+
pluginApi.persistAsset = function (assetUrl, typeOfAsset, assetName) { return (0, hook_1.persistAssetFunctionWrapper)(pluginName, assetUrl, typeOfAsset, assetName); };
|
|
76
78
|
}
|
|
77
79
|
else {
|
|
78
80
|
throw new Error('Plugin name not set');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BbbPluginSdk.js","sourceRoot":"","sources":["../../../../src/core/api/BbbPluginSdk.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,+BAAkC;AAOlC,kDAA4D;AAO5D,uDAAwD;AAQxD,kDAAiE;AACjE,gGAEgF;AAChF,wFAEwE;AACxE,oFAA+F;AAC/F,gFAAwF;AACxF,oFAA+F;AAC/F,4DAAoE;AACpE,uDAA0D;AAC1D,mEAA2E;AAE3E,uFAAsG;AACtG,2EAA8F;AAC9F,0EAA4F;AAE5F,2FAAuG;AACvG,oDAAsD;AAEtD,gFAAmF;AACnF,2DAAgE;AAChE,mEAAwG;AAExG,iDAAwD;AACxD,wDAA4E;
|
|
1
|
+
{"version":3,"file":"BbbPluginSdk.js","sourceRoot":"","sources":["../../../../src/core/api/BbbPluginSdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ import { UseUserCameraDomElementsFunction } from '../../dom-element-manipulation
|
|
|
32
32
|
import { ScreenshareHelperInterface, UserCameraHelperInterface } from '../../extensible-areas';
|
|
33
33
|
import { GetDataSource } from '../../remote-data/types';
|
|
34
34
|
import { PersistEventFunction } from '../../event-persistence/types';
|
|
35
|
+
import { PersistAssetFunction } from '../../asset-persistence/types';
|
|
35
36
|
export type SetPresentationToolbarItems = (presentationToolbarItem: PresentationToolbarInterface[]) => string[];
|
|
36
37
|
export type SetUserListDropdownItems = (userListDropdownItem: UserListDropdownInterface[]) => string[];
|
|
37
38
|
export type SetActionButtonDropdownItems = (actionButtonDropdownInterface: ActionButtonDropdownInterface[]) => string[];
|
|
@@ -208,6 +209,13 @@ export interface PluginApi {
|
|
|
208
209
|
*
|
|
209
210
|
*/
|
|
210
211
|
persistEvent?: PersistEventFunction;
|
|
212
|
+
/**
|
|
213
|
+
* Persists assets to the current meeting, e.g.: presentation.
|
|
214
|
+
*
|
|
215
|
+
* @param payload - payload to be persisted in `events.xml`
|
|
216
|
+
*
|
|
217
|
+
*/
|
|
218
|
+
persistAsset?: PersistAssetFunction;
|
|
211
219
|
}
|
|
212
220
|
export interface PluginBrowserWindow extends Window {
|
|
213
221
|
bbb_plugins: {
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { GraphqlResponseWrapper } from '../../../../core';
|
|
2
|
+
export interface Camera {
|
|
3
|
+
streamId: string;
|
|
4
|
+
}
|
|
2
5
|
export interface CurrentUserData {
|
|
3
6
|
userId: string;
|
|
7
|
+
extId: string;
|
|
4
8
|
name: string;
|
|
5
9
|
role: string;
|
|
6
10
|
presenter: boolean;
|
|
11
|
+
cameras: Camera[];
|
|
7
12
|
}
|
|
8
13
|
export type UseCurrentUserFunction = () => GraphqlResponseWrapper<CurrentUserData> | undefined;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SetSelfViewDisableAllDevicesCommandArguments, SetSelfViewDisableCommandArguments } from './types';
|
|
2
|
+
export declare const camera: {
|
|
3
|
+
/**
|
|
4
|
+
* Sets the self-view camera disabled/enabled for all cameras.
|
|
5
|
+
*
|
|
6
|
+
* @param setSelfViewDisableAllDevicesCommandArguments: object with a
|
|
7
|
+
* boolean that tells whether to enable or not the self-view camera for all devices
|
|
8
|
+
*/
|
|
9
|
+
setSelfViewDisableAllDevices: (setSelfViewDisableAllDevicesCommandArguments: SetSelfViewDisableAllDevicesCommandArguments) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Sets the self-view camera disabled/enabled for specific camera.
|
|
12
|
+
*
|
|
13
|
+
* @param setSelfViewDisableCommandArguments: object with a
|
|
14
|
+
* boolean that tells whether to enable or not the self-view camera for specific device
|
|
15
|
+
*/
|
|
16
|
+
setSelfViewDisable: (setSelfViewDisableCommandArguments: SetSelfViewDisableCommandArguments) => void;
|
|
17
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.camera = void 0;
|
|
4
|
+
var enums_1 = require("./enums");
|
|
5
|
+
exports.camera = {
|
|
6
|
+
/**
|
|
7
|
+
* Sets the self-view camera disabled/enabled for all cameras.
|
|
8
|
+
*
|
|
9
|
+
* @param setSelfViewDisableAllDevicesCommandArguments: object with a
|
|
10
|
+
* boolean that tells whether to enable or not the self-view camera for all devices
|
|
11
|
+
*/
|
|
12
|
+
setSelfViewDisableAllDevices: function (setSelfViewDisableAllDevicesCommandArguments) {
|
|
13
|
+
var isSelfViewDisabledAllDevices = setSelfViewDisableAllDevicesCommandArguments.isSelfViewDisabledAllDevices;
|
|
14
|
+
window.dispatchEvent(new CustomEvent(enums_1.CameraEnum.SET_SELF_VIEW_DISABLED_ALL_DEVICES, {
|
|
15
|
+
detail: {
|
|
16
|
+
isSelfViewDisabledAllDevices: isSelfViewDisabledAllDevices,
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
19
|
+
},
|
|
20
|
+
/**
|
|
21
|
+
* Sets the self-view camera disabled/enabled for specific camera.
|
|
22
|
+
*
|
|
23
|
+
* @param setSelfViewDisableCommandArguments: object with a
|
|
24
|
+
* boolean that tells whether to enable or not the self-view camera for specific device
|
|
25
|
+
*/
|
|
26
|
+
setSelfViewDisable: function (setSelfViewDisableCommandArguments) {
|
|
27
|
+
var isSelfViewDisabled = setSelfViewDisableCommandArguments.isSelfViewDisabled, streamId = setSelfViewDisableCommandArguments.streamId;
|
|
28
|
+
window.dispatchEvent(new CustomEvent(enums_1.CameraEnum.SET_SELF_VIEW_DISABLED, {
|
|
29
|
+
detail: {
|
|
30
|
+
isSelfViewDisabled: isSelfViewDisabled,
|
|
31
|
+
streamId: streamId,
|
|
32
|
+
},
|
|
33
|
+
}));
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/ui-commands/camera/commands.ts"],"names":[],"mappings":";;;AAAA,iCAAqC;AAGxB,QAAA,MAAM,GAAG;IACpB;;;;;OAKG;IACH,4BAA4B,EAAE,UAC5B,4CAA0F;QAGxF,IAAA,4BAA4B,GAC1B,4CAA4C,6BADlB,CACmB;QACjD,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAEb,kBAAU,CAAC,kCAAkC,EAAE;YAC/C,MAAM,EAAE;gBACN,4BAA4B,8BAAA;aAC7B;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,EAAE,UAClB,kCAAsE;QAGpE,IAAA,kBAAkB,GAEhB,kCAAkC,mBAFlB,EAClB,QAAQ,GACN,kCAAkC,SAD5B,CAC6B;QACvC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAEb,kBAAU,CAAC,sBAAsB,EAAE;YACnC,MAAM,EAAE;gBACN,kBAAkB,oBAAA;gBAClB,QAAQ,UAAA;aACT;SACF,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CameraEnum = void 0;
|
|
4
|
+
var CameraEnum;
|
|
5
|
+
(function (CameraEnum) {
|
|
6
|
+
CameraEnum["SET_SELF_VIEW_DISABLED_ALL_DEVICES"] = "SET_SELF_VIEW_DISABLED_ALL_DEVICES_COMMAND";
|
|
7
|
+
CameraEnum["SET_SELF_VIEW_DISABLED"] = "SET_SELF_VIEW_DISABLED_COMMAND";
|
|
8
|
+
})(CameraEnum || (exports.CameraEnum = CameraEnum = {}));
|
|
9
|
+
//# sourceMappingURL=enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/ui-commands/camera/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,+FAAiF,CAAA;IACjF,uEAAyD,CAAA;AAC3D,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface SetSelfViewDisableAllDevicesCommandArguments {
|
|
2
|
+
isSelfViewDisabledAllDevices: boolean;
|
|
3
|
+
}
|
|
4
|
+
export interface SetSelfViewDisableCommandArguments {
|
|
5
|
+
isSelfViewDisabled: boolean;
|
|
6
|
+
streamId: string;
|
|
7
|
+
}
|
|
8
|
+
export interface UiCommandsCameraObject {
|
|
9
|
+
setSelfViewDisableAllDevices: (setSelfViewDisableAllDevicesCommandArguments: SetSelfViewDisableAllDevicesCommandArguments) => void;
|
|
10
|
+
setSelfViewDisable: (setSelfViewDisableAllDevicesCommandArguments: SetSelfViewDisableCommandArguments) => void;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ui-commands/camera/types.ts"],"names":[],"mappings":""}
|
|
@@ -2,6 +2,10 @@ export declare const uiCommands: {
|
|
|
2
2
|
actionsBar: {
|
|
3
3
|
setDisplayActionBar: (arg: import("./actions-bar/types").SetDisplayActionBarCommandArguments) => void;
|
|
4
4
|
};
|
|
5
|
+
camera: {
|
|
6
|
+
setSelfViewDisableAllDevices: (setSelfViewDisableAllDevicesCommandArguments: import("./camera/types").SetSelfViewDisableAllDevicesCommandArguments) => void;
|
|
7
|
+
setSelfViewDisable: (setSelfViewDisableCommandArguments: import("./camera/types").SetSelfViewDisableCommandArguments) => void;
|
|
8
|
+
};
|
|
5
9
|
chat: {
|
|
6
10
|
form: {
|
|
7
11
|
open: () => void;
|
|
@@ -32,6 +36,7 @@ export declare const uiCommands: {
|
|
|
32
36
|
};
|
|
33
37
|
notification: {
|
|
34
38
|
send: (information: import("./notification/types").SendNotificationCommandArguments) => void;
|
|
39
|
+
setEnabledDisplayNotifications: (isNotificationDisplayEnabled: boolean) => void;
|
|
35
40
|
};
|
|
36
41
|
layout: {
|
|
37
42
|
changeEnforcedLayout: import("./layout/types").ChangeEnforcedLayout;
|
|
@@ -8,19 +8,21 @@ var commands_4 = require("./presentation-area/commands");
|
|
|
8
8
|
var commands_5 = require("./user-status/commands");
|
|
9
9
|
var commands_6 = require("./conference/commands");
|
|
10
10
|
var commands_7 = require("./notification/commands");
|
|
11
|
-
var commands_8 = require("./
|
|
12
|
-
var commands_9 = require("./
|
|
13
|
-
var commands_10 = require("./
|
|
11
|
+
var commands_8 = require("./camera/commands");
|
|
12
|
+
var commands_9 = require("./actions-bar/commands");
|
|
13
|
+
var commands_10 = require("./layout/commands");
|
|
14
|
+
var commands_11 = require("./nav-bar/commands");
|
|
14
15
|
exports.uiCommands = {
|
|
15
|
-
actionsBar:
|
|
16
|
+
actionsBar: commands_9.actionsBar,
|
|
17
|
+
camera: commands_8.camera,
|
|
16
18
|
chat: commands_1.chat,
|
|
17
19
|
externalVideo: commands_2.externalVideo,
|
|
18
20
|
sidekickOptionsContainer: commands_3.sidekickOptionsContainer,
|
|
19
|
-
navBar:
|
|
21
|
+
navBar: commands_11.navBar,
|
|
20
22
|
presentationArea: commands_4.presentationArea,
|
|
21
23
|
userStatus: commands_5.userStatus,
|
|
22
24
|
conference: commands_6.conference,
|
|
23
25
|
notification: commands_7.notification,
|
|
24
|
-
layout:
|
|
26
|
+
layout: commands_10.layout,
|
|
25
27
|
};
|
|
26
28
|
//# sourceMappingURL=commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/ui-commands/commands.ts"],"names":[],"mappings":";;;AAAA,4CAAuC;AACvC,sDAA0D;AAC1D,kEAAiF;AACjF,yDAAgE;AAChE,mDAAoD;AACpD,kDAAmD;AACnD,oDAAuD;AACvD,mDAAoD;AACpD
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/ui-commands/commands.ts"],"names":[],"mappings":";;;AAAA,4CAAuC;AACvC,sDAA0D;AAC1D,kEAAiF;AACjF,yDAAgE;AAChE,mDAAoD;AACpD,kDAAmD;AACnD,oDAAuD;AACvD,8CAA2C;AAC3C,mDAAoD;AACpD,+CAA2C;AAC3C,gDAA4C;AAE/B,QAAA,UAAU,GAAG;IACxB,UAAU,uBAAA;IACV,MAAM,mBAAA;IACN,IAAI,iBAAA;IACJ,aAAa,0BAAA;IACb,wBAAwB,qCAAA;IACxB,MAAM,oBAAA;IACN,gBAAgB,6BAAA;IAChB,UAAU,uBAAA;IACV,UAAU,uBAAA;IACV,YAAY,yBAAA;IACZ,MAAM,oBAAA;CACP,CAAC"}
|
|
@@ -4,4 +4,8 @@ export declare const notification: {
|
|
|
4
4
|
* Sends notification to be rendered in the front-end.
|
|
5
5
|
*/
|
|
6
6
|
send: (information: SendNotificationCommandArguments) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Decides if notifications stop being displayed.
|
|
9
|
+
*/
|
|
10
|
+
setEnabledDisplayNotifications: (isNotificationDisplayEnabled: boolean) => void;
|
|
7
11
|
};
|
|
@@ -11,5 +11,13 @@ exports.notification = {
|
|
|
11
11
|
detail: information,
|
|
12
12
|
}));
|
|
13
13
|
},
|
|
14
|
+
/**
|
|
15
|
+
* Decides if notifications stop being displayed.
|
|
16
|
+
*/
|
|
17
|
+
setEnabledDisplayNotifications: function (isNotificationDisplayEnabled) {
|
|
18
|
+
window.dispatchEvent(new CustomEvent(enums_1.NotificationEnum.SET_ENABLED_DISPLAY, {
|
|
19
|
+
detail: { isNotificationDisplayEnabled: isNotificationDisplayEnabled },
|
|
20
|
+
}));
|
|
21
|
+
},
|
|
14
22
|
};
|
|
15
23
|
//# sourceMappingURL=commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/ui-commands/notification/commands.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAG9B,QAAA,YAAY,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,UAAC,WAA6C;QAClD,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAEb,wBAAgB,CAAC,IAAI,EAAE;YACvB,MAAM,EAAE,WAAW;SACpB,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/ui-commands/notification/commands.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAG9B,QAAA,YAAY,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,UAAC,WAA6C;QAClD,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAEb,wBAAgB,CAAC,IAAI,EAAE;YACvB,MAAM,EAAE,WAAW;SACpB,CAAC,CACH,CAAC;IACJ,CAAC;IACD;;OAEG;IACH,8BAA8B,EAAE,UAAC,4BAAqC;QACpE,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAEb,wBAAgB,CAAC,mBAAmB,EAAE;YACtC,MAAM,EAAE,EAAE,4BAA4B,8BAAA,EAAE;SACzC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.NotificationTypeUiCommand = exports.NotificationEnum = void 0;
|
|
4
4
|
var NotificationEnum;
|
|
5
5
|
(function (NotificationEnum) {
|
|
6
|
-
NotificationEnum["SEND"] = "
|
|
6
|
+
NotificationEnum["SEND"] = "SEND_NOTIFICATION_COMMAND";
|
|
7
|
+
NotificationEnum["SET_ENABLED_DISPLAY"] = "SET_ENABLED_DISPLAY_COMMAND";
|
|
7
8
|
})(NotificationEnum || (exports.NotificationEnum = NotificationEnum = {}));
|
|
8
9
|
var NotificationTypeUiCommand;
|
|
9
10
|
(function (NotificationTypeUiCommand) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/ui-commands/notification/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/ui-commands/notification/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,sDAAkC,CAAA;IAClC,uEAAmD,CAAA;AACrD,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAED,IAAY,yBAMX;AAND,WAAY,yBAAyB;IACnC,0CAAa,CAAA;IACb,gDAAmB,CAAA;IACnB,gDAAmB,CAAA;IACnB,gDAAmB,CAAA;IACnB,4CAAe,CAAA;AACjB,CAAC,EANW,yBAAyB,yCAAzB,yBAAyB,QAMpC"}
|
|
@@ -12,6 +12,10 @@ export interface SendNotificationCommandArguments {
|
|
|
12
12
|
content?: string;
|
|
13
13
|
small?: boolean;
|
|
14
14
|
}
|
|
15
|
+
export interface SetEnableDisplayNotificationsArguments {
|
|
16
|
+
isNotificationDisplayEnabled: boolean;
|
|
17
|
+
}
|
|
15
18
|
export interface UiCommandsNotificationObject {
|
|
16
19
|
send: (information: SendNotificationCommandArguments) => void;
|
|
20
|
+
setEnabledDisplayNotifications: (isNotificationDisplayEnabled: boolean) => void;
|
|
17
21
|
}
|
|
@@ -8,9 +8,11 @@ import { UiCommandsNotificationObject } from './notification/types';
|
|
|
8
8
|
import { UiCommandsActionsBarObject } from './actions-bar/types';
|
|
9
9
|
import { UiCommandsLayoutObject } from './layout/types';
|
|
10
10
|
import { UiCommandsNavBarObject } from './nav-bar/types';
|
|
11
|
+
import { UiCommandsCameraObject } from './camera/types';
|
|
11
12
|
export interface UiCommands {
|
|
12
13
|
layout: UiCommandsLayoutObject;
|
|
13
14
|
actionsBar: UiCommandsActionsBarObject;
|
|
15
|
+
camera: UiCommandsCameraObject;
|
|
14
16
|
chat: UiCommandsChatObject;
|
|
15
17
|
externalVideo: UiCommandsExternalVideoObject;
|
|
16
18
|
sidekickOptionsContainer: UiCommandsSidekickOptionsContainerObject;
|