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.
- package/dist/cjs/dom-element-manipulation/chat/message/hooks.d.ts +1 -1
- package/dist/cjs/dom-element-manipulation/chat/message/hooks.js +50 -26
- package/dist/cjs/dom-element-manipulation/chat/message/hooks.js.map +1 -1
- package/dist/cjs/dom-element-manipulation/chat/message/types.d.ts +8 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const useChatMessageDomElements: (messageIds: string[], pluginUuid: string) =>
|
|
1
|
+
export declare const useChatMessageDomElements: (messageIds: string[], pluginUuid: string) => any[];
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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)(),
|
|
19
|
-
var
|
|
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
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
|
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":"
|
|
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
|
|
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
|
+
}
|