@interopio/groups-ui-react 2.4.1 → 2.6.0

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.
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { BaseMultiChannelSelectorProps } from "../../../types/defaultComponents";
3
+ declare const BaseMultiChannelSelector: React.FC<BaseMultiChannelSelectorProps>;
4
+ export default BaseMultiChannelSelector;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FlatMultiChannelSelectorProps } from "../../../types/defaultComponents";
3
+ declare const FlatMultiChannelSelector: React.FC<FlatMultiChannelSelectorProps>;
4
+ export default FlatMultiChannelSelector;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { TabMultiChannelSelectorProps } from "../../../types/defaultComponents";
3
+ declare const TabMultiChannelSelector: React.FC<TabMultiChannelSelectorProps>;
4
+ export default TabMultiChannelSelector;
@@ -41,7 +41,9 @@ import useCaptionEditor from "./defaultComponents/captionEditor/useCaptionEditor
41
41
  import FrameLoadingAnimation from "./defaultComponents/loadingAnimation/FrameLoadingAnimation";
42
42
  import HtmlButtons from "./defaultComponents/htmlButtonsBar/buttons";
43
43
  import TabOverflowPopup from "./defaultComponents/popups/TabOverflowPopup";
44
- export { GroupCaptionBar, GroupMoveArea, GroupButtons, GroupCaptionEditor, Tab, TabChannelSelector, TabCaption, TabCloseButton, TabCaptionEditor, FeedbackButton, CloneButton, StickyButton, ExtractButton, LockButton, UnlockButton, MinimizeButton, RestoreButton, MaximizeButton, CustomButton, CloseButton, FlatCaptionBar, FlatChannelSelector, FlatCaption, FlatMoveArea, FlatButtons, FlatCaptionEditor, TabHeaderButtons, FrameLoadingAnimation, HtmlButtons, TabOverflowPopup, OverflowButton, GroupComponentVisibilityState, useIOConnectWindow, useGroupComponentVisibility, waitForWindow, useEditableCaption, useCaptionEditor, useCommitGroupCaptionEditingRequested, useCommitFlatCaptionEditingRequested, useCommitTabCaptionEditingRequested, };
44
+ import TabMultiChannelSelector from "./defaultComponents/channelSelector/multi/TabMultiChannelSelector";
45
+ import FlatMultiChannelSelector from "./defaultComponents/channelSelector/multi/FlatMultiChannelSelector";
46
+ export { GroupCaptionBar, GroupMoveArea, GroupButtons, GroupCaptionEditor, Tab, TabChannelSelector, TabCaption, TabCloseButton, TabCaptionEditor, FeedbackButton, CloneButton, StickyButton, ExtractButton, LockButton, UnlockButton, MinimizeButton, RestoreButton, MaximizeButton, CustomButton, CloseButton, FlatCaptionBar, FlatChannelSelector, FlatCaption, FlatMoveArea, FlatButtons, FlatCaptionEditor, TabHeaderButtons, FrameLoadingAnimation, HtmlButtons, TabOverflowPopup, OverflowButton, GroupComponentVisibilityState, TabMultiChannelSelector, FlatMultiChannelSelector, useIOConnectWindow, useGroupComponentVisibility, waitForWindow, useEditableCaption, useCaptionEditor, useCommitGroupCaptionEditingRequested, useCommitFlatCaptionEditingRequested, useCommitTabCaptionEditingRequested, };
45
47
  export declare const getGroupId: () => string;
46
48
  export declare const requestPageFocus: () => void;
47
49
  export declare const requestFrameFocus: (frameId: string) => void;
package/dist/cjs/index.js CHANGED
@@ -615,10 +615,14 @@
615
615
  });
616
616
  };
617
617
  React.useEffect(function () {
618
- var _a;
619
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.addEventListener("mousedown", function (e) {
618
+ var handler = function (e) {
620
619
  e.stopPropagation();
621
- });
620
+ };
621
+ var current = ref.current;
622
+ current === null || current === void 0 ? void 0 : current.addEventListener("mousedown", handler);
623
+ return function () {
624
+ current === null || current === void 0 ? void 0 : current.removeEventListener("mousedown", handler);
625
+ };
622
626
  }, [ref]);
623
627
  var className = contentClass;
624
628
  if (selectedChannel && selectedChannelColor) {
@@ -628,7 +632,7 @@
628
632
  background: selectedChannelColor
629
633
  };
630
634
  return React__default["default"].createElement("div", { title: selectedChannel !== null && selectedChannel !== void 0 ? selectedChannel : "", ref: ref, style: style, onClick: wrappedOnClick, className: "t42-buttons " + outsideClass }, channelLabel ?
631
- React__default["default"].createElement("div", { className: className + " icon" },
635
+ React__default["default"].createElement("div", { className: className + " " + (direction ? "icon" : "") },
632
636
  channelLabel,
633
637
  direction && React__default["default"].createElement("i", { className: "icon-" + direction })) : React__default["default"].createElement("div", { className: className }));
634
638
  };
@@ -1790,10 +1794,64 @@
1790
1794
  return React__default["default"].createElement("div", { id: moveAreaId, className: "t42-move-area t42-frame-caption-bar-element" }, children);
1791
1795
  };
1792
1796
 
1797
+ var BaseMultiChannelSelector = function (_a) {
1798
+ var _b, _c, _d;
1799
+ var outsideClass = _a.outsideClass, contentClass = _a.contentClass, showSelector = _a.showSelector, selectedChannels = _a.selectedChannels, channelLabel = _a.channelLabel, channelRestrictions = _a.channelRestrictions;
1800
+ var ref = React.useRef(null);
1801
+ var len = selectedChannels.length;
1802
+ var showBaseChannelSelector = len < 2;
1803
+ var wrappedOnClick = function () {
1804
+ if (!ref.current) {
1805
+ return;
1806
+ }
1807
+ var bounds = ref.current.getBoundingClientRect();
1808
+ showSelector({
1809
+ left: bounds.left,
1810
+ top: bounds.top,
1811
+ width: bounds.width,
1812
+ height: bounds.height,
1813
+ });
1814
+ };
1815
+ React.useEffect(function () {
1816
+ var _a;
1817
+ if (showBaseChannelSelector) {
1818
+ return;
1819
+ }
1820
+ var handler = function (e) {
1821
+ e.stopPropagation();
1822
+ };
1823
+ var current = ref.current;
1824
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.addEventListener("mousedown", handler);
1825
+ return function () {
1826
+ current === null || current === void 0 ? void 0 : current.removeEventListener("mousedown", handler);
1827
+ };
1828
+ }, [ref, showBaseChannelSelector]);
1829
+ if (showBaseChannelSelector) {
1830
+ return React__default["default"].createElement(BaseChannelSelector, { showSelector: showSelector, selectedChannel: (_b = selectedChannels[0]) === null || _b === void 0 ? void 0 : _b.name, selectedChannelColor: (_c = selectedChannels[0]) === null || _c === void 0 ? void 0 : _c.color, outsideClass: outsideClass, contentClass: contentClass, channelLabel: channelLabel, direction: getChannelDirection(channelRestrictions) });
1831
+ }
1832
+ var colors = (_d = selectedChannels.map(function (channel) { return channel.color; })) !== null && _d !== void 0 ? _d : [];
1833
+ var title = colors.join(", ");
1834
+ var lenMax4 = Math.min(len, 4);
1835
+ var cssClass = "t42-multi-channel-selector-content t42-multi-channel-selector-" + lenMax4;
1836
+ var style = {};
1837
+ colors.forEach(function (color, index) {
1838
+ var colorVarName = "--t42-multi-channel-selector-" + lenMax4 + "-color-" + (index + 1);
1839
+ style[colorVarName] = color;
1840
+ });
1841
+ return (React__default["default"].createElement("div", { id: "basem", title: title, ref: ref, onClick: wrappedOnClick, className: "t42-buttons " + outsideClass },
1842
+ React__default["default"].createElement("div", { className: cssClass, style: style })));
1843
+ };
1844
+
1845
+ var FlatMultiChannelSelector = function (_a) {
1846
+ var showSelector = _a.showSelector, selectedChannels = _a.selectedChannels, channelRestrictions = _a.channelRestrictions, channelLabel = _a.channelLabel;
1847
+ return React__default["default"].createElement(BaseMultiChannelSelector, { outsideClass: channelLabel ? "t42-frame-caption-bar-element t42-frame-channel-selector t42-channel-selector-direction" : "t42-frame-caption-bar-element t42-frame-channel-selector", contentClass: !channelLabel ? "t42-frame-channel-selector-content" : "", showSelector: showSelector, selectedChannels: selectedChannels, channelRestrictions: channelRestrictions, channelLabel: channelLabel });
1848
+ };
1849
+
1793
1850
  var FlatCaptionBar = function (_a) {
1794
1851
  var moveAreaId = _a.moveAreaId, caption = _a.caption, channels = _a.channels, captionEditor = _a.captionEditor, notifyCaptionBoundsChanged = _a.notifyCaptionBoundsChanged, rest = __rest(_a, ["moveAreaId", "caption", "channels", "captionEditor", "notifyCaptionBoundsChanged"]);
1795
1852
  return (React__default["default"].createElement("div", { className: "t42-react-caption-bar" },
1796
- (channels === null || channels === void 0 ? void 0 : channels.visible) && React__default["default"].createElement(FlatChannelSelector, { showSelector: channels === null || channels === void 0 ? void 0 : channels.showSelector, selectedChannel: channels === null || channels === void 0 ? void 0 : channels.selectedChannel, selectedChannelColor: channels === null || channels === void 0 ? void 0 : channels.selectedChannelColor, channelRestrictions: channels === null || channels === void 0 ? void 0 : channels.channelRestrictions, channelLabel: channels === null || channels === void 0 ? void 0 : channels.channelLabel }),
1853
+ (channels === null || channels === void 0 ? void 0 : channels.visible) && channels.channelsMode !== "multi" && React__default["default"].createElement(FlatChannelSelector, { showSelector: channels === null || channels === void 0 ? void 0 : channels.showSelector, selectedChannel: channels === null || channels === void 0 ? void 0 : channels.selectedChannel, selectedChannelColor: channels === null || channels === void 0 ? void 0 : channels.selectedChannelColor, channelRestrictions: channels === null || channels === void 0 ? void 0 : channels.channelRestrictions, channelLabel: channels === null || channels === void 0 ? void 0 : channels.channelLabel }),
1854
+ (channels === null || channels === void 0 ? void 0 : channels.visible) && channels.channelsMode === "multi" && React__default["default"].createElement(FlatMultiChannelSelector, { showSelector: channels === null || channels === void 0 ? void 0 : channels.showSelector, selectedChannels: channels === null || channels === void 0 ? void 0 : channels.selectedChannels, channelRestrictions: channels === null || channels === void 0 ? void 0 : channels.channelRestrictions, channelLabel: channels === null || channels === void 0 ? void 0 : channels.channelLabel }),
1797
1855
  React__default["default"].createElement(FlatMoveArea, { moveAreaId: moveAreaId }, captionEditor.show ? React__default["default"].createElement(FlatCaptionEditor, __assign({}, captionEditor, { caption: captionEditor.text, frameId: rest.frameId })) : React__default["default"].createElement(FlatCaption, { notifyBoundsChanged: notifyCaptionBoundsChanged, caption: caption })),
1798
1856
  React__default["default"].createElement(FlatButtons, __assign({}, rest))));
1799
1857
  };
@@ -1838,6 +1896,11 @@
1838
1896
  return React__default["default"].createElement(BaseChannelSelector, { outsideClass: channelLabel ? "t42-tab-bar-element t42-tab-channel-selector t42-channel-selector-direction" : "t42-tab-bar-element t42-tab-channel-selector", contentClass: !channelLabel ? "t42-tab-channel-selector-content" : "", showSelector: showSelector, selectedChannel: selectedChannel, selectedChannelColor: selectedChannelColor, direction: getChannelDirection(channelRestrictions), channelLabel: channelLabel });
1839
1897
  };
1840
1898
 
1899
+ var TabMultiChannelSelector = function (_a) {
1900
+ var showSelector = _a.showSelector, selectedChannels = _a.selectedChannels, channelRestrictions = _a.channelRestrictions, channelLabel = _a.channelLabel;
1901
+ return React__default["default"].createElement(BaseMultiChannelSelector, { outsideClass: channelLabel ? "t42-tab-bar-element t42-tab-channel-selector t42-channel-selector-direction" : "t42-tab-bar-element t42-tab-channel-selector", contentClass: !channelLabel ? "t42-tab-channel-selector-content" : "", showSelector: showSelector, selectedChannels: selectedChannels, channelRestrictions: channelRestrictions, channelLabel: channelLabel });
1902
+ };
1903
+
1841
1904
  var TabCaption = function (_a) {
1842
1905
  var caption = _a.caption, selected = _a.selected, notifyBoundsChanged = _a.notifyBoundsChanged;
1843
1906
  var normalClassName = "t42-caption t42-tab-caption";
@@ -1873,7 +1936,8 @@
1873
1936
  var Tab = function (_a) {
1874
1937
  var caption = _a.caption, selected = _a.selected, close = _a.close, channels = _a.channels, captionEditor = _a.captionEditor, notifyCaptionBoundsChanged = _a.notifyCaptionBoundsChanged, windowId = _a.windowId, pinned = _a.pinned;
1875
1938
  return React__default["default"].createElement("div", { className: "t42-react-tab" },
1876
- channels.visible && React__default["default"].createElement(TabChannelSelector, __assign({}, channels)),
1939
+ channels.visible && channels.channelsMode !== "multi" && React__default["default"].createElement(TabChannelSelector, __assign({}, channels)),
1940
+ channels.visible && channels.channelsMode === "multi" && React__default["default"].createElement(TabMultiChannelSelector, __assign({}, channels)),
1877
1941
  captionEditor.show ?
1878
1942
  React__default["default"].createElement(TabCaptionEditor, __assign({}, captionEditor, { caption: captionEditor.text, selected: selected, windowId: windowId })) :
1879
1943
  React__default["default"].createElement(TabCaption, { notifyBoundsChanged: notifyCaptionBoundsChanged, caption: caption, selected: selected }),
@@ -2990,6 +3054,7 @@
2990
3054
  var _a;
2991
3055
  var FrameCaptionBarCustomElement = (_a = components === null || components === void 0 ? void 0 : components.flat) === null || _a === void 0 ? void 0 : _a.CaptionBar;
2992
3056
  return Object.values(state.frameCaptionBars).map(function (fcb) {
3057
+ var _a;
2993
3058
  if (!FrameCaptionBarCustomElement || !fcb.parentElement) {
2994
3059
  return;
2995
3060
  }
@@ -3047,7 +3112,9 @@
3047
3112
  selectedChannel: options.selectedChannel,
3048
3113
  selectedChannelColor: options.selectedChannelColor,
3049
3114
  channelRestrictions: options.channelRestrictions,
3050
- channelLabel: options.channelLabel
3115
+ channelLabel: options.channelLabel,
3116
+ channelsMode: (_a = options.channelsMode) !== null && _a !== void 0 ? _a : "single",
3117
+ selectedChannels: options.selectedChannels
3051
3118
  };
3052
3119
  var captionEditor = __assign(__assign({}, options.captionEditor), { commitChanges: function (text) {
3053
3120
  webGroupsManager.commitCaptionEditing(TargetType.Frame, options.targetId, text);
@@ -3150,7 +3217,7 @@
3150
3217
  var _a;
3151
3218
  var TabCustomElement = (_a = components === null || components === void 0 ? void 0 : components.tabs) === null || _a === void 0 ? void 0 : _a.Element;
3152
3219
  return Object.values(state.tabElements).map(function (te) {
3153
- var _a;
3220
+ var _a, _b;
3154
3221
  if (!TabCustomElement || !te.parentElement) {
3155
3222
  return;
3156
3223
  }
@@ -3167,7 +3234,9 @@
3167
3234
  selectedChannel: options.selectedChannel,
3168
3235
  selectedChannelColor: (_a = options.selectedChannelColor) !== null && _a !== void 0 ? _a : options.selectedChannel,
3169
3236
  channelRestrictions: options.channelRestrictions,
3170
- channelLabel: options.channelLabel
3237
+ channelLabel: options.channelLabel,
3238
+ channelsMode: (_b = options.channelsMode) !== null && _b !== void 0 ? _b : "single",
3239
+ selectedChannels: options.selectedChannels
3171
3240
  };
3172
3241
  var captionEditor = __assign(__assign({}, options.captionEditor), { commitChanges: function (text) {
3173
3242
  webGroupsManager.commitCaptionEditing(TargetType.Tab, options.targetId, text);
@@ -3475,6 +3544,7 @@
3475
3544
  exports.FlatCaptionEditor = FlatCaptionEditor;
3476
3545
  exports.FlatChannelSelector = FlatChannelSelector;
3477
3546
  exports.FlatMoveArea = FlatMoveArea;
3547
+ exports.FlatMultiChannelSelector = FlatMultiChannelSelector;
3478
3548
  exports.FrameLoadingAnimation = FrameLoadingAnimation;
3479
3549
  exports.GroupButtons = GroupButtons;
3480
3550
  exports.GroupCaption = GroupCaption;
@@ -3494,6 +3564,7 @@
3494
3564
  exports.TabChannelSelector = TabChannelSelector;
3495
3565
  exports.TabCloseButton = TabCloseButton;
3496
3566
  exports.TabHeaderButtons = TabHeaderButtons;
3567
+ exports.TabMultiChannelSelector = TabMultiChannelSelector;
3497
3568
  exports.TabOverflowPopup = TabOverflowPopup;
3498
3569
  exports.UnlockButton = UnlockButton;
3499
3570
  exports["default"] = GroupElementCreationWrapper;