bigbluebutton-html-plugin-sdk 0.0.70 → 0.0.72

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 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
 
@@ -91,7 +94,7 @@ follow these steps:
91
94
 
92
95
  ```bash
93
96
  cd $HOME/src/bigbluebutton-html-plugin-sdk/samples/sample-action-button-dropdown-plugin
94
- npm install
97
+ npm ci
95
98
  npm run build-bundle
96
99
  ```
97
100
 
@@ -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", // Possible values: "onMeetingCreate", "onDemand"
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
- ### Server Commands
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
 
@@ -356,21 +397,32 @@ This is possible by simply configuring the dataResource name in the manifest and
356
397
  {
357
398
  "name": "allUsers",
358
399
  "url": "${meta_pluginSettingsUserInformation}",
359
- "fetchMode": "onMeetingCreate",
360
- "permissions": ["moderator", "viewer"]
400
+ "fetchMode": "onMeetingCreate", // Possible values: "onMeetingCreate", "onDemand"
401
+ "permissions": ["moderator", "viewer"] // Possible values: "moderator", "viewer", "presenter"
361
402
  }
362
403
  ]
363
404
  }
364
405
  ```
365
406
 
366
- Then when creating the meeting send the following parameters along, adjusting to your needs and resources:
407
+ Going through each parameter to better understand it's structure:
408
+
409
+ - `name`: It is the name of the remote data source, that is the name you'll use later on in the plugin when developing it;
410
+ - `url`: The Url to which the data will be fetched (it can be hard-coded in the `manifest.json`, but we recommend passing it as a `meta_` parameter);
411
+ - `fetchMode`: It tells the plugin-server if it should fetch the data only when creating the meeting, or everytime the function is called in the plugin portion;
412
+ - If one chooses `onMeetingCreate`, the data will be fetched when the create endpoint of the meeting is called, then it's cached in the plugin-server so that everytime the plugin wants that data, the plugin-server will respond with the cached data;
413
+ - On the other hand, if `onDemand` is selected, everytime the plugin calls this method, the plugin-server will fetch the data and then proxy it to the plugin;
414
+ - `permissions`: This tells the back-end which role of the meeting can access this remote data;
415
+
416
+ Here is the `/create` parameters you would have to pass to make this remote-data-source api work:
367
417
 
368
418
  ```
369
419
  meta_pluginSettingsUserInformation=https://<your-external-source-with-your-authentication>/api/users
370
420
  pluginManifests=[{"url": "http://<domain-of-your-manifest>/your-plugin/manifest.json"}]
371
421
  ```
372
422
 
373
- In the plugin, just use the function like:
423
+ See that we send the `meta_` parameter, for more information, refer to the [meta parameters section](#meta_-parameters)
424
+
425
+ Lastly, in the plugin, just use the function like:
374
426
 
375
427
  ```typescript
376
428
  pluginApi.getRemoteData('allUsers').then((response: Response) => {
@@ -386,6 +438,69 @@ pluginApi.getRemoteData('allUsers').then((response: Response) => {
386
438
  });
387
439
  ```
388
440
 
441
+ ### Meta_ parameters
442
+
443
+ This is not part of the API, but it's a way of passing information to the manifest. Any value can be passed like this, one just needs to put something like `${meta_nameOfParameter}` in a specific config of the manifest, and in the `/create` call, set this meta-parameter to whatever is preferred, like `meta_nameOfParameter="Sample message"`
444
+
445
+ This feature is mainly used for security purposes, see [external data section](#external-data-resources). But can be used for customization reasons as well.
446
+
447
+ ### Event persistence
448
+
449
+ 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.
450
+
451
+ To use it, one first need to add the following lines to their `manifest.json`:
452
+
453
+ ```json
454
+ {
455
+ // ...rest of manifest configuration
456
+ "eventPersistence": {
457
+ "isEnabled": true,
458
+ "maximumPayloadSizeInBytes": 1024,
459
+ "rateLimiting": {
460
+ "messagesAllowedPerSecond": 10,
461
+ "messagesAllowedPerMinute": 20
462
+ }
463
+ }
464
+ }
465
+ ```
466
+
467
+ Then, the API in the SDK for that is:
468
+
469
+ ```ts
470
+ pluginApi.persistEvent(eventName: string, payloadJson: Object);
471
+ ```
472
+
473
+ See example in the `sample-use-meeting` plugin here in this repository. It is as follows:
474
+
475
+ ```ts
476
+ useEffect(() => {
477
+ setInterval(() => {
478
+ pluginLogger.info('persisting event');
479
+ pluginApi.persistEvent('eventFromUseMeetingSample', { foo: 'bar' });
480
+ }, 5000);
481
+ }, []);
482
+ ```
483
+
484
+ After the meeting is ended (considering it has been recorded), one can simply do the following steps to see the events:
485
+
486
+ In the server terminal run:
487
+ ```bash
488
+ sudo updatedb
489
+ vi $(locate events.xml | grep <meeting-id>)
490
+ ```
491
+
492
+ 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:
493
+
494
+ ```xml
495
+ <event timestamp="25004947" module="PLUGIN" eventname="PluginGeneratedEvent">
496
+ <payloadJson>{"foo":"bar"}</payloadJson>
497
+ <pluginEventName>eventFromUseMeetingSample</pluginEventName>
498
+ <date>2024-10-30T18:00:11.929Z</date>
499
+ <pluginName>SampleUseMeeting</pluginName>
500
+ <userId>w_sxlfjbcb0yxs</userId>
501
+ <timestampUTC>1730311211929</timestampUTC>
502
+ </event>
503
+ ```
389
504
 
390
505
  ### Frequently Asked Questions (FAQ)
391
506
 
@@ -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,4 @@
1
+ export declare enum CameraEnum {
2
+ SET_SELF_VIEW_DISABLED_ALL_DEVICES = "SET_SELF_VIEW_DISABLED_ALL_DEVICES_COMMAND",
3
+ SET_SELF_VIEW_DISABLED = "SET_SELF_VIEW_DISABLED_COMMAND"
4
+ }
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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("./actions-bar/commands");
12
- var commands_9 = require("./layout/commands");
13
- var commands_10 = require("./nav-bar/commands");
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: commands_8.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: commands_10.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: commands_9.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,8CAA2C;AAC3C,gDAA4C;AAE/B,QAAA,UAAU,GAAG;IACxB,UAAU,uBAAA;IACV,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,mBAAA;CACP,CAAC"}
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"}
@@ -1,5 +1,6 @@
1
1
  export declare enum NotificationEnum {
2
- SEND = "SEND_NOTIFICATION"
2
+ SEND = "SEND_NOTIFICATION_COMMAND",
3
+ SET_ENABLED_DISPLAY = "SET_ENABLED_DISPLAY_COMMAND"
3
4
  }
4
5
  export declare enum NotificationTypeUiCommand {
5
6
  INFO = "info",
@@ -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"] = "SEND_NOTIFICATION";
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,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,8CAA0B,CAAA;AAC5B,CAAC,EAFW,gBAAgB,gCAAhB,gBAAgB,QAE3B;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"}
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigbluebutton-html-plugin-sdk",
3
- "version": "0.0.70",
3
+ "version": "0.0.72",
4
4
  "homepage": "https://github.com/bigbluebutton/bigbluebutton-html-plugin-sdk",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",