bigbluebutton-html-plugin-sdk 0.0.62 → 0.0.64

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.
@@ -1 +1 @@
1
- export declare const useChatMessageDomElements: (messageIds: string[], pluginUuid: string) => HTMLDivElement[] | undefined;
1
+ export declare const useChatMessageDomElements: (messageIds: string[], pluginUuid: string) => any[];
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
7
8
  }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
10
12
  };
11
13
  Object.defineProperty(exports, "__esModule", { value: true });
12
14
  exports.useChatMessageDomElements = void 0;
@@ -14,20 +16,37 @@ var react_1 = require("react");
14
16
  var enums_1 = require("../../enums");
15
17
  var enum_1 = require("../../../core/enum");
16
18
  var utils_1 = require("../../../data-consumption/utils");
19
+ var messageIdFromDomElement = function (element) { return ((element === null || element === void 0 ? void 0 : element.getAttribute('data-chat-message-id')) || ''); };
17
20
  var useChatMessageDomElements = function (messageIds, pluginUuid) {
18
- var _a = (0, react_1.useState)(), domElement = _a[0], setDomElement = _a[1];
19
- var _b = (0, react_1.useState)((messageIds) || []), messageIdsState = _b[0], setMessageIdsState = _b[1];
20
- var previousNeededIds = (0, react_1.useRef)();
21
+ var _a = (0, react_1.useState)([]), domElements = _a[0], setDomElements = _a[1];
22
+ var previousMessageIds = (0, react_1.useRef)([]);
21
23
  var handleDomElementUpdateEvent = (function (event) {
22
- var _a;
24
+ var _a, _b, _c;
23
25
  var detail = event.detail;
24
26
  if (detail.hook === enums_1.DomElementManipulationHooks.CHAT_MESSAGE) {
25
- var filteredDataFromBbbCore = ((_a = detail.data) === null || _a === void 0 ? void 0 : _a.filter(function (item) { return messageIdsState.includes(item.messageId); })) || [];
26
- var filteredStreamIdsFromBbbCore = filteredDataFromBbbCore.map(function (item) { return item.messageId; });
27
- if ((0, utils_1.sortedStringify)(filteredStreamIdsFromBbbCore)
28
- !== (0, utils_1.sortedStringify)(previousNeededIds.current)) {
29
- previousNeededIds.current = __spreadArray([], filteredStreamIdsFromBbbCore, true);
30
- setDomElement(filteredDataFromBbbCore.map(function (messageItemFromCore) { return messageItemFromCore.message; }));
27
+ var pageToUpdate_1 = (_a = detail.data) === null || _a === void 0 ? void 0 : _a.page;
28
+ if (pageToUpdate_1 === undefined)
29
+ return;
30
+ if (((_b = detail.data) === null || _b === void 0 ? void 0 : _b.messages.length) === 0) {
31
+ // indicates the page was unmounted in the client
32
+ // so we remove all stored elements for that page,
33
+ // since they might be invalid.
34
+ setDomElements(function (domElementsState) {
35
+ var newDomElements = __assign({}, domElementsState);
36
+ delete newDomElements[pageToUpdate_1];
37
+ return newDomElements;
38
+ });
39
+ }
40
+ var pageDomElementsFromBbbCore_1 = (_c = detail.data) === null || _c === void 0 ? void 0 : _c.messages.map(function (item) { return item.message; });
41
+ var receivedAnythingNew = pageDomElementsFromBbbCore_1.some(function (pageDomElement) {
42
+ var _a;
43
+ return (!((_a = domElements[pageToUpdate_1]) === null || _a === void 0 ? void 0 : _a.includes(pageDomElement)));
44
+ });
45
+ if (receivedAnythingNew) {
46
+ setDomElements(function (domElementsState) {
47
+ var _a;
48
+ return (__assign(__assign({}, domElementsState), (_a = {}, _a[pageToUpdate_1] = pageDomElementsFromBbbCore_1, _a)));
49
+ });
31
50
  }
32
51
  }
33
52
  });
@@ -56,6 +75,15 @@ var useChatMessageDomElements = function (messageIds, pluginUuid) {
56
75
  }, []);
57
76
  (0, react_1.useEffect)(function () {
58
77
  window.addEventListener(enum_1.HookEvents.BBB_CORE_SENT_NEW_DATA, handleDomElementUpdateEvent);
78
+ // Runs on code cleanup
79
+ return function () {
80
+ // On every `domElements` update, the event listener is removed and re-added to ensure
81
+ // the handler has access to the latest `domElements` state value.
82
+ window.removeEventListener(enum_1.HookEvents.BBB_CORE_SENT_NEW_DATA, handleDomElementUpdateEvent);
83
+ };
84
+ }, [domElements]);
85
+ var updateRequestedIds = function () {
86
+ previousMessageIds.current = messageIds;
59
87
  window.dispatchEvent(new CustomEvent(enum_1.HookEvents.PLUGIN_SENT_CHANGES_TO_BBB_CORE, {
60
88
  detail: {
61
89
  hook: enums_1.DomElementManipulationHooks.CHAT_MESSAGE,
@@ -66,16 +94,12 @@ var useChatMessageDomElements = function (messageIds, pluginUuid) {
66
94
  data: undefined,
67
95
  },
68
96
  }));
69
- // Runs on code cleanup
70
- return function () {
71
- // Everytime the state update, we remove the eventListener and then we re-add it.
72
- window.removeEventListener(enum_1.HookEvents.BBB_CORE_SENT_NEW_DATA, handleDomElementUpdateEvent);
73
- };
74
- }, [messageIdsState]);
75
- if ((0, utils_1.sortedStringify)((messageIds) || []) !== (0, utils_1.sortedStringify)(messageIdsState)) {
76
- setMessageIdsState((messageIds) || []);
97
+ };
98
+ if ((0, utils_1.sortedStringify)((messageIds) || []) !== (0, utils_1.sortedStringify)(previousMessageIds.current)) {
99
+ updateRequestedIds();
77
100
  }
78
- return domElement;
101
+ var flattenDomElements = (0, react_1.useMemo)(function () { return (Object.values(domElements).filter(function (i) { return Array.isArray(i); }).flat()); }, [domElements]);
102
+ return flattenDomElements.filter(function (domElement) { return (messageIds.includes(messageIdFromDomElement(domElement))); });
79
103
  };
80
104
  exports.useChatMessageDomElements = useChatMessageDomElements;
81
105
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dom-element-manipulation/chat/message/hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAoD;AACpD,qCAA0D;AAC1D,2CAAgD;AAKhD,yDAAkE;AAE3D,IAAM,yBAAyB,GAAG,UAAC,UAAoB,EAAE,UAAkB;IAC1E,IAAA,KAA8B,IAAA,gBAAQ,GAAoB,EAAzD,UAAU,QAAA,EAAE,aAAa,QAAgC,CAAC;IAC3D,IAAA,KAAwC,IAAA,gBAAQ,EAAW,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAA7E,eAAe,QAAA,EAAE,kBAAkB,QAA0C,CAAC;IAErF,IAAM,iBAAiB,GAAG,IAAA,cAAM,GAAY,CAAC;IAE7C,IAAM,2BAA2B,GAAkB,CAC/C,UAAC,KACqE;;QACpE,IAAM,MAAM,GAAG,KAAK,CAAC,MAC0B,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,mCAA2B,CAAC,YAAY,EAAE;YAC5D,IAAM,uBAAuB,GAAG,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,MAAM,CACjD,UAAC,IAAI,IAAK,OAAA,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAxC,CAAwC,CACnD,KAAI,EAAE,CAAC;YACR,IAAM,4BAA4B,GAAG,uBAAuB,CAAC,GAAG,CAC9D,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,SAAS,EAAd,CAAc,CACzB,CAAC;YACF,IAAI,IAAA,uBAAe,EAAC,4BAA4B,CAAC;oBAC3C,IAAA,uBAAe,EAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBAChD,iBAAiB,CAAC,OAAO,qBAAO,4BAA4B,OAAC,CAAC;gBAC9D,aAAa,CACX,uBAAuB,CAAC,GAAG,CAAC,UAAC,mBAAmB,IAAK,OAAA,mBAAmB,CAAC,OAAO,EAA3B,CAA2B,CAAC,CAClF,CAAC;aACH;SACF;IACH,CAAC,CAAkB,CAAC;IACxB,IAAA,iBAAS,EAAC;QACR,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAyB,iBAAU,CAAC,6BAA6B,EAAE;YAChF,MAAM,EAAE;gBACN,IAAI,EAAE,mCAA2B,CAAC,YAAY;gBAC9C,aAAa,EAAE;oBACb,UAAU,YAAA;oBACV,UAAU,YAAA;iBACwB;aACrC;SACF,CAAC,CACH,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,iBAAU,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,CAAC;QACxF,OAAO;YACL,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAA2B,iBAAU,CAAC,iCAAiC,EAAE;gBACtF,MAAM,EAAE;oBACN,IAAI,EAAE,mCAA2B,CAAC,YAAY;oBAC9C,aAAa,EAAE;wBACb,UAAU,YAAA;wBACV,UAAU,YAAA;qBACwB;iBACrC;aACF,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,IAAA,iBAAS,EAAC;QACR,MAAM,CAAC,gBAAgB,CAAC,iBAAU,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,CAAC;QACxF,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CACc,iBAAU,CAAC,+BAA+B,EAAE;YACrE,MAAM,EAAE;gBACN,IAAI,EAAE,mCAA2B,CAAC,YAAY;gBAC9C,aAAa,EAAE;oBACb,UAAU,YAAA;oBACV,UAAU,YAAA;iBACwB;gBACpC,IAAI,EAAE,SAAS;aAChB;SACF,CAAC,CACL,CAAC;QACF,uBAAuB;QACvB,OAAO;YACL,iFAAiF;YACjF,MAAM,CAAC,mBAAmB,CAAC,iBAAU,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,CAAC;QAC7F,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtB,IAAI,IAAA,uBAAe,EAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,IAAA,uBAAe,EAAC,eAAe,CAAC,EAAE;QAC5E,kBAAkB,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;KACxC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AA/EW,QAAA,yBAAyB,6BA+EpC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dom-element-manipulation/chat/message/hooks.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,14 @@ export interface ChatMessageDomElementsArguments {
3
3
  messageIds: string[];
4
4
  pluginUuid: string;
5
5
  }
6
- export interface UpdatedEventDetailsForChatMessageDomElements {
6
+ export interface MessageDetails {
7
7
  messageId: string;
8
8
  message: HTMLDivElement;
9
9
  }
10
+ export interface UpdatedEventDetailsForChatMessageDomElements {
11
+ page: number;
12
+ messages: MessageDetails[];
13
+ }
14
+ export interface RenderedChatMessages {
15
+ [pageNumber: number]: HTMLDivElement[];
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigbluebutton-html-plugin-sdk",
3
- "version": "0.0.62",
3
+ "version": "0.0.64",
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",