wealth-alpha-chat-widget 1.0.9 → 2.0.1
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/index.cjs +19 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +57 -24
- package/dist/index.css.map +1 -1
- package/dist/index.mjs +20 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -894,40 +894,48 @@ var CARD_DISCLAIMER = "AI-assisted, educational only. Not financial advice. Cons
|
|
|
894
894
|
var SECTOR_TOGGLE_PREFIX = "__portfolio_sector_toggle:::";
|
|
895
895
|
var SECTORS_DONE_ID = "__portfolio_sectors_done";
|
|
896
896
|
var escapeHtml = (s) => s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
897
|
-
|
|
898
|
-
return Array.from(
|
|
899
|
-
root.querySelectorAll(`.srow[data-chip^="${SECTOR_TOGGLE_PREFIX}"]`)
|
|
900
|
-
).filter((row) => row.classList.contains("selected")).map((row) => (row.getAttribute("data-chip") ?? "").slice(SECTOR_TOGGLE_PREFIX.length)).filter(Boolean);
|
|
901
|
-
}
|
|
897
|
+
var sectorNameOf = (row) => (row.getAttribute("data-chip") ?? "").slice(SECTOR_TOGGLE_PREFIX.length);
|
|
902
898
|
function MessageBubble({ message, onChipClick, onFeedback }) {
|
|
903
899
|
const isBot = message.role === "bot";
|
|
904
900
|
const [rating, setRating] = react.useState(null);
|
|
905
901
|
const markdownRef = react.useRef(null);
|
|
906
902
|
const isSectorCard = isBot && message.content.includes(SECTOR_TOGGLE_PREFIX);
|
|
903
|
+
const [selectedSectors, setSelectedSectors] = react.useState(() => /* @__PURE__ */ new Set());
|
|
907
904
|
const rate = (value) => {
|
|
908
905
|
setRating(value);
|
|
909
906
|
onFeedback?.(message.id, value);
|
|
910
907
|
};
|
|
911
908
|
const isCard = isBot && message.content.includes("<div");
|
|
912
909
|
const bubbleClass = isBot ? `${chat_default.bubble} ${isCard ? chat_default.bubbleCard : chat_default.bubbleBot}` : `${chat_default.bubble} ${chat_default.bubbleUser}`;
|
|
913
|
-
const
|
|
910
|
+
const applySelectionToDom = react.useCallback(() => {
|
|
914
911
|
const root = markdownRef.current;
|
|
915
912
|
if (!root) return;
|
|
916
|
-
|
|
913
|
+
root.querySelectorAll(`.srow[data-chip^="${SECTOR_TOGGLE_PREFIX}"]`).forEach((row) => row.classList.toggle("selected", selectedSectors.has(sectorNameOf(row))));
|
|
917
914
|
const summary = root.querySelector(".wa-sel-summary");
|
|
918
915
|
if (summary) {
|
|
916
|
+
const names = Array.from(selectedSectors);
|
|
919
917
|
const list = names.length ? names.map(escapeHtml).join(", ") : "\u2014";
|
|
920
918
|
summary.innerHTML = `<span class="chk">\u2705</span>Selected (<b>${names.length}</b>): <b>${list}</b>`;
|
|
921
919
|
}
|
|
922
|
-
};
|
|
920
|
+
}, [selectedSectors]);
|
|
921
|
+
react.useLayoutEffect(() => {
|
|
922
|
+
if (isSectorCard) applySelectionToDom();
|
|
923
|
+
}, [isSectorCard, applySelectionToDom, message.content]);
|
|
923
924
|
const handleMarkdownClick = (e) => {
|
|
924
925
|
const toggleRow = e.target.closest(
|
|
925
926
|
`.srow[data-chip^="${SECTOR_TOGGLE_PREFIX}"]`
|
|
926
927
|
);
|
|
927
928
|
if (toggleRow) {
|
|
928
929
|
e.preventDefault();
|
|
929
|
-
toggleRow
|
|
930
|
-
|
|
930
|
+
const name = sectorNameOf(toggleRow);
|
|
931
|
+
if (name) {
|
|
932
|
+
setSelectedSectors((prev) => {
|
|
933
|
+
const next = new Set(prev);
|
|
934
|
+
if (next.has(name)) next.delete(name);
|
|
935
|
+
else next.add(name);
|
|
936
|
+
return next;
|
|
937
|
+
});
|
|
938
|
+
}
|
|
931
939
|
return;
|
|
932
940
|
}
|
|
933
941
|
const anchor = e.target.closest("a");
|
|
@@ -937,7 +945,7 @@ function MessageBubble({ message, onChipClick, onFeedback }) {
|
|
|
937
945
|
};
|
|
938
946
|
const handleChipClick = (chip) => {
|
|
939
947
|
if (isSectorCard && chip.id === SECTORS_DONE_ID) {
|
|
940
|
-
const names =
|
|
948
|
+
const names = Array.from(selectedSectors);
|
|
941
949
|
const id = names.length ? `${SECTORS_DONE_ID}:::${names.join(",")}` : SECTORS_DONE_ID;
|
|
942
950
|
onChipClick({ ...chip, id });
|
|
943
951
|
return;
|