@interopio/groups-ui-react 2.4.1 → 2.5.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.
Files changed (56) hide show
  1. package/dist/GroupElementCreationWrapper.d.ts +49 -0
  2. package/dist/GroupWrapper.d.ts +9 -0
  3. package/dist/Portal.d.ts +6 -0
  4. package/dist/cjs/defaultComponents/channelSelector/multi/BaseMultiChannelSelector.d.ts +4 -0
  5. package/dist/cjs/defaultComponents/channelSelector/multi/ColorRectangle.d.ts +7 -0
  6. package/dist/cjs/defaultComponents/channelSelector/multi/FlatMultiChannelSelector.d.ts +4 -0
  7. package/dist/cjs/defaultComponents/channelSelector/multi/TabMultiChannelSelector.d.ts +4 -0
  8. package/dist/cjs/index.d.ts +3 -1
  9. package/dist/cjs/index.js +80 -9
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/types/api.d.ts +5 -0
  12. package/dist/cjs/types/defaultComponents.d.ts +38 -0
  13. package/dist/cjs/types/internal.d.ts +10 -0
  14. package/dist/defaultComponents/BaseButton.d.ts +4 -0
  15. package/dist/defaultComponents/CloseButton.d.ts +4 -0
  16. package/dist/defaultComponents/ExtractButton.d.ts +4 -0
  17. package/dist/defaultComponents/MaximizeButton.d.ts +4 -0
  18. package/dist/defaultComponents/MinimizeButton.d.ts +4 -0
  19. package/dist/defaultComponents/RestoreButton.d.ts +4 -0
  20. package/dist/defaultComponents/Tab.d.ts +4 -0
  21. package/dist/defaultComponents/TabCaption.d.ts +4 -0
  22. package/dist/defaultComponents/TabCloseButton.d.ts +4 -0
  23. package/dist/defaultComponents/TabHeaderButtons.d.ts +4 -0
  24. package/dist/defaultComponents/channelSelector/BaseChannelSelector.d.ts +4 -0
  25. package/dist/defaultComponents/channelSelector/FrameChannelSelector.d.ts +4 -0
  26. package/dist/defaultComponents/channelSelector/TabChannelSelector.d.ts +4 -0
  27. package/dist/defaultComponents/channelSelector/utils.d.ts +1 -0
  28. package/dist/defaultComponents/frameCaptionBar/FrameButtons.d.ts +4 -0
  29. package/dist/defaultComponents/frameCaptionBar/FrameCaption.d.ts +4 -0
  30. package/dist/defaultComponents/frameCaptionBar/FrameCaptionBar.d.ts +4 -0
  31. package/dist/defaultComponents/frameCaptionBar/FrameMoveArea.d.ts +4 -0
  32. package/dist/defaultComponents/groupCaptionBar/GroupButtons.d.ts +4 -0
  33. package/dist/defaultComponents/groupCaptionBar/GroupCaption.d.ts +4 -0
  34. package/dist/defaultComponents/groupCaptionBar/GroupCaptionBar.d.ts +4 -0
  35. package/dist/defaultComponents/groupCaptionBar/GroupMoveArea.d.ts +4 -0
  36. package/dist/esm/defaultComponents/channelSelector/multi/BaseMultiChannelSelector.d.ts +4 -0
  37. package/dist/esm/defaultComponents/channelSelector/multi/ColorRectangle.d.ts +7 -0
  38. package/dist/esm/defaultComponents/channelSelector/multi/FlatMultiChannelSelector.d.ts +4 -0
  39. package/dist/esm/defaultComponents/channelSelector/multi/TabMultiChannelSelector.d.ts +4 -0
  40. package/dist/esm/index.d.ts +3 -1
  41. package/dist/esm/index.js +79 -10
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/types/api.d.ts +5 -0
  44. package/dist/esm/types/defaultComponents.d.ts +38 -0
  45. package/dist/esm/types/internal.d.ts +10 -0
  46. package/dist/index.d.ts +27 -0
  47. package/dist/index.js +16 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/styles/fonts.css +2 -0
  50. package/dist/styles/groups.css +65 -9
  51. package/dist/styles/styles.css +574 -0
  52. package/dist/styles/themes.css +155 -0
  53. package/dist/styles/vars.css +16 -4
  54. package/dist/types/internal.d.ts +373 -0
  55. package/dist/webGroupsManager.d.ts +35 -0
  56. package/package.json +1 -1
@@ -6,6 +6,11 @@ export interface ChannelProps {
6
6
  selectedChannel: string;
7
7
  showSelector: (bounds: Bounds) => void;
8
8
  selectedChannelColor: string;
9
+ channelsMode: "single" | "multi";
10
+ selectedChannels: {
11
+ name: string;
12
+ color: string;
13
+ }[];
9
14
  channelRestrictions: {
10
15
  read: boolean;
11
16
  write: boolean;
@@ -57,6 +57,20 @@ export interface BaseChannelSelectorProps {
57
57
  direction: string;
58
58
  channelLabel: string;
59
59
  }
60
+ export interface BaseMultiChannelSelectorProps {
61
+ showSelector: (bounds: Bounds) => void;
62
+ outsideClass: string;
63
+ contentClass: string;
64
+ selectedChannels: {
65
+ name: string;
66
+ color: string;
67
+ }[];
68
+ channelRestrictions: {
69
+ read: boolean;
70
+ write: boolean;
71
+ };
72
+ channelLabel: string;
73
+ }
60
74
  export interface FlatChannelSelectorProps {
61
75
  showSelector: (bounds: Bounds) => void;
62
76
  selectedChannel: string;
@@ -67,6 +81,18 @@ export interface FlatChannelSelectorProps {
67
81
  };
68
82
  channelLabel: string;
69
83
  }
84
+ export interface FlatMultiChannelSelectorProps {
85
+ showSelector: (bounds: Bounds) => void;
86
+ selectedChannels: {
87
+ name: string;
88
+ color: string;
89
+ }[];
90
+ channelRestrictions: {
91
+ read: boolean;
92
+ write: boolean;
93
+ };
94
+ channelLabel: string;
95
+ }
70
96
  export interface TabChannelSelectorProps {
71
97
  showSelector: (bounds: Bounds) => void;
72
98
  selectedChannel: string;
@@ -77,6 +103,18 @@ export interface TabChannelSelectorProps {
77
103
  };
78
104
  channelLabel: string;
79
105
  }
106
+ export interface TabMultiChannelSelectorProps {
107
+ showSelector: (bounds: Bounds) => void;
108
+ selectedChannels: {
109
+ name: string;
110
+ color: string;
111
+ }[];
112
+ channelRestrictions: {
113
+ read: boolean;
114
+ write: boolean;
115
+ };
116
+ channelLabel: string;
117
+ }
80
118
  export interface FlatCaptionEditorProps {
81
119
  frameId: string;
82
120
  commitChanges: (title: string) => void;
@@ -102,6 +102,11 @@ export interface CreateFrameCaptionBarRequestOptions extends CreateButtonsOption
102
102
  show: boolean;
103
103
  text?: string;
104
104
  };
105
+ channelsMode: "single" | "multi";
106
+ selectedChannels: {
107
+ name: string;
108
+ color: string;
109
+ }[];
105
110
  channelRestrictions: {
106
111
  read: boolean;
107
112
  write: boolean;
@@ -120,6 +125,11 @@ export interface CreateTabRequestOptions extends CreateElementRequestOptions {
120
125
  show: boolean;
121
126
  text?: string;
122
127
  };
128
+ channelsMode: "single" | "multi";
129
+ selectedChannels: {
130
+ name: string;
131
+ color: string;
132
+ }[];
123
133
  channelRestrictions: {
124
134
  read: boolean;
125
135
  write: boolean;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { BaseButtonProps } from "../types/internal";
3
+ declare const BaseButton: React.FC<BaseButtonProps>;
4
+ export default BaseButton;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { CloseButtonProps } from "../types/internal";
3
+ declare const CloseButton: React.FC<CloseButtonProps>;
4
+ export default CloseButton;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { MinimizeButtonProps } from "../types/internal";
3
+ declare const ExtractButton: React.FC<MinimizeButtonProps>;
4
+ export default ExtractButton;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { MaximizeButtonProps } from "../types/internal";
3
+ declare const MaximizeButton: React.FC<MaximizeButtonProps>;
4
+ export default MaximizeButton;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { MinimizeButtonProps } from "../types/internal";
3
+ declare const MinimizeButton: React.FC<MinimizeButtonProps>;
4
+ export default MinimizeButton;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { RestoreButtonProps } from "../types/internal";
3
+ declare const RestoreButton: React.FC<RestoreButtonProps>;
4
+ export default RestoreButton;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { TabElementProps } from "../types/internal";
3
+ declare const Tab: React.FC<TabElementProps>;
4
+ export default Tab;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { TabCaptionProps } from "../types/internal";
3
+ declare const TabCaption: React.FC<TabCaptionProps>;
4
+ export default TabCaption;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { TabCloseButtonProps } from "../types/internal";
3
+ declare const TabCloseButton: React.FC<TabCloseButtonProps>;
4
+ export default TabCloseButton;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { TabHeaderButtonsProps } from "../types/internal";
3
+ declare const TabHeaderButtons: React.FC<TabHeaderButtonsProps>;
4
+ export default TabHeaderButtons;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { BaseChannelSelectorProps } from "../../types/internal";
3
+ declare const BaseChannelSelector: React.FC<BaseChannelSelectorProps>;
4
+ export default BaseChannelSelector;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FrameChannelSelectorProps } from "../../types/internal";
3
+ declare const FrameChannelSelector: React.FC<FrameChannelSelectorProps>;
4
+ export default FrameChannelSelector;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { TabChannelSelectorProps } from "../../types/internal";
3
+ declare const TabChannelSelector: React.FC<TabChannelSelectorProps>;
4
+ export default TabChannelSelector;
@@ -0,0 +1 @@
1
+ export declare function IsBlackReadable(color: string): boolean;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FrameButtonsProps } from "../../types/internal";
3
+ declare const FrameButtons: React.FC<FrameButtonsProps>;
4
+ export default FrameButtons;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FrameCaptionProps } from "../../types/internal";
3
+ declare const FrameCaption: React.FC<FrameCaptionProps>;
4
+ export default FrameCaption;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FrameCaptionBarProps } from "../../types/internal";
3
+ declare const FrameCaptionBar: React.FC<FrameCaptionBarProps>;
4
+ export default FrameCaptionBar;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FrameMoveAreaProps } from "../../types/internal";
3
+ declare const FrameMoveArea: React.FC<FrameMoveAreaProps>;
4
+ export default FrameMoveArea;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { GroupButtonsProps } from "../../types/internal";
3
+ declare const GroupButtons: React.FC<GroupButtonsProps>;
4
+ export default GroupButtons;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { GroupCaptionProps } from "../../types/internal";
3
+ declare const GroupCaption: React.FC<GroupCaptionProps>;
4
+ export default GroupCaption;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { GroupCaptionBarProps } from "../../types/internal";
3
+ declare const GroupCaptionBar: React.FC<GroupCaptionBarProps>;
4
+ export default GroupCaptionBar;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { GroupMoveAreaProps } from "../../types/internal";
3
+ declare const GroupMoveArea: React.FC<GroupMoveAreaProps>;
4
+ export default GroupMoveArea;
@@ -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,7 @@
1
+ import React from 'react';
2
+ interface ColorRectangleProps {
3
+ colors: string[];
4
+ onClick: () => void;
5
+ }
6
+ declare const ColorRectangle: React.FC<ColorRectangleProps>;
7
+ export default ColorRectangle;
@@ -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/esm/index.js CHANGED
@@ -608,10 +608,14 @@ var BaseChannelSelector = function (_a) {
608
608
  });
609
609
  };
610
610
  useEffect(function () {
611
- var _a;
612
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.addEventListener("mousedown", function (e) {
611
+ var handler = function (e) {
613
612
  e.stopPropagation();
614
- });
613
+ };
614
+ var current = ref.current;
615
+ current === null || current === void 0 ? void 0 : current.addEventListener("mousedown", handler);
616
+ return function () {
617
+ current === null || current === void 0 ? void 0 : current.removeEventListener("mousedown", handler);
618
+ };
615
619
  }, [ref]);
616
620
  var className = contentClass;
617
621
  if (selectedChannel && selectedChannelColor) {
@@ -621,7 +625,7 @@ var BaseChannelSelector = function (_a) {
621
625
  background: selectedChannelColor
622
626
  };
623
627
  return React.createElement("div", { title: selectedChannel !== null && selectedChannel !== void 0 ? selectedChannel : "", ref: ref, style: style, onClick: wrappedOnClick, className: "t42-buttons " + outsideClass }, channelLabel ?
624
- React.createElement("div", { className: className + " icon" },
628
+ React.createElement("div", { className: className + " " + (direction ? "icon" : "") },
625
629
  channelLabel,
626
630
  direction && React.createElement("i", { className: "icon-" + direction })) : React.createElement("div", { className: className }));
627
631
  };
@@ -1783,10 +1787,64 @@ var FlatMoveArea = function (_a) {
1783
1787
  return React.createElement("div", { id: moveAreaId, className: "t42-move-area t42-frame-caption-bar-element" }, children);
1784
1788
  };
1785
1789
 
1790
+ var BaseMultiChannelSelector = function (_a) {
1791
+ var _b, _c, _d;
1792
+ var outsideClass = _a.outsideClass, contentClass = _a.contentClass, showSelector = _a.showSelector, selectedChannels = _a.selectedChannels, channelLabel = _a.channelLabel, channelRestrictions = _a.channelRestrictions;
1793
+ var ref = useRef(null);
1794
+ var len = selectedChannels.length;
1795
+ var showBaseChannelSelector = len < 2;
1796
+ var wrappedOnClick = function () {
1797
+ if (!ref.current) {
1798
+ return;
1799
+ }
1800
+ var bounds = ref.current.getBoundingClientRect();
1801
+ showSelector({
1802
+ left: bounds.left,
1803
+ top: bounds.top,
1804
+ width: bounds.width,
1805
+ height: bounds.height,
1806
+ });
1807
+ };
1808
+ useEffect(function () {
1809
+ var _a;
1810
+ if (showBaseChannelSelector) {
1811
+ return;
1812
+ }
1813
+ var handler = function (e) {
1814
+ e.stopPropagation();
1815
+ };
1816
+ var current = ref.current;
1817
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.addEventListener("mousedown", handler);
1818
+ return function () {
1819
+ current === null || current === void 0 ? void 0 : current.removeEventListener("mousedown", handler);
1820
+ };
1821
+ }, [ref, showBaseChannelSelector]);
1822
+ if (showBaseChannelSelector) {
1823
+ return React.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) });
1824
+ }
1825
+ var colors = (_d = selectedChannels.map(function (channel) { return channel.color; })) !== null && _d !== void 0 ? _d : [];
1826
+ var title = colors.join(", ");
1827
+ var lenMax4 = Math.min(len, 4);
1828
+ var cssClass = "t42-multi-channel-selector-content t42-multi-channel-selector-" + lenMax4;
1829
+ var style = {};
1830
+ colors.forEach(function (color, index) {
1831
+ var colorVarName = "--t42-multi-channel-selector-" + lenMax4 + "-color-" + (index + 1);
1832
+ style[colorVarName] = color;
1833
+ });
1834
+ return (React.createElement("div", { id: "basem", title: title, ref: ref, onClick: wrappedOnClick, className: "t42-buttons " + outsideClass },
1835
+ React.createElement("div", { className: cssClass, style: style })));
1836
+ };
1837
+
1838
+ var FlatMultiChannelSelector = function (_a) {
1839
+ var showSelector = _a.showSelector, selectedChannels = _a.selectedChannels, channelRestrictions = _a.channelRestrictions, channelLabel = _a.channelLabel;
1840
+ return React.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 });
1841
+ };
1842
+
1786
1843
  var FlatCaptionBar = function (_a) {
1787
1844
  var moveAreaId = _a.moveAreaId, caption = _a.caption, channels = _a.channels, captionEditor = _a.captionEditor, notifyCaptionBoundsChanged = _a.notifyCaptionBoundsChanged, rest = __rest(_a, ["moveAreaId", "caption", "channels", "captionEditor", "notifyCaptionBoundsChanged"]);
1788
1845
  return (React.createElement("div", { className: "t42-react-caption-bar" },
1789
- (channels === null || channels === void 0 ? void 0 : channels.visible) && React.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 }),
1846
+ (channels === null || channels === void 0 ? void 0 : channels.visible) && channels.channelsMode !== "multi" && React.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 }),
1847
+ (channels === null || channels === void 0 ? void 0 : channels.visible) && channels.channelsMode === "multi" && React.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 }),
1790
1848
  React.createElement(FlatMoveArea, { moveAreaId: moveAreaId }, captionEditor.show ? React.createElement(FlatCaptionEditor, __assign({}, captionEditor, { caption: captionEditor.text, frameId: rest.frameId })) : React.createElement(FlatCaption, { notifyBoundsChanged: notifyCaptionBoundsChanged, caption: caption })),
1791
1849
  React.createElement(FlatButtons, __assign({}, rest))));
1792
1850
  };
@@ -1831,6 +1889,11 @@ var TabChannelSelector = function (_a) {
1831
1889
  return React.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 });
1832
1890
  };
1833
1891
 
1892
+ var TabMultiChannelSelector = function (_a) {
1893
+ var showSelector = _a.showSelector, selectedChannels = _a.selectedChannels, channelRestrictions = _a.channelRestrictions, channelLabel = _a.channelLabel;
1894
+ return React.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 });
1895
+ };
1896
+
1834
1897
  var TabCaption = function (_a) {
1835
1898
  var caption = _a.caption, selected = _a.selected, notifyBoundsChanged = _a.notifyBoundsChanged;
1836
1899
  var normalClassName = "t42-caption t42-tab-caption";
@@ -1866,7 +1929,8 @@ var TabCloseButton = function (_a) {
1866
1929
  var Tab = function (_a) {
1867
1930
  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;
1868
1931
  return React.createElement("div", { className: "t42-react-tab" },
1869
- channels.visible && React.createElement(TabChannelSelector, __assign({}, channels)),
1932
+ channels.visible && channels.channelsMode !== "multi" && React.createElement(TabChannelSelector, __assign({}, channels)),
1933
+ channels.visible && channels.channelsMode === "multi" && React.createElement(TabMultiChannelSelector, __assign({}, channels)),
1870
1934
  captionEditor.show ?
1871
1935
  React.createElement(TabCaptionEditor, __assign({}, captionEditor, { caption: captionEditor.text, selected: selected, windowId: windowId })) :
1872
1936
  React.createElement(TabCaption, { notifyBoundsChanged: notifyCaptionBoundsChanged, caption: caption, selected: selected }),
@@ -2983,6 +3047,7 @@ var GroupElementCreationWrapper = function (_a) {
2983
3047
  var _a;
2984
3048
  var FrameCaptionBarCustomElement = (_a = components === null || components === void 0 ? void 0 : components.flat) === null || _a === void 0 ? void 0 : _a.CaptionBar;
2985
3049
  return Object.values(state.frameCaptionBars).map(function (fcb) {
3050
+ var _a;
2986
3051
  if (!FrameCaptionBarCustomElement || !fcb.parentElement) {
2987
3052
  return;
2988
3053
  }
@@ -3040,7 +3105,9 @@ var GroupElementCreationWrapper = function (_a) {
3040
3105
  selectedChannel: options.selectedChannel,
3041
3106
  selectedChannelColor: options.selectedChannelColor,
3042
3107
  channelRestrictions: options.channelRestrictions,
3043
- channelLabel: options.channelLabel
3108
+ channelLabel: options.channelLabel,
3109
+ channelsMode: (_a = options.channelsMode) !== null && _a !== void 0 ? _a : "single",
3110
+ selectedChannels: options.selectedChannels
3044
3111
  };
3045
3112
  var captionEditor = __assign(__assign({}, options.captionEditor), { commitChanges: function (text) {
3046
3113
  webGroupsManager.commitCaptionEditing(TargetType.Frame, options.targetId, text);
@@ -3143,7 +3210,7 @@ var GroupElementCreationWrapper = function (_a) {
3143
3210
  var _a;
3144
3211
  var TabCustomElement = (_a = components === null || components === void 0 ? void 0 : components.tabs) === null || _a === void 0 ? void 0 : _a.Element;
3145
3212
  return Object.values(state.tabElements).map(function (te) {
3146
- var _a;
3213
+ var _a, _b;
3147
3214
  if (!TabCustomElement || !te.parentElement) {
3148
3215
  return;
3149
3216
  }
@@ -3160,7 +3227,9 @@ var GroupElementCreationWrapper = function (_a) {
3160
3227
  selectedChannel: options.selectedChannel,
3161
3228
  selectedChannelColor: (_a = options.selectedChannelColor) !== null && _a !== void 0 ? _a : options.selectedChannel,
3162
3229
  channelRestrictions: options.channelRestrictions,
3163
- channelLabel: options.channelLabel
3230
+ channelLabel: options.channelLabel,
3231
+ channelsMode: (_b = options.channelsMode) !== null && _b !== void 0 ? _b : "single",
3232
+ selectedChannels: options.selectedChannels
3164
3233
  };
3165
3234
  var captionEditor = __assign(__assign({}, options.captionEditor), { commitChanges: function (text) {
3166
3235
  webGroupsManager.commitCaptionEditing(TargetType.Tab, options.targetId, text);
@@ -3457,5 +3526,5 @@ var onCommitGroupCaptionEditingRequested = function (targetId, cb) { return webG
3457
3526
  var onCommitFlatCaptionEditingRequested = function (targetId, cb) { return webGroupsManager.onCommitCaptionEditingRequested(TargetType.Frame, targetId, cb); };
3458
3527
  var onCommitTabCaptionEditingRequested = function (targetId, cb) { return webGroupsManager.onCommitCaptionEditingRequested(TargetType.Tab, targetId, cb); };
3459
3528
 
3460
- export { CloneButton, CloseButton, CustomButton, ExtractButton, FeedbackButton, FlatButtons, FlatCaption, FlatCaptionBar, FlatCaptionEditor, FlatChannelSelector, FlatMoveArea, FrameLoadingAnimation, GroupButtons, GroupCaption, GroupCaptionBar, GroupCaptionEditor, GroupMoveArea, HtmlButtons, LockButton, MaximizeButton, MinimizeButton, OverflowButton, RestoreButton, StickyButton, Tab, TabCaption, TabCaptionEditor, TabChannelSelector, TabCloseButton, TabHeaderButtons, TabOverflowPopup, UnlockButton, GroupElementCreationWrapper as default, getGroupId, onCommitFlatCaptionEditingRequested, onCommitGroupCaptionEditingRequested, onCommitTabCaptionEditingRequested, openTabOverflowPopup, requestFrameFocus, requestGroupFocus, requestPageFocus, useCaptionEditor, useCommitFlatCaptionEditingRequested, useCommitGroupCaptionEditingRequested, useCommitTabCaptionEditingRequested, useEditableCaption, useGroupComponentVisibility, useIOConnectWindow, waitForWindow };
3529
+ export { CloneButton, CloseButton, CustomButton, ExtractButton, FeedbackButton, FlatButtons, FlatCaption, FlatCaptionBar, FlatCaptionEditor, FlatChannelSelector, FlatMoveArea, FlatMultiChannelSelector, FrameLoadingAnimation, GroupButtons, GroupCaption, GroupCaptionBar, GroupCaptionEditor, GroupMoveArea, HtmlButtons, LockButton, MaximizeButton, MinimizeButton, OverflowButton, RestoreButton, StickyButton, Tab, TabCaption, TabCaptionEditor, TabChannelSelector, TabCloseButton, TabHeaderButtons, TabMultiChannelSelector, TabOverflowPopup, UnlockButton, GroupElementCreationWrapper as default, getGroupId, onCommitFlatCaptionEditingRequested, onCommitGroupCaptionEditingRequested, onCommitTabCaptionEditingRequested, openTabOverflowPopup, requestFrameFocus, requestGroupFocus, requestPageFocus, useCaptionEditor, useCommitFlatCaptionEditingRequested, useCommitGroupCaptionEditingRequested, useCommitTabCaptionEditingRequested, useEditableCaption, useGroupComponentVisibility, useIOConnectWindow, waitForWindow };
3461
3530
  //# sourceMappingURL=index.js.map