@lumiastream/ui 0.8.0 → 0.8.2
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/ChatMessageItem.js +1 -1
- package/dist/ChatboxPanel.js +1 -1
- package/dist/EventList.js +1 -1
- package/dist/EventListItem.js +1 -1
- package/dist/GoalsList.js +1 -1
- package/dist/LSButton.js +1 -1
- package/dist/LSCheckbox.js +1 -1
- package/dist/LSColorPicker.js +1 -1
- package/dist/LSDatePicker.js +1 -1
- package/dist/LSFontPicker.js +1 -1
- package/dist/LSInput.js +1 -1
- package/dist/LSMultiSelect.js +1 -1
- package/dist/LSRadio.js +1 -1
- package/dist/LSSelect.js +1 -1
- package/dist/LSSliderInput.js +1 -1
- package/dist/LSSwitch.js +1 -1
- package/dist/LSTextField.js +1 -1
- package/dist/LSVariableInputField.d.ts +6 -0
- package/dist/LSVariableInputField.js +442 -83
- package/dist/ModActivityLog.js +1 -1
- package/dist/ModQueueItem.js +1 -1
- package/dist/ModQueueList.js +1 -1
- package/dist/ModalChrome.js +1 -1
- package/dist/PlatformIcon.js +1 -1
- package/dist/ShortcutDockGrid.js +1 -1
- package/dist/SongRequestList.js +1 -1
- package/dist/StreamStatusPanel.js +1 -1
- package/dist/ViewersList.js +1 -1
- package/dist/WidgetChrome.js +1 -1
- package/dist/components.js +764 -403
- package/dist/index.js +1077 -716
- package/dist/se-import.js +1075 -714
- package/package.json +3 -3
package/dist/se-import.js
CHANGED
|
@@ -4839,7 +4839,7 @@ async function diagnoseSEAuth(jwt) {
|
|
|
4839
4839
|
}
|
|
4840
4840
|
|
|
4841
4841
|
// src/se-import/ui/SEImportWizard.tsx
|
|
4842
|
-
import { useCallback as useCallback4, useEffect as
|
|
4842
|
+
import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo8, useRef as useRef9, useState as useState13 } from "react";
|
|
4843
4843
|
|
|
4844
4844
|
// src/components/LSButton/LSButton.tsx
|
|
4845
4845
|
import Button from "@mui/material/Button";
|
|
@@ -5638,17 +5638,268 @@ import Search from "@mui/icons-material/Search";
|
|
|
5638
5638
|
import KeyboardArrowDown2 from "@mui/icons-material/KeyboardArrowDown";
|
|
5639
5639
|
import Tooltip2 from "@mui/material/Tooltip";
|
|
5640
5640
|
import {
|
|
5641
|
-
Fragment as
|
|
5641
|
+
Fragment as Fragment4,
|
|
5642
5642
|
createContext,
|
|
5643
5643
|
forwardRef as forwardRef7,
|
|
5644
5644
|
useCallback as useCallback2,
|
|
5645
5645
|
useContext,
|
|
5646
|
+
useEffect as useEffect5,
|
|
5647
|
+
useMemo as useMemo4,
|
|
5648
|
+
useRef as useRef4,
|
|
5649
|
+
useState as useState5
|
|
5650
|
+
} from "react";
|
|
5651
|
+
|
|
5652
|
+
// src/components/LSVariableInputField/VariableHighlightOverlay.tsx
|
|
5653
|
+
import {
|
|
5654
|
+
Fragment as Fragment2,
|
|
5646
5655
|
useEffect as useEffect4,
|
|
5656
|
+
useLayoutEffect,
|
|
5647
5657
|
useMemo as useMemo3,
|
|
5648
5658
|
useRef as useRef3,
|
|
5649
5659
|
useState as useState4
|
|
5650
5660
|
} from "react";
|
|
5661
|
+
import { createPortal } from "react-dom";
|
|
5651
5662
|
import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
5663
|
+
var TOKEN_START = "{{";
|
|
5664
|
+
var TOKEN_END = "}}";
|
|
5665
|
+
var COPIED_STYLE_PROPS = [
|
|
5666
|
+
"fontFamily",
|
|
5667
|
+
"fontSize",
|
|
5668
|
+
"fontWeight",
|
|
5669
|
+
"fontStyle",
|
|
5670
|
+
"fontVariant",
|
|
5671
|
+
"letterSpacing",
|
|
5672
|
+
"wordSpacing",
|
|
5673
|
+
"textTransform",
|
|
5674
|
+
"textIndent",
|
|
5675
|
+
"lineHeight",
|
|
5676
|
+
"tabSize",
|
|
5677
|
+
"paddingTop",
|
|
5678
|
+
"paddingRight",
|
|
5679
|
+
"paddingBottom",
|
|
5680
|
+
"paddingLeft",
|
|
5681
|
+
"direction"
|
|
5682
|
+
];
|
|
5683
|
+
var tokenClass = (type) => {
|
|
5684
|
+
if (type === "func") return "ls-variable-highlight__token--function";
|
|
5685
|
+
if (type === "system") return "ls-variable-highlight__token--system";
|
|
5686
|
+
if (type === "suggested") return "ls-variable-highlight__token--suggested";
|
|
5687
|
+
return "ls-variable-highlight__token--custom";
|
|
5688
|
+
};
|
|
5689
|
+
var findTokenEnd = (value, start) => {
|
|
5690
|
+
let depth = 0;
|
|
5691
|
+
let index = start;
|
|
5692
|
+
while (index < value.length - 1) {
|
|
5693
|
+
const pair = value.slice(index, index + 2);
|
|
5694
|
+
if (pair === TOKEN_START) {
|
|
5695
|
+
depth += 1;
|
|
5696
|
+
index += 2;
|
|
5697
|
+
continue;
|
|
5698
|
+
}
|
|
5699
|
+
if (pair === TOKEN_END) {
|
|
5700
|
+
depth -= 1;
|
|
5701
|
+
index += 2;
|
|
5702
|
+
if (depth === 0) return index;
|
|
5703
|
+
continue;
|
|
5704
|
+
}
|
|
5705
|
+
index += 1;
|
|
5706
|
+
}
|
|
5707
|
+
return -1;
|
|
5708
|
+
};
|
|
5709
|
+
var getTokenBase = (raw) => raw.slice(2, -2).split("=")[0].trim();
|
|
5710
|
+
var parseTokenSegment = (raw, classify, describe) => {
|
|
5711
|
+
const inner = raw.slice(2, -2);
|
|
5712
|
+
const base = getTokenBase(raw);
|
|
5713
|
+
const children = inner.includes(TOKEN_START) ? parseSegments(inner, classify, describe) : void 0;
|
|
5714
|
+
return {
|
|
5715
|
+
text: raw,
|
|
5716
|
+
token: true,
|
|
5717
|
+
type: classify(base),
|
|
5718
|
+
desc: describe(base),
|
|
5719
|
+
children: children?.some((child) => child.token) ? children : void 0
|
|
5720
|
+
};
|
|
5721
|
+
};
|
|
5722
|
+
var parseSegments = (value, classify, describe) => {
|
|
5723
|
+
const segments = [];
|
|
5724
|
+
let index = 0;
|
|
5725
|
+
while (index < value.length) {
|
|
5726
|
+
const start = value.indexOf(TOKEN_START, index);
|
|
5727
|
+
if (start === -1) {
|
|
5728
|
+
segments.push({ text: value.slice(index), token: false });
|
|
5729
|
+
break;
|
|
5730
|
+
}
|
|
5731
|
+
if (start > index) {
|
|
5732
|
+
segments.push({ text: value.slice(index, start), token: false });
|
|
5733
|
+
}
|
|
5734
|
+
const end = findTokenEnd(value, start);
|
|
5735
|
+
if (end === -1) {
|
|
5736
|
+
segments.push({ text: value.slice(start), token: false });
|
|
5737
|
+
break;
|
|
5738
|
+
}
|
|
5739
|
+
segments.push(
|
|
5740
|
+
parseTokenSegment(value.slice(start, end), classify, describe)
|
|
5741
|
+
);
|
|
5742
|
+
index = end;
|
|
5743
|
+
}
|
|
5744
|
+
return segments;
|
|
5745
|
+
};
|
|
5746
|
+
var renderSegment = (segment, key) => segment.token ? /* @__PURE__ */ jsx13(
|
|
5747
|
+
"span",
|
|
5748
|
+
{
|
|
5749
|
+
"data-desc": segment.desc || void 0,
|
|
5750
|
+
className: `ls-variable-highlight__token ${tokenClass(segment.type ?? "custom")}`,
|
|
5751
|
+
children: segment.children ? /* @__PURE__ */ jsxs5(Fragment3, { children: [
|
|
5752
|
+
TOKEN_START,
|
|
5753
|
+
segment.children.map(
|
|
5754
|
+
(child, index) => renderSegment(child, `${key}-${index}`)
|
|
5755
|
+
),
|
|
5756
|
+
TOKEN_END
|
|
5757
|
+
] }) : segment.text
|
|
5758
|
+
},
|
|
5759
|
+
key
|
|
5760
|
+
) : /* @__PURE__ */ jsx13(Fragment2, { children: segment.text }, key);
|
|
5761
|
+
var VariableHighlightOverlay = ({
|
|
5762
|
+
inputEl,
|
|
5763
|
+
value,
|
|
5764
|
+
multiline,
|
|
5765
|
+
classify,
|
|
5766
|
+
describe
|
|
5767
|
+
}) => {
|
|
5768
|
+
const layerRef = useRef3(null);
|
|
5769
|
+
const textColorRef = useRef3("");
|
|
5770
|
+
const [tooltip, setTooltip] = useState4(null);
|
|
5771
|
+
const segments = useMemo3(
|
|
5772
|
+
() => parseSegments(value, classify, describe),
|
|
5773
|
+
[value, classify, describe]
|
|
5774
|
+
);
|
|
5775
|
+
const hasTokens = useMemo3(() => segments.some((segment) => segment.token), [segments]);
|
|
5776
|
+
useLayoutEffect(() => {
|
|
5777
|
+
const layer = layerRef.current;
|
|
5778
|
+
if (!inputEl || !layer || !hasTokens) {
|
|
5779
|
+
return;
|
|
5780
|
+
}
|
|
5781
|
+
const sync = () => {
|
|
5782
|
+
const computed = getComputedStyle(inputEl);
|
|
5783
|
+
for (const prop of COPIED_STYLE_PROPS) {
|
|
5784
|
+
layer.style[prop] = computed[prop];
|
|
5785
|
+
}
|
|
5786
|
+
const isTransparent = computed.color === "rgba(0, 0, 0, 0)" || computed.color === "transparent";
|
|
5787
|
+
if (!isTransparent) {
|
|
5788
|
+
textColorRef.current = computed.color;
|
|
5789
|
+
}
|
|
5790
|
+
layer.style.color = isTransparent ? textColorRef.current || computed.color : computed.color;
|
|
5791
|
+
layer.style.whiteSpace = multiline ? "pre-wrap" : "pre";
|
|
5792
|
+
layer.style.top = `${inputEl.offsetTop}px`;
|
|
5793
|
+
layer.style.left = `${inputEl.offsetLeft}px`;
|
|
5794
|
+
layer.style.width = `${inputEl.offsetWidth}px`;
|
|
5795
|
+
layer.style.height = `${inputEl.offsetHeight}px`;
|
|
5796
|
+
layer.scrollTop = inputEl.scrollTop;
|
|
5797
|
+
layer.scrollLeft = inputEl.scrollLeft;
|
|
5798
|
+
};
|
|
5799
|
+
sync();
|
|
5800
|
+
const onScroll = () => {
|
|
5801
|
+
layer.scrollTop = inputEl.scrollTop;
|
|
5802
|
+
layer.scrollLeft = inputEl.scrollLeft;
|
|
5803
|
+
};
|
|
5804
|
+
inputEl.addEventListener("scroll", onScroll);
|
|
5805
|
+
const observer = new ResizeObserver(sync);
|
|
5806
|
+
observer.observe(inputEl);
|
|
5807
|
+
window.addEventListener("resize", sync);
|
|
5808
|
+
return () => {
|
|
5809
|
+
inputEl.removeEventListener("scroll", onScroll);
|
|
5810
|
+
observer.disconnect();
|
|
5811
|
+
window.removeEventListener("resize", sync);
|
|
5812
|
+
};
|
|
5813
|
+
}, [inputEl, multiline, hasTokens, segments]);
|
|
5814
|
+
useLayoutEffect(() => {
|
|
5815
|
+
if (!inputEl || !hasTokens) {
|
|
5816
|
+
return;
|
|
5817
|
+
}
|
|
5818
|
+
const style = inputEl.style;
|
|
5819
|
+
const prev = {
|
|
5820
|
+
color: style.color,
|
|
5821
|
+
caretColor: style.caretColor,
|
|
5822
|
+
fill: style.webkitTextFillColor,
|
|
5823
|
+
position: style.position,
|
|
5824
|
+
zIndex: style.zIndex
|
|
5825
|
+
};
|
|
5826
|
+
const computed = getComputedStyle(inputEl);
|
|
5827
|
+
if (computed.color !== "rgba(0, 0, 0, 0)" && computed.color !== "transparent") {
|
|
5828
|
+
textColorRef.current = computed.color;
|
|
5829
|
+
}
|
|
5830
|
+
style.caretColor = computed.color;
|
|
5831
|
+
style.color = "transparent";
|
|
5832
|
+
style.webkitTextFillColor = "transparent";
|
|
5833
|
+
if (computed.position === "static") {
|
|
5834
|
+
style.position = "relative";
|
|
5835
|
+
}
|
|
5836
|
+
style.zIndex = "1";
|
|
5837
|
+
return () => {
|
|
5838
|
+
style.color = prev.color;
|
|
5839
|
+
style.caretColor = prev.caretColor;
|
|
5840
|
+
style.webkitTextFillColor = prev.fill;
|
|
5841
|
+
style.position = prev.position;
|
|
5842
|
+
style.zIndex = prev.zIndex;
|
|
5843
|
+
};
|
|
5844
|
+
}, [inputEl, hasTokens]);
|
|
5845
|
+
useEffect4(() => {
|
|
5846
|
+
if (!inputEl || !hasTokens) {
|
|
5847
|
+
setTooltip(null);
|
|
5848
|
+
return;
|
|
5849
|
+
}
|
|
5850
|
+
const onMove = (event) => {
|
|
5851
|
+
const layer = layerRef.current;
|
|
5852
|
+
if (!layer) {
|
|
5853
|
+
return;
|
|
5854
|
+
}
|
|
5855
|
+
const spans = layer.querySelectorAll(".ls-variable-highlight__token");
|
|
5856
|
+
for (const span of Array.from(spans).reverse()) {
|
|
5857
|
+
const desc = span.getAttribute("data-desc");
|
|
5858
|
+
if (!desc) {
|
|
5859
|
+
continue;
|
|
5860
|
+
}
|
|
5861
|
+
for (const rect of Array.from(span.getClientRects())) {
|
|
5862
|
+
if (event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom) {
|
|
5863
|
+
setTooltip({ text: desc, top: rect.top, left: rect.left + rect.width / 2 });
|
|
5864
|
+
return;
|
|
5865
|
+
}
|
|
5866
|
+
}
|
|
5867
|
+
}
|
|
5868
|
+
setTooltip(null);
|
|
5869
|
+
};
|
|
5870
|
+
const onLeave = () => setTooltip(null);
|
|
5871
|
+
const el = inputEl;
|
|
5872
|
+
el.addEventListener("mousemove", onMove);
|
|
5873
|
+
el.addEventListener("mouseleave", onLeave);
|
|
5874
|
+
return () => {
|
|
5875
|
+
el.removeEventListener("mousemove", onMove);
|
|
5876
|
+
el.removeEventListener("mouseleave", onLeave);
|
|
5877
|
+
};
|
|
5878
|
+
}, [inputEl, hasTokens, segments]);
|
|
5879
|
+
if (!inputEl?.parentElement || !hasTokens) {
|
|
5880
|
+
return null;
|
|
5881
|
+
}
|
|
5882
|
+
return /* @__PURE__ */ jsxs5(Fragment3, { children: [
|
|
5883
|
+
createPortal(
|
|
5884
|
+
/* @__PURE__ */ jsx13("div", { ref: layerRef, "aria-hidden": true, className: "ls-variable-highlight__layer", children: segments.map((segment, index) => renderSegment(segment, String(index))) }),
|
|
5885
|
+
inputEl.parentElement
|
|
5886
|
+
),
|
|
5887
|
+
tooltip ? createPortal(
|
|
5888
|
+
/* @__PURE__ */ jsx13(
|
|
5889
|
+
"div",
|
|
5890
|
+
{
|
|
5891
|
+
className: "ls-variable-highlight__tooltip",
|
|
5892
|
+
style: { top: tooltip.top, left: tooltip.left },
|
|
5893
|
+
children: tooltip.text
|
|
5894
|
+
}
|
|
5895
|
+
),
|
|
5896
|
+
document.body
|
|
5897
|
+
) : null
|
|
5898
|
+
] });
|
|
5899
|
+
};
|
|
5900
|
+
|
|
5901
|
+
// src/components/LSVariableInputField/LSVariableInputField.tsx
|
|
5902
|
+
import { Fragment as Fragment5, jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
5652
5903
|
import { createElement } from "react";
|
|
5653
5904
|
var LSVariableInputContext = createContext({});
|
|
5654
5905
|
var DEFAULT_FUNCTION_VARIABLES = [
|
|
@@ -5907,6 +6158,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
5907
6158
|
$renderOption,
|
|
5908
6159
|
allowedVariableOrigin,
|
|
5909
6160
|
systemVariables: systemVariablesProp,
|
|
6161
|
+
variableExamples: variableExamplesProp,
|
|
5910
6162
|
functionVariables: functionVariablesProp,
|
|
5911
6163
|
translate,
|
|
5912
6164
|
onVariableTranslationsNeeded,
|
|
@@ -5915,50 +6167,79 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
5915
6167
|
} = props;
|
|
5916
6168
|
const t = translate ?? context.translate ?? defaultTranslate;
|
|
5917
6169
|
const rawSystemVariables = systemVariablesProp ?? context.systemVariables ?? {};
|
|
5918
|
-
const
|
|
6170
|
+
const variableExamples = variableExamplesProp ?? context.variableExamples ?? {};
|
|
6171
|
+
const variableRecords = useMemo4(
|
|
5919
6172
|
() => normalizeVariableRecords(rawSystemVariables),
|
|
5920
6173
|
[rawSystemVariables]
|
|
5921
6174
|
);
|
|
5922
|
-
const functionVariables =
|
|
6175
|
+
const functionVariables = useMemo4(
|
|
5923
6176
|
() => functionVariablesProp ?? context.functionVariables ?? DEFAULT_FUNCTION_VARIABLES,
|
|
5924
6177
|
[context.functionVariables, functionVariablesProp]
|
|
5925
6178
|
);
|
|
5926
6179
|
const requestTranslations = onVariableTranslationsNeeded ?? context.onVariableTranslationsNeeded;
|
|
5927
6180
|
const isOriginConnected = isOriginConnectedProp ?? context.isOriginConnected;
|
|
5928
6181
|
const translationKeyExists = translationKeyExistsProp ?? context.translationKeyExists;
|
|
5929
|
-
const containerRef =
|
|
5930
|
-
const variableId =
|
|
5931
|
-
const [showVariables, setShowVariables] =
|
|
5932
|
-
const [searchQuery, setSearchQuery] =
|
|
5933
|
-
const functionVariableSet =
|
|
6182
|
+
const containerRef = useRef4(null);
|
|
6183
|
+
const variableId = useRef4(`variable-input-${name ?? "field"}`);
|
|
6184
|
+
const [showVariables, setShowVariables] = useState5(false);
|
|
6185
|
+
const [searchQuery, setSearchQuery] = useState5("");
|
|
6186
|
+
const functionVariableSet = useMemo4(
|
|
5934
6187
|
() => new Set(functionVariables),
|
|
5935
6188
|
[functionVariables]
|
|
5936
6189
|
);
|
|
5937
|
-
const
|
|
6190
|
+
const [inputEl, setInputEl] = useState5(null);
|
|
6191
|
+
const mergedInputRef = useCallback2(
|
|
6192
|
+
(node) => {
|
|
6193
|
+
setInputEl(node ?? null);
|
|
6194
|
+
if (typeof ref === "function") {
|
|
6195
|
+
ref(node);
|
|
6196
|
+
} else if (ref) {
|
|
6197
|
+
ref.current = node;
|
|
6198
|
+
}
|
|
6199
|
+
},
|
|
6200
|
+
[ref]
|
|
6201
|
+
);
|
|
6202
|
+
const currentVariableValue = useMemo4(() => {
|
|
6203
|
+
if (typeof value !== "string") return null;
|
|
6204
|
+
const match = value.trim().match(/^\{\{([^{}=]+)\}\}$/);
|
|
6205
|
+
if (!match) return null;
|
|
6206
|
+
const key = match[1].trim();
|
|
6207
|
+
if (functionVariableSet.has(key)) return null;
|
|
6208
|
+
const record = variableRecords[key];
|
|
6209
|
+
if (!record || record.isFunction) return null;
|
|
6210
|
+
const { displayValue, fullValue } = getVariableValueDisplay(record.value);
|
|
6211
|
+
if (displayValue === "" || displayValue == null) return null;
|
|
6212
|
+
return { displayValue, fullValue };
|
|
6213
|
+
}, [value, variableRecords, functionVariableSet]);
|
|
6214
|
+
const allowedVariableDefinitions = useMemo4(
|
|
5938
6215
|
() => normalizeAllowedDefinitions(allowedVariables),
|
|
5939
6216
|
[allowedVariables]
|
|
5940
6217
|
);
|
|
5941
|
-
const allowedVariableDefinitionLookup =
|
|
6218
|
+
const allowedVariableDefinitionLookup = useMemo4(() => {
|
|
5942
6219
|
const lookup = /* @__PURE__ */ new Map();
|
|
5943
6220
|
allowedVariableDefinitions.forEach(
|
|
5944
6221
|
(definition) => lookup.set(definition.name, definition)
|
|
5945
6222
|
);
|
|
5946
6223
|
return lookup;
|
|
5947
6224
|
}, [allowedVariableDefinitions]);
|
|
5948
|
-
const allowedVariableNames =
|
|
6225
|
+
const allowedVariableNames = useMemo4(
|
|
5949
6226
|
() => allowedVariableDefinitions.map((definition) => definition.name),
|
|
5950
6227
|
[allowedVariableDefinitions]
|
|
5951
6228
|
);
|
|
5952
|
-
const
|
|
5953
|
-
|
|
5954
|
-
|
|
6229
|
+
const allowedVariableNameSet = useMemo4(
|
|
6230
|
+
() => new Set(allowedVariableNames),
|
|
6231
|
+
[allowedVariableNames]
|
|
6232
|
+
);
|
|
6233
|
+
const [filteredAllowedVariables, setFilteredAllowedVariables] = useState5(allowedVariableDefinitions);
|
|
6234
|
+
const [filteredSystemVariables, setFilteredSystemVariables] = useState5([]);
|
|
6235
|
+
const [expandedPaths, setExpandedPaths] = useState5(
|
|
5955
6236
|
() => /* @__PURE__ */ new Set()
|
|
5956
6237
|
);
|
|
5957
|
-
const [autoExpandPaths, setAutoExpandPaths] =
|
|
6238
|
+
const [autoExpandPaths, setAutoExpandPaths] = useState5(
|
|
5958
6239
|
() => /* @__PURE__ */ new Set()
|
|
5959
6240
|
);
|
|
5960
6241
|
const shouldRenderPicker = !hideVariables && showVariables;
|
|
5961
|
-
const systemVariableValueTrees =
|
|
6242
|
+
const systemVariableValueTrees = useMemo4(() => {
|
|
5962
6243
|
const map = /* @__PURE__ */ new Map();
|
|
5963
6244
|
if (!shouldRenderPicker) return map;
|
|
5964
6245
|
Object.values(variableRecords).forEach((variable) => {
|
|
@@ -5968,7 +6249,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
5968
6249
|
});
|
|
5969
6250
|
return map;
|
|
5970
6251
|
}, [shouldRenderPicker, variableRecords]);
|
|
5971
|
-
const allowedExampleTrees =
|
|
6252
|
+
const allowedExampleTrees = useMemo4(() => {
|
|
5972
6253
|
const map = /* @__PURE__ */ new Map();
|
|
5973
6254
|
if (!shouldRenderPicker) return map;
|
|
5974
6255
|
allowedVariableDefinitions.forEach((definition) => {
|
|
@@ -5978,7 +6259,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
5978
6259
|
});
|
|
5979
6260
|
return map;
|
|
5980
6261
|
}, [allowedVariableDefinitions, shouldRenderPicker]);
|
|
5981
|
-
|
|
6262
|
+
useEffect5(() => {
|
|
5982
6263
|
requestTranslations?.();
|
|
5983
6264
|
}, [requestTranslations]);
|
|
5984
6265
|
const isPathExpanded = useCallback2(
|
|
@@ -6045,7 +6326,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6045
6326
|
},
|
|
6046
6327
|
[namespaceHas, t]
|
|
6047
6328
|
);
|
|
6048
|
-
const knownOrigins =
|
|
6329
|
+
const knownOrigins = useMemo4(() => {
|
|
6049
6330
|
return Array.from(
|
|
6050
6331
|
new Set(
|
|
6051
6332
|
Object.values(variableRecords).map(
|
|
@@ -6183,6 +6464,15 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6183
6464
|
},
|
|
6184
6465
|
[functionVariableSet, getAllowedVariableRecord]
|
|
6185
6466
|
);
|
|
6467
|
+
const getInputVariableVisualType = useCallback2(
|
|
6468
|
+
(variableName) => {
|
|
6469
|
+
const variableType = getAllowedVariableVisualType(variableName);
|
|
6470
|
+
if (variableType === "func") return "func";
|
|
6471
|
+
if (allowedVariableNameSet.has(variableName)) return "suggested";
|
|
6472
|
+
return variableType;
|
|
6473
|
+
},
|
|
6474
|
+
[allowedVariableNameSet, getAllowedVariableVisualType]
|
|
6475
|
+
);
|
|
6186
6476
|
const getAllowedVariableTree = useCallback2(
|
|
6187
6477
|
(definition) => {
|
|
6188
6478
|
const record = getAllowedVariableRecord(definition.name);
|
|
@@ -6192,7 +6482,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6192
6482
|
},
|
|
6193
6483
|
[allowedExampleTrees, getAllowedVariableRecord, systemVariableValueTrees]
|
|
6194
6484
|
);
|
|
6195
|
-
|
|
6485
|
+
useEffect5(() => {
|
|
6196
6486
|
if (!shouldRenderPicker) {
|
|
6197
6487
|
return;
|
|
6198
6488
|
}
|
|
@@ -6261,9 +6551,8 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6261
6551
|
} else {
|
|
6262
6552
|
setFilteredAllowedVariables([]);
|
|
6263
6553
|
}
|
|
6264
|
-
const allowedSet = new Set(allowedVariableNames);
|
|
6265
6554
|
const shouldKeep = (variable) => {
|
|
6266
|
-
if (
|
|
6555
|
+
if (allowedVariableNameSet.has(variable.name)) return false;
|
|
6267
6556
|
if (!variable.origin) return true;
|
|
6268
6557
|
if (!isOriginConnected) return true;
|
|
6269
6558
|
return isOriginConnected(variable.origin);
|
|
@@ -6316,6 +6605,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6316
6605
|
searchQuery,
|
|
6317
6606
|
allowedVariableDefinitions,
|
|
6318
6607
|
allowedVariableNames,
|
|
6608
|
+
allowedVariableNameSet,
|
|
6319
6609
|
getAllowedVariableDescription,
|
|
6320
6610
|
getAllowedVariableTree,
|
|
6321
6611
|
getAllowedVariableVisualType,
|
|
@@ -6332,7 +6622,23 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6332
6622
|
onChange?.(currentValue ? `${currentValue}${newValue}` : newValue);
|
|
6333
6623
|
};
|
|
6334
6624
|
const insertVariable = (variable) => {
|
|
6335
|
-
|
|
6625
|
+
const token = `{{${variable}}}`;
|
|
6626
|
+
const el = inputEl;
|
|
6627
|
+
if (el && typeof value === "string" && el.selectionStart != null) {
|
|
6628
|
+
const start = el.selectionStart;
|
|
6629
|
+
const end = el.selectionEnd ?? start;
|
|
6630
|
+
onChange?.(`${value.slice(0, start)}${token}${value.slice(end)}`);
|
|
6631
|
+
const caret = start + token.length;
|
|
6632
|
+
requestAnimationFrame(() => {
|
|
6633
|
+
try {
|
|
6634
|
+
el.focus();
|
|
6635
|
+
el.setSelectionRange(caret, caret);
|
|
6636
|
+
} catch {
|
|
6637
|
+
}
|
|
6638
|
+
});
|
|
6639
|
+
} else {
|
|
6640
|
+
appendValue(token);
|
|
6641
|
+
}
|
|
6336
6642
|
setShowVariables(false);
|
|
6337
6643
|
};
|
|
6338
6644
|
const handleFilterOptions = (options, params) => {
|
|
@@ -6340,13 +6646,13 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6340
6646
|
afterFilter?.(filtered);
|
|
6341
6647
|
return filtered;
|
|
6342
6648
|
};
|
|
6343
|
-
const renderVariableToken = (variableName, variableType, isSuggested = false) => /* @__PURE__ */
|
|
6649
|
+
const renderVariableToken = (variableName, variableType, isSuggested = false) => /* @__PURE__ */ jsxs6(
|
|
6344
6650
|
"div",
|
|
6345
6651
|
{
|
|
6346
6652
|
className: `ls-variable-token ${getVariableColorClass(variableType, isSuggested)}`,
|
|
6347
6653
|
children: [
|
|
6348
|
-
/* @__PURE__ */
|
|
6349
|
-
variableType === "func" && /* @__PURE__ */
|
|
6654
|
+
/* @__PURE__ */ jsx14("span", { className: "ls-variable-token__name", children: `{{${variableName}}}` }),
|
|
6655
|
+
variableType === "func" && /* @__PURE__ */ jsx14(
|
|
6350
6656
|
"span",
|
|
6351
6657
|
{
|
|
6352
6658
|
className: "ls-variable-token__badge",
|
|
@@ -6357,7 +6663,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6357
6663
|
]
|
|
6358
6664
|
}
|
|
6359
6665
|
);
|
|
6360
|
-
const renderExpandToggle = (path, expanded) => /* @__PURE__ */
|
|
6666
|
+
const renderExpandToggle = (path, expanded) => /* @__PURE__ */ jsx14(
|
|
6361
6667
|
"button",
|
|
6362
6668
|
{
|
|
6363
6669
|
type: "button",
|
|
@@ -6368,15 +6674,15 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6368
6674
|
className: `ls-variable-picker__expand-toggle${expanded ? " ls-variable-picker__expand-toggle--expanded" : ""}`,
|
|
6369
6675
|
"aria-label": expanded ? "Collapse" : "Expand",
|
|
6370
6676
|
"aria-expanded": expanded,
|
|
6371
|
-
children: /* @__PURE__ */
|
|
6677
|
+
children: /* @__PURE__ */ jsx14(KeyboardArrowDown2, { style: { width: 16, height: 16 } })
|
|
6372
6678
|
}
|
|
6373
6679
|
);
|
|
6374
|
-
const renderExpandSpacer = () => /* @__PURE__ */
|
|
6680
|
+
const renderExpandSpacer = () => /* @__PURE__ */ jsx14("span", { className: "ls-variable-picker__expand-spacer", "aria-hidden": true });
|
|
6375
6681
|
const getVariableValuePreview = (variableValue) => {
|
|
6376
6682
|
const { displayValue, fullValue } = getVariableValueDisplay(variableValue);
|
|
6377
6683
|
return { displayValue, fullValue };
|
|
6378
6684
|
};
|
|
6379
|
-
const renderVariableValueInput = (displayValue, fullValue) => /* @__PURE__ */
|
|
6685
|
+
const renderVariableValueInput = (displayValue, fullValue) => /* @__PURE__ */ jsx14(
|
|
6380
6686
|
"input",
|
|
6381
6687
|
{
|
|
6382
6688
|
className: "ls-variable-picker__value-input",
|
|
@@ -6393,8 +6699,8 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6393
6699
|
const fullToken = `${rootToken}.${node.relativePath}`;
|
|
6394
6700
|
const expanded = node.isExpandable && isPathExpanded(fullToken);
|
|
6395
6701
|
const { displayValue, fullValue } = getVariableValuePreview(node.value);
|
|
6396
|
-
return /* @__PURE__ */
|
|
6397
|
-
/* @__PURE__ */
|
|
6702
|
+
return /* @__PURE__ */ jsxs6(Fragment4, { children: [
|
|
6703
|
+
/* @__PURE__ */ jsxs6(
|
|
6398
6704
|
"div",
|
|
6399
6705
|
{
|
|
6400
6706
|
className: "ls-variable-picker__row ls-variable-picker__row--child",
|
|
@@ -6403,31 +6709,57 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6403
6709
|
else insertVariable(fullToken);
|
|
6404
6710
|
},
|
|
6405
6711
|
children: [
|
|
6406
|
-
/* @__PURE__ */
|
|
6712
|
+
/* @__PURE__ */ jsxs6(
|
|
6407
6713
|
"div",
|
|
6408
6714
|
{
|
|
6409
6715
|
className: "ls-variable-picker__token-cell",
|
|
6410
6716
|
style: { paddingLeft: `${node.depth * 1.25}rem` },
|
|
6411
6717
|
children: [
|
|
6412
6718
|
node.isExpandable ? renderExpandToggle(fullToken, expanded) : renderExpandSpacer(),
|
|
6413
|
-
/* @__PURE__ */
|
|
6719
|
+
/* @__PURE__ */ jsx14(
|
|
6414
6720
|
"div",
|
|
6415
6721
|
{
|
|
6416
6722
|
className: `ls-variable-token ${CHILD_VARIABLE_COLOR_CLASS}`,
|
|
6417
|
-
children: /* @__PURE__ */
|
|
6723
|
+
children: /* @__PURE__ */ jsx14("span", { className: "ls-variable-token__name", children: `{{${fullToken}}}` })
|
|
6418
6724
|
}
|
|
6419
6725
|
)
|
|
6420
6726
|
]
|
|
6421
6727
|
}
|
|
6422
6728
|
),
|
|
6423
|
-
/* @__PURE__ */
|
|
6424
|
-
/* @__PURE__ */
|
|
6729
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__description", children: node.displayKey }),
|
|
6730
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__value", title: fullValue, children: renderVariableValueInput(displayValue, fullValue) })
|
|
6425
6731
|
]
|
|
6426
6732
|
}
|
|
6427
6733
|
),
|
|
6428
6734
|
expanded && renderValueChildRows(rootToken, node.children)
|
|
6429
6735
|
] }, fullToken);
|
|
6430
6736
|
});
|
|
6737
|
+
const renderExampleChildRows = (variable, examples) => /* @__PURE__ */ jsxs6(Fragment5, { children: [
|
|
6738
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__row ls-variable-picker__row--child ls-variable-picker__example-description", children: getSystemVariableDescription(variable) }),
|
|
6739
|
+
examples.map((example) => /* @__PURE__ */ jsxs6(
|
|
6740
|
+
"div",
|
|
6741
|
+
{
|
|
6742
|
+
className: "ls-variable-picker__row ls-variable-picker__row--child",
|
|
6743
|
+
onClick: () => insertVariable(example.snippet),
|
|
6744
|
+
children: [
|
|
6745
|
+
/* @__PURE__ */ jsxs6(
|
|
6746
|
+
"div",
|
|
6747
|
+
{
|
|
6748
|
+
className: "ls-variable-picker__token-cell",
|
|
6749
|
+
style: { paddingLeft: "1.25rem" },
|
|
6750
|
+
children: [
|
|
6751
|
+
renderExpandSpacer(),
|
|
6752
|
+
/* @__PURE__ */ jsx14("div", { className: `ls-variable-token ${CHILD_VARIABLE_COLOR_CLASS}`, children: /* @__PURE__ */ jsx14("span", { className: "ls-variable-token__name", children: `{{${example.snippet}}}` }) })
|
|
6753
|
+
]
|
|
6754
|
+
}
|
|
6755
|
+
),
|
|
6756
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__description", children: example.label }),
|
|
6757
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__value" })
|
|
6758
|
+
]
|
|
6759
|
+
},
|
|
6760
|
+
example.snippet
|
|
6761
|
+
))
|
|
6762
|
+
] });
|
|
6431
6763
|
const toOptionLabelString = (input) => {
|
|
6432
6764
|
if (typeof input === "string") return input;
|
|
6433
6765
|
if (typeof input === "number" || typeof input === "boolean" || typeof input === "bigint")
|
|
@@ -6479,7 +6811,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6479
6811
|
isSelected ? "ls-variable-option--selected" : ""
|
|
6480
6812
|
].filter(Boolean).join(" ")
|
|
6481
6813
|
},
|
|
6482
|
-
thumb ? /* @__PURE__ */
|
|
6814
|
+
thumb ? /* @__PURE__ */ jsx14(
|
|
6483
6815
|
"img",
|
|
6484
6816
|
{
|
|
6485
6817
|
src: thumb,
|
|
@@ -6487,24 +6819,24 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6487
6819
|
alt: ""
|
|
6488
6820
|
}
|
|
6489
6821
|
) : null,
|
|
6490
|
-
/* @__PURE__ */
|
|
6491
|
-
/* @__PURE__ */
|
|
6492
|
-
helperText ? /* @__PURE__ */
|
|
6822
|
+
/* @__PURE__ */ jsxs6("div", { className: "ls-variable-option__body", children: [
|
|
6823
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-option__label", children: resolveOptionLabel(opt) }),
|
|
6824
|
+
helperText ? /* @__PURE__ */ jsx14("div", { className: "ls-variable-option__helper", children: helperText }) : null
|
|
6493
6825
|
] })
|
|
6494
6826
|
);
|
|
6495
6827
|
};
|
|
6496
6828
|
const showSuggestedSection = shouldRenderPicker && allowedVariableNames.length > 0 && filteredAllowedVariables.length > 0;
|
|
6497
|
-
const pickerBody = shouldRenderPicker ? /* @__PURE__ */
|
|
6498
|
-
/* @__PURE__ */
|
|
6499
|
-
/* @__PURE__ */
|
|
6829
|
+
const pickerBody = shouldRenderPicker ? /* @__PURE__ */ jsxs6("div", { className: "ls-variable-picker ls-variable-picker--three-col", children: [
|
|
6830
|
+
/* @__PURE__ */ jsxs6("div", { className: "ls-variable-picker__intro", children: [
|
|
6831
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__intro-text", children: t(
|
|
6500
6832
|
"overlay-variables.variables-description",
|
|
6501
6833
|
"Use variables that will automatically be replaced before sending out the text"
|
|
6502
6834
|
) }),
|
|
6503
|
-
/* @__PURE__ */
|
|
6835
|
+
/* @__PURE__ */ jsx14(
|
|
6504
6836
|
LSInput,
|
|
6505
6837
|
{
|
|
6506
6838
|
autoFocus: true,
|
|
6507
|
-
startAdornment: /* @__PURE__ */
|
|
6839
|
+
startAdornment: /* @__PURE__ */ jsx14(Search, { style: { color: "#fff", width: 20, height: 20 } }),
|
|
6508
6840
|
placeholder: t("common.search", "Search"),
|
|
6509
6841
|
value: searchQuery,
|
|
6510
6842
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
@@ -6512,14 +6844,14 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6512
6844
|
}
|
|
6513
6845
|
)
|
|
6514
6846
|
] }),
|
|
6515
|
-
/* @__PURE__ */
|
|
6516
|
-
/* @__PURE__ */
|
|
6517
|
-
/* @__PURE__ */
|
|
6518
|
-
/* @__PURE__ */
|
|
6847
|
+
/* @__PURE__ */ jsxs6("div", { className: "ls-variable-picker__header", children: [
|
|
6848
|
+
/* @__PURE__ */ jsx14("div", { style: { paddingLeft: "2.2rem" }, children: t("commands.variable", "Variable") }),
|
|
6849
|
+
/* @__PURE__ */ jsx14("div", { children: t("commands.description", "Description") }),
|
|
6850
|
+
/* @__PURE__ */ jsx14("div", { children: t("common.value", "Value") })
|
|
6519
6851
|
] }),
|
|
6520
|
-
/* @__PURE__ */
|
|
6521
|
-
showSuggestedSection && /* @__PURE__ */
|
|
6522
|
-
/* @__PURE__ */
|
|
6852
|
+
/* @__PURE__ */ jsxs6("div", { className: "ls-variable-picker__list", children: [
|
|
6853
|
+
showSuggestedSection && /* @__PURE__ */ jsxs6("fieldset", { className: "ls-variable-picker__field", children: [
|
|
6854
|
+
/* @__PURE__ */ jsx14("legend", { className: "ls-variable-picker__legend", children: t("commands.suggested-variables", "Suggested Variables") }),
|
|
6523
6855
|
filteredAllowedVariables.map((definition, idx) => {
|
|
6524
6856
|
const variableType = getAllowedVariableVisualType(
|
|
6525
6857
|
definition.name
|
|
@@ -6532,8 +6864,8 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6532
6864
|
const expanded = expandable && isPathExpanded(definition.name);
|
|
6533
6865
|
const isLast = idx === filteredAllowedVariables.length - 1;
|
|
6534
6866
|
const rowCls = `ls-variable-picker__row${isLast && !expanded ? " ls-variable-picker__row--no-border" : ""}`;
|
|
6535
|
-
return /* @__PURE__ */
|
|
6536
|
-
/* @__PURE__ */
|
|
6867
|
+
return /* @__PURE__ */ jsxs6(Fragment4, { children: [
|
|
6868
|
+
/* @__PURE__ */ jsxs6(
|
|
6537
6869
|
"div",
|
|
6538
6870
|
{
|
|
6539
6871
|
className: rowCls,
|
|
@@ -6543,12 +6875,12 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6543
6875
|
else insertVariable(definition.name);
|
|
6544
6876
|
},
|
|
6545
6877
|
children: [
|
|
6546
|
-
/* @__PURE__ */
|
|
6878
|
+
/* @__PURE__ */ jsxs6("div", { className: "ls-variable-picker__token-cell", children: [
|
|
6547
6879
|
expandable ? renderExpandToggle(definition.name, expanded) : renderExpandSpacer(),
|
|
6548
6880
|
renderVariableToken(definition.name, variableType, true)
|
|
6549
6881
|
] }),
|
|
6550
|
-
/* @__PURE__ */
|
|
6551
|
-
/* @__PURE__ */
|
|
6882
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__description", children: getAllowedVariableDescription(definition.name) }),
|
|
6883
|
+
/* @__PURE__ */ jsx14(
|
|
6552
6884
|
"div",
|
|
6553
6885
|
{
|
|
6554
6886
|
className: "ls-variable-picker__value",
|
|
@@ -6569,11 +6901,12 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6569
6901
|
variable.value
|
|
6570
6902
|
);
|
|
6571
6903
|
const rootToken = variable.example ?? variable.name;
|
|
6904
|
+
const examples = variableExamples[variable.name] ?? [];
|
|
6572
6905
|
const tree = systemVariableValueTrees.get(variable.name);
|
|
6573
|
-
const expandable = !!tree && tree.length > 0;
|
|
6906
|
+
const expandable = examples.length > 0 || !!tree && tree.length > 0;
|
|
6574
6907
|
const expanded = expandable && isPathExpanded(rootToken);
|
|
6575
|
-
return /* @__PURE__ */
|
|
6576
|
-
/* @__PURE__ */
|
|
6908
|
+
return /* @__PURE__ */ jsxs6(Fragment4, { children: [
|
|
6909
|
+
/* @__PURE__ */ jsxs6(
|
|
6577
6910
|
"div",
|
|
6578
6911
|
{
|
|
6579
6912
|
className: "ls-variable-picker__row",
|
|
@@ -6582,21 +6915,21 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6582
6915
|
else insertVariable(rootToken);
|
|
6583
6916
|
},
|
|
6584
6917
|
children: [
|
|
6585
|
-
/* @__PURE__ */
|
|
6918
|
+
/* @__PURE__ */ jsxs6("div", { className: "ls-variable-picker__token-cell", children: [
|
|
6586
6919
|
expandable ? renderExpandToggle(rootToken, expanded) : renderExpandSpacer(),
|
|
6587
6920
|
renderVariableToken(variable.name, variableType)
|
|
6588
6921
|
] }),
|
|
6589
|
-
/* @__PURE__ */
|
|
6590
|
-
/* @__PURE__ */
|
|
6922
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__description", children: getSystemVariableDescription(variable) }),
|
|
6923
|
+
/* @__PURE__ */ jsx14("div", { className: "ls-variable-picker__value", title: fullValue, children: renderVariableValueInput(displayValue, fullValue) })
|
|
6591
6924
|
]
|
|
6592
6925
|
}
|
|
6593
6926
|
),
|
|
6594
|
-
expanded && tree && renderValueChildRows(rootToken, tree)
|
|
6927
|
+
expanded && (examples.length > 0 ? renderExampleChildRows(variable, examples) : tree && renderValueChildRows(rootToken, tree))
|
|
6595
6928
|
] }, variable.name);
|
|
6596
6929
|
})
|
|
6597
6930
|
] })
|
|
6598
6931
|
] }) : null;
|
|
6599
|
-
const textField = (params = {}) => /* @__PURE__ */
|
|
6932
|
+
const textField = (params = {}) => /* @__PURE__ */ jsx14(
|
|
6600
6933
|
VariableInputTextField,
|
|
6601
6934
|
{
|
|
6602
6935
|
t,
|
|
@@ -6619,11 +6952,12 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6619
6952
|
inputProps,
|
|
6620
6953
|
allowedVariables,
|
|
6621
6954
|
showVariableIcon: !hideVariables && (!isAutoComplete || allowedVariableDefinitions.length > 0),
|
|
6622
|
-
|
|
6955
|
+
currentValue: currentVariableValue,
|
|
6956
|
+
ref: mergedInputRef
|
|
6623
6957
|
}
|
|
6624
6958
|
);
|
|
6625
|
-
return /* @__PURE__ */
|
|
6626
|
-
/* @__PURE__ */
|
|
6959
|
+
return /* @__PURE__ */ jsxs6(Fragment5, { children: [
|
|
6960
|
+
/* @__PURE__ */ jsx14(
|
|
6627
6961
|
Popover,
|
|
6628
6962
|
{
|
|
6629
6963
|
anchorEl: containerRef.current,
|
|
@@ -6649,7 +6983,7 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6649
6983
|
children: pickerBody
|
|
6650
6984
|
}
|
|
6651
6985
|
),
|
|
6652
|
-
isAutoComplete ? /* @__PURE__ */
|
|
6986
|
+
isAutoComplete ? /* @__PURE__ */ jsx14(
|
|
6653
6987
|
Autocomplete2,
|
|
6654
6988
|
{
|
|
6655
6989
|
disableClearable: true,
|
|
@@ -6745,7 +7079,17 @@ var LSVariableInputField = forwardRef7((props, ref) => {
|
|
|
6745
7079
|
onClose: onPopupClose,
|
|
6746
7080
|
renderInput: (params) => textField(params)
|
|
6747
7081
|
}
|
|
6748
|
-
) : textField()
|
|
7082
|
+
) : textField(),
|
|
7083
|
+
!hideVariables && typeof value === "string" ? /* @__PURE__ */ jsx14(
|
|
7084
|
+
VariableHighlightOverlay,
|
|
7085
|
+
{
|
|
7086
|
+
inputEl,
|
|
7087
|
+
value,
|
|
7088
|
+
multiline,
|
|
7089
|
+
classify: getInputVariableVisualType,
|
|
7090
|
+
describe: getAllowedVariableDescription
|
|
7091
|
+
}
|
|
7092
|
+
) : null
|
|
6749
7093
|
] });
|
|
6750
7094
|
});
|
|
6751
7095
|
LSVariableInputField.displayName = "LSVariableInputField";
|
|
@@ -6769,15 +7113,16 @@ var VariableInputTextField = forwardRef7(
|
|
|
6769
7113
|
clickedVariableIcon,
|
|
6770
7114
|
params = {},
|
|
6771
7115
|
containerRef,
|
|
6772
|
-
showVariableIcon
|
|
7116
|
+
showVariableIcon,
|
|
7117
|
+
currentValue
|
|
6773
7118
|
}, ref) => {
|
|
6774
7119
|
const inputPropsSlotInput = inputProps?.slotProps?.input ?? {};
|
|
6775
7120
|
const paramsSlotInput = params?.slotProps?.input ?? {};
|
|
6776
7121
|
const explicitStartAdornment = inputProps?.startAdornment;
|
|
6777
|
-
const resolvedExplicitStartAdornment = explicitStartAdornment ? /* @__PURE__ */
|
|
7122
|
+
const resolvedExplicitStartAdornment = explicitStartAdornment ? /* @__PURE__ */ jsx14(InputAdornment2, { position: "start", children: explicitStartAdornment }) : void 0;
|
|
6778
7123
|
const startAdornment = paramsSlotInput.startAdornment ?? inputPropsSlotInput.startAdornment ?? resolvedExplicitStartAdornment;
|
|
6779
7124
|
const endAdornment = paramsSlotInput.endAdornment ?? inputPropsSlotInput.endAdornment;
|
|
6780
|
-
return /* @__PURE__ */
|
|
7125
|
+
return /* @__PURE__ */ jsx14(
|
|
6781
7126
|
LSTextField,
|
|
6782
7127
|
{
|
|
6783
7128
|
id,
|
|
@@ -6805,9 +7150,25 @@ var VariableInputTextField = forwardRef7(
|
|
|
6805
7150
|
...inputPropsSlotInput,
|
|
6806
7151
|
...paramsSlotInput,
|
|
6807
7152
|
startAdornment,
|
|
6808
|
-
endAdornment: /* @__PURE__ */
|
|
7153
|
+
endAdornment: /* @__PURE__ */ jsxs6(Fragment5, { children: [
|
|
6809
7154
|
endAdornment ?? null,
|
|
6810
|
-
|
|
7155
|
+
currentValue ? /* @__PURE__ */ jsx14(Tooltip2, { title: currentValue.fullValue, children: /* @__PURE__ */ jsx14(
|
|
7156
|
+
InputAdornment2,
|
|
7157
|
+
{
|
|
7158
|
+
position: "end",
|
|
7159
|
+
className: "ls-variable-input-current-value",
|
|
7160
|
+
style: {
|
|
7161
|
+
maxWidth: 120,
|
|
7162
|
+
overflow: "hidden",
|
|
7163
|
+
textOverflow: "ellipsis",
|
|
7164
|
+
whiteSpace: "nowrap",
|
|
7165
|
+
opacity: 0.6,
|
|
7166
|
+
fontSize: "0.75em"
|
|
7167
|
+
},
|
|
7168
|
+
children: currentValue.displayValue
|
|
7169
|
+
}
|
|
7170
|
+
) }) : null,
|
|
7171
|
+
showVariableIcon ? /* @__PURE__ */ jsx14(Tooltip2, { title: t("chatbot.allowed-variables", "Allowed Variables"), children: /* @__PURE__ */ jsx14(
|
|
6811
7172
|
InputAdornment2,
|
|
6812
7173
|
{
|
|
6813
7174
|
position: "end",
|
|
@@ -6828,7 +7189,7 @@ var VariableInputTextField = forwardRef7(
|
|
|
6828
7189
|
VariableInputTextField.displayName = "VariableInputTextField";
|
|
6829
7190
|
|
|
6830
7191
|
// src/components/ChatMessageItem/ChatMessageItem.tsx
|
|
6831
|
-
import { useState as
|
|
7192
|
+
import { useState as useState6 } from "react";
|
|
6832
7193
|
import ListItemIcon from "@mui/material/ListItemIcon";
|
|
6833
7194
|
import ListItemText from "@mui/material/ListItemText";
|
|
6834
7195
|
import Menu from "@mui/material/Menu";
|
|
@@ -6864,7 +7225,7 @@ var twitter_default = 'data:image/svg+xml,<svg width="400" height="400" viewBox=
|
|
|
6864
7225
|
var youtube_default = 'data:image/svg+xml,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<path d="M12.5612 5H12.6669C13.643 5.00347 18.5892 5.03817 19.9229 5.38749C20.3261 5.4941 20.6935 5.7019 20.9884 5.99013C21.2833 6.27836 21.4953 6.63692 21.6033 7.02998C21.7233 7.46952 21.8076 8.05133 21.8646 8.65166L21.8765 8.77195L21.9026 9.0727L21.9121 9.19298C21.9893 10.2502 21.9988 11.2403 22 11.4566V11.5434C21.9988 11.7678 21.9882 12.825 21.9026 13.9262L21.8931 14.0476L21.8825 14.1679C21.823 14.8295 21.7352 15.4865 21.6033 15.97C21.4957 16.3632 21.2837 16.722 20.9888 17.0102C20.6939 17.2985 20.3262 17.5062 19.9229 17.6125C18.5454 17.9734 13.3093 17.9988 12.5837 18H12.4151C12.0481 18 10.5304 17.9931 8.93906 17.9399L8.73717 17.9329L8.63385 17.9283L8.43078 17.9202L8.2277 17.9121C6.90949 17.8554 5.65423 17.764 5.07589 17.6114C4.67269 17.5052 4.30522 17.2976 4.0103 17.0096C3.71538 16.7215 3.50335 16.363 3.39546 15.97C3.26364 15.4877 3.17576 14.8295 3.11638 14.1679L3.10688 14.0464L3.09738 13.9262C3.03877 13.1424 3.00629 12.357 3 11.5711V11.43C3.00238 11.1813 3.01188 10.3219 3.076 9.37343L3.08432 9.25429L3.08788 9.19415L3.09738 9.07385L3.12351 8.77311L3.13538 8.65281C3.19239 8.0525 3.27671 7.46952 3.39665 7.03115C3.50435 6.63792 3.7163 6.27919 4.01124 5.99091C4.30617 5.70263 4.67374 5.49494 5.07707 5.38865C5.65541 5.23828 6.91069 5.14574 8.22889 5.08791L8.43078 5.07981L8.63503 5.07287L8.73717 5.0694L8.94024 5.0613C10.0705 5.02549 11.2011 5.00544 12.332 5.00116H12.5612V5ZM10.6005 8.71297V14.2859L15.5372 11.5006L10.6005 8.71297Z" fill="%23FF0000"/>%0A</svg>%0A';
|
|
6865
7226
|
|
|
6866
7227
|
// src/components/PlatformIcon/PlatformIcon.tsx
|
|
6867
|
-
import { jsx as
|
|
7228
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
6868
7229
|
var PLATFORM_ICON_URLS = {
|
|
6869
7230
|
twitch: twitch_default,
|
|
6870
7231
|
youtube: youtube_default,
|
|
@@ -6889,28 +7250,28 @@ function PlatformIcon({ platform, fallback = true, size, className, title, style
|
|
|
6889
7250
|
return null;
|
|
6890
7251
|
}
|
|
6891
7252
|
const sizeStyle = size !== void 0 ? { height: typeof size === "number" ? `${size}px` : size } : void 0;
|
|
6892
|
-
return /* @__PURE__ */
|
|
7253
|
+
return /* @__PURE__ */ jsx15("img", { className: classNames6("ls-platform-icon", className), src: url, alt: "", title: title ?? (platform ? String(platform) : void 0), style: { ...sizeStyle, ...style } });
|
|
6893
7254
|
}
|
|
6894
7255
|
PlatformIcon.displayName = "PlatformIcon";
|
|
6895
7256
|
|
|
6896
7257
|
// src/components/ChatMessageItem/modActionIcons.tsx
|
|
6897
|
-
import { jsx as
|
|
6898
|
-
var DeleteIcon = () => /* @__PURE__ */
|
|
7258
|
+
import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
7259
|
+
var DeleteIcon = () => /* @__PURE__ */ jsx16("svg", { width: "15", height: "15", viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx16(
|
|
6899
7260
|
"path",
|
|
6900
7261
|
{
|
|
6901
7262
|
d: "M14.375 2.7H11.875V1.2C11.875 0.538125 11.3145 0 10.625 0H4.375C3.68555 0 3.125 0.538125 3.125 1.2V2.7H0.625C0.279297 2.7 0 2.96813 0 3.3V3.9C0 3.9825 0.0703125 4.05 0.15625 4.05H1.33594L1.81836 13.8563C1.84961 14.4956 2.40039 15 3.06641 15H11.9336C12.6016 15 13.1504 14.4975 13.1816 13.8563L13.6641 4.05H14.8438C14.9297 4.05 15 3.9825 15 3.9V3.3C15 2.96813 14.7207 2.7 14.375 2.7ZM10.4688 2.7H4.53125V1.35H10.4688V2.7Z",
|
|
6902
7263
|
fill: "currentColor"
|
|
6903
7264
|
}
|
|
6904
7265
|
) });
|
|
6905
|
-
var CopyIcon = () => /* @__PURE__ */
|
|
6906
|
-
/* @__PURE__ */
|
|
7266
|
+
var CopyIcon = () => /* @__PURE__ */ jsxs7("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
7267
|
+
/* @__PURE__ */ jsx16(
|
|
6907
7268
|
"path",
|
|
6908
7269
|
{
|
|
6909
7270
|
d: "M11.3569 12.0002H2.78544C2.61494 12.0002 2.45143 11.9325 2.33087 11.8119C2.21031 11.6914 2.14258 11.5278 2.14258 11.3574V2.57164C2.14258 2.45797 2.18773 2.34896 2.2681 2.26859C2.34848 2.18822 2.45749 2.14307 2.57115 2.14307H11.3569C11.5274 2.14307 11.6909 2.2108 11.8114 2.33135C11.932 2.45191 11.9997 2.61543 11.9997 2.78592V11.3574C11.9997 11.5278 11.932 11.6914 11.8114 11.8119C11.6909 11.9325 11.5274 12.0002 11.3569 12.0002Z",
|
|
6910
7271
|
fill: "currentColor"
|
|
6911
7272
|
}
|
|
6912
7273
|
),
|
|
6913
|
-
/* @__PURE__ */
|
|
7274
|
+
/* @__PURE__ */ jsx16(
|
|
6914
7275
|
"path",
|
|
6915
7276
|
{
|
|
6916
7277
|
d: "M2.14286 1.28571H9.85714V0.642857C9.85714 0.472361 9.78941 0.308848 9.66885 0.188289C9.54829 0.0677294 9.38478 0 9.21428 0H0.75C0.551088 0 0.360322 0.0790177 0.21967 0.21967C0.0790177 0.360322 0 0.551088 0 0.75V9.21428C0 9.38478 0.0677294 9.54829 0.188289 9.66885C0.308848 9.78941 0.472361 9.85714 0.642857 9.85714H1.28571V2.14286C1.28571 1.91553 1.37602 1.69751 1.53677 1.53677C1.69751 1.37602 1.91553 1.28571 2.14286 1.28571Z",
|
|
@@ -6918,18 +7279,18 @@ var CopyIcon = () => /* @__PURE__ */ jsxs6("svg", { width: "12", height: "12", v
|
|
|
6918
7279
|
}
|
|
6919
7280
|
)
|
|
6920
7281
|
] });
|
|
6921
|
-
var PinOnIcon = () => /* @__PURE__ */
|
|
6922
|
-
var PinOffIcon = () => /* @__PURE__ */
|
|
7282
|
+
var PinOnIcon = () => /* @__PURE__ */ jsx16("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx16("path", { d: "M10.6667 7.99992V2.66659H11.3333V1.33325H4.66667V2.66659H5.33333V7.99992L4 9.33325V10.6666H7.46667V14.6666H8.53333V10.6666H12V9.33325L10.6667 7.99992Z", fill: "currentColor" }) });
|
|
7283
|
+
var PinOffIcon = () => /* @__PURE__ */ jsx16("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx16(
|
|
6923
7284
|
"path",
|
|
6924
7285
|
{
|
|
6925
7286
|
d: "M10.6667 7.99992V2.66659H11.3333V1.33325H4.66667V2.66659H5.33333V7.99992L4 9.33325V10.6666H7.46667V14.6666H8.53333V10.6666H12V9.33325L10.6667 7.99992ZM5.86667 9.33325L6.66667 8.53325V2.66659H9.33333V8.53325L10.1333 9.33325H5.86667Z",
|
|
6926
7287
|
fill: "currentColor"
|
|
6927
7288
|
}
|
|
6928
7289
|
) });
|
|
6929
|
-
var TranslateIcon = () => /* @__PURE__ */
|
|
6930
|
-
/* @__PURE__ */
|
|
6931
|
-
/* @__PURE__ */
|
|
6932
|
-
/* @__PURE__ */
|
|
7290
|
+
var TranslateIcon = () => /* @__PURE__ */ jsxs7("svg", { width: "16", height: "16", viewBox: "0 0 107 107", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
7291
|
+
/* @__PURE__ */ jsxs7("g", { clipPath: "url(#ls-chat-translate-clip)", children: [
|
|
7292
|
+
/* @__PURE__ */ jsx16("path", { d: "M34.9975 45.927L32.605 53H26.5L36.741 25.5H43.803L54 53H47.5815L45.189 45.927H34.9975ZM43.9845 41.879L40.25 30.758H39.9805L36.246 41.879H43.9845Z", fill: "currentColor" }),
|
|
7293
|
+
/* @__PURE__ */ jsx16(
|
|
6933
7294
|
"path",
|
|
6934
7295
|
{
|
|
6935
7296
|
d: "M10 20C10 17.0826 11.1589 14.2847 13.2218 12.2218C15.2847 10.1589 18.0826 9 21 9H59.5C62.4174 9 65.2153 10.1589 67.2782 12.2218C69.3411 14.2847 70.5 17.0826 70.5 20V36.5H87C89.9174 36.5 92.7153 37.6589 94.7782 39.7218C96.8411 41.7847 98 44.5826 98 47.5V86C98 88.9174 96.8411 91.7153 94.7782 93.7782C92.7153 95.8411 89.9174 97 87 97H48.5C45.5826 97 42.7847 95.8411 40.7218 93.7782C38.6589 91.7153 37.5 88.9174 37.5 86V69.5H21C18.0826 69.5 15.2847 68.3411 13.2218 66.2782C11.1589 64.2153 10 61.4174 10 58.5V20ZM21 14.5C19.5413 14.5 18.1424 15.0795 17.1109 16.1109C16.0795 17.1424 15.5 18.5413 15.5 20V58.5C15.5 59.9587 16.0795 61.3576 17.1109 62.3891C18.1424 63.4205 19.5413 64 21 64H59.5C60.9587 64 62.3576 63.4205 63.3891 62.3891C64.4205 61.3576 65 59.9587 65 58.5V20C65 18.5413 64.4205 17.1424 63.3891 16.1109C62.3576 15.0795 60.9587 14.5 59.5 14.5H21ZM60.259 69.4725C61.3187 71.1262 62.4737 72.6772 63.724 74.1255C59.61 77.288 54.5225 79.631 48.5 81.2315C49.479 82.425 50.9805 84.724 51.5525 86C57.74 84.0255 62.9925 81.358 67.4255 77.783C71.699 81.4405 76.99 84.1905 83.5405 85.879C84.272 84.482 85.8175 82.1775 87 80.984C80.8125 79.5925 75.6865 77.167 71.49 73.922C75.2355 69.8135 78.211 64.8415 80.4055 58.7585H87V53H70.5V58.7585H74.7075C72.9585 63.4005 70.6375 67.2615 67.7115 70.4735C66.9028 69.613 66.1409 68.7097 65.429 67.7675C63.8757 68.76 62.098 69.3463 60.259 69.4725Z",
|
|
@@ -6937,17 +7298,17 @@ var TranslateIcon = () => /* @__PURE__ */ jsxs6("svg", { width: "16", height: "1
|
|
|
6937
7298
|
}
|
|
6938
7299
|
)
|
|
6939
7300
|
] }),
|
|
6940
|
-
/* @__PURE__ */
|
|
7301
|
+
/* @__PURE__ */ jsx16("defs", { children: /* @__PURE__ */ jsx16("clipPath", { id: "ls-chat-translate-clip", children: /* @__PURE__ */ jsx16("rect", { width: "88", height: "88", fill: "#fff", transform: "translate(10 9)" }) }) })
|
|
6941
7302
|
] });
|
|
6942
|
-
var BanUserIcon = () => /* @__PURE__ */
|
|
6943
|
-
/* @__PURE__ */
|
|
7303
|
+
var BanUserIcon = () => /* @__PURE__ */ jsxs7("svg", { width: "16", height: "16", viewBox: "0 0 107 107", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
7304
|
+
/* @__PURE__ */ jsx16(
|
|
6944
7305
|
"path",
|
|
6945
7306
|
{
|
|
6946
7307
|
d: "M71.333 62.417C72.1697 62.417 73.0017 62.465 73.8252 62.5576C65.2189 65.3659 59 73.4561 59 83C59 88.8767 61.3585 94.202 65.1797 98.083H13.375V84.708C13.3751 78.7961 15.724 73.1267 19.9043 68.9463C24.0848 64.7658 29.7549 62.417 35.667 62.417H71.333ZM53.5 8.91699C60.0033 8.91699 66.2403 11.5001 70.8389 16.0986C75.4374 20.6972 78.0205 26.9342 78.0205 33.4375C78.0205 39.9408 75.4374 46.1778 70.8389 50.7764C66.2403 55.3749 60.0033 57.958 53.5 57.958C46.9967 57.958 40.7597 55.3749 36.1611 50.7764C31.5626 46.1778 28.9795 39.9408 28.9795 33.4375C28.9795 26.9342 31.5626 20.6972 36.1611 16.0986C40.7597 11.5001 46.9967 8.91699 53.5 8.91699Z",
|
|
6947
7308
|
fill: "currentColor"
|
|
6948
7309
|
}
|
|
6949
7310
|
),
|
|
6950
|
-
/* @__PURE__ */
|
|
7311
|
+
/* @__PURE__ */ jsx16(
|
|
6951
7312
|
"path",
|
|
6952
7313
|
{
|
|
6953
7314
|
d: "M72.4414 77.9153C71.0064 79.9384 70.3336 82.4041 70.5422 84.8757C70.7508 87.3473 71.8274 89.6654 73.5814 91.4193C75.3353 93.1732 77.6533 94.2498 80.1249 94.4584C82.5965 94.6671 85.0622 93.9943 87.0853 92.5592L72.4414 77.9153ZM74.9159 75.4426L89.5598 90.0865C90.9949 88.0634 91.6677 85.5977 91.4591 83.126C91.2504 80.6544 90.1738 78.3364 88.4199 76.5825C86.666 74.8286 84.348 73.752 81.8764 73.5433C79.4047 73.3347 76.939 74.0075 74.9159 75.4426ZM71.101 93.9014C68.4752 91.2759 66.9999 87.7148 66.9998 84.0015C66.9996 80.2882 68.4745 76.727 71.1001 74.1012C73.7256 71.4754 77.2868 70.0002 81 70C84.7133 69.9998 88.2745 71.4748 90.9003 74.1003C93.5259 76.7259 95.0009 80.2869 95.0009 84C95.0009 87.7131 93.5259 91.2741 90.9003 93.8997C88.2748 96.5252 84.7137 98.0003 81.0006 98.0003C77.2875 98.0003 73.7265 96.5252 71.101 93.8997V93.9014Z",
|
|
@@ -6955,15 +7316,15 @@ var BanUserIcon = () => /* @__PURE__ */ jsxs6("svg", { width: "16", height: "16"
|
|
|
6955
7316
|
}
|
|
6956
7317
|
)
|
|
6957
7318
|
] });
|
|
6958
|
-
var TimeoutUserIcon = () => /* @__PURE__ */
|
|
6959
|
-
/* @__PURE__ */
|
|
7319
|
+
var TimeoutUserIcon = () => /* @__PURE__ */ jsxs7("svg", { width: "16", height: "16", viewBox: "0 0 107 108", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
7320
|
+
/* @__PURE__ */ jsx16(
|
|
6960
7321
|
"path",
|
|
6961
7322
|
{
|
|
6962
7323
|
d: "M71.333 62.917C72.1697 62.917 73.0017 62.965 73.8252 63.0576C65.2189 65.8659 59 73.9561 59 83.5C59 89.3767 61.3585 94.702 65.1797 98.583H13.375V85.208C13.3751 79.2961 15.724 73.6267 19.9043 69.4463C24.0848 65.2658 29.7549 62.917 35.667 62.917H71.333ZM53.5 9.41699C60.0033 9.41699 66.2403 12.0001 70.8389 16.5986C75.4374 21.1972 78.0205 27.4342 78.0205 33.9375C78.0205 40.4408 75.4374 46.6778 70.8389 51.2764C66.2403 55.8749 60.0033 58.458 53.5 58.458C46.9967 58.458 40.7597 55.8749 36.1611 51.2764C31.5626 46.6778 28.9795 40.4408 28.9795 33.9375C28.9795 27.4342 31.5626 21.1972 36.1611 16.5986C40.7597 12.0001 46.9967 9.41699 53.5 9.41699Z",
|
|
6963
7324
|
fill: "currentColor"
|
|
6964
7325
|
}
|
|
6965
7326
|
),
|
|
6966
|
-
/* @__PURE__ */
|
|
7327
|
+
/* @__PURE__ */ jsx16(
|
|
6967
7328
|
"path",
|
|
6968
7329
|
{
|
|
6969
7330
|
d: "M81.1936 70.3225C88.8545 70.3225 95.0646 76.5325 95.0646 84.1935C95.0646 91.8544 88.8545 98.0644 81.1936 98.0644C73.5327 98.0644 67.3226 91.8544 67.3226 84.1935C67.3226 76.5325 73.5327 70.3225 81.1936 70.3225ZM81.1936 75.8709C80.8257 75.8709 80.4729 76.017 80.2128 76.2772C79.9526 76.5373 79.8065 76.8901 79.8065 77.258V84.1935C79.8066 84.5613 79.9528 84.9141 80.2129 85.1742L84.3742 89.3354C84.6358 89.5881 84.9862 89.7279 85.3499 89.7248C85.7136 89.7216 86.0615 89.5757 86.3187 89.3185C86.5758 89.0614 86.7217 88.7135 86.7249 88.3498C86.728 87.9861 86.5882 87.6357 86.3356 87.3741L82.5807 83.6192V77.258C82.5807 76.8901 82.4346 76.5373 82.1744 76.2772C81.9143 76.017 81.5615 75.8709 81.1936 75.8709Z",
|
|
@@ -6971,22 +7332,22 @@ var TimeoutUserIcon = () => /* @__PURE__ */ jsxs6("svg", { width: "16", height:
|
|
|
6971
7332
|
}
|
|
6972
7333
|
)
|
|
6973
7334
|
] });
|
|
6974
|
-
var MenuDotsIcon = () => /* @__PURE__ */
|
|
6975
|
-
/* @__PURE__ */
|
|
7335
|
+
var MenuDotsIcon = () => /* @__PURE__ */ jsxs7("svg", { width: "16", height: "16", viewBox: "0 0 3 19", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
7336
|
+
/* @__PURE__ */ jsx16(
|
|
6976
7337
|
"path",
|
|
6977
7338
|
{
|
|
6978
7339
|
d: "M1.47273 0.727539C1.90909 0.727539 2.27273 0.854812 2.56364 1.10936C2.85455 1.373 3 1.7639 3 2.28209C3 2.80027 2.85455 3.19118 2.56364 3.45481C2.27273 3.72754 1.90909 3.8639 1.47273 3.8639C1.05455 3.8639 0.704544 3.72754 0.422727 3.45481C0.140909 3.19118 -2.265e-08 2.80027 0 2.28209C2.265e-08 1.7639 0.140909 1.373 0.422728 1.10936C0.704544 0.854812 1.05455 0.727539 1.47273 0.727539Z",
|
|
6979
7340
|
fill: "currentColor"
|
|
6980
7341
|
}
|
|
6981
7342
|
),
|
|
6982
|
-
/* @__PURE__ */
|
|
7343
|
+
/* @__PURE__ */ jsx16(
|
|
6983
7344
|
"path",
|
|
6984
7345
|
{
|
|
6985
7346
|
d: "M1.47273 7.86426C1.90909 7.86426 2.27273 7.99152 2.56364 8.2461C2.85455 8.50974 3 8.90064 3 9.4188C3 9.93702 2.85455 10.3279 2.56364 10.5916C2.27273 10.8643 1.90909 11.0006 1.47273 11.0006C1.05455 11.0006 0.704544 10.8643 0.422727 10.5916C0.140909 10.3279 -2.265e-08 9.93702 0 9.4188C2.26506e-08 8.90064 0.140909 8.50974 0.422727 8.2461C0.704544 7.99152 1.05455 7.86426 1.47273 7.86426Z",
|
|
6986
7347
|
fill: "currentColor"
|
|
6987
7348
|
}
|
|
6988
7349
|
),
|
|
6989
|
-
/* @__PURE__ */
|
|
7350
|
+
/* @__PURE__ */ jsx16(
|
|
6990
7351
|
"path",
|
|
6991
7352
|
{
|
|
6992
7353
|
d: "M1.47273 15C1.90909 15 2.27273 15.1273 2.56364 15.3818C2.85455 15.6454 3 16.0363 3 16.5545C3 17.0727 2.85455 17.4636 2.56364 17.7272C2.27273 18 1.90909 18.1363 1.47273 18.1363C1.05455 18.1363 0.704544 18 0.422727 17.7272C0.140909 17.4636 -2.26494e-08 17.0727 0 16.5545C2.26515e-08 16.0363 0.140909 15.6454 0.422727 15.3818C0.704544 15.1273 1.05455 15 1.47273 15Z",
|
|
@@ -6994,7 +7355,7 @@ var MenuDotsIcon = () => /* @__PURE__ */ jsxs6("svg", { width: "16", height: "16
|
|
|
6994
7355
|
}
|
|
6995
7356
|
)
|
|
6996
7357
|
] });
|
|
6997
|
-
var ShoutoutIcon = () => /* @__PURE__ */
|
|
7358
|
+
var ShoutoutIcon = () => /* @__PURE__ */ jsx16("svg", { width: "16", height: "16", viewBox: "0 0 100 100", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx16(
|
|
6998
7359
|
"path",
|
|
6999
7360
|
{
|
|
7000
7361
|
fillRule: "evenodd",
|
|
@@ -7003,7 +7364,7 @@ var ShoutoutIcon = () => /* @__PURE__ */ jsx15("svg", { width: "16", height: "16
|
|
|
7003
7364
|
fill: "currentColor"
|
|
7004
7365
|
}
|
|
7005
7366
|
) });
|
|
7006
|
-
var VipIcon = () => /* @__PURE__ */
|
|
7367
|
+
var VipIcon = () => /* @__PURE__ */ jsx16("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx16(
|
|
7007
7368
|
"path",
|
|
7008
7369
|
{
|
|
7009
7370
|
fillRule: "evenodd",
|
|
@@ -7012,14 +7373,14 @@ var VipIcon = () => /* @__PURE__ */ jsx15("svg", { width: "16", height: "16", vi
|
|
|
7012
7373
|
fill: "currentColor"
|
|
7013
7374
|
}
|
|
7014
7375
|
) });
|
|
7015
|
-
var RemoveVipIcon = () => /* @__PURE__ */
|
|
7376
|
+
var RemoveVipIcon = () => /* @__PURE__ */ jsx16("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx16(
|
|
7016
7377
|
"path",
|
|
7017
7378
|
{
|
|
7018
7379
|
d: "M17.9995 13C18.6561 13 19.3069 13.1296 19.9136 13.3809C20.5201 13.6321 21.0714 14.0006 21.5356 14.4648C21.9998 14.9291 22.3684 15.4804 22.6196 16.0869C22.8708 16.6934 22.9995 17.3435 22.9995 18C22.9995 18.6565 22.8708 19.3066 22.6196 19.9131C22.3684 20.5196 21.9998 21.0709 21.5356 21.5352C21.0714 21.9994 20.5201 22.3679 19.9136 22.6191C19.3069 22.8704 18.6561 23 17.9995 23C16.6736 22.9999 15.4019 22.4727 14.4644 21.5352C13.5268 20.5975 12.9995 19.326 12.9995 18C12.9995 16.674 13.5268 15.4025 14.4644 14.4648C15.4019 13.5273 16.6736 13.0001 17.9995 13ZM17.4204 3C17.7449 3.00004 18.0649 3.07933 18.3521 3.23047C18.6392 3.38169 18.8852 3.60063 19.0688 3.86816L19.1558 4.00781L22.4897 9.83984C22.6933 10.1958 22.7828 10.6063 22.7456 11.0146C22.7083 11.4229 22.5462 11.8098 22.2817 12.123L22.1675 12.2461L21.3745 13.0381C20.413 12.3829 19.2507 12 17.9995 12C14.686 12.0003 11.9995 14.6864 11.9995 18C11.9995 19.2515 12.3832 20.4134 13.0386 21.375L12.8853 21.5293C12.6676 21.7469 12.3771 21.8767 12.0698 21.8936C11.7625 21.9103 11.4593 21.8127 11.2192 21.6201L11.1167 21.5303L1.8335 12.2461C1.54369 11.9563 1.35037 11.5842 1.27881 11.1807C1.20728 10.777 1.26145 10.3611 1.43408 9.98926L1.51221 9.83887L4.84521 4.00684C5.00627 3.72505 5.23356 3.48685 5.50732 3.3125C5.78107 3.13819 6.09308 3.03263 6.4165 3.00586L6.57959 3H17.4204ZM15.2222 18.5557H20.7778V17.4443H15.2222V18.5557ZM16.0034 8.9873C15.8707 8.98848 15.7396 9.01695 15.6177 9.06934C15.4957 9.12174 15.3847 9.19748 15.2925 9.29297L11.9995 12.5859L8.70654 9.29297C8.51904 9.10565 8.26456 9 7.99951 9C7.73453 9.00013 7.47989 9.10561 7.29248 9.29297C7.10516 9.48047 7.00049 9.73495 7.00049 10C7.00049 10.265 7.10516 10.5195 7.29248 10.707L11.1157 14.5303C11.2318 14.6464 11.3703 14.7379 11.522 14.8008C11.6734 14.8635 11.8356 14.8964 11.9995 14.8965C12.1636 14.8965 12.3264 14.8636 12.478 14.8008C12.6297 14.7379 12.7682 14.6464 12.8843 14.5303L16.7065 10.707C16.802 10.6149 16.8787 10.5047 16.9312 10.3828C16.9836 10.2608 17.0111 10.1289 17.0122 9.99609C17.0133 9.86355 16.9881 9.73207 16.938 9.60938C16.8877 9.48649 16.8131 9.37416 16.7192 9.28027C16.6255 9.18657 16.5138 9.11273 16.3911 9.0625C16.2682 9.01223 16.1362 8.98615 16.0034 8.9873Z",
|
|
7019
7380
|
fill: "currentColor"
|
|
7020
7381
|
}
|
|
7021
7382
|
) });
|
|
7022
|
-
var ModeratorIcon = () => /* @__PURE__ */
|
|
7383
|
+
var ModeratorIcon = () => /* @__PURE__ */ jsx16("svg", { width: "16", height: "16", viewBox: "0 0 20 17", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx16(
|
|
7023
7384
|
"path",
|
|
7024
7385
|
{
|
|
7025
7386
|
fillRule: "evenodd",
|
|
@@ -7030,7 +7391,7 @@ var ModeratorIcon = () => /* @__PURE__ */ jsx15("svg", { width: "16", height: "1
|
|
|
7030
7391
|
) });
|
|
7031
7392
|
|
|
7032
7393
|
// src/components/ChatMessageItem/ChatMessageItem.tsx
|
|
7033
|
-
import { jsx as
|
|
7394
|
+
import { jsx as jsx17, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
7034
7395
|
var DEFAULT_MOD_ACTION_LABELS = {
|
|
7035
7396
|
delete: "Delete Message",
|
|
7036
7397
|
copy: "Copy to clipboard",
|
|
@@ -7055,7 +7416,7 @@ function ModActionButton({
|
|
|
7055
7416
|
onClick,
|
|
7056
7417
|
children
|
|
7057
7418
|
}) {
|
|
7058
|
-
return /* @__PURE__ */
|
|
7419
|
+
return /* @__PURE__ */ jsx17(Tooltip3, { title, placement, children: /* @__PURE__ */ jsx17(
|
|
7059
7420
|
"span",
|
|
7060
7421
|
{
|
|
7061
7422
|
className: classNames7("ls-chat-message__modbtn", { "ls-chat-message__modbtn--danger": danger }),
|
|
@@ -7098,11 +7459,11 @@ function ChatMessageItem({
|
|
|
7098
7459
|
onMouseEnter,
|
|
7099
7460
|
onMouseLeave
|
|
7100
7461
|
}) {
|
|
7101
|
-
const [hovered, setHovered] =
|
|
7102
|
-
const [menuPosition, setMenuPosition] =
|
|
7103
|
-
const [menuAnchorEl, setMenuAnchorEl] =
|
|
7462
|
+
const [hovered, setHovered] = useState6(false);
|
|
7463
|
+
const [menuPosition, setMenuPosition] = useState6(null);
|
|
7464
|
+
const [menuAnchorEl, setMenuAnchorEl] = useState6(null);
|
|
7104
7465
|
const name = displayname || username;
|
|
7105
|
-
const siteIcon = platformIcon ?? (platform ? /* @__PURE__ */
|
|
7466
|
+
const siteIcon = platformIcon ?? (platform ? /* @__PURE__ */ jsx17(PlatformIcon, { platform }) : null);
|
|
7106
7467
|
const has = (action) => Boolean(modActions?.includes(action));
|
|
7107
7468
|
const label = (action) => modActionLabels?.[action] ?? DEFAULT_MOD_ACTION_LABELS[action];
|
|
7108
7469
|
const vipAction = isVip ? "remove-vip" : "add-vip";
|
|
@@ -7129,7 +7490,7 @@ function ChatMessageItem({
|
|
|
7129
7490
|
setMenuPosition((prev) => prev === null ? { top: event.clientY - 4, left: event.clientX - 2 } : null);
|
|
7130
7491
|
}
|
|
7131
7492
|
};
|
|
7132
|
-
const menuItem = (action, icon) => has(action) ? /* @__PURE__ */
|
|
7493
|
+
const menuItem = (action, icon) => has(action) ? /* @__PURE__ */ jsxs8(
|
|
7133
7494
|
MenuItem2,
|
|
7134
7495
|
{
|
|
7135
7496
|
onClick: () => {
|
|
@@ -7137,31 +7498,31 @@ function ChatMessageItem({
|
|
|
7137
7498
|
closeMenu();
|
|
7138
7499
|
},
|
|
7139
7500
|
children: [
|
|
7140
|
-
/* @__PURE__ */
|
|
7141
|
-
/* @__PURE__ */
|
|
7501
|
+
/* @__PURE__ */ jsx17(ListItemIcon, { children: /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__menu-icon", children: icon }) }),
|
|
7502
|
+
/* @__PURE__ */ jsx17(ListItemText, { children: label(action) })
|
|
7142
7503
|
]
|
|
7143
7504
|
},
|
|
7144
7505
|
action
|
|
7145
7506
|
) : null;
|
|
7146
|
-
const builtInActions = hasVisibleModActions && hovered && !actions ? /* @__PURE__ */
|
|
7147
|
-
has("delete") && /* @__PURE__ */
|
|
7148
|
-
has("pin") && /* @__PURE__ */
|
|
7507
|
+
const builtInActions = hasVisibleModActions && hovered && !actions ? /* @__PURE__ */ jsxs8("span", { className: "ls-chat-message__modbar", children: [
|
|
7508
|
+
has("delete") && /* @__PURE__ */ jsx17(ModActionButton, { title: label("delete"), placement: modActionsTooltipPlacement, danger: true, onClick: () => fire("delete"), children: /* @__PURE__ */ jsx17(DeleteIcon, {}) }),
|
|
7509
|
+
has("pin") && /* @__PURE__ */ jsx17(
|
|
7149
7510
|
ModActionButton,
|
|
7150
7511
|
{
|
|
7151
7512
|
title: label(isPinned ? "unpin" : "pin"),
|
|
7152
7513
|
placement: modActionsTooltipPlacement,
|
|
7153
7514
|
onClick: () => fire(isPinned ? "unpin" : "pin"),
|
|
7154
|
-
children: isPinned ? /* @__PURE__ */
|
|
7515
|
+
children: isPinned ? /* @__PURE__ */ jsx17(PinOffIcon, {}) : /* @__PURE__ */ jsx17(PinOnIcon, {})
|
|
7155
7516
|
}
|
|
7156
7517
|
),
|
|
7157
|
-
has("copy") && /* @__PURE__ */
|
|
7158
|
-
has("translate") && /* @__PURE__ */
|
|
7159
|
-
has("ban") && !isSelf && /* @__PURE__ */
|
|
7160
|
-
has("timeout") && /* @__PURE__ */
|
|
7161
|
-
hasOverflowMenuItems && /* @__PURE__ */
|
|
7518
|
+
has("copy") && /* @__PURE__ */ jsx17(ModActionButton, { title: label("copy"), placement: modActionsTooltipPlacement, onClick: () => fire("copy"), children: /* @__PURE__ */ jsx17(CopyIcon, {}) }),
|
|
7519
|
+
has("translate") && /* @__PURE__ */ jsx17(ModActionButton, { title: label("translate"), placement: modActionsTooltipPlacement, onClick: () => fire("translate"), children: /* @__PURE__ */ jsx17(TranslateIcon, {}) }),
|
|
7520
|
+
has("ban") && !isSelf && /* @__PURE__ */ jsx17(ModActionButton, { title: label("ban"), placement: modActionsTooltipPlacement, onClick: () => fire("ban"), children: /* @__PURE__ */ jsx17(BanUserIcon, {}) }),
|
|
7521
|
+
has("timeout") && /* @__PURE__ */ jsx17(ModActionButton, { title: label("timeout"), placement: modActionsTooltipPlacement, onClick: () => fire("timeout"), children: /* @__PURE__ */ jsx17(TimeoutUserIcon, {}) }),
|
|
7522
|
+
hasOverflowMenuItems && /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__modbtn", onClick: handleMenuOpen, children: /* @__PURE__ */ jsx17(MenuDotsIcon, {}) })
|
|
7162
7523
|
] }) : null;
|
|
7163
7524
|
const actionsNode = actions ?? builtInActions;
|
|
7164
|
-
return /* @__PURE__ */
|
|
7525
|
+
return /* @__PURE__ */ jsxs8(
|
|
7165
7526
|
"div",
|
|
7166
7527
|
{
|
|
7167
7528
|
className: classNames7("ls-chat-message", className),
|
|
@@ -7180,13 +7541,13 @@ function ChatMessageItem({
|
|
|
7180
7541
|
onMouseLeave?.();
|
|
7181
7542
|
},
|
|
7182
7543
|
children: [
|
|
7183
|
-
reply ? /* @__PURE__ */
|
|
7184
|
-
showAvatar && avatarPrefix ? /* @__PURE__ */
|
|
7185
|
-
showAvatar && (avatar || fallbackAvatar) ? /* @__PURE__ */
|
|
7186
|
-
siteIcon ? /* @__PURE__ */
|
|
7187
|
-
showTimestamp && timestamp ? /* @__PURE__ */
|
|
7188
|
-
showBadges && badges ? /* @__PURE__ */
|
|
7189
|
-
onUsernameClick ? /* @__PURE__ */
|
|
7544
|
+
reply ? /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__reply", children: reply }) : null,
|
|
7545
|
+
showAvatar && avatarPrefix ? /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__avatar-prefix", children: avatarPrefix }) : null,
|
|
7546
|
+
showAvatar && (avatar || fallbackAvatar) ? /* @__PURE__ */ jsx17("img", { className: "ls-chat-message__avatar", src: avatar || fallbackAvatar, alt: "" }) : null,
|
|
7547
|
+
siteIcon ? /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__site", children: siteIcon }) : null,
|
|
7548
|
+
showTimestamp && timestamp ? /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__time", children: timestamp }) : null,
|
|
7549
|
+
showBadges && badges ? /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__badges", children: badges }) : null,
|
|
7550
|
+
onUsernameClick ? /* @__PURE__ */ jsxs8(
|
|
7190
7551
|
"button",
|
|
7191
7552
|
{
|
|
7192
7553
|
type: "button",
|
|
@@ -7201,14 +7562,14 @@ function ChatMessageItem({
|
|
|
7201
7562
|
":"
|
|
7202
7563
|
]
|
|
7203
7564
|
}
|
|
7204
|
-
) : /* @__PURE__ */
|
|
7565
|
+
) : /* @__PURE__ */ jsxs8("span", { className: "ls-chat-message__username", style: color ? { color } : void 0, children: [
|
|
7205
7566
|
name,
|
|
7206
7567
|
":"
|
|
7207
7568
|
] }),
|
|
7208
7569
|
" ",
|
|
7209
|
-
/* @__PURE__ */
|
|
7210
|
-
actionsNode ? /* @__PURE__ */
|
|
7211
|
-
onModAction && hasOverflowMenuItems ? /* @__PURE__ */
|
|
7570
|
+
/* @__PURE__ */ jsx17("span", { className: "ls-chat-message__text", children: message }),
|
|
7571
|
+
actionsNode ? /* @__PURE__ */ jsx17("span", { className: "ls-chat-message__actions", children: actionsNode }) : null,
|
|
7572
|
+
onModAction && hasOverflowMenuItems ? /* @__PURE__ */ jsxs8(
|
|
7212
7573
|
Menu,
|
|
7213
7574
|
{
|
|
7214
7575
|
open: modMenuAnchor === "element" ? menuAnchorEl !== null : menuPosition !== null,
|
|
@@ -7219,10 +7580,10 @@ function ChatMessageItem({
|
|
|
7219
7580
|
anchorOrigin: modMenuAnchor === "element" ? { vertical: "bottom", horizontal: "right" } : void 0,
|
|
7220
7581
|
transformOrigin: modMenuAnchor === "element" ? { vertical: "top", horizontal: "right" } : void 0,
|
|
7221
7582
|
children: [
|
|
7222
|
-
menuItem("shoutout", /* @__PURE__ */
|
|
7223
|
-
menuItem(vipAction, isVip ? /* @__PURE__ */
|
|
7224
|
-
menuItem(moderatorAction, /* @__PURE__ */
|
|
7225
|
-
menuItem("unban", /* @__PURE__ */
|
|
7583
|
+
menuItem("shoutout", /* @__PURE__ */ jsx17(ShoutoutIcon, {})),
|
|
7584
|
+
menuItem(vipAction, isVip ? /* @__PURE__ */ jsx17(RemoveVipIcon, {}) : /* @__PURE__ */ jsx17(VipIcon, {})),
|
|
7585
|
+
menuItem(moderatorAction, /* @__PURE__ */ jsx17(ModeratorIcon, {})),
|
|
7586
|
+
menuItem("unban", /* @__PURE__ */ jsx17(BanUserIcon, {}))
|
|
7226
7587
|
]
|
|
7227
7588
|
}
|
|
7228
7589
|
) : null
|
|
@@ -7233,16 +7594,16 @@ function ChatMessageItem({
|
|
|
7233
7594
|
ChatMessageItem.displayName = "ChatMessageItem";
|
|
7234
7595
|
|
|
7235
7596
|
// src/components/ChatboxPanel/ChatboxPanel.tsx
|
|
7236
|
-
import { useEffect as
|
|
7597
|
+
import { useEffect as useEffect6, useRef as useRef6, useState as useState8 } from "react";
|
|
7237
7598
|
import MenuItem3 from "@mui/material/MenuItem";
|
|
7238
7599
|
import classNames8 from "classnames";
|
|
7239
7600
|
|
|
7240
7601
|
// src/components/ChatboxPanel/useAutoScroll.ts
|
|
7241
|
-
import { useCallback as useCallback3, useRef as
|
|
7602
|
+
import { useCallback as useCallback3, useRef as useRef5, useState as useState7 } from "react";
|
|
7242
7603
|
var useAutoScroll = (threshold = 24, options) => {
|
|
7243
|
-
const containerRef =
|
|
7244
|
-
const shouldAutoScrollRef =
|
|
7245
|
-
const [isAtBottom, setIsAtBottom] =
|
|
7604
|
+
const containerRef = useRef5(null);
|
|
7605
|
+
const shouldAutoScrollRef = useRef5(true);
|
|
7606
|
+
const [isAtBottom, setIsAtBottom] = useState7(true);
|
|
7246
7607
|
const reverse = options?.reverse ?? false;
|
|
7247
7608
|
const isNearBottom = useCallback3(() => {
|
|
7248
7609
|
if (!containerRef.current) return true;
|
|
@@ -7278,7 +7639,7 @@ var useAutoScroll = (threshold = 24, options) => {
|
|
|
7278
7639
|
};
|
|
7279
7640
|
|
|
7280
7641
|
// src/components/ChatboxPanel/ChatboxPanel.tsx
|
|
7281
|
-
import { jsx as
|
|
7642
|
+
import { jsx as jsx18, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
7282
7643
|
function ChatboxPanel({
|
|
7283
7644
|
children,
|
|
7284
7645
|
messageCount,
|
|
@@ -7310,24 +7671,24 @@ function ChatboxPanel({
|
|
|
7310
7671
|
className
|
|
7311
7672
|
}) {
|
|
7312
7673
|
const { containerRef, isAtBottom, onScroll, scrollToBottom } = useAutoScroll(24, { reverse });
|
|
7313
|
-
const [unreadCount, setUnreadCount] =
|
|
7314
|
-
const [internalValue, setInternalValue] =
|
|
7315
|
-
const prevCountRef =
|
|
7316
|
-
const prevLastKeyRef =
|
|
7317
|
-
const hasInitializedRef =
|
|
7674
|
+
const [unreadCount, setUnreadCount] = useState8(0);
|
|
7675
|
+
const [internalValue, setInternalValue] = useState8("");
|
|
7676
|
+
const prevCountRef = useRef6(0);
|
|
7677
|
+
const prevLastKeyRef = useRef6(null);
|
|
7678
|
+
const hasInitializedRef = useRef6(false);
|
|
7318
7679
|
const lineHeight = Math.round(fontSize * 1.35);
|
|
7319
7680
|
const isControlled = sendValue !== void 0 || onSendValueChange !== void 0;
|
|
7320
7681
|
const inputValue = (isControlled ? sendValue : internalValue) ?? "";
|
|
7321
|
-
|
|
7682
|
+
useEffect6(() => {
|
|
7322
7683
|
scrollToBottom(true);
|
|
7323
7684
|
}, [scrollToBottom]);
|
|
7324
|
-
|
|
7685
|
+
useEffect6(() => {
|
|
7325
7686
|
scrollToBottom();
|
|
7326
7687
|
}, [messageCount, lastMessageKey, scrollToBottom]);
|
|
7327
|
-
|
|
7688
|
+
useEffect6(() => {
|
|
7328
7689
|
scrollToBottom(true);
|
|
7329
7690
|
}, [reverse, scrollToBottom]);
|
|
7330
|
-
|
|
7691
|
+
useEffect6(() => {
|
|
7331
7692
|
const prevCount = prevCountRef.current;
|
|
7332
7693
|
const prevLastKey = prevLastKeyRef.current;
|
|
7333
7694
|
const nextLastKey = lastMessageKey === void 0 || lastMessageKey === null ? null : String(lastMessageKey);
|
|
@@ -7351,7 +7712,7 @@ function ChatboxPanel({
|
|
|
7351
7712
|
setUnreadCount((count) => count + delta);
|
|
7352
7713
|
}
|
|
7353
7714
|
}, [messageCount, lastMessageKey, isAtBottom]);
|
|
7354
|
-
|
|
7715
|
+
useEffect6(() => {
|
|
7355
7716
|
if (isAtBottom && unreadCount !== 0) {
|
|
7356
7717
|
setUnreadCount(0);
|
|
7357
7718
|
}
|
|
@@ -7371,9 +7732,9 @@ function ChatboxPanel({
|
|
|
7371
7732
|
setInternalValue("");
|
|
7372
7733
|
}
|
|
7373
7734
|
};
|
|
7374
|
-
return /* @__PURE__ */
|
|
7375
|
-
/* @__PURE__ */
|
|
7376
|
-
/* @__PURE__ */
|
|
7735
|
+
return /* @__PURE__ */ jsxs9("div", { className: classNames8("ls-chatbox", className), id, children: [
|
|
7736
|
+
/* @__PURE__ */ jsxs9("div", { className: "ls-chatbox__viewport", children: [
|
|
7737
|
+
/* @__PURE__ */ jsx18(
|
|
7377
7738
|
"div",
|
|
7378
7739
|
{
|
|
7379
7740
|
className: "ls-chatbox__list",
|
|
@@ -7388,7 +7749,7 @@ function ChatboxPanel({
|
|
|
7388
7749
|
children
|
|
7389
7750
|
}
|
|
7390
7751
|
),
|
|
7391
|
-
!isAtBottom && /* @__PURE__ */
|
|
7752
|
+
!isAtBottom && /* @__PURE__ */ jsxs9(
|
|
7392
7753
|
"button",
|
|
7393
7754
|
{
|
|
7394
7755
|
type: "button",
|
|
@@ -7398,7 +7759,7 @@ function ChatboxPanel({
|
|
|
7398
7759
|
setUnreadCount(0);
|
|
7399
7760
|
},
|
|
7400
7761
|
children: [
|
|
7401
|
-
/* @__PURE__ */
|
|
7762
|
+
/* @__PURE__ */ jsxs9(
|
|
7402
7763
|
"svg",
|
|
7403
7764
|
{
|
|
7404
7765
|
className: classNames8("ls-chatbox__jump-arrow", { "ls-chatbox__jump-arrow--up": reverse }),
|
|
@@ -7411,19 +7772,19 @@ function ChatboxPanel({
|
|
|
7411
7772
|
strokeLinecap: "round",
|
|
7412
7773
|
strokeLinejoin: "round",
|
|
7413
7774
|
children: [
|
|
7414
|
-
/* @__PURE__ */
|
|
7415
|
-
/* @__PURE__ */
|
|
7775
|
+
/* @__PURE__ */ jsx18("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
|
|
7776
|
+
/* @__PURE__ */ jsx18("polyline", { points: "19 12 12 19 5 12" })
|
|
7416
7777
|
]
|
|
7417
7778
|
}
|
|
7418
7779
|
),
|
|
7419
7780
|
jumpToLatestLabel,
|
|
7420
|
-
unreadCount > 0 && /* @__PURE__ */
|
|
7781
|
+
unreadCount > 0 && /* @__PURE__ */ jsx18("span", { className: "ls-chatbox__jump-badge", children: unreadCount > 99 ? "99+" : unreadCount })
|
|
7421
7782
|
]
|
|
7422
7783
|
}
|
|
7423
7784
|
)
|
|
7424
7785
|
] }),
|
|
7425
|
-
showSendBar && onSend ? /* @__PURE__ */
|
|
7426
|
-
/* @__PURE__ */
|
|
7786
|
+
showSendBar && onSend ? /* @__PURE__ */ jsxs9("div", { className: "ls-chatbox__sendbar", children: [
|
|
7787
|
+
/* @__PURE__ */ jsx18(
|
|
7427
7788
|
LSInput,
|
|
7428
7789
|
{
|
|
7429
7790
|
className: "ls-chatbox__input",
|
|
@@ -7436,7 +7797,7 @@ function ChatboxPanel({
|
|
|
7436
7797
|
}
|
|
7437
7798
|
}
|
|
7438
7799
|
),
|
|
7439
|
-
hasPlatformSelect ? /* @__PURE__ */
|
|
7800
|
+
hasPlatformSelect ? /* @__PURE__ */ jsxs9(
|
|
7440
7801
|
LSSelect,
|
|
7441
7802
|
{
|
|
7442
7803
|
className: "ls-chatbox__platform",
|
|
@@ -7445,15 +7806,15 @@ function ChatboxPanel({
|
|
|
7445
7806
|
displayEmpty: true,
|
|
7446
7807
|
onChange: (e) => onPlatformChange?.(String(e.target.value)),
|
|
7447
7808
|
children: [
|
|
7448
|
-
allPlatformsLabel != null && /* @__PURE__ */
|
|
7449
|
-
platforms?.map((option) => /* @__PURE__ */
|
|
7450
|
-
/* @__PURE__ */
|
|
7809
|
+
allPlatformsLabel != null && /* @__PURE__ */ jsx18(MenuItem3, { value: "", children: allPlatformsLabel }),
|
|
7810
|
+
platforms?.map((option) => /* @__PURE__ */ jsx18(MenuItem3, { value: option.value, children: /* @__PURE__ */ jsxs9("span", { className: "ls-chatbox__platform-option", children: [
|
|
7811
|
+
/* @__PURE__ */ jsx18(PlatformIcon, { platform: option.value, fallback: false }),
|
|
7451
7812
|
option.label
|
|
7452
7813
|
] }) }, option.value))
|
|
7453
7814
|
]
|
|
7454
7815
|
}
|
|
7455
7816
|
) : null,
|
|
7456
|
-
onChatAsChange ? /* @__PURE__ */
|
|
7817
|
+
onChatAsChange ? /* @__PURE__ */ jsxs9(
|
|
7457
7818
|
LSSelect,
|
|
7458
7819
|
{
|
|
7459
7820
|
className: "ls-chatbox__chatas",
|
|
@@ -7461,12 +7822,12 @@ function ChatboxPanel({
|
|
|
7461
7822
|
value: chatAs ?? "self",
|
|
7462
7823
|
onChange: (e) => onChatAsChange(e.target.value === "bot" ? "bot" : "self"),
|
|
7463
7824
|
children: [
|
|
7464
|
-
/* @__PURE__ */
|
|
7465
|
-
/* @__PURE__ */
|
|
7825
|
+
/* @__PURE__ */ jsx18(MenuItem3, { value: "self", children: chatAsSelfLabel }),
|
|
7826
|
+
/* @__PURE__ */ jsx18(MenuItem3, { value: "bot", children: chatAsBotLabel })
|
|
7466
7827
|
]
|
|
7467
7828
|
}
|
|
7468
7829
|
) : null,
|
|
7469
|
-
/* @__PURE__ */
|
|
7830
|
+
/* @__PURE__ */ jsx18(
|
|
7470
7831
|
LSButton,
|
|
7471
7832
|
{
|
|
7472
7833
|
className: "ls-chatbox__send",
|
|
@@ -7485,7 +7846,7 @@ ChatboxPanel.displayName = "ChatboxPanel";
|
|
|
7485
7846
|
import Fade from "@mui/material/Fade";
|
|
7486
7847
|
import Modal from "@mui/material/Modal";
|
|
7487
7848
|
import classNames9 from "classnames";
|
|
7488
|
-
import { jsx as
|
|
7849
|
+
import { jsx as jsx19, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
7489
7850
|
var DIMENSIONS = {
|
|
7490
7851
|
small: { width: "30%", height: "30%" },
|
|
7491
7852
|
longS: { width: "50%", height: "30%" },
|
|
@@ -7496,15 +7857,15 @@ var DIMENSIONS = {
|
|
|
7496
7857
|
tall: { width: "40%", height: "70%" },
|
|
7497
7858
|
full: { width: "100%", height: "calc(100% - 1rem)" }
|
|
7498
7859
|
};
|
|
7499
|
-
var DefaultCloseIcon = () => /* @__PURE__ */
|
|
7500
|
-
/* @__PURE__ */
|
|
7501
|
-
/* @__PURE__ */
|
|
7502
|
-
/* @__PURE__ */
|
|
7860
|
+
var DefaultCloseIcon = () => /* @__PURE__ */ jsxs10("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", "aria-hidden": "true", children: [
|
|
7861
|
+
/* @__PURE__ */ jsx19("circle", { cx: "12", cy: "12", r: "10" }),
|
|
7862
|
+
/* @__PURE__ */ jsx19("line", { x1: "9", y1: "9", x2: "15", y2: "15", strokeLinecap: "round" }),
|
|
7863
|
+
/* @__PURE__ */ jsx19("line", { x1: "15", y1: "9", x2: "9", y2: "15", strokeLinecap: "round" })
|
|
7503
7864
|
] });
|
|
7504
7865
|
var DialogChrome = ({ children, overlayProps, closeIcon, ...props }) => {
|
|
7505
7866
|
const modalBackground = overlayProps?.background ? overlayProps.background : !overlayProps?.noBackground ? "var(--gradientBg, var(--background, #151230))" : void 0;
|
|
7506
7867
|
const dimensions = overlayProps?.size && DIMENSIONS[overlayProps.size] || { width: "90%", height: "90%" };
|
|
7507
|
-
return /* @__PURE__ */
|
|
7868
|
+
return /* @__PURE__ */ jsx19(
|
|
7508
7869
|
Modal,
|
|
7509
7870
|
{
|
|
7510
7871
|
disableEnforceFocus: true,
|
|
@@ -7515,7 +7876,7 @@ var DialogChrome = ({ children, overlayProps, closeIcon, ...props }) => {
|
|
|
7515
7876
|
},
|
|
7516
7877
|
className: "ls-dialog",
|
|
7517
7878
|
style: { ...props.style, zIndex: `${props.zIndex ? props.zIndex : "2500"} !important` },
|
|
7518
|
-
children: /* @__PURE__ */
|
|
7879
|
+
children: /* @__PURE__ */ jsx19(Fade, { in: props.open, children: /* @__PURE__ */ jsxs10(
|
|
7519
7880
|
"div",
|
|
7520
7881
|
{
|
|
7521
7882
|
className: classNames9("ls-dialog__card", {
|
|
@@ -7530,22 +7891,22 @@ var DialogChrome = ({ children, overlayProps, closeIcon, ...props }) => {
|
|
|
7530
7891
|
},
|
|
7531
7892
|
title: "",
|
|
7532
7893
|
children: [
|
|
7533
|
-
!props.$hideTop && /* @__PURE__ */
|
|
7894
|
+
!props.$hideTop && /* @__PURE__ */ jsxs10(
|
|
7534
7895
|
"div",
|
|
7535
7896
|
{
|
|
7536
7897
|
className: classNames9("ls-dialog__top", { "ls-dialog__top--full": overlayProps?.size === "full" }),
|
|
7537
7898
|
style: { padding: props.$noPadTitle ? "0" : "1rem" },
|
|
7538
7899
|
children: [
|
|
7539
|
-
/* @__PURE__ */
|
|
7540
|
-
/* @__PURE__ */
|
|
7541
|
-
props.hideClose ? /* @__PURE__ */
|
|
7542
|
-
/* @__PURE__ */
|
|
7543
|
-
closeIcon ?? /* @__PURE__ */
|
|
7900
|
+
/* @__PURE__ */ jsx19("div", { className: "ls-dialog__top-side", children: props.$leftText }),
|
|
7901
|
+
/* @__PURE__ */ jsx19("div", { className: "ls-dialog__title", role: "heading", children: props.title }),
|
|
7902
|
+
props.hideClose ? /* @__PURE__ */ jsx19("div", { className: "ls-dialog__top-side" }) : /* @__PURE__ */ jsx19("div", { className: "ls-dialog__close", children: /* @__PURE__ */ jsxs10("span", { onClick: props.close, className: "ls-dialog__close-btn", children: [
|
|
7903
|
+
/* @__PURE__ */ jsx19("div", { className: "ls-dialog__close-label", children: props.closeLabel }),
|
|
7904
|
+
closeIcon ?? /* @__PURE__ */ jsx19(DefaultCloseIcon, {})
|
|
7544
7905
|
] }) })
|
|
7545
7906
|
]
|
|
7546
7907
|
}
|
|
7547
7908
|
),
|
|
7548
|
-
/* @__PURE__ */
|
|
7909
|
+
/* @__PURE__ */ jsx19(
|
|
7549
7910
|
"div",
|
|
7550
7911
|
{
|
|
7551
7912
|
className: classNames9("ls-dialog__body", props.containerClass),
|
|
@@ -7553,9 +7914,9 @@ var DialogChrome = ({ children, overlayProps, closeIcon, ...props }) => {
|
|
|
7553
7914
|
children
|
|
7554
7915
|
}
|
|
7555
7916
|
),
|
|
7556
|
-
!props.$hideBottom && /* @__PURE__ */
|
|
7557
|
-
/* @__PURE__ */
|
|
7558
|
-
props.showTest && /* @__PURE__ */
|
|
7917
|
+
!props.$hideBottom && /* @__PURE__ */ jsxs10("div", { className: "ls-dialog__bottom", children: [
|
|
7918
|
+
/* @__PURE__ */ jsx19(LSButton, { style: props.buttonStyle && props.buttonStyle, color: props.color, label: props.saveLabel, onClick: props.save, disabled: props.saveDisabled }),
|
|
7919
|
+
props.showTest && /* @__PURE__ */ jsx19(LSButton, { color: "secondary", label: props.testLabel, onClick: props.test, disabled: props.testDisabled })
|
|
7559
7920
|
] })
|
|
7560
7921
|
]
|
|
7561
7922
|
}
|
|
@@ -7570,7 +7931,7 @@ import classNames11 from "classnames";
|
|
|
7570
7931
|
|
|
7571
7932
|
// src/components/ModalChrome/PanelChrome.tsx
|
|
7572
7933
|
import classNames10 from "classnames";
|
|
7573
|
-
import { Fragment as
|
|
7934
|
+
import { Fragment as Fragment6, jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
7574
7935
|
function PanelChrome({
|
|
7575
7936
|
title,
|
|
7576
7937
|
titleVariant = "heading",
|
|
@@ -7587,20 +7948,20 @@ function PanelChrome({
|
|
|
7587
7948
|
}) {
|
|
7588
7949
|
const hasHeader = Boolean(title || headerActions || onClose && showClose);
|
|
7589
7950
|
const mergedStyle = padding ? { ...style, ["--ls-panel-padding"]: padding } : style;
|
|
7590
|
-
const panel = /* @__PURE__ */
|
|
7591
|
-
hasHeader ? /* @__PURE__ */
|
|
7592
|
-
title ? /* @__PURE__ */
|
|
7593
|
-
/* @__PURE__ */
|
|
7951
|
+
const panel = /* @__PURE__ */ jsxs11("div", { className: classNames10("ls-panel", { "ls-panel--no-header": !hasHeader }, className), style: mergedStyle, children: [
|
|
7952
|
+
hasHeader ? /* @__PURE__ */ jsxs11("div", { className: "ls-panel__header", children: [
|
|
7953
|
+
title ? /* @__PURE__ */ jsx20("span", { className: classNames10("ls-panel__title", { "ls-panel__title--label": titleVariant === "label" }), children: title }) : /* @__PURE__ */ jsx20("span", {}),
|
|
7954
|
+
/* @__PURE__ */ jsxs11("span", { className: "ls-panel__header-actions", children: [
|
|
7594
7955
|
headerActions,
|
|
7595
|
-
onClose && showClose ? /* @__PURE__ */
|
|
7956
|
+
onClose && showClose ? /* @__PURE__ */ jsx20("button", { type: "button", className: "ls-panel__close", onClick: onClose, "aria-label": "Close", children: "\u2715" }) : null
|
|
7596
7957
|
] })
|
|
7597
7958
|
] }) : null,
|
|
7598
|
-
/* @__PURE__ */
|
|
7599
|
-
footer ? /* @__PURE__ */
|
|
7959
|
+
/* @__PURE__ */ jsx20("div", { className: classNames10("ls-panel__body", bodyClassName), children }),
|
|
7960
|
+
footer ? /* @__PURE__ */ jsx20("div", { className: "ls-panel__footer", children: footer }) : null
|
|
7600
7961
|
] });
|
|
7601
7962
|
if (onClickAway) {
|
|
7602
|
-
return /* @__PURE__ */
|
|
7603
|
-
/* @__PURE__ */
|
|
7963
|
+
return /* @__PURE__ */ jsxs11(Fragment6, { children: [
|
|
7964
|
+
/* @__PURE__ */ jsx20("div", { className: "ls-panel__clickaway", onClick: onClickAway }),
|
|
7604
7965
|
panel
|
|
7605
7966
|
] });
|
|
7606
7967
|
}
|
|
@@ -7609,7 +7970,7 @@ function PanelChrome({
|
|
|
7609
7970
|
PanelChrome.displayName = "PanelChrome";
|
|
7610
7971
|
|
|
7611
7972
|
// src/components/ModalChrome/ModalChrome.tsx
|
|
7612
|
-
import { jsx as
|
|
7973
|
+
import { jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
7613
7974
|
function ModalChrome({
|
|
7614
7975
|
open = true,
|
|
7615
7976
|
onClose,
|
|
@@ -7634,9 +7995,9 @@ function ModalChrome({
|
|
|
7634
7995
|
return null;
|
|
7635
7996
|
}
|
|
7636
7997
|
const mergedCardStyle = maxWidth ? { ...cardStyle, ["--ls-modal-max-width"]: maxWidth } : cardStyle;
|
|
7637
|
-
return /* @__PURE__ */
|
|
7638
|
-
/* @__PURE__ */
|
|
7639
|
-
/* @__PURE__ */
|
|
7998
|
+
return /* @__PURE__ */ jsxs12("div", { className: classNames11("ls-modal", { "ls-modal--absolute": position === "absolute" }, className), role: "dialog", "aria-modal": "true", children: [
|
|
7999
|
+
/* @__PURE__ */ jsx21("div", { className: classNames11("ls-modal__backdrop", backdropClassName), onClick: onClose }),
|
|
8000
|
+
/* @__PURE__ */ jsx21(
|
|
7640
8001
|
PanelChrome,
|
|
7641
8002
|
{
|
|
7642
8003
|
className: classNames11(
|
|
@@ -7662,20 +8023,20 @@ ModalChrome.displayName = "ModalChrome";
|
|
|
7662
8023
|
|
|
7663
8024
|
// src/components/WidgetChrome/WidgetChrome.tsx
|
|
7664
8025
|
import classNames12 from "classnames";
|
|
7665
|
-
import { jsx as
|
|
8026
|
+
import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
7666
8027
|
function WidgetChromeButton({ active, buttonRef, className, children, ...rest }) {
|
|
7667
|
-
return /* @__PURE__ */
|
|
8028
|
+
return /* @__PURE__ */ jsx22("button", { ref: buttonRef, type: "button", className: classNames12("ls-widget__btn", { "ls-widget__btn--active": active }, className), ...rest, children });
|
|
7668
8029
|
}
|
|
7669
8030
|
WidgetChromeButton.displayName = "WidgetChromeButton";
|
|
7670
8031
|
function WidgetChrome({ title, leftActions, rightActions, headerExtra, showHeader = true, className, headerClassName, bodyClassName, style, id, children }) {
|
|
7671
|
-
return /* @__PURE__ */
|
|
7672
|
-
showHeader ? /* @__PURE__ */
|
|
7673
|
-
/* @__PURE__ */
|
|
7674
|
-
/* @__PURE__ */
|
|
7675
|
-
/* @__PURE__ */
|
|
8032
|
+
return /* @__PURE__ */ jsxs13("div", { className: classNames12("ls-widget", className), style, id, children: [
|
|
8033
|
+
showHeader ? /* @__PURE__ */ jsxs13("div", { className: classNames12("ls-widget__header", headerClassName), children: [
|
|
8034
|
+
/* @__PURE__ */ jsx22("div", { className: "ls-widget__side", children: leftActions }),
|
|
8035
|
+
/* @__PURE__ */ jsx22("div", { className: "ls-widget__title", children: /* @__PURE__ */ jsx22("span", { children: title }) }),
|
|
8036
|
+
/* @__PURE__ */ jsx22("div", { className: "ls-widget__side ls-widget__side--right", children: rightActions }),
|
|
7676
8037
|
headerExtra
|
|
7677
8038
|
] }) : null,
|
|
7678
|
-
/* @__PURE__ */
|
|
8039
|
+
/* @__PURE__ */ jsx22("div", { className: classNames12("ls-widget__body", bodyClassName), children })
|
|
7679
8040
|
] });
|
|
7680
8041
|
}
|
|
7681
8042
|
WidgetChrome.displayName = "WidgetChrome";
|
|
@@ -7684,9 +8045,9 @@ WidgetChrome.displayName = "WidgetChrome";
|
|
|
7684
8045
|
import classNames13 from "classnames";
|
|
7685
8046
|
|
|
7686
8047
|
// src/components/EventList/EventTypeIcon.tsx
|
|
7687
|
-
import { jsx as
|
|
8048
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
7688
8049
|
var createEventIcon = (def) => {
|
|
7689
|
-
const Icon = (props) => /* @__PURE__ */
|
|
8050
|
+
const Icon = (props) => /* @__PURE__ */ jsx23("svg", { width: def.width, height: def.height, viewBox: def.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: def.paths.map((path, index) => /* @__PURE__ */ jsx23("path", { fill: "currentColor", ...path }, index)) });
|
|
7690
8051
|
return Icon;
|
|
7691
8052
|
};
|
|
7692
8053
|
var EVENT_TYPE_FALLBACK_ICON = createEventIcon({ width: "77", height: "77", viewBox: "0 0 77 77", paths: [{ d: "M32.0348 67.8488C32.2317 68.9076 33.1257 69.6727 34.166 69.6727H41.7175C42.9162 69.6727 43.8879 68.6655 43.8879 67.4232C43.8879 66.1808 42.9162 65.1736 41.7175 65.1736H35.9581L35.8144 64.4007H43.1152C44.2884 64.4007 45.2493 63.4344 45.2847 62.219C45.5196 54.1506 48.6247 48.8606 51.9394 43.5096C52.0669 43.3038 52.1949 43.0976 52.3233 42.8909C55.5088 37.7611 58.9 32.3001 58.9 24.5131C58.9 17.6282 56.2649 12.4215 52.2565 8.9757C48.3033 5.57735 43.149 4 38.1777 4C28.6499 4 18 11.1793 18 24.739C18 31.851 21.089 38.0439 24.0565 43.3454C24.5114 44.1581 24.9596 44.943 25.3964 45.7078C26.4256 47.5099 27.3909 49.2003 28.229 50.8789C29.4122 53.2488 30.2139 55.3578 30.4727 57.3163C30.6216 58.4425 31.5576 59.2766 32.6541 59.2603C33.7507 59.244 34.6633 58.3825 34.7809 57.2524C34.9706 55.4309 35.9174 53.2643 37.4928 50.7048C38.8347 48.5248 40.4985 46.2646 42.2571 43.8756C42.5436 43.4864 42.8327 43.0937 43.1233 42.6975C45.1598 39.9201 47.2572 36.9825 48.8406 34.0308C50.417 31.0923 51.6027 27.9286 51.6027 24.7014C51.6027 20.79 50.1716 17.467 47.6813 15.1412C45.2141 12.8368 41.8546 11.6443 38.1777 11.6443C30.9242 11.6443 25.2973 17.6891 25.2973 24.7014C25.2973 26.7539 25.6936 29.8348 26.7508 32.4851C27.7593 35.0129 29.7798 38.0597 33.4218 38.0597C35.1995 38.0597 36.6557 37.3883 37.738 36.2561C38.7611 35.1859 39.3371 33.826 39.6795 32.5814C40.3187 30.2583 40.3144 27.6507 40.3121 26.2771C40.312 26.1997 40.3118 26.1263 40.3118 26.057C40.3118 24.8147 39.3401 23.8075 38.1414 23.8075C36.9427 23.8075 35.971 24.8147 35.971 26.057L35.971 26.1579C35.9713 27.6034 35.9717 29.6519 35.5051 31.3476C35.2712 32.1976 34.969 32.7605 34.6545 33.0895C34.3992 33.3566 34.0583 33.5607 33.4218 33.5607C32.5619 33.5607 31.6054 32.8794 30.7623 30.766C29.968 28.7751 29.6382 26.3016 29.6382 24.7014C29.6382 20.1907 33.3053 16.1434 38.1777 16.1434C40.9631 16.1434 43.231 17.0409 44.7754 18.4834C46.2969 19.9044 47.2619 21.9851 47.2619 24.7014C47.2619 26.8215 46.469 29.1934 45.0468 31.8445C43.6316 34.4825 41.7105 37.1887 39.6673 39.9752C39.3877 40.3564 39.1055 40.7396 38.8222 41.1243C37.0726 43.5001 35.2818 45.9317 33.8333 48.2851C33.4508 48.9065 33.0824 49.5373 32.7382 50.1753C32.5285 49.7174 32.3096 49.2626 32.0842 48.8112C31.1862 47.0126 30.1213 45.1476 29.064 43.2961C28.6415 42.5561 28.2201 41.8183 27.8112 41.0877C24.861 35.817 22.3408 30.5434 22.3408 24.739C22.3408 14.1984 30.497 8.49902 38.1777 8.49902C42.3191 8.49902 46.4406 9.82125 49.4853 12.4386C52.4747 15.0085 54.5592 18.9335 54.5592 24.5131C54.5592 30.9585 51.7975 35.4143 48.5022 40.7311C48.4306 40.8466 48.3587 40.9625 48.2866 41.0789C45.1891 46.0794 41.8063 51.7178 41.0743 59.9017H33.1858C32.5382 59.9017 31.9245 60.2014 31.5122 60.7189C31.0998 61.2365 30.932 61.9178 31.0546 62.5769L32.0348 67.8488Z", fillRule: "evenodd", clipRule: "evenodd" }, { d: "M41.1547 70.6428C41.1547 72.7023 39.6065 73.2035 37.6967 73.2035C35.7868 73.2035 34.2386 72.7023 34.2386 70.6428H41.1547Z" }, { d: "M45.3289 28.7231C45.4774 28.3343 45.2937 27.8944 44.9186 27.7405L42.3201 26.6745C41.945 26.5206 41.5206 26.7111 41.3721 27.0998C41.2237 27.4886 41.4074 27.9285 41.7825 28.0823L44.381 29.1484C44.7561 29.3022 45.1805 29.1118 45.3289 28.7231Z", fillRule: "evenodd", clipRule: "evenodd" }, { d: "M31.4505 29.2716C31.6184 29.6518 32.0518 29.819 32.4186 29.6451L34.96 28.44C35.3268 28.2661 35.4881 27.8169 35.3203 27.4367C35.1525 27.0565 34.7191 26.8893 34.3522 27.0632L31.8109 28.2682C31.444 28.4422 31.2827 28.8914 31.4505 29.2716Z", fillRule: "evenodd", clipRule: "evenodd" }, { d: "M35.3 24.9243C35.4287 24.528 35.223 24.0987 34.8407 23.9653L32.1921 23.0417C31.8098 22.9084 31.3955 23.1215 31.2669 23.5178C31.1382 23.9141 31.3439 24.3434 31.7262 24.4768L34.3748 25.4004C34.7571 25.5337 35.1714 25.3206 35.3 24.9243Z", fillRule: "evenodd", clipRule: "evenodd" }, { d: "M36.7911 23.1649C37.1695 23.0199 37.3629 22.5845 37.223 22.1923L36.2535 19.474C36.1137 19.0818 35.6936 18.8814 35.3152 19.0263C34.9368 19.1713 34.7434 19.6067 34.8833 19.9989L35.8528 22.7173C35.9926 23.1094 36.4127 23.3098 36.7911 23.1649Z", fillRule: "evenodd", clipRule: "evenodd" }, { d: "M39.5322 23.0163C39.911 23.1602 40.3305 22.9585 40.4693 22.5659L41.4314 19.8448C41.5702 19.4522 41.3757 19.0173 40.9969 18.8735C40.6181 18.7296 40.1986 18.9313 40.0598 19.3238L39.0977 22.045C38.9589 22.4376 39.1534 22.8724 39.5322 23.0163Z", fillRule: "evenodd", clipRule: "evenodd" }, { d: "M41.3214 24.7192C41.4951 25.0965 41.9311 25.2564 42.2952 25.0763L44.8173 23.8284C45.1813 23.6483 45.3356 23.1964 45.1618 22.8191C44.988 22.4418 44.552 22.2819 44.1879 22.4621L41.6659 23.7099C41.3018 23.89 41.1476 24.3419 41.3214 24.7192Z", fillRule: "evenodd", clipRule: "evenodd" }] });
|
|
@@ -7714,12 +8075,12 @@ var EVENT_TYPE_ICONS = {
|
|
|
7714
8075
|
};
|
|
7715
8076
|
function EventTypeIcon({ type, ...props }) {
|
|
7716
8077
|
const Icon = (type != null ? EVENT_TYPE_ICONS[String(type).trim().toLowerCase()] : void 0) ?? EVENT_TYPE_FALLBACK_ICON;
|
|
7717
|
-
return /* @__PURE__ */
|
|
8078
|
+
return /* @__PURE__ */ jsx23(Icon, { ...props });
|
|
7718
8079
|
}
|
|
7719
8080
|
EventTypeIcon.displayName = "EventTypeIcon";
|
|
7720
8081
|
|
|
7721
8082
|
// src/components/EventListItem/EventListItem.tsx
|
|
7722
|
-
import { jsx as
|
|
8083
|
+
import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
7723
8084
|
function EventListItem({
|
|
7724
8085
|
username,
|
|
7725
8086
|
message,
|
|
@@ -7739,7 +8100,7 @@ function EventListItem({
|
|
|
7739
8100
|
onUsernameClick,
|
|
7740
8101
|
className
|
|
7741
8102
|
}) {
|
|
7742
|
-
const resolvedAlertIcon = alertIcon ?? (eventType !== void 0 ? /* @__PURE__ */
|
|
8103
|
+
const resolvedAlertIcon = alertIcon ?? (eventType !== void 0 ? /* @__PURE__ */ jsx24(EventTypeIcon, { type: eventType }) : null);
|
|
7743
8104
|
const style = {};
|
|
7744
8105
|
if (accentColor) {
|
|
7745
8106
|
style.borderLeftColor = accentColor;
|
|
@@ -7747,10 +8108,10 @@ function EventListItem({
|
|
|
7747
8108
|
if (colorFullBackground && accentColor) {
|
|
7748
8109
|
style.backgroundColor = `color-mix(in srgb, ${accentColor} 22%, var(--cardbackground, var(--neutralDark2, #211d3e)))`;
|
|
7749
8110
|
}
|
|
7750
|
-
return /* @__PURE__ */
|
|
7751
|
-
/* @__PURE__ */
|
|
7752
|
-
/* @__PURE__ */
|
|
7753
|
-
/* @__PURE__ */
|
|
8111
|
+
return /* @__PURE__ */ jsxs14("div", { className: classNames13("ls-eventlist-item", className), style, children: [
|
|
8112
|
+
/* @__PURE__ */ jsxs14("div", { className: "ls-eventlist-item__main", children: [
|
|
8113
|
+
/* @__PURE__ */ jsxs14("div", { className: "ls-eventlist-item__identity", children: [
|
|
8114
|
+
/* @__PURE__ */ jsx24(
|
|
7754
8115
|
"span",
|
|
7755
8116
|
{
|
|
7756
8117
|
className: classNames13("ls-eventlist-item__username", { "ls-eventlist-item__username--clickable": onUsernameClick }),
|
|
@@ -7766,9 +8127,9 @@ function EventListItem({
|
|
|
7766
8127
|
children: username
|
|
7767
8128
|
}
|
|
7768
8129
|
),
|
|
7769
|
-
platformIcon ? /* @__PURE__ */
|
|
7770
|
-
showAvatar && (avatar || fallbackAvatar) ? /* @__PURE__ */
|
|
7771
|
-
resolvedAlertIcon ? /* @__PURE__ */
|
|
8130
|
+
platformIcon ? /* @__PURE__ */ jsx24("span", { className: "ls-eventlist-item__icon", children: platformIcon }) : null,
|
|
8131
|
+
showAvatar && (avatar || fallbackAvatar) ? /* @__PURE__ */ jsx24("span", { className: "ls-eventlist-item__avatar", children: /* @__PURE__ */ jsx24("img", { src: avatar || fallbackAvatar, alt: "" }) }) : null,
|
|
8132
|
+
resolvedAlertIcon ? /* @__PURE__ */ jsx24(
|
|
7772
8133
|
"span",
|
|
7773
8134
|
{
|
|
7774
8135
|
className: "ls-eventlist-item__icon",
|
|
@@ -7777,25 +8138,25 @@ function EventListItem({
|
|
|
7777
8138
|
}
|
|
7778
8139
|
) : null
|
|
7779
8140
|
] }),
|
|
7780
|
-
/* @__PURE__ */
|
|
7781
|
-
message ? /* @__PURE__ */
|
|
7782
|
-
showMessage && userMessage ? /* @__PURE__ */
|
|
8141
|
+
/* @__PURE__ */ jsxs14("div", { className: "ls-eventlist-item__body", children: [
|
|
8142
|
+
message ? /* @__PURE__ */ jsx24("span", { className: "ls-eventlist-item__message", children: message }) : null,
|
|
8143
|
+
showMessage && userMessage ? /* @__PURE__ */ jsxs14("span", { className: "ls-eventlist-item__usermessage", children: [
|
|
7783
8144
|
"\u201C",
|
|
7784
8145
|
userMessage,
|
|
7785
8146
|
"\u201D"
|
|
7786
8147
|
] }) : null
|
|
7787
8148
|
] }),
|
|
7788
|
-
showTimestamp && timestamp ? /* @__PURE__ */
|
|
8149
|
+
showTimestamp && timestamp ? /* @__PURE__ */ jsx24("span", { className: "ls-eventlist-item__time", children: timestamp }) : null
|
|
7789
8150
|
] }),
|
|
7790
|
-
actions ? /* @__PURE__ */
|
|
8151
|
+
actions ? /* @__PURE__ */ jsx24("div", { className: "ls-eventlist-item__actions", children: actions }) : null
|
|
7791
8152
|
] });
|
|
7792
8153
|
}
|
|
7793
8154
|
EventListItem.displayName = "EventListItem";
|
|
7794
8155
|
|
|
7795
8156
|
// src/components/EventList/EventList.tsx
|
|
7796
|
-
import { useEffect as
|
|
8157
|
+
import { useEffect as useEffect7, useRef as useRef7 } from "react";
|
|
7797
8158
|
import classNames14 from "classnames";
|
|
7798
|
-
import { jsx as
|
|
8159
|
+
import { jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
7799
8160
|
var PIN_THRESHOLD = 24;
|
|
7800
8161
|
function EventList({
|
|
7801
8162
|
items,
|
|
@@ -7817,9 +8178,9 @@ function EventList({
|
|
|
7817
8178
|
endReachedThreshold = 24,
|
|
7818
8179
|
className
|
|
7819
8180
|
}) {
|
|
7820
|
-
const listRef =
|
|
7821
|
-
const pinnedRef =
|
|
7822
|
-
|
|
8181
|
+
const listRef = useRef7(null);
|
|
8182
|
+
const pinnedRef = useRef7(true);
|
|
8183
|
+
useEffect7(() => {
|
|
7823
8184
|
const el = listRef.current;
|
|
7824
8185
|
if (!autoScroll || !el || !pinnedRef.current) {
|
|
7825
8186
|
return;
|
|
@@ -7839,17 +8200,17 @@ function EventList({
|
|
|
7839
8200
|
onEndReached();
|
|
7840
8201
|
}
|
|
7841
8202
|
};
|
|
7842
|
-
return /* @__PURE__ */
|
|
7843
|
-
emptyIcon ? /* @__PURE__ */
|
|
7844
|
-
/* @__PURE__ */
|
|
7845
|
-
] }) : /* @__PURE__ */
|
|
8203
|
+
return /* @__PURE__ */ jsx25("div", { className: classNames14("ls-eventlist", className), id, children: items.length === 0 ? /* @__PURE__ */ jsxs15("div", { className: classNames14("ls-eventlist__empty", emptyClassName), children: [
|
|
8204
|
+
emptyIcon ? /* @__PURE__ */ jsx25("span", { className: "ls-eventlist__empty-icon", children: emptyIcon }) : null,
|
|
8205
|
+
/* @__PURE__ */ jsx25("span", { children: emptyText })
|
|
8206
|
+
] }) : /* @__PURE__ */ jsx25(
|
|
7846
8207
|
"div",
|
|
7847
8208
|
{
|
|
7848
8209
|
className: "ls-eventlist__list",
|
|
7849
8210
|
ref: listRef,
|
|
7850
8211
|
onScroll: handleScroll,
|
|
7851
8212
|
style: itemGap != null ? { gap: typeof itemGap === "number" ? `${itemGap}px` : itemGap } : void 0,
|
|
7852
|
-
children: items.map((item) => /* @__PURE__ */
|
|
8213
|
+
children: items.map((item) => /* @__PURE__ */ jsx25("div", { className: "ls-eventlist__row", children: /* @__PURE__ */ jsx25(
|
|
7853
8214
|
EventListItem,
|
|
7854
8215
|
{
|
|
7855
8216
|
username: item.username,
|
|
@@ -7858,7 +8219,7 @@ function EventList({
|
|
|
7858
8219
|
avatar: item.avatar,
|
|
7859
8220
|
fallbackAvatar: item.fallbackAvatar ?? fallbackAvatar,
|
|
7860
8221
|
timestamp: item.timestamp,
|
|
7861
|
-
platformIcon: showPlatformIcons ? item.platformIcon ?? (item.platform ? /* @__PURE__ */
|
|
8222
|
+
platformIcon: showPlatformIcons ? item.platformIcon ?? (item.platform ? /* @__PURE__ */ jsx25(PlatformIcon, { platform: item.platform }) : void 0) : void 0,
|
|
7862
8223
|
alertIcon: item.alertIcon,
|
|
7863
8224
|
eventType: item.eventType,
|
|
7864
8225
|
accentColor: item.accentColor,
|
|
@@ -7878,7 +8239,7 @@ EventList.displayName = "EventList";
|
|
|
7878
8239
|
// src/components/StreamStatusPanel/StreamStatusPanel.tsx
|
|
7879
8240
|
import Tooltip4 from "@mui/material/Tooltip";
|
|
7880
8241
|
import classNames15 from "classnames";
|
|
7881
|
-
import { Fragment as
|
|
8242
|
+
import { Fragment as Fragment7, jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
7882
8243
|
var LS_INFO_TOOLTIP_SX = {
|
|
7883
8244
|
backgroundColor: "#1b1834",
|
|
7884
8245
|
border: "1px solid #393853",
|
|
@@ -7891,8 +8252,8 @@ var LS_INFO_TOOLTIP_SX = {
|
|
|
7891
8252
|
boxShadow: "0 10px 30px rgba(0, 0, 0, 0.45)"
|
|
7892
8253
|
};
|
|
7893
8254
|
var formatStatValue = (value) => value >= 1e3 ? `${value.toString().slice(0, -3)} K` : value.toString();
|
|
7894
|
-
var TrendUpArrow = () => /* @__PURE__ */
|
|
7895
|
-
var TrendDownArrow = () => /* @__PURE__ */
|
|
8255
|
+
var TrendUpArrow = () => /* @__PURE__ */ jsx26("svg", { viewBox: "0 0 8 8", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx26("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M3.50059 8C3.36798 8 3.2408 7.94732 3.14704 7.85355C3.05327 7.75978 3.00059 7.63261 3.00059 7.5L3.00059 1.707L0.854589 3.854C0.808102 3.90049 0.752912 3.93736 0.692173 3.96252C0.631433 3.98768 0.566333 4.00063 0.500589 4.00063C0.434845 4.00063 0.369745 3.98768 0.309006 3.96252C0.248266 3.93736 0.193077 3.90049 0.146589 3.854C0.100101 3.80751 0.0632247 3.75232 0.0380658 3.69158C0.0129069 3.63084 -4.20509e-05 3.56574 -4.20451e-05 3.5C-4.20394e-05 3.43426 0.012907 3.36916 0.0380658 3.30842C0.0632247 3.24768 0.100101 3.19249 0.146589 3.146L3.14659 0.146C3.19304 0.0994364 3.24821 0.0624939 3.30896 0.0372874C3.3697 0.0120808 3.43482 -0.000893905 3.50059 -0.000893899C3.56636 -0.000893893 3.63148 0.0120809 3.69222 0.0372874C3.75297 0.062494 3.80814 0.0994365 3.85459 0.146L6.85459 3.146C6.90108 3.19249 6.93795 3.24768 6.96311 3.30842C6.98827 3.36916 7.00122 3.43426 7.00122 3.5C7.00122 3.56574 6.98827 3.63084 6.96311 3.69158C6.93795 3.75232 6.90108 3.80751 6.85459 3.854C6.7607 3.94789 6.63336 4.00063 6.50059 4.00063C6.43485 4.00063 6.36975 3.98768 6.30901 3.96252C6.24827 3.93736 6.19308 3.90049 6.14659 3.854L4.00059 1.707L4.00059 7.5C4.00059 7.63261 3.94791 7.75978 3.85414 7.85355C3.76037 7.94732 3.6332 8 3.50059 8Z", fill: "currentColor" }) });
|
|
8256
|
+
var TrendDownArrow = () => /* @__PURE__ */ jsx26("svg", { viewBox: "0 0 8 8", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx26("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M3.50063 0C3.63324 0 3.76042 0.0526785 3.85419 0.146447C3.94795 0.240215 4.00063 0.367392 4.00063 0.5L4.00063 6.293L6.14663 4.146C6.19312 4.09951 6.24831 4.06264 6.30905 4.03748C6.36979 4.01232 6.43489 3.99937 6.50063 3.99937C6.56638 3.99937 6.63148 4.01232 6.69222 4.03748C6.75295 4.06264 6.80814 4.09951 6.85463 4.146C6.90112 4.19249 6.938 4.24768 6.96316 4.30842C6.98831 4.36916 7.00126 4.43426 7.00126 4.5C7.00126 4.56574 6.98831 4.63084 6.96316 4.69158C6.938 4.75232 6.90112 4.80751 6.85463 4.854L3.85463 7.854C3.80819 7.90056 3.75301 7.93751 3.69227 7.96271C3.63152 7.98792 3.5664 8.00089 3.50063 8.00089C3.43486 8.00089 3.36974 7.98792 3.309 7.96271C3.24825 7.93751 3.19308 7.90056 3.14663 7.854L0.146632 4.854C0.100144 4.80751 0.0632674 4.75232 0.0381083 4.69158C0.0129493 4.63084 0 4.56574 0 4.5C0 4.43426 0.0129493 4.36916 0.0381083 4.30842C0.0632674 4.24768 0.100144 4.19249 0.146632 4.146C0.240518 4.05211 0.367856 3.99937 0.500632 3.99937C0.566376 3.99937 0.631476 4.01232 0.692215 4.03748C0.752955 4.06264 0.808144 4.09951 0.854632 4.146L3.00063 6.293L3.00063 0.5C3.00063 0.367392 3.05331 0.240215 3.14708 0.146447C3.24085 0.0526785 3.36802 0 3.50063 0Z", fill: "currentColor" }) });
|
|
7896
8257
|
function StreamStatusPanel({
|
|
7897
8258
|
online = false,
|
|
7898
8259
|
statusLabel,
|
|
@@ -7915,62 +8276,62 @@ function StreamStatusPanel({
|
|
|
7915
8276
|
const hasPlatforms = platforms != null;
|
|
7916
8277
|
const hasStats = stats.length > 0;
|
|
7917
8278
|
if (!hasStatus && !hasTotal && !hasPlatforms && !hasStats) {
|
|
7918
|
-
return /* @__PURE__ */
|
|
8279
|
+
return /* @__PURE__ */ jsx26("div", { className: classNames15("ls-streamstatus", "ls-streamstatus--empty", className), id, children: emptyText });
|
|
7919
8280
|
}
|
|
7920
|
-
return /* @__PURE__ */
|
|
7921
|
-
hasStatus ? /* @__PURE__ */
|
|
7922
|
-
/* @__PURE__ */
|
|
7923
|
-
online ? /* @__PURE__ */
|
|
7924
|
-
/* @__PURE__ */
|
|
8281
|
+
return /* @__PURE__ */ jsxs16("div", { className: classNames15("ls-streamstatus", className), id, children: [
|
|
8282
|
+
hasStatus ? /* @__PURE__ */ jsx26("div", { className: "ls-streamstatus__status", children: statusSlot ?? /* @__PURE__ */ jsxs16(Fragment7, { children: [
|
|
8283
|
+
/* @__PURE__ */ jsxs16("span", { className: "ls-streamstatus__indicator", children: [
|
|
8284
|
+
online ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__indicator-ping" }) : null,
|
|
8285
|
+
/* @__PURE__ */ jsx26("span", { className: classNames15("ls-streamstatus__indicator-dot", { "ls-streamstatus__indicator-dot--online": online }) })
|
|
7925
8286
|
] }),
|
|
7926
|
-
/* @__PURE__ */
|
|
7927
|
-
/* @__PURE__ */
|
|
7928
|
-
statusSublabel != null ? /* @__PURE__ */
|
|
8287
|
+
/* @__PURE__ */ jsxs16("span", { className: "ls-streamstatus__status-body", children: [
|
|
8288
|
+
/* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__status-label", children: statusLabel }),
|
|
8289
|
+
statusSublabel != null ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__status-sublabel", children: statusSublabel }) : null
|
|
7929
8290
|
] })
|
|
7930
8291
|
] }) }) : null,
|
|
7931
|
-
hasTotal || hasPlatforms ? /* @__PURE__ */
|
|
7932
|
-
hasTotal ? /* @__PURE__ */
|
|
7933
|
-
/* @__PURE__ */
|
|
7934
|
-
totalLabel != null ? /* @__PURE__ */
|
|
8292
|
+
hasTotal || hasPlatforms ? /* @__PURE__ */ jsxs16("div", { className: "ls-streamstatus__overview", children: [
|
|
8293
|
+
hasTotal ? /* @__PURE__ */ jsxs16("div", { className: "ls-streamstatus__total", children: [
|
|
8294
|
+
/* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__total-value", style: totalAccentColor ? { color: totalAccentColor } : void 0, children: totalValue }),
|
|
8295
|
+
totalLabel != null ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__total-label", children: totalLabel }) : null
|
|
7935
8296
|
] }) : null,
|
|
7936
|
-
hasPlatforms ? /* @__PURE__ */
|
|
7937
|
-
/* @__PURE__ */
|
|
7938
|
-
platform.icon != null ? /* @__PURE__ */
|
|
8297
|
+
hasPlatforms ? /* @__PURE__ */ jsx26("div", { className: "ls-streamstatus__platforms", children: platforms.length === 0 ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__platforms-empty", children: platformsEmptyText }) : platforms.map((platform) => /* @__PURE__ */ jsxs16("div", { className: "ls-streamstatus__platform", children: [
|
|
8298
|
+
/* @__PURE__ */ jsxs16("span", { className: "ls-streamstatus__platform-info", children: [
|
|
8299
|
+
platform.icon != null ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__platform-icon", children: platform.icon }) : getPlatformIconUrl(String(platform.id)) ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__platform-icon", children: /* @__PURE__ */ jsx26(PlatformIcon, { platform: String(platform.id) }) }) : /* @__PURE__ */ jsx26(
|
|
7939
8300
|
"span",
|
|
7940
8301
|
{
|
|
7941
8302
|
className: "ls-streamstatus__platform-dot",
|
|
7942
8303
|
style: platform.accentColor ? { backgroundColor: platform.accentColor } : void 0
|
|
7943
8304
|
}
|
|
7944
8305
|
),
|
|
7945
|
-
/* @__PURE__ */
|
|
8306
|
+
/* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__platform-label", children: platform.label })
|
|
7946
8307
|
] }),
|
|
7947
|
-
/* @__PURE__ */
|
|
8308
|
+
/* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__platform-value", children: platform.value })
|
|
7948
8309
|
] }, platform.id)) }) : null
|
|
7949
8310
|
] }) : null,
|
|
7950
|
-
hasStats ? /* @__PURE__ */
|
|
8311
|
+
hasStats ? /* @__PURE__ */ jsx26(
|
|
7951
8312
|
"div",
|
|
7952
8313
|
{
|
|
7953
8314
|
className: "ls-streamstatus__stats",
|
|
7954
8315
|
style: statsColumns ? { gridTemplateColumns: `repeat(${statsColumns}, minmax(0, 1fr))` } : void 0,
|
|
7955
8316
|
children: stats.map((stat) => {
|
|
7956
|
-
const label = stat.label != null ? /* @__PURE__ */
|
|
8317
|
+
const label = stat.label != null ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__stat-label", children: stat.label }) : null;
|
|
7957
8318
|
const showHead = stat.icon != null || stat.actions != null || statsLabelPosition === "top" && label != null;
|
|
7958
8319
|
const displayValue = typeof stat.value === "number" ? formatStatValue(stat.value) : stat.value;
|
|
7959
8320
|
const trend = typeof stat.value === "number" && stat.previousValue != null ? stat.value - stat.previousValue >= 0 ? "up" : "down" : void 0;
|
|
7960
|
-
const node = /* @__PURE__ */
|
|
7961
|
-
showHead ? /* @__PURE__ */
|
|
7962
|
-
stat.icon != null ? /* @__PURE__ */
|
|
8321
|
+
const node = /* @__PURE__ */ jsxs16("div", { className: "ls-streamstatus__stat", style: stat.tooltip != null ? { cursor: "help" } : void 0, children: [
|
|
8322
|
+
showHead ? /* @__PURE__ */ jsxs16("div", { className: "ls-streamstatus__stat-head", children: [
|
|
8323
|
+
stat.icon != null ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__stat-icon", children: stat.icon }) : null,
|
|
7963
8324
|
statsLabelPosition === "top" ? label : null,
|
|
7964
|
-
stat.actions != null ? /* @__PURE__ */
|
|
8325
|
+
stat.actions != null ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__stat-actions", children: stat.actions }) : null
|
|
7965
8326
|
] }) : null,
|
|
7966
|
-
/* @__PURE__ */
|
|
8327
|
+
/* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__stat-value", style: stat.accentColor ? { color: stat.accentColor } : void 0, children: trend ? /* @__PURE__ */ jsxs16("span", { className: "ls-streamstatus__stat-trendrow", children: [
|
|
7967
8328
|
displayValue,
|
|
7968
|
-
trend === "up" ? /* @__PURE__ */
|
|
8329
|
+
trend === "up" ? /* @__PURE__ */ jsx26(TrendUpArrow, {}) : /* @__PURE__ */ jsx26(TrendDownArrow, {})
|
|
7969
8330
|
] }) : displayValue }),
|
|
7970
8331
|
statsLabelPosition === "bottom" ? label : null,
|
|
7971
|
-
stat.sub != null ? /* @__PURE__ */
|
|
8332
|
+
stat.sub != null ? /* @__PURE__ */ jsx26("span", { className: "ls-streamstatus__stat-sub", children: stat.sub }) : null
|
|
7972
8333
|
] }, stat.id);
|
|
7973
|
-
return stat.tooltip != null ? /* @__PURE__ */
|
|
8334
|
+
return stat.tooltip != null ? /* @__PURE__ */ jsx26(Tooltip4, { title: stat.tooltip, placement: "top", enterDelay: 120, slotProps: { tooltip: { sx: LS_INFO_TOOLTIP_SX } }, children: node }, stat.id) : node;
|
|
7974
8335
|
})
|
|
7975
8336
|
}
|
|
7976
8337
|
) : null
|
|
@@ -7980,9 +8341,9 @@ StreamStatusPanel.displayName = "StreamStatusPanel";
|
|
|
7980
8341
|
|
|
7981
8342
|
// src/components/ViewersList/ViewersList.tsx
|
|
7982
8343
|
import * as React from "react";
|
|
7983
|
-
import { useMemo as
|
|
8344
|
+
import { useMemo as useMemo5, useState as useState9 } from "react";
|
|
7984
8345
|
import classNames16 from "classnames";
|
|
7985
|
-
import { jsx as
|
|
8346
|
+
import { jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
7986
8347
|
function ViewersList({
|
|
7987
8348
|
viewers,
|
|
7988
8349
|
groups,
|
|
@@ -7999,13 +8360,13 @@ function ViewersList({
|
|
|
7999
8360
|
id,
|
|
8000
8361
|
className
|
|
8001
8362
|
}) {
|
|
8002
|
-
const [query, setQuery] =
|
|
8363
|
+
const [query, setQuery] = useState9("");
|
|
8003
8364
|
const internalSearch = showSearch && !searchSlot;
|
|
8004
|
-
const filtered =
|
|
8365
|
+
const filtered = useMemo5(
|
|
8005
8366
|
() => internalSearch && query ? viewers.filter((viewer) => viewer.username.toLowerCase().includes(query.toLowerCase())) : viewers,
|
|
8006
8367
|
[internalSearch, viewers, query]
|
|
8007
8368
|
);
|
|
8008
|
-
const sections =
|
|
8369
|
+
const sections = useMemo5(() => {
|
|
8009
8370
|
if (!groups || groups.length === 0) {
|
|
8010
8371
|
return [{ key: "", viewers: filtered }];
|
|
8011
8372
|
}
|
|
@@ -8015,25 +8376,25 @@ function ViewersList({
|
|
|
8015
8376
|
return [...grouped, { key: "", viewers: rest }].filter((section) => section.viewers.length > 0);
|
|
8016
8377
|
}, [groups, filtered]);
|
|
8017
8378
|
const showHead = countLabel != null || searchSlot != null || internalSearch;
|
|
8018
|
-
return /* @__PURE__ */
|
|
8019
|
-
showHead ? /* @__PURE__ */
|
|
8020
|
-
countLabel != null ? /* @__PURE__ */
|
|
8021
|
-
searchSlot ? /* @__PURE__ */
|
|
8022
|
-
internalSearch ? /* @__PURE__ */
|
|
8379
|
+
return /* @__PURE__ */ jsxs17("div", { className: classNames16("ls-viewerslist", className), id, children: [
|
|
8380
|
+
showHead ? /* @__PURE__ */ jsxs17("div", { className: "ls-viewerslist__head", children: [
|
|
8381
|
+
countLabel != null ? /* @__PURE__ */ jsx27("span", { className: "ls-viewerslist__count", children: countLabel }) : null,
|
|
8382
|
+
searchSlot ? /* @__PURE__ */ jsx27("div", { className: "ls-viewerslist__search-slot", children: searchSlot }) : null,
|
|
8383
|
+
internalSearch ? /* @__PURE__ */ jsx27("input", { className: "ls-viewerslist__search", value: query, placeholder: searchPlaceholder, onChange: (e) => setQuery(e.target.value) }) : null
|
|
8023
8384
|
] }) : null,
|
|
8024
|
-
hint != null ? /* @__PURE__ */
|
|
8025
|
-
filtered.length === 0 ? /* @__PURE__ */
|
|
8026
|
-
emptyIcon ? /* @__PURE__ */
|
|
8027
|
-
/* @__PURE__ */
|
|
8028
|
-
] }) : /* @__PURE__ */
|
|
8029
|
-
section.label != null ? /* @__PURE__ */
|
|
8385
|
+
hint != null ? /* @__PURE__ */ jsx27("div", { className: "ls-viewerslist__hint", children: hint }) : null,
|
|
8386
|
+
filtered.length === 0 ? /* @__PURE__ */ jsxs17("div", { className: "ls-viewerslist__empty", children: [
|
|
8387
|
+
emptyIcon ? /* @__PURE__ */ jsx27("span", { className: "ls-viewerslist__empty-icon", children: emptyIcon }) : null,
|
|
8388
|
+
/* @__PURE__ */ jsx27("span", { children: emptyText })
|
|
8389
|
+
] }) : /* @__PURE__ */ jsx27("div", { className: "ls-viewerslist__list", children: sections.map((section) => /* @__PURE__ */ jsxs17(React.Fragment, { children: [
|
|
8390
|
+
section.label != null ? /* @__PURE__ */ jsx27("div", { className: "ls-viewerslist__group", children: section.label }) : null,
|
|
8030
8391
|
section.viewers.map((viewer) => {
|
|
8031
8392
|
const avatarSrc = viewer.avatar || viewer.fallbackAvatar || fallbackAvatar;
|
|
8032
|
-
const platformIcon = viewer.platformIcon ?? (viewer.platform ? /* @__PURE__ */
|
|
8033
|
-
return /* @__PURE__ */
|
|
8034
|
-
showAvatars && avatarSrc ? /* @__PURE__ */
|
|
8035
|
-
platformIcon != null ? /* @__PURE__ */
|
|
8036
|
-
/* @__PURE__ */
|
|
8393
|
+
const platformIcon = viewer.platformIcon ?? (viewer.platform ? /* @__PURE__ */ jsx27(PlatformIcon, { platform: viewer.platform }) : null);
|
|
8394
|
+
return /* @__PURE__ */ jsxs17("div", { className: "ls-viewerslist__viewer", children: [
|
|
8395
|
+
showAvatars && avatarSrc ? /* @__PURE__ */ jsx27("img", { className: "ls-viewerslist__avatar", src: avatarSrc, alt: "" }) : null,
|
|
8396
|
+
platformIcon != null ? /* @__PURE__ */ jsx27("span", { className: "ls-viewerslist__platform", children: platformIcon }) : null,
|
|
8397
|
+
/* @__PURE__ */ jsx27(
|
|
8037
8398
|
"span",
|
|
8038
8399
|
{
|
|
8039
8400
|
className: classNames16("ls-viewerslist__username", { "ls-viewerslist__username--clickable": onUsernameClick }),
|
|
@@ -8050,8 +8411,8 @@ function ViewersList({
|
|
|
8050
8411
|
children: viewer.username
|
|
8051
8412
|
}
|
|
8052
8413
|
),
|
|
8053
|
-
viewer.badges != null ? /* @__PURE__ */
|
|
8054
|
-
viewer.actions != null ? /* @__PURE__ */
|
|
8414
|
+
viewer.badges != null ? /* @__PURE__ */ jsx27("span", { className: "ls-viewerslist__badges", children: viewer.badges }) : null,
|
|
8415
|
+
viewer.actions != null ? /* @__PURE__ */ jsx27("span", { className: "ls-viewerslist__actions", children: viewer.actions }) : null
|
|
8055
8416
|
] }, viewer.id);
|
|
8056
8417
|
})
|
|
8057
8418
|
] }, section.key || "__ungrouped")) })
|
|
@@ -8061,7 +8422,7 @@ ViewersList.displayName = "ViewersList";
|
|
|
8061
8422
|
|
|
8062
8423
|
// src/components/ShortcutDockGrid/ShortcutDockGrid.tsx
|
|
8063
8424
|
import classNames17 from "classnames";
|
|
8064
|
-
import { Fragment as
|
|
8425
|
+
import { Fragment as Fragment9, jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
8065
8426
|
var softAccent = (color) => /^#[0-9a-fA-F]{6}$/.test(color) ? `${color}66` : color;
|
|
8066
8427
|
function ShortcutDockGrid({
|
|
8067
8428
|
buttons,
|
|
@@ -8084,7 +8445,7 @@ function ShortcutDockGrid({
|
|
|
8084
8445
|
className
|
|
8085
8446
|
}) {
|
|
8086
8447
|
const showAdd = editMode && Boolean(onAdd);
|
|
8087
|
-
return /* @__PURE__ */
|
|
8448
|
+
return /* @__PURE__ */ jsxs18(
|
|
8088
8449
|
"div",
|
|
8089
8450
|
{
|
|
8090
8451
|
className: classNames17(
|
|
@@ -8098,7 +8459,7 @@ function ShortcutDockGrid({
|
|
|
8098
8459
|
gridAutoRows: rowHeight ? `${rowHeight}px` : "auto"
|
|
8099
8460
|
},
|
|
8100
8461
|
children: [
|
|
8101
|
-
buttons.length === 0 && !showAdd && emptyText != null ? /* @__PURE__ */
|
|
8462
|
+
buttons.length === 0 && !showAdd && emptyText != null ? /* @__PURE__ */ jsx28("div", { className: "ls-shortcutdock__empty", children: emptyText }) : null,
|
|
8102
8463
|
buttons.map((button) => {
|
|
8103
8464
|
const large = (button.w ?? 1) > 1 || (button.h ?? 1) > 1;
|
|
8104
8465
|
const selected = selectedId != null && selectedId === button.id;
|
|
@@ -8109,7 +8470,7 @@ function ShortcutDockGrid({
|
|
|
8109
8470
|
...rowHeight ? {} : { minHeight: minButtonSize },
|
|
8110
8471
|
...colored ? { ["--ls-shortcutdock-accent"]: button.color, ["--ls-shortcutdock-accent-soft"]: softAccent(button.color) } : {}
|
|
8111
8472
|
};
|
|
8112
|
-
const node = /* @__PURE__ */
|
|
8473
|
+
const node = /* @__PURE__ */ jsx28(
|
|
8113
8474
|
"button",
|
|
8114
8475
|
{
|
|
8115
8476
|
type: "button",
|
|
@@ -8125,18 +8486,18 @@ function ShortcutDockGrid({
|
|
|
8125
8486
|
onTrigger?.(button.id);
|
|
8126
8487
|
}
|
|
8127
8488
|
},
|
|
8128
|
-
children: button.content ?? /* @__PURE__ */
|
|
8129
|
-
button.image ? /* @__PURE__ */
|
|
8130
|
-
button.label != null ? /* @__PURE__ */
|
|
8489
|
+
children: button.content ?? /* @__PURE__ */ jsxs18(Fragment9, { children: [
|
|
8490
|
+
button.image ? /* @__PURE__ */ jsx28("img", { className: "ls-shortcutdock__btn-image", src: button.image, alt: "" }) : button.icon != null ? /* @__PURE__ */ jsx28("span", { className: "ls-shortcutdock__icon", children: button.icon }) : null,
|
|
8491
|
+
button.label != null ? /* @__PURE__ */ jsx28("span", { className: "ls-shortcutdock__label", children: button.label }) : null
|
|
8131
8492
|
] })
|
|
8132
8493
|
}
|
|
8133
8494
|
);
|
|
8134
|
-
return /* @__PURE__ */
|
|
8495
|
+
return /* @__PURE__ */ jsxs18("div", { className: "ls-shortcutdock__cell", style: cellStyle, title: button.title, children: [
|
|
8135
8496
|
renderButton ? renderButton(button, node) : node,
|
|
8136
|
-
editMode && onRemove ? /* @__PURE__ */
|
|
8497
|
+
editMode && onRemove ? /* @__PURE__ */ jsx28("button", { type: "button", className: "ls-shortcutdock__remove", title: removeTitle, onClick: () => onRemove(button.id), children: "\u2715" }) : null
|
|
8137
8498
|
] }, button.id);
|
|
8138
8499
|
}),
|
|
8139
|
-
showAdd ? /* @__PURE__ */
|
|
8500
|
+
showAdd ? /* @__PURE__ */ jsx28(
|
|
8140
8501
|
"button",
|
|
8141
8502
|
{
|
|
8142
8503
|
type: "button",
|
|
@@ -8156,7 +8517,7 @@ ShortcutDockGrid.displayName = "ShortcutDockGrid";
|
|
|
8156
8517
|
// src/components/GoalsList/GoalsList.tsx
|
|
8157
8518
|
import Tooltip5 from "@mui/material/Tooltip";
|
|
8158
8519
|
import classNames18 from "classnames";
|
|
8159
|
-
import { Fragment as
|
|
8520
|
+
import { Fragment as Fragment10, jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
8160
8521
|
var GOAL_TOOLTIP_SX = {
|
|
8161
8522
|
backgroundColor: "#1b1834",
|
|
8162
8523
|
border: "1px solid #393853",
|
|
@@ -8180,32 +8541,32 @@ var resolvePercent = (goal) => {
|
|
|
8180
8541
|
};
|
|
8181
8542
|
function GoalsList({ goals, formatValue, showPercent = true, emptyText = "No goal data yet", id, className }) {
|
|
8182
8543
|
const fmt = (value, goal) => formatValue ? formatValue(value, goal) : value;
|
|
8183
|
-
return /* @__PURE__ */
|
|
8544
|
+
return /* @__PURE__ */ jsx29("div", { className: classNames18("ls-goals", className), id, children: goals.length === 0 ? /* @__PURE__ */ jsx29("div", { className: "ls-goals__empty", children: emptyText }) : goals.map((goal) => {
|
|
8184
8545
|
const percent = resolvePercent(goal);
|
|
8185
8546
|
const rowStyle = {
|
|
8186
8547
|
...goal.accentColor ? { ["--ls-goals-accent"]: goal.accentColor } : {},
|
|
8187
8548
|
...goal.tooltip != null ? { cursor: "help" } : {}
|
|
8188
8549
|
};
|
|
8189
|
-
const node = /* @__PURE__ */
|
|
8190
|
-
/* @__PURE__ */
|
|
8191
|
-
goal.icon != null ? /* @__PURE__ */
|
|
8192
|
-
/* @__PURE__ */
|
|
8193
|
-
/* @__PURE__ */
|
|
8550
|
+
const node = /* @__PURE__ */ jsxs19("div", { className: "ls-goals__row", style: rowStyle, children: [
|
|
8551
|
+
/* @__PURE__ */ jsxs19("div", { className: "ls-goals__head", children: [
|
|
8552
|
+
goal.icon != null ? /* @__PURE__ */ jsx29("span", { className: "ls-goals__icon", children: goal.icon }) : null,
|
|
8553
|
+
/* @__PURE__ */ jsx29("span", { className: "ls-goals__label", children: goal.label }),
|
|
8554
|
+
/* @__PURE__ */ jsx29("span", { className: "ls-goals__value", children: goal.valueText ?? /* @__PURE__ */ jsxs19(Fragment10, { children: [
|
|
8194
8555
|
fmt(goal.current ?? 0, goal),
|
|
8195
8556
|
" ",
|
|
8196
|
-
/* @__PURE__ */
|
|
8557
|
+
/* @__PURE__ */ jsxs19("span", { className: "ls-goals__target", children: [
|
|
8197
8558
|
"/ ",
|
|
8198
8559
|
fmt(goal.target ?? 0, goal)
|
|
8199
8560
|
] })
|
|
8200
8561
|
] }) }),
|
|
8201
|
-
showPercent ? /* @__PURE__ */
|
|
8562
|
+
showPercent ? /* @__PURE__ */ jsxs19("span", { className: "ls-goals__percent", children: [
|
|
8202
8563
|
percent,
|
|
8203
8564
|
"%"
|
|
8204
8565
|
] }) : null
|
|
8205
8566
|
] }),
|
|
8206
|
-
/* @__PURE__ */
|
|
8567
|
+
/* @__PURE__ */ jsx29("div", { className: "ls-goals__bar", children: /* @__PURE__ */ jsx29("div", { className: "ls-goals__fill", style: { width: `${percent}%` } }) })
|
|
8207
8568
|
] }, goal.id);
|
|
8208
|
-
return goal.tooltip != null ? /* @__PURE__ */
|
|
8569
|
+
return goal.tooltip != null ? /* @__PURE__ */ jsx29(Tooltip5, { title: goal.tooltip, placement: "top", enterDelay: 120, slotProps: { tooltip: { sx: GOAL_TOOLTIP_SX } }, children: node }, goal.id) : node;
|
|
8209
8570
|
}) });
|
|
8210
8571
|
}
|
|
8211
8572
|
GoalsList.displayName = "GoalsList";
|
|
@@ -8215,11 +8576,11 @@ import IconButton from "@mui/material/IconButton";
|
|
|
8215
8576
|
import classNames19 from "classnames";
|
|
8216
8577
|
|
|
8217
8578
|
// src/components/ModQueueItem/icons.tsx
|
|
8218
|
-
import { jsx as
|
|
8579
|
+
import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
8219
8580
|
function CrossBoxIcon({ className }) {
|
|
8220
|
-
return /* @__PURE__ */
|
|
8221
|
-
/* @__PURE__ */
|
|
8222
|
-
/* @__PURE__ */
|
|
8581
|
+
return /* @__PURE__ */ jsxs20("svg", { className, width: "21", height: "21", viewBox: "0 0 21 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
8582
|
+
/* @__PURE__ */ jsx30("rect", { x: "0.484367", y: "0.509025", width: "19.6005", height: "19.6005", rx: "3.43645", stroke: "#E76E6E", strokeWidth: "0.763655" }),
|
|
8583
|
+
/* @__PURE__ */ jsx30(
|
|
8223
8584
|
"path",
|
|
8224
8585
|
{
|
|
8225
8586
|
d: "M14.3571 7.71806L12.8756 6.23657L10.2843 8.82791L7.69292 6.23657L6.21143 7.71806L8.80276 10.3094L6.21143 12.9007L7.69292 14.3822L10.2843 11.7909L12.8756 14.3822L14.3571 12.9007L11.7657 10.3094L14.3571 7.71806Z",
|
|
@@ -8229,9 +8590,9 @@ function CrossBoxIcon({ className }) {
|
|
|
8229
8590
|
] });
|
|
8230
8591
|
}
|
|
8231
8592
|
function TickBoxIcon({ className }) {
|
|
8232
|
-
return /* @__PURE__ */
|
|
8233
|
-
/* @__PURE__ */
|
|
8234
|
-
/* @__PURE__ */
|
|
8593
|
+
return /* @__PURE__ */ jsxs20("svg", { className, width: "22", height: "21", viewBox: "0 0 22 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
8594
|
+
/* @__PURE__ */ jsx30("rect", { x: "0.381828", y: "0.381828", width: "21.2296", height: "19.855", rx: "3.43645", stroke: "#93F0A2", strokeWidth: "0.763655" }),
|
|
8595
|
+
/* @__PURE__ */ jsx30(
|
|
8235
8596
|
"path",
|
|
8236
8597
|
{
|
|
8237
8598
|
d: "M14.8908 5.49829L9.85209 12.1414L6.87311 9.16455L5.49854 10.5391L10.0798 15.1203L16.4952 6.87287L14.8908 5.49829Z",
|
|
@@ -8242,7 +8603,7 @@ function TickBoxIcon({ className }) {
|
|
|
8242
8603
|
}
|
|
8243
8604
|
|
|
8244
8605
|
// src/components/ModQueueItem/ModQueueItem.tsx
|
|
8245
|
-
import { Fragment as
|
|
8606
|
+
import { Fragment as Fragment11, jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
8246
8607
|
function ModQueueItem({
|
|
8247
8608
|
username,
|
|
8248
8609
|
avatar,
|
|
@@ -8255,12 +8616,12 @@ function ModQueueItem({
|
|
|
8255
8616
|
onDeny,
|
|
8256
8617
|
className
|
|
8257
8618
|
}) {
|
|
8258
|
-
return /* @__PURE__ */
|
|
8259
|
-
icon ? /* @__PURE__ */
|
|
8260
|
-
/* @__PURE__ */
|
|
8261
|
-
/* @__PURE__ */
|
|
8262
|
-
avatar || fallbackAvatar ? /* @__PURE__ */
|
|
8263
|
-
username ? /* @__PURE__ */
|
|
8619
|
+
return /* @__PURE__ */ jsxs21("div", { className: classNames19("ls-modqueue-item", className), children: [
|
|
8620
|
+
icon ? /* @__PURE__ */ jsx31("div", { className: "ls-modqueue-item__preview", children: icon }) : null,
|
|
8621
|
+
/* @__PURE__ */ jsxs21("div", { className: "ls-modqueue-item__body", children: [
|
|
8622
|
+
/* @__PURE__ */ jsxs21("div", { className: "ls-modqueue-item__head", children: [
|
|
8623
|
+
avatar || fallbackAvatar ? /* @__PURE__ */ jsx31("img", { className: "ls-modqueue-item__avatar", src: avatar || fallbackAvatar, alt: "" }) : null,
|
|
8624
|
+
username ? /* @__PURE__ */ jsx31(
|
|
8264
8625
|
"span",
|
|
8265
8626
|
{
|
|
8266
8627
|
className: "ls-modqueue-item__username",
|
|
@@ -8268,31 +8629,31 @@ function ModQueueItem({
|
|
|
8268
8629
|
children: username
|
|
8269
8630
|
}
|
|
8270
8631
|
) : null,
|
|
8271
|
-
command ? /* @__PURE__ */
|
|
8632
|
+
command ? /* @__PURE__ */ jsx31("span", { className: "ls-modqueue-item__command", children: command }) : null
|
|
8272
8633
|
] }),
|
|
8273
|
-
message ? /* @__PURE__ */
|
|
8634
|
+
message ? /* @__PURE__ */ jsxs21("div", { className: "ls-modqueue-item__message", children: [
|
|
8274
8635
|
"\u201C",
|
|
8275
8636
|
message,
|
|
8276
8637
|
"\u201D"
|
|
8277
8638
|
] }) : null
|
|
8278
8639
|
] }),
|
|
8279
|
-
/* @__PURE__ */
|
|
8280
|
-
/* @__PURE__ */
|
|
8281
|
-
/* @__PURE__ */
|
|
8640
|
+
/* @__PURE__ */ jsx31("div", { className: "ls-modqueue-item__actions", children: actions ?? /* @__PURE__ */ jsxs21(Fragment11, { children: [
|
|
8641
|
+
/* @__PURE__ */ jsx31(IconButton, { className: "ls-modqueue-item__iconbtn", disableRipple: true, onClick: onDeny, "aria-label": "Deny", children: /* @__PURE__ */ jsx31(CrossBoxIcon, { className: "ls-modqueue-item__action-icon" }) }),
|
|
8642
|
+
/* @__PURE__ */ jsx31(IconButton, { className: "ls-modqueue-item__iconbtn", disableRipple: true, onClick: onApprove, "aria-label": "Approve", children: /* @__PURE__ */ jsx31(TickBoxIcon, { className: "ls-modqueue-item__action-icon" }) })
|
|
8282
8643
|
] }) })
|
|
8283
8644
|
] });
|
|
8284
8645
|
}
|
|
8285
8646
|
ModQueueItem.displayName = "ModQueueItem";
|
|
8286
8647
|
|
|
8287
8648
|
// src/components/ModQueueList/ModQueueList.tsx
|
|
8288
|
-
import { useMemo as
|
|
8649
|
+
import { useMemo as useMemo6, useState as useState10 } from "react";
|
|
8289
8650
|
import ButtonBase from "@mui/material/ButtonBase";
|
|
8290
8651
|
import classNames20 from "classnames";
|
|
8291
8652
|
|
|
8292
8653
|
// src/components/ModQueueList/icons.tsx
|
|
8293
|
-
import { jsx as
|
|
8654
|
+
import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
8294
8655
|
function SearchIcon({ className }) {
|
|
8295
|
-
return /* @__PURE__ */
|
|
8656
|
+
return /* @__PURE__ */ jsx32("svg", { className, width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx32(
|
|
8296
8657
|
"path",
|
|
8297
8658
|
{
|
|
8298
8659
|
fillRule: "evenodd",
|
|
@@ -8303,24 +8664,24 @@ function SearchIcon({ className }) {
|
|
|
8303
8664
|
) });
|
|
8304
8665
|
}
|
|
8305
8666
|
function EmptyModQueueIcon({ className }) {
|
|
8306
|
-
return /* @__PURE__ */
|
|
8307
|
-
/* @__PURE__ */
|
|
8667
|
+
return /* @__PURE__ */ jsxs22("svg", { className, width: "39", height: "39", viewBox: "0 0 39 39", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
8668
|
+
/* @__PURE__ */ jsx32(
|
|
8308
8669
|
"path",
|
|
8309
8670
|
{
|
|
8310
8671
|
d: "M17.8486 23.9297C17.8487 26.2984 19.0186 28.5764 20.8398 30H11V26.25C11.002 24.8582 11.5559 23.5242 12.54 22.54C13.5242 21.5559 14.8582 21.0019 16.25 21H17.8486V23.9297Z",
|
|
8311
8672
|
fill: "#CAC9D5"
|
|
8312
8673
|
}
|
|
8313
8674
|
),
|
|
8314
|
-
/* @__PURE__ */
|
|
8675
|
+
/* @__PURE__ */ jsx32(
|
|
8315
8676
|
"path",
|
|
8316
8677
|
{
|
|
8317
8678
|
d: "M24.9043 19.7451C24.6452 20.2749 24.5 20.8705 24.5 21.5C24.5 23.3373 25.7389 24.8844 27.4268 25.3535C26.8965 27.1804 25.5079 28.7064 23.75 29.1641C21.4908 28.5758 19.84 26.2235 19.8398 23.7354V21.0205L23.75 19.2109L24.9043 19.7451Z",
|
|
8318
8679
|
fill: "#CAC9D5"
|
|
8319
8680
|
}
|
|
8320
8681
|
),
|
|
8321
|
-
/* @__PURE__ */
|
|
8322
|
-
/* @__PURE__ */
|
|
8323
|
-
/* @__PURE__ */
|
|
8682
|
+
/* @__PURE__ */ jsx32("path", { d: "M30.5908 18.3184L28.2861 21.0459H30.5908V22.4092H26.5V21.0459L28.8115 18.3184H26.5V16.9541H30.5908V18.3184Z", fill: "#CAC9D5" }),
|
|
8683
|
+
/* @__PURE__ */ jsx32("path", { d: "M36.0459 15.5908L33.7412 18.3184H36.0459V19.6816H31.9541V18.3184L34.2656 15.5908H31.9541V14.2275H36.0459V15.5908Z", fill: "#CAC9D5" }),
|
|
8684
|
+
/* @__PURE__ */ jsx32(
|
|
8324
8685
|
"path",
|
|
8325
8686
|
{
|
|
8326
8687
|
d: "M18.5 9C19.5384 9 20.5536 9.30789 21.417 9.88477C22.2802 10.4616 22.9532 11.282 23.3506 12.2412C23.7478 13.2004 23.852 14.2561 23.6494 15.2744C23.4468 16.2928 22.9461 17.2278 22.2119 17.9619C21.8356 18.3383 21.4066 18.6536 20.9404 18.8984L20.248 19.2002C20.0129 19.2832 19.771 19.3504 19.5244 19.3994C18.5062 19.602 17.4504 19.4978 16.4912 19.1006C15.5319 18.7032 14.7117 18.0302 14.1348 17.167C13.5579 16.3036 13.25 15.2884 13.25 14.25C13.25 12.8576 13.8035 11.5227 14.7881 10.5381C15.7726 9.55352 17.1076 9 18.5 9Z",
|
|
@@ -8331,7 +8692,7 @@ function EmptyModQueueIcon({ className }) {
|
|
|
8331
8692
|
}
|
|
8332
8693
|
|
|
8333
8694
|
// src/components/ModQueueList/ModQueueList.tsx
|
|
8334
|
-
import { Fragment as
|
|
8695
|
+
import { Fragment as Fragment12, jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
8335
8696
|
var matches = (item, q) => {
|
|
8336
8697
|
if (!q) {
|
|
8337
8698
|
return true;
|
|
@@ -8359,7 +8720,7 @@ function ModQueueList({
|
|
|
8359
8720
|
onDeny,
|
|
8360
8721
|
className
|
|
8361
8722
|
}) {
|
|
8362
|
-
const [internalQuery, setInternalQuery] =
|
|
8723
|
+
const [internalQuery, setInternalQuery] = useState10("");
|
|
8363
8724
|
const query = searchValue !== void 0 ? searchValue : internalQuery;
|
|
8364
8725
|
const handleSearchChange = (value) => {
|
|
8365
8726
|
if (searchValue === void 0) {
|
|
@@ -8368,33 +8729,33 @@ function ModQueueList({
|
|
|
8368
8729
|
onSearchChange?.(value);
|
|
8369
8730
|
};
|
|
8370
8731
|
const internalSearch = showSearch && !searchSlot;
|
|
8371
|
-
const filtered =
|
|
8372
|
-
return /* @__PURE__ */
|
|
8373
|
-
searchSlot ? /* @__PURE__ */
|
|
8732
|
+
const filtered = useMemo6(() => internalSearch ? items.filter((item) => matches(item, query)) : items, [internalSearch, items, query]);
|
|
8733
|
+
return /* @__PURE__ */ jsxs23("div", { className: classNames20("ls-modqueue", className), id, children: [
|
|
8734
|
+
searchSlot ? /* @__PURE__ */ jsx33("div", { className: "ls-modqueue__search-slot", children: searchSlot }) : showSearch ? /* @__PURE__ */ jsx33("div", { className: "ls-modqueue__search-slot", children: /* @__PURE__ */ jsx33(
|
|
8374
8735
|
LSInput,
|
|
8375
8736
|
{
|
|
8376
8737
|
size: "small",
|
|
8377
8738
|
placeholder: searchPlaceholder,
|
|
8378
|
-
startAdornment: /* @__PURE__ */
|
|
8739
|
+
startAdornment: /* @__PURE__ */ jsx33(SearchIcon, { className: "ls-modqueue__search-icon" }),
|
|
8379
8740
|
value: query,
|
|
8380
8741
|
onChange: (e) => handleSearchChange(String(e.target.value ?? ""))
|
|
8381
8742
|
}
|
|
8382
8743
|
) }) : null,
|
|
8383
|
-
filtered.length === 0 ? /* @__PURE__ */
|
|
8384
|
-
/* @__PURE__ */
|
|
8385
|
-
/* @__PURE__ */
|
|
8386
|
-
] }) : /* @__PURE__ */
|
|
8387
|
-
canModerate && (onDeny || onApprove) ? /* @__PURE__ */
|
|
8388
|
-
onDeny ? /* @__PURE__ */
|
|
8389
|
-
/* @__PURE__ */
|
|
8744
|
+
filtered.length === 0 ? /* @__PURE__ */ jsxs23("div", { className: "ls-modqueue__empty", children: [
|
|
8745
|
+
/* @__PURE__ */ jsx33("span", { className: "ls-modqueue__empty-icon", children: emptyIcon ?? /* @__PURE__ */ jsx33(EmptyModQueueIcon, {}) }),
|
|
8746
|
+
/* @__PURE__ */ jsx33("span", { children: emptyText })
|
|
8747
|
+
] }) : /* @__PURE__ */ jsxs23(Fragment12, { children: [
|
|
8748
|
+
canModerate && (onDeny || onApprove) ? /* @__PURE__ */ jsxs23("div", { className: "ls-modqueue__bulk", children: [
|
|
8749
|
+
onDeny ? /* @__PURE__ */ jsxs23(ButtonBase, { className: "ls-modqueue__bulk-btn ls-modqueue__bulk-btn--deny", disableRipple: true, onClick: () => onDeny("all"), children: [
|
|
8750
|
+
/* @__PURE__ */ jsx33(CrossBoxIcon, { className: "ls-modqueue__bulk-icon" }),
|
|
8390
8751
|
denyAllLabel
|
|
8391
8752
|
] }) : null,
|
|
8392
|
-
onApprove ? /* @__PURE__ */
|
|
8393
|
-
/* @__PURE__ */
|
|
8753
|
+
onApprove ? /* @__PURE__ */ jsxs23(ButtonBase, { className: "ls-modqueue__bulk-btn ls-modqueue__bulk-btn--approve", disableRipple: true, onClick: () => onApprove("all"), children: [
|
|
8754
|
+
/* @__PURE__ */ jsx33(TickBoxIcon, { className: "ls-modqueue__bulk-icon" }),
|
|
8394
8755
|
approveAllLabel
|
|
8395
8756
|
] }) : null
|
|
8396
8757
|
] }) : null,
|
|
8397
|
-
/* @__PURE__ */
|
|
8758
|
+
/* @__PURE__ */ jsx33("div", { className: "ls-modqueue__list", children: filtered.map((item) => /* @__PURE__ */ jsx33(
|
|
8398
8759
|
ModQueueItem,
|
|
8399
8760
|
{
|
|
8400
8761
|
icon: item.icon,
|
|
@@ -8405,7 +8766,7 @@ function ModQueueList({
|
|
|
8405
8766
|
message: showMessages ? item.message : void 0,
|
|
8406
8767
|
onApprove: () => onApprove?.(item.id),
|
|
8407
8768
|
onDeny: () => onDeny?.(item.id),
|
|
8408
|
-
actions: item.actions ?? (canModerate ? void 0 : /* @__PURE__ */
|
|
8769
|
+
actions: item.actions ?? (canModerate ? void 0 : /* @__PURE__ */ jsx33("span", { className: "ls-modqueue__readonly", children: "read-only" }))
|
|
8409
8770
|
},
|
|
8410
8771
|
item.id
|
|
8411
8772
|
)) })
|
|
@@ -8415,30 +8776,30 @@ function ModQueueList({
|
|
|
8415
8776
|
ModQueueList.displayName = "ModQueueList";
|
|
8416
8777
|
|
|
8417
8778
|
// src/components/ModActivityLog/ModActivityLog.tsx
|
|
8418
|
-
import { useEffect as
|
|
8779
|
+
import { useEffect as useEffect8, useRef as useRef8 } from "react";
|
|
8419
8780
|
import classNames21 from "classnames";
|
|
8420
|
-
import { jsx as
|
|
8781
|
+
import { jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
8421
8782
|
function ModActivityLog({ logs, emptyText, onClear, clearLabel = "Clear logs", autoScroll, className }) {
|
|
8422
|
-
const listRef =
|
|
8423
|
-
|
|
8783
|
+
const listRef = useRef8(null);
|
|
8784
|
+
useEffect8(() => {
|
|
8424
8785
|
if (autoScroll && listRef.current) {
|
|
8425
8786
|
listRef.current.scrollTop = listRef.current.scrollHeight;
|
|
8426
8787
|
}
|
|
8427
8788
|
}, [logs, autoScroll]);
|
|
8428
|
-
return /* @__PURE__ */
|
|
8429
|
-
onClear && logs.length > 0 ? /* @__PURE__ */
|
|
8430
|
-
logs.length === 0 ? /* @__PURE__ */
|
|
8789
|
+
return /* @__PURE__ */ jsxs24("div", { className: classNames21("ls-modlog", className), children: [
|
|
8790
|
+
onClear && logs.length > 0 ? /* @__PURE__ */ jsx34("div", { className: "ls-modlog__toolbar", children: /* @__PURE__ */ jsx34("button", { type: "button", className: "ls-modlog__clear", onClick: onClear, children: clearLabel }) }) : null,
|
|
8791
|
+
logs.length === 0 ? /* @__PURE__ */ jsx34("div", { className: "ls-modlog__empty", children: emptyText ?? "No activity yet" }) : /* @__PURE__ */ jsx34("div", { className: "ls-modlog__list", ref: listRef, children: logs.map((log, i) => {
|
|
8431
8792
|
const rowStyle = {
|
|
8432
8793
|
...log.tabColor ? { ["--ls-modlog-accent"]: log.tabColor } : {},
|
|
8433
8794
|
...log.barColor ? { ["--ls-modlog-bar"]: log.barColor } : {}
|
|
8434
8795
|
};
|
|
8435
|
-
return /* @__PURE__ */
|
|
8436
|
-
/* @__PURE__ */
|
|
8437
|
-
log.avatar ? /* @__PURE__ */
|
|
8438
|
-
log.title ? /* @__PURE__ */
|
|
8439
|
-
log.time ? /* @__PURE__ */
|
|
8796
|
+
return /* @__PURE__ */ jsxs24("div", { className: "ls-modlog__row", style: rowStyle, children: [
|
|
8797
|
+
/* @__PURE__ */ jsxs24("div", { className: "ls-modlog__head", children: [
|
|
8798
|
+
log.avatar ? /* @__PURE__ */ jsx34("img", { className: "ls-modlog__avatar", src: log.avatar, alt: "" }) : null,
|
|
8799
|
+
log.title ? /* @__PURE__ */ jsx34("span", { className: "ls-modlog__title", children: log.title }) : null,
|
|
8800
|
+
log.time ? /* @__PURE__ */ jsx34("span", { className: "ls-modlog__time", children: log.time }) : null
|
|
8440
8801
|
] }),
|
|
8441
|
-
log.message ? /* @__PURE__ */
|
|
8802
|
+
log.message ? /* @__PURE__ */ jsx34("div", { className: "ls-modlog__message", children: log.message }) : null
|
|
8442
8803
|
] }, log.id ?? i);
|
|
8443
8804
|
}) })
|
|
8444
8805
|
] });
|
|
@@ -8446,9 +8807,9 @@ function ModActivityLog({ logs, emptyText, onClear, clearLabel = "Clear logs", a
|
|
|
8446
8807
|
ModActivityLog.displayName = "ModActivityLog";
|
|
8447
8808
|
|
|
8448
8809
|
// src/components/SongRequestList/SongRequestList.tsx
|
|
8449
|
-
import { useState as
|
|
8810
|
+
import { useState as useState11 } from "react";
|
|
8450
8811
|
import classNames22 from "classnames";
|
|
8451
|
-
import { jsx as
|
|
8812
|
+
import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
8452
8813
|
function SongRequestList({
|
|
8453
8814
|
nowPlaying,
|
|
8454
8815
|
progress = 0,
|
|
@@ -8467,7 +8828,7 @@ function SongRequestList({
|
|
|
8467
8828
|
emptyText,
|
|
8468
8829
|
className
|
|
8469
8830
|
}) {
|
|
8470
|
-
const [addValue, setAddValue] =
|
|
8831
|
+
const [addValue, setAddValue] = useState11("");
|
|
8471
8832
|
const submitAdd = () => {
|
|
8472
8833
|
const query = addValue.trim();
|
|
8473
8834
|
if (!query || addDisabled || !onAddSong) {
|
|
@@ -8476,8 +8837,8 @@ function SongRequestList({
|
|
|
8476
8837
|
onAddSong(query);
|
|
8477
8838
|
setAddValue("");
|
|
8478
8839
|
};
|
|
8479
|
-
const addBar = onAddSong ? /* @__PURE__ */
|
|
8480
|
-
/* @__PURE__ */
|
|
8840
|
+
const addBar = onAddSong ? /* @__PURE__ */ jsxs25("div", { className: "ls-songreq__addbar", children: [
|
|
8841
|
+
/* @__PURE__ */ jsx35(
|
|
8481
8842
|
LSInput,
|
|
8482
8843
|
{
|
|
8483
8844
|
className: "ls-songreq__addinput",
|
|
@@ -8493,51 +8854,51 @@ function SongRequestList({
|
|
|
8493
8854
|
}
|
|
8494
8855
|
}
|
|
8495
8856
|
),
|
|
8496
|
-
/* @__PURE__ */
|
|
8857
|
+
/* @__PURE__ */ jsx35(LSButton, { size: "small", label: addLabel, disabled: addDisabled || !addValue.trim(), onClick: submitAdd })
|
|
8497
8858
|
] }) : null;
|
|
8498
8859
|
if (!nowPlaying) {
|
|
8499
8860
|
if (!addBar) {
|
|
8500
|
-
return /* @__PURE__ */
|
|
8861
|
+
return /* @__PURE__ */ jsx35("div", { className: classNames22("ls-songreq", "ls-songreq--empty", className), children: emptyText ?? "Nothing playing" });
|
|
8501
8862
|
}
|
|
8502
|
-
return /* @__PURE__ */
|
|
8863
|
+
return /* @__PURE__ */ jsxs25("div", { className: classNames22("ls-songreq", className), children: [
|
|
8503
8864
|
addBar,
|
|
8504
|
-
/* @__PURE__ */
|
|
8865
|
+
/* @__PURE__ */ jsx35("div", { className: "ls-songreq__empty", children: emptyText ?? "Nothing playing" })
|
|
8505
8866
|
] });
|
|
8506
8867
|
}
|
|
8507
8868
|
const clampedProgress = Math.min(100, Math.max(0, progress));
|
|
8508
|
-
return /* @__PURE__ */
|
|
8869
|
+
return /* @__PURE__ */ jsxs25("div", { className: classNames22("ls-songreq", className), children: [
|
|
8509
8870
|
addBar,
|
|
8510
|
-
/* @__PURE__ */
|
|
8511
|
-
showArt && nowPlaying.art ? /* @__PURE__ */
|
|
8512
|
-
/* @__PURE__ */
|
|
8513
|
-
/* @__PURE__ */
|
|
8514
|
-
nowPlaying.artist ? /* @__PURE__ */
|
|
8515
|
-
showRequester && nowPlaying.requester ? /* @__PURE__ */
|
|
8871
|
+
/* @__PURE__ */ jsxs25("div", { className: "ls-songreq__now", children: [
|
|
8872
|
+
showArt && nowPlaying.art ? /* @__PURE__ */ jsx35("img", { className: "ls-songreq__art", src: nowPlaying.art, alt: "" }) : null,
|
|
8873
|
+
/* @__PURE__ */ jsxs25("div", { className: "ls-songreq__nowbody", children: [
|
|
8874
|
+
/* @__PURE__ */ jsx35("div", { className: "ls-songreq__title", children: nowPlaying.title }),
|
|
8875
|
+
nowPlaying.artist ? /* @__PURE__ */ jsx35("div", { className: "ls-songreq__artist", children: nowPlaying.artist }) : null,
|
|
8876
|
+
showRequester && nowPlaying.requester ? /* @__PURE__ */ jsxs25("div", { className: "ls-songreq__requester", children: [
|
|
8516
8877
|
"requested by ",
|
|
8517
8878
|
nowPlaying.requester
|
|
8518
8879
|
] }) : null,
|
|
8519
|
-
/* @__PURE__ */
|
|
8880
|
+
/* @__PURE__ */ jsx35("div", { className: "ls-songreq__progress", children: /* @__PURE__ */ jsx35("div", { className: "ls-songreq__progressbar", style: { width: `${clampedProgress}%` } }) })
|
|
8520
8881
|
] }),
|
|
8521
|
-
/* @__PURE__ */
|
|
8522
|
-
onPlayPause ? /* @__PURE__ */
|
|
8523
|
-
onSkip ? /* @__PURE__ */
|
|
8882
|
+
/* @__PURE__ */ jsxs25("div", { className: "ls-songreq__controls", children: [
|
|
8883
|
+
onPlayPause ? /* @__PURE__ */ jsx35("button", { type: "button", className: "ls-songreq__btn", onClick: onPlayPause, title: isPlaying ? "Pause" : "Play", "aria-label": isPlaying ? "Pause" : "Play", children: isPlaying ? "\u23F8" : "\u25B6" }) : null,
|
|
8884
|
+
onSkip ? /* @__PURE__ */ jsx35("button", { type: "button", className: "ls-songreq__btn", onClick: onSkip, title: "Skip", "aria-label": "Skip", children: "\u23ED" }) : null
|
|
8524
8885
|
] })
|
|
8525
8886
|
] }),
|
|
8526
|
-
showQueue ? /* @__PURE__ */
|
|
8527
|
-
/* @__PURE__ */
|
|
8887
|
+
showQueue ? /* @__PURE__ */ jsxs25("div", { className: "ls-songreq__queue", children: [
|
|
8888
|
+
/* @__PURE__ */ jsxs25("div", { className: "ls-songreq__queuehead", children: [
|
|
8528
8889
|
"Up next \xB7 ",
|
|
8529
8890
|
queue.length
|
|
8530
8891
|
] }),
|
|
8531
|
-
/* @__PURE__ */
|
|
8532
|
-
showArt && item.art ? /* @__PURE__ */
|
|
8533
|
-
/* @__PURE__ */
|
|
8534
|
-
/* @__PURE__ */
|
|
8535
|
-
/* @__PURE__ */
|
|
8892
|
+
/* @__PURE__ */ jsx35("div", { className: "ls-songreq__queuelist", children: queue.length === 0 ? /* @__PURE__ */ jsx35("div", { className: "ls-songreq__queueempty", children: "Queue is empty" }) : queue.map((item) => /* @__PURE__ */ jsxs25("div", { className: "ls-songreq__item", children: [
|
|
8893
|
+
showArt && item.art ? /* @__PURE__ */ jsx35("img", { className: "ls-songreq__itemart", src: item.art, alt: "" }) : null,
|
|
8894
|
+
/* @__PURE__ */ jsxs25("div", { className: "ls-songreq__itembody", children: [
|
|
8895
|
+
/* @__PURE__ */ jsx35("div", { className: "ls-songreq__itemtitle", children: item.title }),
|
|
8896
|
+
/* @__PURE__ */ jsxs25("div", { className: "ls-songreq__itemmeta", children: [
|
|
8536
8897
|
item.artist,
|
|
8537
8898
|
showRequester && item.requester ? ` \xB7 ${item.requester}` : ""
|
|
8538
8899
|
] })
|
|
8539
8900
|
] }),
|
|
8540
|
-
onRemove ? /* @__PURE__ */
|
|
8901
|
+
onRemove ? /* @__PURE__ */ jsx35("button", { type: "button", className: "ls-songreq__remove", onClick: () => onRemove(item.id), title: "Remove", "aria-label": "Remove", children: "\u2715" }) : null
|
|
8541
8902
|
] }, item.id)) })
|
|
8542
8903
|
] }) : null
|
|
8543
8904
|
] });
|
|
@@ -8545,14 +8906,14 @@ function SongRequestList({
|
|
|
8545
8906
|
SongRequestList.displayName = "SongRequestList";
|
|
8546
8907
|
|
|
8547
8908
|
// src/se-import/ui/MarketplacePicker.tsx
|
|
8548
|
-
import { useEffect as
|
|
8549
|
-
import { jsx as
|
|
8909
|
+
import { useEffect as useEffect9, useMemo as useMemo7, useState as useState12 } from "react";
|
|
8910
|
+
import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
8550
8911
|
function MarketplacePicker({ seWidgetType, fetchMarketplaceOverlay, CustomEmbed, onPick, onCancel }) {
|
|
8551
|
-
const candidateIds =
|
|
8552
|
-
const [candidates, setCandidates] =
|
|
8553
|
-
const [activeId, setActiveId] =
|
|
8554
|
-
const [activeLayerId, setActiveLayerId] =
|
|
8555
|
-
|
|
8912
|
+
const candidateIds = useMemo7(() => getMarketplaceCandidates(seWidgetType), [seWidgetType]);
|
|
8913
|
+
const [candidates, setCandidates] = useState12(() => candidateIds.map((id) => ({ id, loading: true })));
|
|
8914
|
+
const [activeId, setActiveId] = useState12(candidateIds[0] ?? null);
|
|
8915
|
+
const [activeLayerId, setActiveLayerId] = useState12(null);
|
|
8916
|
+
useEffect9(() => {
|
|
8556
8917
|
let cancelled = false;
|
|
8557
8918
|
candidateIds.forEach(async (id) => {
|
|
8558
8919
|
try {
|
|
@@ -8569,8 +8930,8 @@ function MarketplacePicker({ seWidgetType, fetchMarketplaceOverlay, CustomEmbed,
|
|
|
8569
8930
|
};
|
|
8570
8931
|
}, [candidateIds, fetchMarketplaceOverlay]);
|
|
8571
8932
|
const activeCandidate = candidates.find((c) => c.id === activeId);
|
|
8572
|
-
const activeLayers =
|
|
8573
|
-
|
|
8933
|
+
const activeLayers = useMemo7(() => activeCandidate?.overlay ? listTransplantableLayers(activeCandidate.overlay) : [], [activeCandidate?.overlay]);
|
|
8934
|
+
useEffect9(() => {
|
|
8574
8935
|
if (activeLayers.length > 0 && !activeLayerId) {
|
|
8575
8936
|
setActiveLayerId(activeLayers[0].id);
|
|
8576
8937
|
}
|
|
@@ -8582,24 +8943,24 @@ function MarketplacePicker({ seWidgetType, fetchMarketplaceOverlay, CustomEmbed,
|
|
|
8582
8943
|
onPick(transplant);
|
|
8583
8944
|
};
|
|
8584
8945
|
if (candidateIds.length === 0) {
|
|
8585
|
-
return /* @__PURE__ */
|
|
8586
|
-
/* @__PURE__ */
|
|
8587
|
-
/* @__PURE__ */
|
|
8946
|
+
return /* @__PURE__ */ jsxs26("div", { className: "ui-flex-column ui-gap-2", style: { padding: 16 }, children: [
|
|
8947
|
+
/* @__PURE__ */ jsx36("div", { style: { fontWeight: 600 }, children: "No marketplace replacements yet" }),
|
|
8948
|
+
/* @__PURE__ */ jsxs26("div", { style: { fontSize: 13, opacity: 0.8 }, children: [
|
|
8588
8949
|
"No curated marketplace overlays are listed for ",
|
|
8589
|
-
/* @__PURE__ */
|
|
8950
|
+
/* @__PURE__ */ jsx36("code", { children: seWidgetType }),
|
|
8590
8951
|
" yet. Use AI generation or skip the widget for now."
|
|
8591
8952
|
] }),
|
|
8592
|
-
/* @__PURE__ */
|
|
8953
|
+
/* @__PURE__ */ jsx36("div", { className: "ui-flex-row", style: { marginTop: 8 }, children: /* @__PURE__ */ jsx36(LSButton, { type: "button", color: "secondary", onClick: onCancel, label: "Close" }) })
|
|
8593
8954
|
] });
|
|
8594
8955
|
}
|
|
8595
|
-
return /* @__PURE__ */
|
|
8596
|
-
/* @__PURE__ */
|
|
8597
|
-
/* @__PURE__ */
|
|
8956
|
+
return /* @__PURE__ */ jsxs26("div", { className: "ui-flex-column ui-gap-2", style: { padding: 16, minHeight: 420 }, children: [
|
|
8957
|
+
/* @__PURE__ */ jsx36("div", { style: { fontWeight: 600, fontSize: 16 }, children: "Pick a marketplace replacement" }),
|
|
8958
|
+
/* @__PURE__ */ jsxs26("div", { style: { fontSize: 13, opacity: 0.8 }, children: [
|
|
8598
8959
|
"Replacing ",
|
|
8599
|
-
/* @__PURE__ */
|
|
8960
|
+
/* @__PURE__ */ jsx36("code", { children: seWidgetType }),
|
|
8600
8961
|
" with a layer from a curated Lumia Marketplace overlay."
|
|
8601
8962
|
] }),
|
|
8602
|
-
/* @__PURE__ */
|
|
8963
|
+
/* @__PURE__ */ jsx36("div", { className: "ui-flex-row ui-gap-2", style: { flexWrap: "wrap", marginTop: 4 }, children: candidates.map((c) => /* @__PURE__ */ jsx36(
|
|
8603
8964
|
LSButton,
|
|
8604
8965
|
{
|
|
8605
8966
|
type: "button",
|
|
@@ -8612,37 +8973,37 @@ function MarketplacePicker({ seWidgetType, fetchMarketplaceOverlay, CustomEmbed,
|
|
|
8612
8973
|
},
|
|
8613
8974
|
c.id
|
|
8614
8975
|
)) }),
|
|
8615
|
-
activeCandidate?.error && /* @__PURE__ */
|
|
8976
|
+
activeCandidate?.error && /* @__PURE__ */ jsxs26("div", { style: { padding: 12, borderRadius: 6, background: "rgba(220,38,38,0.15)", color: "#fecaca", fontSize: 13 }, children: [
|
|
8616
8977
|
"Failed to load overlay #",
|
|
8617
8978
|
activeCandidate.id,
|
|
8618
8979
|
": ",
|
|
8619
8980
|
activeCandidate.error
|
|
8620
8981
|
] }),
|
|
8621
|
-
activeCandidate?.loading && /* @__PURE__ */
|
|
8622
|
-
activeCandidate?.overlay && /* @__PURE__ */
|
|
8623
|
-
/* @__PURE__ */
|
|
8624
|
-
/* @__PURE__ */
|
|
8625
|
-
activeLayers.map((l) => /* @__PURE__ */
|
|
8982
|
+
activeCandidate?.loading && /* @__PURE__ */ jsx36("div", { style: { padding: 12, fontSize: 13, opacity: 0.8 }, children: "Loading overlay\u2026" }),
|
|
8983
|
+
activeCandidate?.overlay && /* @__PURE__ */ jsxs26("div", { className: "ui-flex-row ui-gap-2", style: { alignItems: "stretch" }, children: [
|
|
8984
|
+
/* @__PURE__ */ jsxs26("div", { style: { flex: "0 0 200px", display: "flex", flexDirection: "column", gap: 4, maxHeight: 320, overflowY: "auto" }, children: [
|
|
8985
|
+
/* @__PURE__ */ jsx36("div", { style: { fontSize: 12, fontWeight: 600, opacity: 0.8 }, children: "Layers" }),
|
|
8986
|
+
activeLayers.map((l) => /* @__PURE__ */ jsx36(
|
|
8626
8987
|
LSButton,
|
|
8627
8988
|
{
|
|
8628
8989
|
type: "button",
|
|
8629
8990
|
color: l.id === activeLayerId ? "primary" : "secondary",
|
|
8630
8991
|
style: { justifyContent: "flex-start", textAlign: "left" },
|
|
8631
8992
|
onClick: () => setActiveLayerId(l.id),
|
|
8632
|
-
label: /* @__PURE__ */
|
|
8633
|
-
/* @__PURE__ */
|
|
8634
|
-
/* @__PURE__ */
|
|
8993
|
+
label: /* @__PURE__ */ jsxs26("div", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: [
|
|
8994
|
+
/* @__PURE__ */ jsx36("div", { style: { fontSize: 12, fontWeight: 600 }, children: l.label }),
|
|
8995
|
+
/* @__PURE__ */ jsx36("div", { style: { fontSize: 10, opacity: 0.7 }, children: l.type })
|
|
8635
8996
|
] })
|
|
8636
8997
|
},
|
|
8637
8998
|
l.id
|
|
8638
8999
|
)),
|
|
8639
|
-
activeLayers.length === 0 && /* @__PURE__ */
|
|
9000
|
+
activeLayers.length === 0 && /* @__PURE__ */ jsx36("div", { style: { fontSize: 12, opacity: 0.7 }, children: "No transplantable layers." })
|
|
8640
9001
|
] }),
|
|
8641
|
-
/* @__PURE__ */
|
|
9002
|
+
/* @__PURE__ */ jsx36("div", { style: { flex: 1, minHeight: 240, background: "rgba(0,0,0,0.3)", borderRadius: 6, overflow: "hidden" }, children: /* @__PURE__ */ jsx36(ActiveLayerPreview, { overlay: activeCandidate.overlay, layerId: activeLayerId, CustomEmbed }) })
|
|
8642
9003
|
] }),
|
|
8643
|
-
/* @__PURE__ */
|
|
8644
|
-
/* @__PURE__ */
|
|
8645
|
-
/* @__PURE__ */
|
|
9004
|
+
/* @__PURE__ */ jsxs26("div", { className: "ui-flex-row ui-gap-2", style: { marginTop: 12, justifyContent: "flex-end" }, children: [
|
|
9005
|
+
/* @__PURE__ */ jsx36(LSButton, { type: "button", color: "secondary", variant: "outlined", onClick: onCancel, label: "Cancel" }),
|
|
9006
|
+
/* @__PURE__ */ jsx36(
|
|
8646
9007
|
LSButton,
|
|
8647
9008
|
{
|
|
8648
9009
|
type: "button",
|
|
@@ -8656,13 +9017,13 @@ function MarketplacePicker({ seWidgetType, fetchMarketplaceOverlay, CustomEmbed,
|
|
|
8656
9017
|
] });
|
|
8657
9018
|
}
|
|
8658
9019
|
function ActiveLayerPreview({ overlay, layerId, CustomEmbed }) {
|
|
8659
|
-
if (!layerId) return /* @__PURE__ */
|
|
9020
|
+
if (!layerId) return /* @__PURE__ */ jsx36("div", { style: { padding: 16, fontSize: 12, opacity: 0.7 }, children: "Select a layer to preview." });
|
|
8660
9021
|
const module = overlay.settings?.modules?.[layerId];
|
|
8661
|
-
if (!module) return /* @__PURE__ */
|
|
9022
|
+
if (!module) return /* @__PURE__ */ jsx36("div", { style: { padding: 16, fontSize: 12, opacity: 0.7 }, children: "Layer not found." });
|
|
8662
9023
|
const type = module.settings?.type;
|
|
8663
9024
|
if (type === "custom" && module.content && CustomEmbed) {
|
|
8664
9025
|
const c = module.content;
|
|
8665
|
-
return /* @__PURE__ */
|
|
9026
|
+
return /* @__PURE__ */ jsx36(
|
|
8666
9027
|
CustomEmbed,
|
|
8667
9028
|
{
|
|
8668
9029
|
codeId: c.codeId ?? layerId,
|
|
@@ -8673,11 +9034,11 @@ function ActiveLayerPreview({ overlay, layerId, CustomEmbed }) {
|
|
|
8673
9034
|
}
|
|
8674
9035
|
);
|
|
8675
9036
|
}
|
|
8676
|
-
return /* @__PURE__ */
|
|
8677
|
-
/* @__PURE__ */
|
|
8678
|
-
/* @__PURE__ */
|
|
9037
|
+
return /* @__PURE__ */ jsxs26("div", { style: { padding: 16, fontSize: 12 }, children: [
|
|
9038
|
+
/* @__PURE__ */ jsx36("div", { style: { fontWeight: 600, marginBottom: 8 }, children: module.settings?.title ?? type }),
|
|
9039
|
+
/* @__PURE__ */ jsxs26("div", { style: { opacity: 0.8 }, children: [
|
|
8679
9040
|
"Preview not available for module type ",
|
|
8680
|
-
/* @__PURE__ */
|
|
9041
|
+
/* @__PURE__ */ jsx36("code", { children: String(type) }),
|
|
8681
9042
|
'. Click "Use this layer" to transplant it anyway.'
|
|
8682
9043
|
] })
|
|
8683
9044
|
] });
|
|
@@ -9835,7 +10196,7 @@ var custom_widget_default = 'data:image/svg+xml,<svg width="16" height="16" view
|
|
|
9835
10196
|
var assets_default = 'data:image/svg+xml,<svg width="48" height="59" viewBox="0 0 48 59" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M47.6196 24.5513V41.5869C47.6196 42.3399 47.3199 43.0622 46.7862 43.5946C46.2525 44.1271 45.5285 44.426 44.7738 44.4261H27.6978C26.9431 44.426 26.2191 44.1271 25.6854 43.5946C25.1518 43.0622 24.8521 42.3399 24.8521 41.5869V18.8726C24.8521 18.1197 25.1517 17.3974 25.6854 16.8649C26.2191 16.3325 26.9431 16.0335 27.6978 16.0335H39.0818L47.6196 24.5513ZM32.7518 30.6559C32.3012 30.6559 31.8691 30.8348 31.5504 31.1534C31.2317 31.4721 31.0525 31.9044 31.0525 32.3551V36.9898C31.0525 37.4405 31.2317 37.8728 31.5504 38.1915C31.8691 38.5101 32.3012 38.689 32.7518 38.6891H38.0045C38.4552 38.6891 38.8876 38.5102 39.2063 38.1915C39.525 37.8728 39.7038 37.4405 39.7038 36.9898V36.0049L41.8168 37.8866C42.3143 38.3295 43.1027 37.976 43.1027 37.3092V31.8083C43.1027 31.1409 42.3143 30.788 41.8168 31.2309L39.7038 33.1126V32.3551C39.7038 31.9044 39.525 31.4721 39.2063 31.1534C38.8876 30.8347 38.4552 30.6559 38.0045 30.6559H32.7518ZM37.6589 25.9711H45.485L37.6589 18.163V25.9711Z" fill="white"/>%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M22.7675 8.51781V25.5534C22.7675 26.3064 22.4678 27.0287 21.9341 27.5611C21.4004 28.0936 20.6765 28.3925 19.9217 28.3926H2.84579C2.09106 28.3925 1.36706 28.0936 0.833383 27.5611C0.299704 27.0287 0 26.3064 0 25.5534V2.83914C3.46516e-05 2.08616 0.299694 1.36386 0.833383 0.831425C1.36706 0.298996 2.09106 4.12048e-05 2.84579 0H14.2297L22.7675 8.51781ZM15.5614 14.0434C15.4739 14.0241 15.383 14.0247 15.2956 14.045L9.28308 15.4475C9.1509 15.4784 9.03315 15.5534 8.94878 15.6597C8.86444 15.766 8.81842 15.8978 8.81843 16.0335V21.3474C8.45759 21.2198 8.06549 21.2104 7.6989 21.3203C7.33226 21.4304 7.01003 21.6543 6.77901 21.9596C6.54799 22.2648 6.42011 22.6357 6.4138 23.0184C6.4075 23.4012 6.52298 23.776 6.74378 24.0886C6.96461 24.4013 7.27932 24.6355 7.64215 24.7576C8.00495 24.8797 8.39716 24.8834 8.76206 24.7678C9.12698 24.6522 9.44546 24.4232 9.67178 24.1145C9.8981 23.8057 10.0205 23.433 10.0209 23.0501V18.9157L14.831 17.7934V20.1445C14.47 20.0168 14.0778 20.0074 13.7111 20.1174C13.3444 20.2275 13.0222 20.4514 12.7912 20.7567C12.5603 21.0619 12.4326 21.4328 12.4264 21.8155C12.4201 22.1983 12.5358 22.5734 12.7567 22.8861C12.9777 23.1987 13.2923 23.4328 13.6551 23.5547C14.018 23.6766 14.4105 23.6799 14.7754 23.5641C15.1403 23.4483 15.459 23.2193 15.6851 22.9104C15.9112 22.6015 16.0333 22.2288 16.0335 21.8461C16.0335 21.8032 16.032 21.7605 16.0292 21.7184C16.032 21.694 16.0335 21.6697 16.0335 21.6456V14.6306C16.0335 14.5401 16.013 14.4506 15.9736 14.3691C15.9343 14.2876 15.8769 14.216 15.8061 14.1597L15.8022 14.1569C15.7315 14.1017 15.649 14.0628 15.5614 14.0434ZM12.8068 9.93757H20.633L12.8068 2.12945V9.93757Z" fill="white"/>%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M11.7445 43.2905C13.0784 43.2905 14.0388 43.2912 14.7699 43.3896C15.4894 43.4863 15.9266 43.6711 16.2504 43.9951C16.5743 44.3193 16.7591 44.7569 16.8559 45.4763C16.9544 46.2074 16.9554 47.1675 16.9554 48.5014V49.9043C16.9554 51.2383 16.9547 52.1987 16.8563 52.9298C16.7595 53.6493 16.5748 54.0865 16.2508 54.4102C15.9265 54.7342 15.489 54.9189 14.7695 55.0158C14.0385 55.1142 13.0784 55.1152 11.7445 55.1152H10.3415C9.00759 55.1152 8.04722 55.1145 7.31607 55.0162C6.59659 54.9194 6.1594 54.7346 5.83564 54.4106C5.51168 54.0864 5.32694 53.6489 5.23007 52.9294C5.13166 52.1984 5.13065 51.2382 5.13065 49.9043V48.5014C5.13065 47.1675 5.13135 46.2071 5.22968 45.4759C5.32646 44.7565 5.51124 44.3193 5.83524 43.9955C6.15948 43.6715 6.597 43.4868 7.31646 43.3899C8.04751 43.2915 9.00765 43.2905 10.3415 43.2905H11.7445ZM8.28842 47.459C7.82545 47.4976 7.44577 47.7298 7.10626 48.0027C6.82149 48.2321 6.50307 48.5428 6.13274 48.9124V49.9043C6.13274 50.2663 6.13329 50.5964 6.1347 50.8943L6.91641 50.1126C7.40027 49.6287 7.72283 49.3081 7.98583 49.0956C8.24538 48.8866 8.35792 48.8607 8.40703 48.8572C8.53557 48.8463 8.66468 48.8708 8.78007 48.9285C8.82286 48.9502 8.91773 49.0156 9.08187 49.3074C9.2474 49.602 9.42752 50.0201 9.69683 50.6485L9.73402 50.7358L9.74615 50.7624C9.85061 51.0064 9.94729 51.2321 10.044 51.4102C10.1458 51.5961 10.2932 51.8195 10.5416 51.9731C10.8341 52.1543 11.1831 52.2215 11.5221 52.1622C11.8097 52.111 12.0292 51.959 12.1927 51.8244C12.3484 51.6953 12.5226 51.5211 12.7106 51.3331L12.7313 51.3124C13.0294 51.0143 13.2231 50.8212 13.3823 50.6872C13.5351 50.5582 13.6068 50.5273 13.6461 50.5154C13.7783 50.4755 13.9194 50.4755 14.0516 50.5154C14.0909 50.5273 14.1626 50.5582 14.3155 50.6872C14.4747 50.8212 14.6682 51.0141 14.9668 51.3128L15.9141 52.26C15.9464 51.7564 15.9519 51.1304 15.9533 50.3146L15.9392 50.3009C15.6656 50.0273 15.4301 49.7914 15.2197 49.6139C14.9973 49.4266 14.7552 49.2617 14.4564 49.172C14.0602 49.0525 13.6375 49.0525 13.2413 49.172C12.9425 49.2624 12.7011 49.4266 12.478 49.6139C12.2676 49.7913 12.0321 50.0278 11.7593 50.3013L11.739 50.3208C11.5237 50.5355 11.3971 50.6618 11.2982 50.7424L11.2841 50.7546L11.2759 50.7385C11.2149 50.6263 11.1434 50.4625 11.0234 50.1827L10.9862 50.0958L10.9706 50.0594C10.7209 49.4772 10.5113 48.9874 10.3044 48.6184C10.0904 48.239 9.82392 47.8819 9.40873 47.6743C9.06229 47.5007 8.67451 47.4263 8.28842 47.459ZM14.1996 44.9941C13.6185 44.9941 13.1474 45.4652 13.1474 46.0463C13.1474 46.6274 13.6185 47.0985 14.1996 47.0985C14.7807 47.0985 15.2518 46.6274 15.2518 46.0463C15.2518 45.4652 14.7807 44.9941 14.1996 44.9941Z" fill="white"/>%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M22.7675 38.5807V55.6163C22.7675 56.3693 22.4678 57.0915 21.9341 57.624C21.4004 58.1564 20.6765 58.4554 19.9217 58.4554H2.84579C2.09106 58.4554 1.36706 58.1564 0.833383 57.624C0.299704 57.0915 0 56.3693 0 55.6163V32.902C3.46516e-05 32.149 0.299694 31.4267 0.833383 30.8943C1.36706 30.3619 2.09106 30.0629 2.84579 30.0629H14.2297L22.7675 38.5807ZM10.3415 42.4888C9.03021 42.4888 8.00652 42.488 7.2096 42.5953C6.40115 42.7042 5.76631 42.9309 5.26843 43.4283C4.77051 43.9259 4.54419 44.5607 4.43544 45.3691C4.32825 46.1661 4.32897 47.1901 4.32897 48.5014V49.9043C4.32897 51.2157 4.32816 52.2394 4.43544 53.0363C4.54428 53.8447 4.77099 54.4796 5.26843 54.9774C5.766 55.4754 6.40083 55.7017 7.20921 55.8104C8.00621 55.9176 9.03026 55.9169 10.3415 55.9169H11.7445C13.0558 55.9169 14.0795 55.9177 14.8764 55.8104C15.6849 55.7016 16.3197 55.4749 16.8176 54.9774C17.3155 54.4799 17.5418 53.845 17.6506 53.0367C17.7578 52.2397 17.757 51.2156 17.757 49.9043V48.5014C17.757 47.1901 17.7578 46.1664 17.6506 45.3695C17.5417 44.561 17.315 43.9262 16.8176 43.4283C16.32 42.9304 15.6852 42.7041 14.8768 42.5953C14.0798 42.4881 13.0557 42.4888 11.7445 42.4888H10.3415ZM12.8068 40.0004H20.633L12.8068 32.1923V40.0004Z" fill="white"/>%0A</svg>%0A';
|
|
9836
10197
|
|
|
9837
10198
|
// src/se-import/ui/jwtInstructions.ts
|
|
9838
|
-
import { Fragment as
|
|
10199
|
+
import { Fragment as Fragment13, createElement as createElement2 } from "react";
|
|
9839
10200
|
|
|
9840
10201
|
// src/assets/png/streamElements_copy_jwt.png
|
|
9841
10202
|
var streamElements_copy_jwt_default = "data:image/png;base64,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ypP/UqSnMHP00Uejb9++uPvuu/H333/bfqHwwsGnWMq+GzlypBWdKEBtbap77/MzRdNoHP90CoPMyqUoRHF+0qRJVkC777771sq45vEUeB0hy4F9yW0b8q9n+znhr7rqKuy77762LIrGo0aNwgEHHGAnP0Uz2uzsueeeuPXWW202P8Xo2bNn28xaPoXwyiuvYLfddsPtt99uRdwJEybg6aeftmIZ602R78ADD7RBB4rRf/75J1588UU77hTC7r//fnz99de2DPpKcXzuueceaxFC64kVK1bgzTfftAEe9glFZGZzM+u1adOmNnjA8/Fc1WH7eTwzu1kHXniffPIJvvjiCyuuUgy96aabbDtofdSlSxd89NFH9ny0Gdp///1te1hf9hX7lXOFdRs6bBh85kbw3Xff4Y033rBzijeVRx991D4F0bNnT3vOqVOn2vpRROR4nnHGGbZfmY0+f/58K35SIGRbWQf22zfffIPPPvvM1rH6teGsUcA5QluOJUuWWKGU+7MObCOFUta/T58+tv9Znx9//NEK69XbzCdauL22NvNmx7nJc40ePdpeH6w/7arYD6wjzx3t3cV5yvnFJxk4VkuXLsXPP/2EcUa05vzh8R07dMAQc7Nl4IdiNu9XFLQdeC3wSSD24cyZM219o6OlvK57mvvI6aY/yQ8//IBffvnFtpHn5vF8moKLiXCe/f777/j222/tdsJ5dNxxx9m5TRGYbeMTNewfCtGHHXYYfv75Z/vOYBX7hvWjYN21a1fMmDHDjn30Ncn+4rXDMeI85zvnPP9R6dixI6ZMmWLPwUAH5z/bw39oGAlmP3COs0z2F+c6x5njM8zMNY4tg2Wff/65PQ//AWIbeM0w6MPyGDx5++23qwJeLJdjx76j6M+5RVsalsMAIK97Bi1//fVX21ec35wnbDf76c4777TXT7du3ew1yX9XHCGdfcAAIuHc5lzi3OE2ls99eW+yc8L8xn4677zzbOY92/nee+9VBU42NBaO9RjHok2bNjbAyuO5nW3i2Hxvxp9Z+iyf97K33nrLXgtsE/txr732sk8msV95/P/+97+quVD9Hlzb3KxLllRCCCGEEEIIIcSODv+m33vvvW2SHf9ep47Az9RQqKdQ6yH8e576IzUKagjUPPn3O1/UEatrrBuLo19VZ7MEekecp3hKQYzZ1vRVZyZnTdng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";
|
|
@@ -9847,7 +10208,7 @@ function getJwtInstructionSteps({ pasteHint = "above" } = {}) {
|
|
|
9847
10208
|
return [
|
|
9848
10209
|
{
|
|
9849
10210
|
content: createElement2(
|
|
9850
|
-
|
|
10211
|
+
Fragment13,
|
|
9851
10212
|
null,
|
|
9852
10213
|
"Open ",
|
|
9853
10214
|
createElement2(
|
|
@@ -9860,7 +10221,7 @@ function getJwtInstructionSteps({ pasteHint = "above" } = {}) {
|
|
|
9860
10221
|
},
|
|
9861
10222
|
{
|
|
9862
10223
|
content: createElement2(
|
|
9863
|
-
|
|
10224
|
+
Fragment13,
|
|
9864
10225
|
null,
|
|
9865
10226
|
createElement2("img", {
|
|
9866
10227
|
src: streamElementsCopyJwt,
|
|
@@ -9877,7 +10238,7 @@ function getJwtInstructionSteps({ pasteHint = "above" } = {}) {
|
|
|
9877
10238
|
},
|
|
9878
10239
|
{
|
|
9879
10240
|
content: createElement2(
|
|
9880
|
-
|
|
10241
|
+
Fragment13,
|
|
9881
10242
|
null,
|
|
9882
10243
|
"When you're done, click ",
|
|
9883
10244
|
createElement2("strong", null, "Revoke"),
|
|
@@ -9888,7 +10249,7 @@ function getJwtInstructionSteps({ pasteHint = "above" } = {}) {
|
|
|
9888
10249
|
}
|
|
9889
10250
|
|
|
9890
10251
|
// src/se-import/ui/SEImportWizard.tsx
|
|
9891
|
-
import { Fragment as
|
|
10252
|
+
import { Fragment as Fragment14, jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
9892
10253
|
function buildOverlaySaveBody(result, name, preview) {
|
|
9893
10254
|
return {
|
|
9894
10255
|
name: name.trim() || result.overlay.name,
|
|
@@ -9966,9 +10327,9 @@ function panelClass(extra) {
|
|
|
9966
10327
|
return ["se-import-panel", extra].filter(Boolean).join(" ");
|
|
9967
10328
|
}
|
|
9968
10329
|
function ErrorPanel({ message, hint }) {
|
|
9969
|
-
return /* @__PURE__ */
|
|
9970
|
-
/* @__PURE__ */
|
|
9971
|
-
hint && /* @__PURE__ */
|
|
10330
|
+
return /* @__PURE__ */ jsxs27("div", { className: "se-import-error", children: [
|
|
10331
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-error__title", children: message }),
|
|
10332
|
+
hint && /* @__PURE__ */ jsx37("div", { className: "se-import-error__hint", children: hint })
|
|
9972
10333
|
] });
|
|
9973
10334
|
}
|
|
9974
10335
|
function Field({
|
|
@@ -9978,7 +10339,7 @@ function Field({
|
|
|
9978
10339
|
placeholder,
|
|
9979
10340
|
disabled
|
|
9980
10341
|
}) {
|
|
9981
|
-
return /* @__PURE__ */
|
|
10342
|
+
return /* @__PURE__ */ jsx37("div", { className: "se-import-field", children: /* @__PURE__ */ jsx37(
|
|
9982
10343
|
LSInput,
|
|
9983
10344
|
{
|
|
9984
10345
|
label,
|
|
@@ -9990,7 +10351,7 @@ function Field({
|
|
|
9990
10351
|
) });
|
|
9991
10352
|
}
|
|
9992
10353
|
function ProgressBar({ value, max }) {
|
|
9993
|
-
return /* @__PURE__ */
|
|
10354
|
+
return /* @__PURE__ */ jsx37("progress", { className: "se-import-progress", value: max > 0 ? value : 0, max: max || 1 });
|
|
9994
10355
|
}
|
|
9995
10356
|
function StatusCard({
|
|
9996
10357
|
label,
|
|
@@ -10000,18 +10361,18 @@ function StatusCard({
|
|
|
10000
10361
|
icon,
|
|
10001
10362
|
tone = "neutral"
|
|
10002
10363
|
}) {
|
|
10003
|
-
return /* @__PURE__ */
|
|
10004
|
-
/* @__PURE__ */
|
|
10005
|
-
icon && /* @__PURE__ */
|
|
10006
|
-
/* @__PURE__ */
|
|
10364
|
+
return /* @__PURE__ */ jsxs27("div", { className: `se-import-stat se-import-stat--${tone}`, children: [
|
|
10365
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-stat__label", children: [
|
|
10366
|
+
icon && /* @__PURE__ */ jsx37("img", { src: icon, alt: "", className: "se-import-stat__icon" }),
|
|
10367
|
+
/* @__PURE__ */ jsx37("span", { children: label })
|
|
10007
10368
|
] }),
|
|
10008
|
-
/* @__PURE__ */
|
|
10009
|
-
description && /* @__PURE__ */
|
|
10010
|
-
sub && /* @__PURE__ */
|
|
10369
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-stat__value", children: value }),
|
|
10370
|
+
description && /* @__PURE__ */ jsx37("div", { className: "se-import-stat__description", children: description }),
|
|
10371
|
+
sub && /* @__PURE__ */ jsx37("div", { className: "se-import-stat__sub", children: sub })
|
|
10011
10372
|
] });
|
|
10012
10373
|
}
|
|
10013
10374
|
function CoverageCards({ coverage }) {
|
|
10014
|
-
const byStatus =
|
|
10375
|
+
const byStatus = useMemo8(() => {
|
|
10015
10376
|
const acc = { direct: 0, partial: 0, template: 0, placeholder: 0 };
|
|
10016
10377
|
for (const item of coverage.mappings) acc[item.status] += item.count;
|
|
10017
10378
|
return acc;
|
|
@@ -10048,7 +10409,7 @@ function CoverageCards({ coverage }) {
|
|
|
10048
10409
|
}
|
|
10049
10410
|
].filter((card) => card.value > 0);
|
|
10050
10411
|
if (cards.length === 0) return null;
|
|
10051
|
-
return /* @__PURE__ */
|
|
10412
|
+
return /* @__PURE__ */ jsx37("div", { className: "se-import-grid se-import-grid--stats", children: cards.map((card) => /* @__PURE__ */ jsx37(
|
|
10052
10413
|
StatusCard,
|
|
10053
10414
|
{
|
|
10054
10415
|
label: card.label,
|
|
@@ -10068,7 +10429,7 @@ function CustomOverlayPreview({
|
|
|
10068
10429
|
width,
|
|
10069
10430
|
height
|
|
10070
10431
|
}) {
|
|
10071
|
-
const srcdoc =
|
|
10432
|
+
const srcdoc = useMemo8(() => {
|
|
10072
10433
|
const safeData = JSON.stringify(data ?? {});
|
|
10073
10434
|
const safeJs = (js || "").replace(/<\/script>/gi, "<\\/script>");
|
|
10074
10435
|
const safeHtml = (html || "").replace(/<\/script>/gi, "<\\/script>");
|
|
@@ -10085,7 +10446,7 @@ ${safeJs}
|
|
|
10085
10446
|
})().catch(__seImportShowError);
|
|
10086
10447
|
</script></body></html>`;
|
|
10087
10448
|
}, [html, css, js, data]);
|
|
10088
|
-
return /* @__PURE__ */
|
|
10449
|
+
return /* @__PURE__ */ jsx37(
|
|
10089
10450
|
"iframe",
|
|
10090
10451
|
{
|
|
10091
10452
|
title: "ai-preview",
|
|
@@ -10102,11 +10463,11 @@ function StepHeader({
|
|
|
10102
10463
|
title,
|
|
10103
10464
|
subtitle
|
|
10104
10465
|
}) {
|
|
10105
|
-
return /* @__PURE__ */
|
|
10106
|
-
/* @__PURE__ */
|
|
10107
|
-
/* @__PURE__ */
|
|
10108
|
-
/* @__PURE__ */
|
|
10109
|
-
subtitle && /* @__PURE__ */
|
|
10466
|
+
return /* @__PURE__ */ jsxs27("div", { className: "se-import-section-title", children: [
|
|
10467
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-section-title__num", children: number }),
|
|
10468
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-section-title__content", children: [
|
|
10469
|
+
/* @__PURE__ */ jsx37("h3", { children: title }),
|
|
10470
|
+
subtitle && /* @__PURE__ */ jsx37("p", { children: subtitle })
|
|
10110
10471
|
] })
|
|
10111
10472
|
] });
|
|
10112
10473
|
}
|
|
@@ -10136,7 +10497,7 @@ function ModeCard({
|
|
|
10136
10497
|
icon,
|
|
10137
10498
|
onClick
|
|
10138
10499
|
}) {
|
|
10139
|
-
return /* @__PURE__ */
|
|
10500
|
+
return /* @__PURE__ */ jsxs27(
|
|
10140
10501
|
"button",
|
|
10141
10502
|
{
|
|
10142
10503
|
type: "button",
|
|
@@ -10167,8 +10528,8 @@ function ModeCard({
|
|
|
10167
10528
|
e.currentTarget.style.transform = "translateY(0)";
|
|
10168
10529
|
},
|
|
10169
10530
|
children: [
|
|
10170
|
-
icon && /* @__PURE__ */
|
|
10171
|
-
/* @__PURE__ */
|
|
10531
|
+
icon && /* @__PURE__ */ jsx37("span", { className: "se-import-mode-card__icon", children: /* @__PURE__ */ jsx37("img", { src: icon, alt: "" }) }),
|
|
10532
|
+
/* @__PURE__ */ jsx37(
|
|
10172
10533
|
"div",
|
|
10173
10534
|
{
|
|
10174
10535
|
style: {
|
|
@@ -10179,7 +10540,7 @@ function ModeCard({
|
|
|
10179
10540
|
children: title
|
|
10180
10541
|
}
|
|
10181
10542
|
),
|
|
10182
|
-
/* @__PURE__ */
|
|
10543
|
+
/* @__PURE__ */ jsx37(
|
|
10183
10544
|
"div",
|
|
10184
10545
|
{
|
|
10185
10546
|
style: {
|
|
@@ -10191,7 +10552,7 @@ function ModeCard({
|
|
|
10191
10552
|
children: body
|
|
10192
10553
|
}
|
|
10193
10554
|
),
|
|
10194
|
-
caveat && /* @__PURE__ */
|
|
10555
|
+
caveat && /* @__PURE__ */ jsx37("div", { style: { fontSize: 12, color: "var(--se-muted)", marginTop: "auto" }, children: caveat })
|
|
10195
10556
|
]
|
|
10196
10557
|
}
|
|
10197
10558
|
);
|
|
@@ -10201,8 +10562,8 @@ function StepModePicker({
|
|
|
10201
10562
|
onChooseUrl,
|
|
10202
10563
|
onOpenFullImport
|
|
10203
10564
|
}) {
|
|
10204
|
-
return /* @__PURE__ */
|
|
10205
|
-
/* @__PURE__ */
|
|
10565
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--wide"), children: [
|
|
10566
|
+
/* @__PURE__ */ jsx37(
|
|
10206
10567
|
StepHeader,
|
|
10207
10568
|
{
|
|
10208
10569
|
number: 1,
|
|
@@ -10210,7 +10571,7 @@ function StepModePicker({
|
|
|
10210
10571
|
subtitle: "Pick a starting point. You can change your mind from the Back button on the next step."
|
|
10211
10572
|
}
|
|
10212
10573
|
),
|
|
10213
|
-
/* @__PURE__ */
|
|
10574
|
+
/* @__PURE__ */ jsxs27(
|
|
10214
10575
|
"div",
|
|
10215
10576
|
{
|
|
10216
10577
|
style: {
|
|
@@ -10220,38 +10581,38 @@ function StepModePicker({
|
|
|
10220
10581
|
marginTop: onOpenFullImport ? 18 : 8
|
|
10221
10582
|
},
|
|
10222
10583
|
children: [
|
|
10223
|
-
onOpenFullImport && /* @__PURE__ */
|
|
10584
|
+
onOpenFullImport && /* @__PURE__ */ jsx37(
|
|
10224
10585
|
ModeCard,
|
|
10225
10586
|
{
|
|
10226
10587
|
title: "Move your full StreamElements setup",
|
|
10227
10588
|
icon: source_se_default,
|
|
10228
|
-
body: /* @__PURE__ */
|
|
10229
|
-
/* @__PURE__ */
|
|
10230
|
-
/* @__PURE__ */
|
|
10589
|
+
body: /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
10590
|
+
/* @__PURE__ */ jsx37("div", { style: { marginBottom: 12 }, children: "Open the dedicated Lumia Stream import page for counters, commands, loyalty, timers, tips, and activity." }),
|
|
10591
|
+
/* @__PURE__ */ jsx37("ul", { className: "se-import-mode-card__features", children: FULL_IMPORT_FEATURES.map((feat) => /* @__PURE__ */ jsx37("li", { children: feat }, feat)) })
|
|
10231
10592
|
] }),
|
|
10232
10593
|
onClick: onOpenFullImport
|
|
10233
10594
|
}
|
|
10234
10595
|
),
|
|
10235
|
-
/* @__PURE__ */
|
|
10596
|
+
/* @__PURE__ */ jsx37(
|
|
10236
10597
|
ModeCard,
|
|
10237
10598
|
{
|
|
10238
10599
|
primary: true,
|
|
10239
10600
|
title: "Import a single overlay",
|
|
10240
10601
|
icon: assets_default,
|
|
10241
|
-
body: /* @__PURE__ */
|
|
10602
|
+
body: /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
10242
10603
|
"Paste a single overlay's public preview URL to bring just that overlay over.",
|
|
10243
|
-
/* @__PURE__ */
|
|
10604
|
+
/* @__PURE__ */ jsx37("div", { style: { marginTop: 10, color: "var(--se-muted)" }, children: "No login required \u2014 perfect for trying one overlay before deciding whether to migrate your whole account." })
|
|
10244
10605
|
] }),
|
|
10245
10606
|
onClick: onChooseUrl
|
|
10246
10607
|
}
|
|
10247
10608
|
),
|
|
10248
|
-
!onOpenFullImport && /* @__PURE__ */
|
|
10609
|
+
!onOpenFullImport && /* @__PURE__ */ jsx37(
|
|
10249
10610
|
ModeCard,
|
|
10250
10611
|
{
|
|
10251
10612
|
title: "Import everything from StreamElements",
|
|
10252
|
-
body: /* @__PURE__ */
|
|
10253
|
-
/* @__PURE__ */
|
|
10254
|
-
/* @__PURE__ */
|
|
10613
|
+
body: /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
10614
|
+
/* @__PURE__ */ jsx37("div", { style: { marginBottom: 10 }, children: "Connect once and bring over your entire SE setup:" }),
|
|
10615
|
+
/* @__PURE__ */ jsx37(
|
|
10255
10616
|
"ul",
|
|
10256
10617
|
{
|
|
10257
10618
|
style: {
|
|
@@ -10261,7 +10622,7 @@ function StepModePicker({
|
|
|
10261
10622
|
gap: 6,
|
|
10262
10623
|
fontSize: 13
|
|
10263
10624
|
},
|
|
10264
|
-
children: JWT_FEATURES.map((feat) => /* @__PURE__ */
|
|
10625
|
+
children: JWT_FEATURES.map((feat) => /* @__PURE__ */ jsx37("li", { children: feat }, feat))
|
|
10265
10626
|
}
|
|
10266
10627
|
)
|
|
10267
10628
|
] }),
|
|
@@ -10284,8 +10645,8 @@ function StepConnect({
|
|
|
10284
10645
|
setSelectedChannelId,
|
|
10285
10646
|
onUseUrl
|
|
10286
10647
|
}) {
|
|
10287
|
-
return /* @__PURE__ */
|
|
10288
|
-
/* @__PURE__ */
|
|
10648
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--narrow"), children: [
|
|
10649
|
+
/* @__PURE__ */ jsx37(
|
|
10289
10650
|
StepHeader,
|
|
10290
10651
|
{
|
|
10291
10652
|
number: 1,
|
|
@@ -10293,7 +10654,7 @@ function StepConnect({
|
|
|
10293
10654
|
subtitle: "Paste your StreamElements JWT to import overlays, live counters, chat commands, loyalty points, watch time, and recent events. The token is read in your browser only. Lumia never sends it to our servers."
|
|
10294
10655
|
}
|
|
10295
10656
|
),
|
|
10296
|
-
/* @__PURE__ */
|
|
10657
|
+
/* @__PURE__ */ jsx37(
|
|
10297
10658
|
Field,
|
|
10298
10659
|
{
|
|
10299
10660
|
label: "StreamElements JWT",
|
|
@@ -10303,16 +10664,16 @@ function StepConnect({
|
|
|
10303
10664
|
disabled: busy
|
|
10304
10665
|
}
|
|
10305
10666
|
),
|
|
10306
|
-
busy && /* @__PURE__ */
|
|
10307
|
-
/* @__PURE__ */
|
|
10308
|
-
/* @__PURE__ */
|
|
10667
|
+
busy && /* @__PURE__ */ jsxs27("div", { className: "se-import-token-loading", "aria-live": "polite", children: [
|
|
10668
|
+
/* @__PURE__ */ jsx37("span", { className: "se-import-spinner" }),
|
|
10669
|
+
/* @__PURE__ */ jsx37("span", { children: "Checking your token and loading StreamElements data." })
|
|
10309
10670
|
] }),
|
|
10310
|
-
channels && channels.length > 1 && /* @__PURE__ */
|
|
10311
|
-
/* @__PURE__ */
|
|
10312
|
-
/* @__PURE__ */
|
|
10313
|
-
/* @__PURE__ */
|
|
10314
|
-
/* @__PURE__ */
|
|
10315
|
-
/* @__PURE__ */
|
|
10671
|
+
channels && channels.length > 1 && /* @__PURE__ */ jsxs27("div", { className: "se-import-help se-import-help--info", children: [
|
|
10672
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__icon", children: "i" }),
|
|
10673
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
10674
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__title", children: "Pick a channel" }),
|
|
10675
|
+
/* @__PURE__ */ jsx37("p", { children: "This account has multiple StreamElements channels. Choose which one to import from." }),
|
|
10676
|
+
/* @__PURE__ */ jsx37("div", { style: { display: "grid", gap: 8, marginTop: 12 }, children: channels.map((c) => /* @__PURE__ */ jsxs27(
|
|
10316
10677
|
"label",
|
|
10317
10678
|
{
|
|
10318
10679
|
style: {
|
|
@@ -10326,7 +10687,7 @@ function StepConnect({
|
|
|
10326
10687
|
cursor: "pointer"
|
|
10327
10688
|
},
|
|
10328
10689
|
children: [
|
|
10329
|
-
/* @__PURE__ */
|
|
10690
|
+
/* @__PURE__ */ jsx37(
|
|
10330
10691
|
"input",
|
|
10331
10692
|
{
|
|
10332
10693
|
type: "radio",
|
|
@@ -10335,7 +10696,7 @@ function StepConnect({
|
|
|
10335
10696
|
onChange: () => setSelectedChannelId(c._id)
|
|
10336
10697
|
}
|
|
10337
10698
|
),
|
|
10338
|
-
c.avatar && /* @__PURE__ */
|
|
10699
|
+
c.avatar && /* @__PURE__ */ jsx37(
|
|
10339
10700
|
"img",
|
|
10340
10701
|
{
|
|
10341
10702
|
src: c.avatar,
|
|
@@ -10345,9 +10706,9 @@ function StepConnect({
|
|
|
10345
10706
|
style: { borderRadius: "50%" }
|
|
10346
10707
|
}
|
|
10347
10708
|
),
|
|
10348
|
-
/* @__PURE__ */
|
|
10349
|
-
/* @__PURE__ */
|
|
10350
|
-
/* @__PURE__ */
|
|
10709
|
+
/* @__PURE__ */ jsxs27("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
10710
|
+
/* @__PURE__ */ jsx37("span", { style: { fontWeight: 700 }, children: c.displayName ?? c.username }),
|
|
10711
|
+
/* @__PURE__ */ jsxs27("span", { style: { fontSize: 12, color: "var(--se-muted)" }, children: [
|
|
10351
10712
|
c.provider,
|
|
10352
10713
|
" \xB7 ",
|
|
10353
10714
|
c.username
|
|
@@ -10359,17 +10720,17 @@ function StepConnect({
|
|
|
10359
10720
|
)) })
|
|
10360
10721
|
] })
|
|
10361
10722
|
] }),
|
|
10362
|
-
/* @__PURE__ */
|
|
10363
|
-
/* @__PURE__ */
|
|
10364
|
-
/* @__PURE__ */
|
|
10365
|
-
/* @__PURE__ */
|
|
10366
|
-
/* @__PURE__ */
|
|
10723
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-help", children: [
|
|
10724
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__icon", children: "i" }),
|
|
10725
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
10726
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__title", children: "How to find your JWT" }),
|
|
10727
|
+
/* @__PURE__ */ jsx37("ol", { children: getJwtInstructionSteps({ pasteHint: "above" }).map((step, i) => /* @__PURE__ */ jsx37("li", { children: step.content }, i)) })
|
|
10367
10728
|
] })
|
|
10368
10729
|
] }),
|
|
10369
|
-
/* @__PURE__ */
|
|
10730
|
+
/* @__PURE__ */ jsxs27("div", { style: { marginTop: 16, fontSize: 13, color: "var(--se-muted)" }, children: [
|
|
10370
10731
|
"Prefer to import just a single overlay without logging in?",
|
|
10371
10732
|
" ",
|
|
10372
|
-
/* @__PURE__ */
|
|
10733
|
+
/* @__PURE__ */ jsx37(
|
|
10373
10734
|
"a",
|
|
10374
10735
|
{
|
|
10375
10736
|
href: "#",
|
|
@@ -10383,7 +10744,7 @@ function StepConnect({
|
|
|
10383
10744
|
),
|
|
10384
10745
|
"."
|
|
10385
10746
|
] }),
|
|
10386
|
-
error && /* @__PURE__ */
|
|
10747
|
+
error && /* @__PURE__ */ jsx37(ErrorPanel, { message: error.message, hint: error.hint })
|
|
10387
10748
|
] });
|
|
10388
10749
|
}
|
|
10389
10750
|
function StepPickOverlay({
|
|
@@ -10400,8 +10761,8 @@ function StepPickOverlay({
|
|
|
10400
10761
|
const total = overlays?.length ?? 0;
|
|
10401
10762
|
const allSelected = total > 0 && selectedCount === total;
|
|
10402
10763
|
const hasAnySelected = selectedCount > 0;
|
|
10403
|
-
return /* @__PURE__ */
|
|
10404
|
-
/* @__PURE__ */
|
|
10764
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--wide"), children: [
|
|
10765
|
+
/* @__PURE__ */ jsx37(
|
|
10405
10766
|
StepHeader,
|
|
10406
10767
|
{
|
|
10407
10768
|
number: 2,
|
|
@@ -10409,23 +10770,23 @@ function StepPickOverlay({
|
|
|
10409
10770
|
subtitle: `Select one or more StreamElements overlays from your account. Each selected overlay will be created as a separate Lumia overlay. ${total > 0 ? `${total} overlay${total === 1 ? "" : "s"} on this channel.` : ""}`
|
|
10410
10771
|
}
|
|
10411
10772
|
),
|
|
10412
|
-
loading && /* @__PURE__ */
|
|
10413
|
-
/* @__PURE__ */
|
|
10414
|
-
/* @__PURE__ */
|
|
10773
|
+
loading && /* @__PURE__ */ jsxs27("div", { className: "se-import-help se-import-help--info", children: [
|
|
10774
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__icon", children: "\u2026" }),
|
|
10775
|
+
/* @__PURE__ */ jsx37("div", { children: "Fetching your StreamElements overlays." })
|
|
10415
10776
|
] }),
|
|
10416
|
-
error && /* @__PURE__ */
|
|
10417
|
-
/* @__PURE__ */
|
|
10418
|
-
/* @__PURE__ */
|
|
10777
|
+
error && /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
10778
|
+
/* @__PURE__ */ jsx37(ErrorPanel, { message: error.message, hint: error.hint }),
|
|
10779
|
+
/* @__PURE__ */ jsx37("div", { style: { marginTop: 12 }, children: /* @__PURE__ */ jsx37(LSButton, { type: "button", color: "secondary", onClick: onRetry, label: "Retry" }) })
|
|
10419
10780
|
] }),
|
|
10420
|
-
!loading && !error && overlays && overlays.length === 0 && /* @__PURE__ */
|
|
10421
|
-
/* @__PURE__ */
|
|
10422
|
-
/* @__PURE__ */
|
|
10423
|
-
/* @__PURE__ */
|
|
10424
|
-
/* @__PURE__ */
|
|
10781
|
+
!loading && !error && overlays && overlays.length === 0 && /* @__PURE__ */ jsxs27("div", { className: "se-import-help se-import-help--info", children: [
|
|
10782
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__icon", children: "i" }),
|
|
10783
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
10784
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__title", children: "No overlays found" }),
|
|
10785
|
+
/* @__PURE__ */ jsx37("p", { children: "This StreamElements account doesn't have any overlays yet. Create one in the SE dashboard, or use the legacy preview URL flow from the Connect step." })
|
|
10425
10786
|
] })
|
|
10426
10787
|
] }),
|
|
10427
|
-
!loading && !error && overlays && overlays.length > 0 && /* @__PURE__ */
|
|
10428
|
-
/* @__PURE__ */
|
|
10788
|
+
!loading && !error && overlays && overlays.length > 0 && /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
10789
|
+
/* @__PURE__ */ jsxs27(
|
|
10429
10790
|
"div",
|
|
10430
10791
|
{
|
|
10431
10792
|
className: "se-import-actions se-import-actions--inline",
|
|
@@ -10437,7 +10798,7 @@ function StepPickOverlay({
|
|
|
10437
10798
|
display: "flex"
|
|
10438
10799
|
},
|
|
10439
10800
|
children: [
|
|
10440
|
-
/* @__PURE__ */
|
|
10801
|
+
/* @__PURE__ */ jsxs27(
|
|
10441
10802
|
"label",
|
|
10442
10803
|
{
|
|
10443
10804
|
style: {
|
|
@@ -10449,7 +10810,7 @@ function StepPickOverlay({
|
|
|
10449
10810
|
fontWeight: 600
|
|
10450
10811
|
},
|
|
10451
10812
|
children: [
|
|
10452
|
-
/* @__PURE__ */
|
|
10813
|
+
/* @__PURE__ */ jsx37(
|
|
10453
10814
|
LSCheckbox,
|
|
10454
10815
|
{
|
|
10455
10816
|
checked: allSelected,
|
|
@@ -10458,7 +10819,7 @@ function StepPickOverlay({
|
|
|
10458
10819
|
size: "small"
|
|
10459
10820
|
}
|
|
10460
10821
|
),
|
|
10461
|
-
/* @__PURE__ */
|
|
10822
|
+
/* @__PURE__ */ jsxs27("span", { children: [
|
|
10462
10823
|
allSelected ? "Deselect all" : "Select all",
|
|
10463
10824
|
" (",
|
|
10464
10825
|
selectedCount,
|
|
@@ -10469,11 +10830,11 @@ function StepPickOverlay({
|
|
|
10469
10830
|
]
|
|
10470
10831
|
}
|
|
10471
10832
|
),
|
|
10472
|
-
/* @__PURE__ */
|
|
10833
|
+
/* @__PURE__ */ jsx37("span", { style: { fontSize: 13, color: "var(--se-muted)" }, children: hasAnySelected ? selectedCount > 1 ? `${selectedCount} overlays selected. Each will be created as its own Lumia overlay.` : "1 overlay selected. It will open the full review flow." : "Click overlays below to select them." })
|
|
10473
10834
|
]
|
|
10474
10835
|
}
|
|
10475
10836
|
),
|
|
10476
|
-
/* @__PURE__ */
|
|
10837
|
+
/* @__PURE__ */ jsx37(
|
|
10477
10838
|
"div",
|
|
10478
10839
|
{
|
|
10479
10840
|
className: "se-import-grid",
|
|
@@ -10484,7 +10845,7 @@ function StepPickOverlay({
|
|
|
10484
10845
|
},
|
|
10485
10846
|
children: overlays.map((o) => {
|
|
10486
10847
|
const selected = selectedIds.has(o._id);
|
|
10487
|
-
return /* @__PURE__ */
|
|
10848
|
+
return /* @__PURE__ */ jsxs27(
|
|
10488
10849
|
"label",
|
|
10489
10850
|
{
|
|
10490
10851
|
style: {
|
|
@@ -10499,7 +10860,7 @@ function StepPickOverlay({
|
|
|
10499
10860
|
transition: "border-color 120ms, background 120ms"
|
|
10500
10861
|
},
|
|
10501
10862
|
children: [
|
|
10502
|
-
/* @__PURE__ */
|
|
10863
|
+
/* @__PURE__ */ jsx37(
|
|
10503
10864
|
LSCheckbox,
|
|
10504
10865
|
{
|
|
10505
10866
|
checked: selected,
|
|
@@ -10513,7 +10874,7 @@ function StepPickOverlay({
|
|
|
10513
10874
|
}
|
|
10514
10875
|
}
|
|
10515
10876
|
),
|
|
10516
|
-
o.preview ? /* @__PURE__ */
|
|
10877
|
+
o.preview ? /* @__PURE__ */ jsx37(
|
|
10517
10878
|
"img",
|
|
10518
10879
|
{
|
|
10519
10880
|
src: o.preview,
|
|
@@ -10527,7 +10888,7 @@ function StepPickOverlay({
|
|
|
10527
10888
|
},
|
|
10528
10889
|
loading: "lazy"
|
|
10529
10890
|
}
|
|
10530
|
-
) : /* @__PURE__ */
|
|
10891
|
+
) : /* @__PURE__ */ jsx37(
|
|
10531
10892
|
"div",
|
|
10532
10893
|
{
|
|
10533
10894
|
style: {
|
|
@@ -10538,7 +10899,7 @@ function StepPickOverlay({
|
|
|
10538
10899
|
}
|
|
10539
10900
|
}
|
|
10540
10901
|
),
|
|
10541
|
-
/* @__PURE__ */
|
|
10902
|
+
/* @__PURE__ */ jsx37(
|
|
10542
10903
|
"div",
|
|
10543
10904
|
{
|
|
10544
10905
|
style: {
|
|
@@ -10551,7 +10912,7 @@ function StepPickOverlay({
|
|
|
10551
10912
|
children: o.name ?? "Unnamed overlay"
|
|
10552
10913
|
}
|
|
10553
10914
|
),
|
|
10554
|
-
/* @__PURE__ */
|
|
10915
|
+
/* @__PURE__ */ jsxs27(
|
|
10555
10916
|
"div",
|
|
10556
10917
|
{
|
|
10557
10918
|
style: {
|
|
@@ -10565,7 +10926,7 @@ function StepPickOverlay({
|
|
|
10565
10926
|
]
|
|
10566
10927
|
}
|
|
10567
10928
|
),
|
|
10568
|
-
o.updatedAt && /* @__PURE__ */
|
|
10929
|
+
o.updatedAt && /* @__PURE__ */ jsxs27(
|
|
10569
10930
|
"div",
|
|
10570
10931
|
{
|
|
10571
10932
|
style: {
|
|
@@ -10596,8 +10957,8 @@ function StepURL({
|
|
|
10596
10957
|
busy,
|
|
10597
10958
|
onSwitchToJwt
|
|
10598
10959
|
}) {
|
|
10599
|
-
return /* @__PURE__ */
|
|
10600
|
-
/* @__PURE__ */
|
|
10960
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--narrow"), children: [
|
|
10961
|
+
/* @__PURE__ */ jsx37(
|
|
10601
10962
|
StepHeader,
|
|
10602
10963
|
{
|
|
10603
10964
|
number: 1,
|
|
@@ -10605,7 +10966,7 @@ function StepURL({
|
|
|
10605
10966
|
subtitle: "StreamElements (classic or Element). The wizard auto-detects which one you pasted."
|
|
10606
10967
|
}
|
|
10607
10968
|
),
|
|
10608
|
-
/* @__PURE__ */
|
|
10969
|
+
/* @__PURE__ */ jsx37(
|
|
10609
10970
|
LSInput,
|
|
10610
10971
|
{
|
|
10611
10972
|
label: "Overlay URL",
|
|
@@ -10615,15 +10976,15 @@ function StepURL({
|
|
|
10615
10976
|
disabled: busy
|
|
10616
10977
|
}
|
|
10617
10978
|
),
|
|
10618
|
-
/* @__PURE__ */
|
|
10619
|
-
/* @__PURE__ */
|
|
10620
|
-
/* @__PURE__ */
|
|
10621
|
-
/* @__PURE__ */
|
|
10622
|
-
/* @__PURE__ */
|
|
10623
|
-
/* @__PURE__ */
|
|
10979
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-help", children: [
|
|
10980
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__icon", children: "i" }),
|
|
10981
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
10982
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-help__title", children: "How to find the overlay URL" }),
|
|
10983
|
+
/* @__PURE__ */ jsxs27("ol", { children: [
|
|
10984
|
+
/* @__PURE__ */ jsxs27("li", { children: [
|
|
10624
10985
|
"Open",
|
|
10625
10986
|
" ",
|
|
10626
|
-
/* @__PURE__ */
|
|
10987
|
+
/* @__PURE__ */ jsx37(
|
|
10627
10988
|
"a",
|
|
10628
10989
|
{
|
|
10629
10990
|
href: "https://streamelements.com/dashboard/overlays",
|
|
@@ -10634,14 +10995,14 @@ function StepURL({
|
|
|
10634
10995
|
),
|
|
10635
10996
|
"."
|
|
10636
10997
|
] }),
|
|
10637
|
-
/* @__PURE__ */
|
|
10638
|
-
/* @__PURE__ */
|
|
10639
|
-
/* @__PURE__ */
|
|
10998
|
+
/* @__PURE__ */ jsx37("li", { children: "Click the overlay you want to bring over." }),
|
|
10999
|
+
/* @__PURE__ */ jsx37("li", { children: "Click Copy URL in the top right of the editor." }),
|
|
11000
|
+
/* @__PURE__ */ jsx37("li", { children: "Paste it above." })
|
|
10640
11001
|
] })
|
|
10641
11002
|
] })
|
|
10642
11003
|
] }),
|
|
10643
|
-
error && /* @__PURE__ */
|
|
10644
|
-
error?.editorUrl && onSwitchToJwt && /* @__PURE__ */
|
|
11004
|
+
error && /* @__PURE__ */ jsx37(ErrorPanel, { message: error.message, hint: error.hint }),
|
|
11005
|
+
error?.editorUrl && onSwitchToJwt && /* @__PURE__ */ jsx37("div", { style: { marginTop: 12 }, children: /* @__PURE__ */ jsx37(
|
|
10645
11006
|
LSButton,
|
|
10646
11007
|
{
|
|
10647
11008
|
type: "button",
|
|
@@ -10706,15 +11067,15 @@ function StepDiscovery({
|
|
|
10706
11067
|
description: "Remote media files Lumia can mirror into local storage."
|
|
10707
11068
|
}
|
|
10708
11069
|
].filter((card) => card.value > 0);
|
|
10709
|
-
return /* @__PURE__ */
|
|
10710
|
-
/* @__PURE__ */
|
|
11070
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--wide"), children: [
|
|
11071
|
+
/* @__PURE__ */ jsx37(
|
|
10711
11072
|
StepHeader,
|
|
10712
11073
|
{
|
|
10713
11074
|
number: 2,
|
|
10714
11075
|
title: overlayCount > 1 ? "Here's what we found in your overlays" : "Here's what we found in your overlay"
|
|
10715
11076
|
}
|
|
10716
11077
|
),
|
|
10717
|
-
topCards.length > 0 && /* @__PURE__ */
|
|
11078
|
+
topCards.length > 0 && /* @__PURE__ */ jsx37("div", { className: "se-import-grid se-import-grid--stats", children: topCards.map((card) => /* @__PURE__ */ jsx37(
|
|
10718
11079
|
StatusCard,
|
|
10719
11080
|
{
|
|
10720
11081
|
label: card.label,
|
|
@@ -10724,8 +11085,8 @@ function StepDiscovery({
|
|
|
10724
11085
|
},
|
|
10725
11086
|
card.key
|
|
10726
11087
|
)) }),
|
|
10727
|
-
/* @__PURE__ */
|
|
10728
|
-
reviewCount > 0 && /* @__PURE__ */
|
|
11088
|
+
/* @__PURE__ */ jsx37(CoverageCards, { coverage: result.coverage }),
|
|
11089
|
+
reviewCount > 0 && /* @__PURE__ */ jsx37("div", { className: "se-import-grid se-import-grid--two", children: /* @__PURE__ */ jsx37(
|
|
10729
11090
|
StatusCard,
|
|
10730
11091
|
{
|
|
10731
11092
|
label: "Review choices",
|
|
@@ -10743,19 +11104,19 @@ function StepOptions({
|
|
|
10743
11104
|
assetCount,
|
|
10744
11105
|
hideName = false
|
|
10745
11106
|
}) {
|
|
10746
|
-
return /* @__PURE__ */
|
|
10747
|
-
/* @__PURE__ */
|
|
10748
|
-
/* @__PURE__ */
|
|
10749
|
-
/* @__PURE__ */
|
|
10750
|
-
/* @__PURE__ */
|
|
10751
|
-
/* @__PURE__ */
|
|
10752
|
-
/* @__PURE__ */
|
|
11107
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--medium"), children: [
|
|
11108
|
+
/* @__PURE__ */ jsx37(StepHeader, { number: 3, title: "Options", subtitle: "Choose how to handle your assets" }),
|
|
11109
|
+
/* @__PURE__ */ jsxs27("label", { className: `se-import-option ${assetCount === 0 ? "se-import-option--disabled" : ""}`, children: [
|
|
11110
|
+
/* @__PURE__ */ jsx37("span", { className: "se-import-option__icon", children: /* @__PURE__ */ jsx37("img", { src: assets_default, alt: "" }) }),
|
|
11111
|
+
/* @__PURE__ */ jsxs27("span", { className: "se-import-option__body", children: [
|
|
11112
|
+
/* @__PURE__ */ jsx37("span", { className: "se-import-option__title", children: "Mirror StreamElements assets to Lumia storage" }),
|
|
11113
|
+
/* @__PURE__ */ jsx37("span", { className: "se-import-option__copy", children: "Downloads every cdn.streamelements.com URL referenced in the overlay, uploads it to your Lumia asset library, then rewrites the URLs." })
|
|
10753
11114
|
] }),
|
|
10754
|
-
/* @__PURE__ */
|
|
11115
|
+
/* @__PURE__ */ jsxs27("span", { className: "se-import-option__count", children: [
|
|
10755
11116
|
assetCount,
|
|
10756
11117
|
" files"
|
|
10757
11118
|
] }),
|
|
10758
|
-
/* @__PURE__ */
|
|
11119
|
+
/* @__PURE__ */ jsx37(
|
|
10759
11120
|
"input",
|
|
10760
11121
|
{
|
|
10761
11122
|
type: "checkbox",
|
|
@@ -10764,9 +11125,9 @@ function StepOptions({
|
|
|
10764
11125
|
onChange: (e) => setOptions({ ...options, mirrorAssets: e.target.checked })
|
|
10765
11126
|
}
|
|
10766
11127
|
),
|
|
10767
|
-
/* @__PURE__ */
|
|
11128
|
+
/* @__PURE__ */ jsx37("span", { className: "se-import-toggle" })
|
|
10768
11129
|
] }),
|
|
10769
|
-
!hideName && /* @__PURE__ */
|
|
11130
|
+
!hideName && /* @__PURE__ */ jsx37(
|
|
10770
11131
|
LSInput,
|
|
10771
11132
|
{
|
|
10772
11133
|
label: "Overlay name",
|
|
@@ -10791,15 +11152,15 @@ function fileTypeIcon(url) {
|
|
|
10791
11152
|
return img_default;
|
|
10792
11153
|
}
|
|
10793
11154
|
function AssetTransferAnimation({ complete }) {
|
|
10794
|
-
return /* @__PURE__ */
|
|
11155
|
+
return /* @__PURE__ */ jsxs27(
|
|
10795
11156
|
"div",
|
|
10796
11157
|
{
|
|
10797
11158
|
className: `se-import-transfer ${complete ? "se-import-transfer--complete" : ""}`,
|
|
10798
11159
|
"aria-hidden": "true",
|
|
10799
11160
|
children: [
|
|
10800
|
-
/* @__PURE__ */
|
|
10801
|
-
/* @__PURE__ */
|
|
10802
|
-
/* @__PURE__ */
|
|
11161
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-transfer__source se-import-transfer__source--se", children: /* @__PURE__ */ jsx37("img", { src: source_se_default, alt: "" }) }),
|
|
11162
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-transfer__files", children: [
|
|
11163
|
+
/* @__PURE__ */ jsx37(
|
|
10803
11164
|
"img",
|
|
10804
11165
|
{
|
|
10805
11166
|
className: "se-import-transfer__file se-import-transfer__file--one",
|
|
@@ -10807,7 +11168,7 @@ function AssetTransferAnimation({ complete }) {
|
|
|
10807
11168
|
alt: ""
|
|
10808
11169
|
}
|
|
10809
11170
|
),
|
|
10810
|
-
/* @__PURE__ */
|
|
11171
|
+
/* @__PURE__ */ jsx37(
|
|
10811
11172
|
"img",
|
|
10812
11173
|
{
|
|
10813
11174
|
className: "se-import-transfer__file se-import-transfer__file--two",
|
|
@@ -10815,7 +11176,7 @@ function AssetTransferAnimation({ complete }) {
|
|
|
10815
11176
|
alt: ""
|
|
10816
11177
|
}
|
|
10817
11178
|
),
|
|
10818
|
-
/* @__PURE__ */
|
|
11179
|
+
/* @__PURE__ */ jsx37(
|
|
10819
11180
|
"img",
|
|
10820
11181
|
{
|
|
10821
11182
|
className: "se-import-transfer__file se-import-transfer__file--three",
|
|
@@ -10823,7 +11184,7 @@ function AssetTransferAnimation({ complete }) {
|
|
|
10823
11184
|
alt: ""
|
|
10824
11185
|
}
|
|
10825
11186
|
),
|
|
10826
|
-
/* @__PURE__ */
|
|
11187
|
+
/* @__PURE__ */ jsx37(
|
|
10827
11188
|
"img",
|
|
10828
11189
|
{
|
|
10829
11190
|
className: "se-import-transfer__file se-import-transfer__file--four",
|
|
@@ -10832,9 +11193,9 @@ function AssetTransferAnimation({ complete }) {
|
|
|
10832
11193
|
}
|
|
10833
11194
|
)
|
|
10834
11195
|
] }),
|
|
10835
|
-
/* @__PURE__ */
|
|
10836
|
-
/* @__PURE__ */
|
|
10837
|
-
complete && /* @__PURE__ */
|
|
11196
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-transfer__source se-import-transfer__source--lumia", children: [
|
|
11197
|
+
/* @__PURE__ */ jsx37("img", { src: source_lumia_default, alt: "" }),
|
|
11198
|
+
complete && /* @__PURE__ */ jsx37("span", { className: "se-import-transfer__done", children: "\u2713" })
|
|
10838
11199
|
] })
|
|
10839
11200
|
]
|
|
10840
11201
|
}
|
|
@@ -10853,8 +11214,8 @@ function StepMirror({
|
|
|
10853
11214
|
const percent = rows.length > 0 ? Math.round(completed / rows.length * 100) : 100;
|
|
10854
11215
|
const complete = !running && completed >= rows.length;
|
|
10855
11216
|
const summary = running ? `Downloading... (${done + reused + keptOnCdn}/${rows.length})` : `Finished. ${done} mirrored${reused ? `, ${reused} reused` : ""}${keptOnCdn ? `, ${keptOnCdn} kept on CDN` : ""}${failed ? `, ${failed} failed` : ""}.`;
|
|
10856
|
-
return /* @__PURE__ */
|
|
10857
|
-
/* @__PURE__ */
|
|
11217
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--wide"), children: [
|
|
11218
|
+
/* @__PURE__ */ jsx37(
|
|
10858
11219
|
StepHeader,
|
|
10859
11220
|
{
|
|
10860
11221
|
number: 4,
|
|
@@ -10862,20 +11223,20 @@ function StepMirror({
|
|
|
10862
11223
|
subtitle: "We're downloading your assets from StreamElements and preparing them for import."
|
|
10863
11224
|
}
|
|
10864
11225
|
),
|
|
10865
|
-
/* @__PURE__ */
|
|
10866
|
-
/* @__PURE__ */
|
|
10867
|
-
/* @__PURE__ */
|
|
10868
|
-
/* @__PURE__ */
|
|
10869
|
-
/* @__PURE__ */
|
|
11226
|
+
/* @__PURE__ */ jsx37(AssetTransferAnimation, { complete }),
|
|
11227
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-mirror-head", children: [
|
|
11228
|
+
/* @__PURE__ */ jsx37("span", { children: summary }),
|
|
11229
|
+
/* @__PURE__ */ jsx37(ProgressBar, { value: completed, max: rows.length }),
|
|
11230
|
+
/* @__PURE__ */ jsxs27("strong", { children: [
|
|
10870
11231
|
percent,
|
|
10871
11232
|
"%"
|
|
10872
11233
|
] })
|
|
10873
11234
|
] }),
|
|
10874
|
-
/* @__PURE__ */
|
|
10875
|
-
/* @__PURE__ */
|
|
10876
|
-
/* @__PURE__ */
|
|
10877
|
-
/* @__PURE__ */
|
|
10878
|
-
row.state === "failed" && /* @__PURE__ */
|
|
11235
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-asset-list", children: rows.map((row, index) => /* @__PURE__ */ jsxs27("div", { className: `se-import-asset-row se-import-asset-row--${row.state}`, children: [
|
|
11236
|
+
/* @__PURE__ */ jsx37("img", { className: "se-import-asset-row__icon", src: fileTypeIcon(row.url), alt: "" }),
|
|
11237
|
+
/* @__PURE__ */ jsx37("span", { className: "se-import-asset-row__url", title: row.url, children: row.url }),
|
|
11238
|
+
/* @__PURE__ */ jsx37("span", { className: "se-import-asset-row__state", children: mirrorLabel(row.state) }),
|
|
11239
|
+
row.state === "failed" && /* @__PURE__ */ jsx37(
|
|
10879
11240
|
LSButton,
|
|
10880
11241
|
{
|
|
10881
11242
|
type: "button",
|
|
@@ -10887,7 +11248,7 @@ function StepMirror({
|
|
|
10887
11248
|
label: "Retry"
|
|
10888
11249
|
}
|
|
10889
11250
|
),
|
|
10890
|
-
row.error && /* @__PURE__ */
|
|
11251
|
+
row.error && /* @__PURE__ */ jsx37("span", { className: "se-import-asset-row__error", children: row.error })
|
|
10891
11252
|
] }, row.url)) })
|
|
10892
11253
|
] });
|
|
10893
11254
|
}
|
|
@@ -10910,8 +11271,8 @@ function StepReview({
|
|
|
10910
11271
|
remainingCount,
|
|
10911
11272
|
marketplaceAvailable
|
|
10912
11273
|
}) {
|
|
10913
|
-
return /* @__PURE__ */
|
|
10914
|
-
/* @__PURE__ */
|
|
11274
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--medium"), children: [
|
|
11275
|
+
/* @__PURE__ */ jsx37(
|
|
10915
11276
|
StepHeader,
|
|
10916
11277
|
{
|
|
10917
11278
|
number: 4,
|
|
@@ -10919,21 +11280,21 @@ function StepReview({
|
|
|
10919
11280
|
subtitle: "Choose how to handle this unsupported StreamElements widget"
|
|
10920
11281
|
}
|
|
10921
11282
|
),
|
|
10922
|
-
/* @__PURE__ */
|
|
10923
|
-
/* @__PURE__ */
|
|
10924
|
-
/* @__PURE__ */
|
|
10925
|
-
/* @__PURE__ */
|
|
11283
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-review-card", children: [
|
|
11284
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
11285
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-review-card__type", children: item.seWidget.type }),
|
|
11286
|
+
/* @__PURE__ */ jsx37("p", { children: item.reason })
|
|
10926
11287
|
] }),
|
|
10927
|
-
/* @__PURE__ */
|
|
11288
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-review-card__status", children: item.flaggedOff ? "Auto-import disabled" : item.status })
|
|
10928
11289
|
] }),
|
|
10929
11290
|
remainingCount > 1 && /* Bulk-action row — shortcut to wrap up the review step when there are still
|
|
10930
11291
|
several unactioned widgets and the user doesn't want to walk each one. */
|
|
10931
|
-
/* @__PURE__ */
|
|
10932
|
-
/* @__PURE__ */
|
|
11292
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-review-bulk", children: [
|
|
11293
|
+
/* @__PURE__ */ jsxs27("span", { children: [
|
|
10933
11294
|
remainingCount,
|
|
10934
11295
|
" remaining"
|
|
10935
11296
|
] }),
|
|
10936
|
-
/* @__PURE__ */
|
|
11297
|
+
/* @__PURE__ */ jsx37(
|
|
10937
11298
|
LSButton,
|
|
10938
11299
|
{
|
|
10939
11300
|
type: "button",
|
|
@@ -10943,7 +11304,7 @@ function StepReview({
|
|
|
10943
11304
|
label: "Keep all placeholders"
|
|
10944
11305
|
}
|
|
10945
11306
|
),
|
|
10946
|
-
/* @__PURE__ */
|
|
11307
|
+
/* @__PURE__ */ jsx37(
|
|
10947
11308
|
LSButton,
|
|
10948
11309
|
{
|
|
10949
11310
|
type: "button",
|
|
@@ -10954,12 +11315,12 @@ function StepReview({
|
|
|
10954
11315
|
}
|
|
10955
11316
|
)
|
|
10956
11317
|
] }),
|
|
10957
|
-
state === "generating" && /* @__PURE__ */
|
|
10958
|
-
state === "generated" && generated && /* @__PURE__ */
|
|
10959
|
-
/* @__PURE__ */
|
|
11318
|
+
state === "generating" && /* @__PURE__ */ jsx37("div", { className: "se-import-muted", children: "Generating with AI. This can take 30-90 seconds." }),
|
|
11319
|
+
state === "generated" && generated && /* @__PURE__ */ jsxs27("div", { className: "se-import-generated", children: [
|
|
11320
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-generated__title", children: "Preview" }),
|
|
10960
11321
|
(() => {
|
|
10961
11322
|
const landing = getAILandingBounds(item.seWidget, canvas);
|
|
10962
|
-
return /* @__PURE__ */
|
|
11323
|
+
return /* @__PURE__ */ jsx37(
|
|
10963
11324
|
CustomOverlayPreview,
|
|
10964
11325
|
{
|
|
10965
11326
|
html: generated.html ?? "",
|
|
@@ -10971,9 +11332,9 @@ function StepReview({
|
|
|
10971
11332
|
}
|
|
10972
11333
|
);
|
|
10973
11334
|
})(),
|
|
10974
|
-
/* @__PURE__ */
|
|
10975
|
-
/* @__PURE__ */
|
|
10976
|
-
/* @__PURE__ */
|
|
11335
|
+
/* @__PURE__ */ jsxs27("details", { className: "se-import-code", children: [
|
|
11336
|
+
/* @__PURE__ */ jsx37("summary", { children: "Generated code" }),
|
|
11337
|
+
/* @__PURE__ */ jsx37("pre", { children: JSON.stringify(
|
|
10977
11338
|
{
|
|
10978
11339
|
html: generated.html ?? "",
|
|
10979
11340
|
css: generated.css ?? "",
|
|
@@ -10984,15 +11345,15 @@ function StepReview({
|
|
|
10984
11345
|
) })
|
|
10985
11346
|
] })
|
|
10986
11347
|
] }),
|
|
10987
|
-
error && /* @__PURE__ */
|
|
10988
|
-
/* @__PURE__ */
|
|
10989
|
-
/* @__PURE__ */
|
|
10990
|
-
/* @__PURE__ */
|
|
11348
|
+
error && /* @__PURE__ */ jsx37(ErrorPanel, { message: error }),
|
|
11349
|
+
/* @__PURE__ */ jsxs27("details", { className: "se-import-code", children: [
|
|
11350
|
+
/* @__PURE__ */ jsx37("summary", { children: "Original StreamElements config" }),
|
|
11351
|
+
/* @__PURE__ */ jsx37("pre", { children: JSON.stringify(item.seWidget.variables ?? {}, null, 2) })
|
|
10991
11352
|
] }),
|
|
10992
|
-
/* @__PURE__ */
|
|
10993
|
-
/* @__PURE__ */
|
|
10994
|
-
/* @__PURE__ */
|
|
10995
|
-
/* @__PURE__ */
|
|
11353
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-actions se-import-actions--inline", children: state === "generated" ? /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
11354
|
+
/* @__PURE__ */ jsx37(LSButton, { type: "button", color: "secondary", onClick: onRetry, label: "Try again" }),
|
|
11355
|
+
/* @__PURE__ */ jsx37(LSButton, { type: "button", color: "secondary", onClick: onSkip, label: "Skip this widget" }),
|
|
11356
|
+
/* @__PURE__ */ jsx37(
|
|
10996
11357
|
LSButton,
|
|
10997
11358
|
{
|
|
10998
11359
|
type: "button",
|
|
@@ -11001,8 +11362,8 @@ function StepReview({
|
|
|
11001
11362
|
label: "Use this and continue"
|
|
11002
11363
|
}
|
|
11003
11364
|
)
|
|
11004
|
-
] }) : /* @__PURE__ */
|
|
11005
|
-
!item.flaggedOff && /* @__PURE__ */
|
|
11365
|
+
] }) : /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
11366
|
+
!item.flaggedOff && /* @__PURE__ */ jsx37(
|
|
11006
11367
|
LSButton,
|
|
11007
11368
|
{
|
|
11008
11369
|
type: "button",
|
|
@@ -11012,7 +11373,7 @@ function StepReview({
|
|
|
11012
11373
|
label: "Keep placeholder"
|
|
11013
11374
|
}
|
|
11014
11375
|
),
|
|
11015
|
-
/* @__PURE__ */
|
|
11376
|
+
/* @__PURE__ */ jsx37(
|
|
11016
11377
|
LSButton,
|
|
11017
11378
|
{
|
|
11018
11379
|
type: "button",
|
|
@@ -11022,7 +11383,7 @@ function StepReview({
|
|
|
11022
11383
|
label: "Skip"
|
|
11023
11384
|
}
|
|
11024
11385
|
),
|
|
11025
|
-
marketplaceAvailable && /* @__PURE__ */
|
|
11386
|
+
marketplaceAvailable && /* @__PURE__ */ jsx37(
|
|
11026
11387
|
LSButton,
|
|
11027
11388
|
{
|
|
11028
11389
|
type: "button",
|
|
@@ -11032,7 +11393,7 @@ function StepReview({
|
|
|
11032
11393
|
label: "Pick from Marketplace"
|
|
11033
11394
|
}
|
|
11034
11395
|
),
|
|
11035
|
-
/* @__PURE__ */
|
|
11396
|
+
/* @__PURE__ */ jsx37(
|
|
11036
11397
|
LSButton,
|
|
11037
11398
|
{
|
|
11038
11399
|
type: "button",
|
|
@@ -11043,7 +11404,7 @@ function StepReview({
|
|
|
11043
11404
|
}
|
|
11044
11405
|
)
|
|
11045
11406
|
] }) }),
|
|
11046
|
-
item.flaggedOff && !marketplaceAvailable && state !== "generated" && /* @__PURE__ */
|
|
11407
|
+
item.flaggedOff && !marketplaceAvailable && state !== "generated" && /* @__PURE__ */ jsx37("div", { className: "se-import-muted", children: "No curated Marketplace replacement is configured for this widget yet." })
|
|
11047
11408
|
] });
|
|
11048
11409
|
}
|
|
11049
11410
|
var CUSTOM_WIDGET_TABS = [
|
|
@@ -11057,10 +11418,10 @@ var CUSTOM_WIDGET_TABS = [
|
|
|
11057
11418
|
];
|
|
11058
11419
|
function CustomWidgetCard({ widget }) {
|
|
11059
11420
|
const tabs = CUSTOM_WIDGET_TABS.filter(({ key }) => widget[key].trim().length > 0);
|
|
11060
|
-
const [activeKey, setActiveKey] =
|
|
11061
|
-
const [copied, setCopied] =
|
|
11421
|
+
const [activeKey, setActiveKey] = useState13(tabs[0]?.key ?? "js");
|
|
11422
|
+
const [copied, setCopied] = useState13(false);
|
|
11062
11423
|
const value = widget[activeKey] ?? "";
|
|
11063
|
-
|
|
11424
|
+
useEffect10(() => setCopied(false), [activeKey]);
|
|
11064
11425
|
const handleCopy = useCallback4(() => {
|
|
11065
11426
|
void navigator.clipboard?.writeText(value).then(
|
|
11066
11427
|
() => setCopied(true),
|
|
@@ -11068,9 +11429,9 @@ function CustomWidgetCard({ widget }) {
|
|
|
11068
11429
|
);
|
|
11069
11430
|
}, [value]);
|
|
11070
11431
|
if (tabs.length === 0) return null;
|
|
11071
|
-
return /* @__PURE__ */
|
|
11072
|
-
/* @__PURE__ */
|
|
11073
|
-
/* @__PURE__ */
|
|
11432
|
+
return /* @__PURE__ */ jsxs27("div", { className: "se-import-cw", children: [
|
|
11433
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-cw__title", children: widget.title }),
|
|
11434
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-cw__tabs", role: "tablist", children: tabs.map(({ key, label }) => /* @__PURE__ */ jsx37(
|
|
11074
11435
|
"button",
|
|
11075
11436
|
{
|
|
11076
11437
|
type: "button",
|
|
@@ -11082,18 +11443,18 @@ function CustomWidgetCard({ widget }) {
|
|
|
11082
11443
|
},
|
|
11083
11444
|
key
|
|
11084
11445
|
)) }),
|
|
11085
|
-
/* @__PURE__ */
|
|
11086
|
-
/* @__PURE__ */
|
|
11087
|
-
/* @__PURE__ */
|
|
11446
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-cw__body", children: [
|
|
11447
|
+
/* @__PURE__ */ jsx37("button", { type: "button", className: "se-import-cw__copy", onClick: handleCopy, children: copied ? "Copied!" : "Copy" }),
|
|
11448
|
+
/* @__PURE__ */ jsx37("pre", { className: "se-import-cw__code", children: value })
|
|
11088
11449
|
] })
|
|
11089
11450
|
] });
|
|
11090
11451
|
}
|
|
11091
11452
|
function CustomWidgetReview({ widgets }) {
|
|
11092
11453
|
if (widgets.length === 0) return null;
|
|
11093
|
-
return /* @__PURE__ */
|
|
11094
|
-
/* @__PURE__ */
|
|
11095
|
-
/* @__PURE__ */
|
|
11096
|
-
widgets.map((widget, index) => /* @__PURE__ */
|
|
11454
|
+
return /* @__PURE__ */ jsxs27("div", { className: "se-import-cw-review", children: [
|
|
11455
|
+
/* @__PURE__ */ jsx37("h3", { children: "Custom widgets" }),
|
|
11456
|
+
/* @__PURE__ */ jsx37("p", { className: "se-import-cw-review__hint", children: widgets.length === 1 ? "This overlay includes a custom-code widget. Copy any field and paste it straight into the StreamElements editor \u2014 values are shown exactly as StreamElements stores them, with no escaping." : `This overlay includes ${widgets.length} custom-code widgets. Copy any field and paste it straight into the StreamElements editor \u2014 values are shown exactly as StreamElements stores them, with no escaping.` }),
|
|
11457
|
+
widgets.map((widget, index) => /* @__PURE__ */ jsx37(CustomWidgetCard, { widget }, `${widget.title}-${index}`))
|
|
11097
11458
|
] });
|
|
11098
11459
|
}
|
|
11099
11460
|
function StepConfirm({
|
|
@@ -11117,21 +11478,21 @@ function StepConfirm({
|
|
|
11117
11478
|
},
|
|
11118
11479
|
{}
|
|
11119
11480
|
);
|
|
11120
|
-
return /* @__PURE__ */
|
|
11121
|
-
/* @__PURE__ */
|
|
11122
|
-
/* @__PURE__ */
|
|
11123
|
-
/* @__PURE__ */
|
|
11124
|
-
/* @__PURE__ */
|
|
11481
|
+
return /* @__PURE__ */ jsxs27("div", { className: panelClass("se-import-panel--confirm"), children: [
|
|
11482
|
+
/* @__PURE__ */ jsx37(StepHeader, { number: 5, title: "Confirm", subtitle: "Review and confirm your import" }),
|
|
11483
|
+
/* @__PURE__ */ jsxs27("div", { className: "se-import-overview", children: [
|
|
11484
|
+
/* @__PURE__ */ jsx37("h3", { children: "Overview" }),
|
|
11485
|
+
/* @__PURE__ */ jsx37(
|
|
11125
11486
|
Row,
|
|
11126
11487
|
{
|
|
11127
11488
|
label: overlayCount > 1 ? "Overlays to create" : "Overlay",
|
|
11128
11489
|
value: overlayCount > 1 ? `${overlayCount}` : options.name || result.overlay.name
|
|
11129
11490
|
}
|
|
11130
11491
|
),
|
|
11131
|
-
/* @__PURE__ */
|
|
11132
|
-
/* @__PURE__ */
|
|
11133
|
-
/* @__PURE__ */
|
|
11134
|
-
/* @__PURE__ */
|
|
11492
|
+
/* @__PURE__ */ jsx37(Row, { label: "Layers imported", value: `${layerCount}` }),
|
|
11493
|
+
/* @__PURE__ */ jsx37(Row, { label: "Widgets", value: `${widgets}` }),
|
|
11494
|
+
/* @__PURE__ */ jsx37(Row, { label: "Alerts", value: `${alertCount}` }),
|
|
11495
|
+
/* @__PURE__ */ jsx37(
|
|
11135
11496
|
Row,
|
|
11136
11497
|
{
|
|
11137
11498
|
label: "Assets to import",
|
|
@@ -11139,25 +11500,25 @@ function StepConfirm({
|
|
|
11139
11500
|
meta: options.mirrorAssets ? `Mirrored to Lumia storage (${mirrored})` : "Skipped"
|
|
11140
11501
|
}
|
|
11141
11502
|
),
|
|
11142
|
-
/* @__PURE__ */
|
|
11503
|
+
/* @__PURE__ */ jsx37(
|
|
11143
11504
|
Row,
|
|
11144
11505
|
{
|
|
11145
11506
|
label: "Import behavior",
|
|
11146
11507
|
value: options.mirrorAssets ? "Mirror assets and rewrite URLs" : "Keep original asset URLs"
|
|
11147
11508
|
}
|
|
11148
11509
|
),
|
|
11149
|
-
reviewBuckets.generated ? /* @__PURE__ */
|
|
11150
|
-
reviewBuckets.skipped ? /* @__PURE__ */
|
|
11151
|
-
reviewBuckets.kept ? /* @__PURE__ */
|
|
11510
|
+
reviewBuckets.generated ? /* @__PURE__ */ jsx37(Row, { label: "Generated with AI", value: `${reviewBuckets.generated}` }) : null,
|
|
11511
|
+
reviewBuckets.skipped ? /* @__PURE__ */ jsx37(Row, { label: "Skipped", value: `${reviewBuckets.skipped}` }) : null,
|
|
11512
|
+
reviewBuckets.kept ? /* @__PURE__ */ jsx37(Row, { label: "Kept as placeholder", value: `${reviewBuckets.kept}` }) : null
|
|
11152
11513
|
] }),
|
|
11153
|
-
isAdmin && result.customWidgets && result.customWidgets.length > 0 && /* @__PURE__ */
|
|
11514
|
+
isAdmin && result.customWidgets && result.customWidgets.length > 0 && /* @__PURE__ */ jsx37(CustomWidgetReview, { widgets: result.customWidgets })
|
|
11154
11515
|
] });
|
|
11155
11516
|
}
|
|
11156
11517
|
function Row({ label, value, meta }) {
|
|
11157
|
-
return /* @__PURE__ */
|
|
11158
|
-
/* @__PURE__ */
|
|
11159
|
-
/* @__PURE__ */
|
|
11160
|
-
meta && /* @__PURE__ */
|
|
11518
|
+
return /* @__PURE__ */ jsxs27("div", { className: "se-import-row", children: [
|
|
11519
|
+
/* @__PURE__ */ jsx37("span", { children: label }),
|
|
11520
|
+
/* @__PURE__ */ jsx37("strong", { children: value }),
|
|
11521
|
+
meta && /* @__PURE__ */ jsx37("em", { children: meta })
|
|
11161
11522
|
] });
|
|
11162
11523
|
}
|
|
11163
11524
|
function SEImportWizard({
|
|
@@ -11183,47 +11544,47 @@ function SEImportWizard({
|
|
|
11183
11544
|
CustomEmbed,
|
|
11184
11545
|
isAdmin
|
|
11185
11546
|
} = bindings;
|
|
11186
|
-
const [step, setStep] =
|
|
11547
|
+
const [step, setStep] = useState13(
|
|
11187
11548
|
initialStep ?? (initialUrl ? "url" : initialJwt ? "connect" : "mode")
|
|
11188
11549
|
);
|
|
11189
|
-
const [entryMode, setEntryMode] =
|
|
11550
|
+
const [entryMode, setEntryMode] = useState13(
|
|
11190
11551
|
initialStep === "url" ? "url" : initialStep === "connect" ? "jwt" : initialUrl ? "url" : initialJwt ? "jwt" : null
|
|
11191
11552
|
);
|
|
11192
|
-
const [jwt, setJwt] =
|
|
11193
|
-
const [seClient, setSeClient] =
|
|
11194
|
-
const [channels, setChannels] =
|
|
11195
|
-
const [selectedChannelId, setSelectedChannelId] =
|
|
11196
|
-
const [connectError, setConnectError] =
|
|
11197
|
-
const [connecting, setConnecting] =
|
|
11198
|
-
const [overlayList, setOverlayList] =
|
|
11553
|
+
const [jwt, setJwt] = useState13(initialJwt);
|
|
11554
|
+
const [seClient, setSeClient] = useState13(null);
|
|
11555
|
+
const [channels, setChannels] = useState13(null);
|
|
11556
|
+
const [selectedChannelId, setSelectedChannelId] = useState13(null);
|
|
11557
|
+
const [connectError, setConnectError] = useState13(null);
|
|
11558
|
+
const [connecting, setConnecting] = useState13(false);
|
|
11559
|
+
const [overlayList, setOverlayList] = useState13(
|
|
11199
11560
|
initialOverlayList?.length ? initialOverlayList : null
|
|
11200
11561
|
);
|
|
11201
|
-
const [overlaysLoading, setOverlaysLoading] =
|
|
11202
|
-
const [overlaysError, setOverlaysError] =
|
|
11203
|
-
const [selectedOverlayIds, setSelectedOverlayIds] =
|
|
11204
|
-
const [activeOverlaySummaries, setActiveOverlaySummaries] =
|
|
11205
|
-
const [activeOverlayPreview, setActiveOverlayPreview] =
|
|
11206
|
-
const [url, setUrl] =
|
|
11207
|
-
const [loadError, setLoadError] =
|
|
11208
|
-
const [loading, setLoading] =
|
|
11209
|
-
const [result, setResult] =
|
|
11210
|
-
const [batchImports, setBatchImports] =
|
|
11211
|
-
const [originalReviewItems, setOriginalReviewItems] =
|
|
11212
|
-
const [options, setOptions] =
|
|
11562
|
+
const [overlaysLoading, setOverlaysLoading] = useState13(false);
|
|
11563
|
+
const [overlaysError, setOverlaysError] = useState13(null);
|
|
11564
|
+
const [selectedOverlayIds, setSelectedOverlayIds] = useState13(/* @__PURE__ */ new Set());
|
|
11565
|
+
const [activeOverlaySummaries, setActiveOverlaySummaries] = useState13([]);
|
|
11566
|
+
const [activeOverlayPreview, setActiveOverlayPreview] = useState13();
|
|
11567
|
+
const [url, setUrl] = useState13(initialUrl);
|
|
11568
|
+
const [loadError, setLoadError] = useState13(null);
|
|
11569
|
+
const [loading, setLoading] = useState13(false);
|
|
11570
|
+
const [result, setResult] = useState13(null);
|
|
11571
|
+
const [batchImports, setBatchImports] = useState13([]);
|
|
11572
|
+
const [originalReviewItems, setOriginalReviewItems] = useState13([]);
|
|
11573
|
+
const [options, setOptions] = useState13({
|
|
11213
11574
|
mirrorAssets: true,
|
|
11214
11575
|
name: ""
|
|
11215
11576
|
});
|
|
11216
|
-
const [mirrorRows, setMirrorRows] =
|
|
11217
|
-
const [mirrorRunning, setMirrorRunning] =
|
|
11218
|
-
const [rowStates, setRowStates] =
|
|
11219
|
-
const [reviewIndex, setReviewIndex] =
|
|
11220
|
-
const [importing, setImporting] =
|
|
11221
|
-
const [marketplacePickerOpen, setMarketplacePickerOpen] =
|
|
11222
|
-
const mirrorStartedRef =
|
|
11223
|
-
const mirrorAbortRef =
|
|
11224
|
-
const initialOverlayImportStartedRef =
|
|
11225
|
-
const filenameCacheRef =
|
|
11226
|
-
const [assetUrls, setAssetUrls] =
|
|
11577
|
+
const [mirrorRows, setMirrorRows] = useState13([]);
|
|
11578
|
+
const [mirrorRunning, setMirrorRunning] = useState13(false);
|
|
11579
|
+
const [rowStates, setRowStates] = useState13({});
|
|
11580
|
+
const [reviewIndex, setReviewIndex] = useState13(0);
|
|
11581
|
+
const [importing, setImporting] = useState13(false);
|
|
11582
|
+
const [marketplacePickerOpen, setMarketplacePickerOpen] = useState13(false);
|
|
11583
|
+
const mirrorStartedRef = useRef9(false);
|
|
11584
|
+
const mirrorAbortRef = useRef9(null);
|
|
11585
|
+
const initialOverlayImportStartedRef = useRef9(false);
|
|
11586
|
+
const filenameCacheRef = useRef9(/* @__PURE__ */ new Map());
|
|
11587
|
+
const [assetUrls, setAssetUrls] = useState13([]);
|
|
11227
11588
|
const currentItem = originalReviewItems[reviewIndex];
|
|
11228
11589
|
const currentRow = currentItem ? rowStates[currentItem.moduleId] ?? { state: "pending" } : void 0;
|
|
11229
11590
|
const handleConnect = useCallback4(async () => {
|
|
@@ -11270,7 +11631,7 @@ function SEImportWizard({
|
|
|
11270
11631
|
setConnecting(false);
|
|
11271
11632
|
}
|
|
11272
11633
|
}, [bindings, initialJwt, jwt]);
|
|
11273
|
-
|
|
11634
|
+
useEffect10(() => {
|
|
11274
11635
|
if (initialJwt.trim() && step === "connect" && !seClient && !connecting && !connectError)
|
|
11275
11636
|
void handleConnect();
|
|
11276
11637
|
}, [connectError, connecting, handleConnect, initialJwt, seClient, step]);
|
|
@@ -11431,7 +11792,7 @@ function SEImportWizard({
|
|
|
11431
11792
|
loadBootstrapAndKickoff,
|
|
11432
11793
|
loadSelectedOverlaysAndKickoff
|
|
11433
11794
|
]);
|
|
11434
|
-
|
|
11795
|
+
useEffect10(() => {
|
|
11435
11796
|
if (initialOverlayImportStartedRef.current || !seClient || !initialOverlayIds?.length || !overlayList || overlaysLoading || loading)
|
|
11436
11797
|
return;
|
|
11437
11798
|
const availableIds = new Set(overlayList.map((overlay) => overlay._id));
|
|
@@ -11713,20 +12074,20 @@ function SEImportWizard({
|
|
|
11713
12074
|
},
|
|
11714
12075
|
[applyRewrite, mirrorRows, processAssetRow]
|
|
11715
12076
|
);
|
|
11716
|
-
|
|
12077
|
+
useEffect10(() => {
|
|
11717
12078
|
if (step === "mirror" && !mirrorStartedRef.current) {
|
|
11718
12079
|
mirrorStartedRef.current = true;
|
|
11719
12080
|
void runMirror();
|
|
11720
12081
|
}
|
|
11721
12082
|
}, [step, runMirror]);
|
|
11722
|
-
|
|
12083
|
+
useEffect10(() => {
|
|
11723
12084
|
return () => {
|
|
11724
12085
|
setJwt("");
|
|
11725
12086
|
setSeClient(null);
|
|
11726
12087
|
mirrorAbortRef.current?.abort();
|
|
11727
12088
|
};
|
|
11728
12089
|
}, []);
|
|
11729
|
-
|
|
12090
|
+
useEffect10(() => {
|
|
11730
12091
|
if (step === "pick" && seClient && overlayList === null && !overlaysLoading) {
|
|
11731
12092
|
void loadOverlayList(seClient);
|
|
11732
12093
|
}
|
|
@@ -11955,7 +12316,7 @@ function SEImportWizard({
|
|
|
11955
12316
|
activeOverlayPreview,
|
|
11956
12317
|
resolveOverlayThumbnailUrl
|
|
11957
12318
|
]);
|
|
11958
|
-
const visibleSteps =
|
|
12319
|
+
const visibleSteps = useMemo8(() => {
|
|
11959
12320
|
const showMirrorStep = options.mirrorAssets && (assetUrls.length > 0 || mirrorRows.length > 0 || step === "mirror");
|
|
11960
12321
|
if (step === "mode") return [];
|
|
11961
12322
|
const onUrlFlow = entryMode === "url" || step === "url";
|
|
@@ -12050,21 +12411,21 @@ function SEImportWizard({
|
|
|
12050
12411
|
return false;
|
|
12051
12412
|
})();
|
|
12052
12413
|
const activeIndex = visibleSteps.findIndex((item) => item.key === step);
|
|
12053
|
-
return /* @__PURE__ */
|
|
12054
|
-
visibleSteps.length > 0 && /* @__PURE__ */
|
|
12414
|
+
return /* @__PURE__ */ jsx37("div", { className: "se-import", children: /* @__PURE__ */ jsxs27("div", { className: "se-import__shell", children: [
|
|
12415
|
+
visibleSteps.length > 0 && /* @__PURE__ */ jsx37("header", { className: "se-import__header", children: /* @__PURE__ */ jsx37("div", { className: "se-import-stepper", children: visibleSteps.map((item, index) => /* @__PURE__ */ jsxs27(
|
|
12055
12416
|
"div",
|
|
12056
12417
|
{
|
|
12057
12418
|
className: stepClass(index < activeIndex, index === activeIndex),
|
|
12058
12419
|
children: [
|
|
12059
|
-
/* @__PURE__ */
|
|
12060
|
-
/* @__PURE__ */
|
|
12061
|
-
/* @__PURE__ */
|
|
12420
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-step__label", children: item.label }),
|
|
12421
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-step__line" }),
|
|
12422
|
+
/* @__PURE__ */ jsx37("div", { className: "se-import-step__dot", children: index < activeIndex ? "\u2713" : index + 1 })
|
|
12062
12423
|
]
|
|
12063
12424
|
},
|
|
12064
12425
|
item.key
|
|
12065
12426
|
)) }) }),
|
|
12066
|
-
/* @__PURE__ */
|
|
12067
|
-
step === "mode" && /* @__PURE__ */
|
|
12427
|
+
/* @__PURE__ */ jsxs27("main", { className: "se-import__content", children: [
|
|
12428
|
+
step === "mode" && /* @__PURE__ */ jsx37(
|
|
12068
12429
|
StepModePicker,
|
|
12069
12430
|
{
|
|
12070
12431
|
onChooseJwt: () => {
|
|
@@ -12078,7 +12439,7 @@ function SEImportWizard({
|
|
|
12078
12439
|
onOpenFullImport: bindings.onOpenFullImport
|
|
12079
12440
|
}
|
|
12080
12441
|
),
|
|
12081
|
-
step === "connect" && /* @__PURE__ */
|
|
12442
|
+
step === "connect" && /* @__PURE__ */ jsx37(
|
|
12082
12443
|
StepConnect,
|
|
12083
12444
|
{
|
|
12084
12445
|
jwt,
|
|
@@ -12094,7 +12455,7 @@ function SEImportWizard({
|
|
|
12094
12455
|
}
|
|
12095
12456
|
}
|
|
12096
12457
|
),
|
|
12097
|
-
step === "pick" && /* @__PURE__ */
|
|
12458
|
+
step === "pick" && /* @__PURE__ */ jsx37(
|
|
12098
12459
|
StepPickOverlay,
|
|
12099
12460
|
{
|
|
12100
12461
|
overlays: overlayList,
|
|
@@ -12107,7 +12468,7 @@ function SEImportWizard({
|
|
|
12107
12468
|
onRetry: () => seClient && void loadOverlayList(seClient)
|
|
12108
12469
|
}
|
|
12109
12470
|
),
|
|
12110
|
-
step === "url" && /* @__PURE__ */
|
|
12471
|
+
step === "url" && /* @__PURE__ */ jsx37(
|
|
12111
12472
|
StepURL,
|
|
12112
12473
|
{
|
|
12113
12474
|
url,
|
|
@@ -12121,7 +12482,7 @@ function SEImportWizard({
|
|
|
12121
12482
|
}
|
|
12122
12483
|
}
|
|
12123
12484
|
),
|
|
12124
|
-
step === "discovery" && result && /* @__PURE__ */
|
|
12485
|
+
step === "discovery" && result && /* @__PURE__ */ jsx37(
|
|
12125
12486
|
StepDiscovery,
|
|
12126
12487
|
{
|
|
12127
12488
|
result,
|
|
@@ -12129,7 +12490,7 @@ function SEImportWizard({
|
|
|
12129
12490
|
overlayCount: Math.max(1, activeOverlaySummaries.length)
|
|
12130
12491
|
}
|
|
12131
12492
|
),
|
|
12132
|
-
step === "options" && /* @__PURE__ */
|
|
12493
|
+
step === "options" && /* @__PURE__ */ jsx37(
|
|
12133
12494
|
StepOptions,
|
|
12134
12495
|
{
|
|
12135
12496
|
options,
|
|
@@ -12138,8 +12499,8 @@ function SEImportWizard({
|
|
|
12138
12499
|
hideName: activeOverlaySummaries.length > 1
|
|
12139
12500
|
}
|
|
12140
12501
|
),
|
|
12141
|
-
step === "mirror" && /* @__PURE__ */
|
|
12142
|
-
step === "review" && currentItem && result && !marketplacePickerOpen && /* @__PURE__ */
|
|
12502
|
+
step === "mirror" && /* @__PURE__ */ jsx37(StepMirror, { rows: mirrorRows, running: mirrorRunning, onRetry: retryMirrorRow }),
|
|
12503
|
+
step === "review" && currentItem && result && !marketplacePickerOpen && /* @__PURE__ */ jsx37(
|
|
12143
12504
|
StepReview,
|
|
12144
12505
|
{
|
|
12145
12506
|
item: currentItem,
|
|
@@ -12166,7 +12527,7 @@ function SEImportWizard({
|
|
|
12166
12527
|
marketplaceAvailable: hasMarketplaceCandidates(currentItem.seWidget.type)
|
|
12167
12528
|
}
|
|
12168
12529
|
),
|
|
12169
|
-
step === "review" && currentItem && marketplacePickerOpen && /* @__PURE__ */
|
|
12530
|
+
step === "review" && currentItem && marketplacePickerOpen && /* @__PURE__ */ jsx37("div", { className: panelClass("se-import-panel--wide"), children: /* @__PURE__ */ jsx37(
|
|
12170
12531
|
MarketplacePicker,
|
|
12171
12532
|
{
|
|
12172
12533
|
seWidgetType: currentItem.seWidget.type,
|
|
@@ -12176,7 +12537,7 @@ function SEImportWizard({
|
|
|
12176
12537
|
onCancel: () => setMarketplacePickerOpen(false)
|
|
12177
12538
|
}
|
|
12178
12539
|
) }),
|
|
12179
|
-
step === "confirm" && result && /* @__PURE__ */
|
|
12540
|
+
step === "confirm" && result && /* @__PURE__ */ jsx37(
|
|
12180
12541
|
StepConfirm,
|
|
12181
12542
|
{
|
|
12182
12543
|
result,
|
|
@@ -12188,8 +12549,8 @@ function SEImportWizard({
|
|
|
12188
12549
|
}
|
|
12189
12550
|
)
|
|
12190
12551
|
] }),
|
|
12191
|
-
/* @__PURE__ */
|
|
12192
|
-
step !== "mode" && /* @__PURE__ */
|
|
12552
|
+
/* @__PURE__ */ jsxs27("footer", { className: "se-import-actions", children: [
|
|
12553
|
+
step !== "mode" && /* @__PURE__ */ jsx37(
|
|
12193
12554
|
LSButton,
|
|
12194
12555
|
{
|
|
12195
12556
|
type: "button",
|
|
@@ -12200,7 +12561,7 @@ function SEImportWizard({
|
|
|
12200
12561
|
label: "Back"
|
|
12201
12562
|
}
|
|
12202
12563
|
),
|
|
12203
|
-
step !== "mode" && /* @__PURE__ */
|
|
12564
|
+
step !== "mode" && /* @__PURE__ */ jsx37(
|
|
12204
12565
|
LSButton,
|
|
12205
12566
|
{
|
|
12206
12567
|
type: "button",
|