@appquality/unguess-design-system 3.1.100-beta-attachments → 3.1.100
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/CHANGELOG.md +454 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +1090 -656
- package/build/stories/avatar/InternalAvatar.d.ts +2 -0
- package/build/stories/buttons/utils.d.ts +33 -33
- package/build/stories/chat/_types.d.ts +8 -6
- package/build/stories/chat/context/chatContext.d.ts +4 -4
- package/build/stories/chat/hooks/useMedia.d.ts +8 -0
- package/build/stories/chat/index.stories.d.ts +4 -4
- package/build/stories/chat/parts/MediaLightbox.d.ts +14 -0
- package/build/stories/chat/parts/ThumbnailContainer/Thumbnail.d.ts +11 -0
- package/build/stories/chat/parts/ThumbnailContainer/index.d.ts +1 -9
- package/build/stories/chat/parts/comment.d.ts +2 -7
- package/build/stories/highlight/CreateObservationButton.d.ts +17 -0
- package/build/stories/highlight/_types.d.ts +39 -0
- package/build/stories/highlight/demo-parts/data.d.ts +55 -0
- package/build/stories/highlight/demo-parts/sentiment-tag.d.ts +7 -0
- package/build/stories/highlight/demo-parts/transcript-base.d.ts +5 -0
- package/build/stories/highlight/demo-parts/transcript-diarization.d.ts +5 -0
- package/build/stories/highlight/demo-parts/transcript-paragraph.d.ts +5 -0
- package/build/stories/highlight/demo-parts/transcript-sentiment.d.ts +5 -0
- package/build/stories/highlight/highlightContext.d.ts +10 -0
- package/build/stories/highlight/index.d.ts +10 -0
- package/build/stories/highlight/index.stories.d.ts +18 -0
- package/build/stories/highlight/searchable.d.ts +3 -0
- package/build/stories/player/_types.d.ts +36 -1
- package/build/stories/player/context/progressContext.d.ts +16 -0
- package/build/stories/player/index.stories.d.ts +2 -1
- package/build/stories/player/parts/bookmark.d.ts +2 -0
- package/build/stories/player/parts/controlButton.d.ts +289 -0
- package/build/stories/player/parts/controls.d.ts +8 -2
- package/build/stories/player/parts/controlsCenterGroup.d.ts +2 -1
- package/build/stories/player/parts/cutterButton.d.ts +6 -0
- package/build/stories/player/parts/progress.d.ts +11 -0
- package/build/stories/player/parts/timeLabel.d.ts +2 -2
- package/build/stories/tooltip/_types.d.ts +1 -0
- package/build/stories/tooltip/index.d.ts +1 -0
- package/build/stories/tooltip/index.stories.d.ts +1 -0
- package/package.json +2 -1
- package/.vscode/settings.json +0 -3
- package/build/stories/chat/parts/ThumbnailContainer/ImageThumbnail.d.ts +0 -11
- package/build/stories/chat/parts/ThumbnailContainer/VideoThumbnail.d.ts +0 -11
- /package/build/stories/player/{parts/utils.d.ts → utils.d.ts} +0 -0
package/build/index.js
CHANGED
|
@@ -25,9 +25,9 @@ var sunburst = require('@nivo/sunburst');
|
|
|
25
25
|
var waffle = require('@nivo/waffle');
|
|
26
26
|
var line = require('@nivo/line');
|
|
27
27
|
var reactForms = require('@zendeskgarden/react-forms');
|
|
28
|
-
var uuid = require('uuid');
|
|
29
28
|
var react = require('@tiptap/react');
|
|
30
29
|
var reactTooltips = require('@zendeskgarden/react-tooltips');
|
|
30
|
+
var uuid = require('uuid');
|
|
31
31
|
var Typography = require('@tiptap/extension-typography');
|
|
32
32
|
var Link = require('@tiptap/extension-link');
|
|
33
33
|
var StarterKit = require('@tiptap/starter-kit');
|
|
@@ -38,10 +38,10 @@ var Mention = require('@tiptap/extension-mention');
|
|
|
38
38
|
var tippy = require('tippy.js');
|
|
39
39
|
var Image$2 = require('@tiptap/extension-image');
|
|
40
40
|
var Dropcursor = require('@tiptap/extension-dropcursor');
|
|
41
|
-
var reactGrid = require('@zendeskgarden/react-grid');
|
|
42
41
|
var reactModals = require('@zendeskgarden/react-modals');
|
|
43
42
|
var SlickSlider = require('react-slick');
|
|
44
43
|
var Video = require('@appquality/stream-player');
|
|
44
|
+
var reactGrid = require('@zendeskgarden/react-grid');
|
|
45
45
|
var containerUtilities = require('@zendeskgarden/container-utilities');
|
|
46
46
|
var reactColorpickers = require('@zendeskgarden/react-colorpickers');
|
|
47
47
|
var reactDropdowns = require('@zendeskgarden/react-dropdowns');
|
|
@@ -334,8 +334,8 @@ const UgContainerCard = styled__default["default"](reactNotifications.Well) `
|
|
|
334
334
|
`;
|
|
335
335
|
const ContainerCard = (props) => jsxRuntime.jsx(UgContainerCard, Object.assign({}, props));
|
|
336
336
|
|
|
337
|
-
var _a, _b, _c, _d, _e, _f, _g$
|
|
338
|
-
const components = Object.assign(Object.assign(Object.assign(Object.assign({}, reactTheming.DEFAULT_THEME.components), { chrome: Object.assign(Object.assign({}, (_a = reactTheming.DEFAULT_THEME.components) === null || _a === void 0 ? void 0 : _a.chrome), { header: Object.assign(Object.assign({}, (_c = (_b = reactTheming.DEFAULT_THEME.components) === null || _b === void 0 ? void 0 : _b.chrome) === null || _c === void 0 ? void 0 : _c.header), { height: "64px" }), nav: Object.assign(Object.assign({}, (_e = (_d = reactTheming.DEFAULT_THEME.components) === null || _d === void 0 ? void 0 : _d.chrome) === null || _e === void 0 ? void 0 : _e.nav), { openWidth: 240, closedWidth: 36, workspaceDropdownWidth: 192 }) }), notification: Object.assign(Object.assign({}, (_f = reactTheming.DEFAULT_THEME.components) === null || _f === void 0 ? void 0 : _f.notification), { card: Object.assign(Object.assign({}, (_h = (_g$
|
|
337
|
+
var _a, _b, _c, _d, _e, _f, _g$d, _h;
|
|
338
|
+
const components = Object.assign(Object.assign(Object.assign(Object.assign({}, reactTheming.DEFAULT_THEME.components), { chrome: Object.assign(Object.assign({}, (_a = reactTheming.DEFAULT_THEME.components) === null || _a === void 0 ? void 0 : _a.chrome), { header: Object.assign(Object.assign({}, (_c = (_b = reactTheming.DEFAULT_THEME.components) === null || _b === void 0 ? void 0 : _b.chrome) === null || _c === void 0 ? void 0 : _c.header), { height: "64px" }), nav: Object.assign(Object.assign({}, (_e = (_d = reactTheming.DEFAULT_THEME.components) === null || _d === void 0 ? void 0 : _d.chrome) === null || _e === void 0 ? void 0 : _e.nav), { openWidth: 240, closedWidth: 36, workspaceDropdownWidth: 192 }) }), notification: Object.assign(Object.assign({}, (_f = reactTheming.DEFAULT_THEME.components) === null || _f === void 0 ? void 0 : _f.notification), { card: Object.assign(Object.assign({}, (_h = (_g$d = reactTheming.DEFAULT_THEME.components) === null || _g$d === void 0 ? void 0 : _g$d.notification) === null || _h === void 0 ? void 0 : _h.well), { padding: "16px" }) }) }), cardCmponentStyle), { "text.primary": () => ({
|
|
339
339
|
color: getColor(colors.primaryHue, 600),
|
|
340
340
|
}), "text.success": () => ({
|
|
341
341
|
color: getColor(colors.successHue, 700),
|
|
@@ -642,6 +642,15 @@ Alert.Close = reactNotifications.Close;
|
|
|
642
642
|
|
|
643
643
|
var img$2 = "data:image/svg+xml,%3csvg width='26' height='26' viewBox='0 0 26 26' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M17.2597 12.9199V14.767H17.2367C17.075 17.4452 15.5974 18.969 13.127 18.969C10.4949 18.969 8.92496 17.4452 8.76335 14.767H8.74026V12.9199H5V14.767V14.7901C5.20779 19.4538 8.34777 22.4322 13.1039 22.4322C17.8139 22.4322 20.7922 19.5231 21 14.7901V12.9199H17.2597Z' fill='%23003A57'/%3e%3cpath d='M8.78629 3.5H5.02295V7.26335H8.78629V3.5Z' fill='%2370C38A'/%3e%3cpath d='M20.9768 3.5H17.1672V7.30952H20.9768V3.5Z' fill='%23003A57'/%3e%3c/svg%3e";
|
|
644
644
|
|
|
645
|
+
const StyledInternalAvatar = styled__default["default"].div `
|
|
646
|
+
display: flex;
|
|
647
|
+
align-items: center;
|
|
648
|
+
justify-content: center;
|
|
649
|
+
`;
|
|
650
|
+
const InternalAvatar = () => {
|
|
651
|
+
return (jsxRuntime.jsx(StyledInternalAvatar, { children: jsxRuntime.jsx("img", { alt: "avatar", src: img$2 }) }));
|
|
652
|
+
};
|
|
653
|
+
|
|
645
654
|
const UgAvatar = styled__default["default"](reactAvatars.Avatar) `
|
|
646
655
|
text-transform: uppercase;
|
|
647
656
|
|
|
@@ -673,7 +682,7 @@ const Avatar = (_a) => {
|
|
|
673
682
|
if (type === "text")
|
|
674
683
|
return jsxRuntime.jsx(Avatar.Text, { children: props.children });
|
|
675
684
|
if (type === "system")
|
|
676
|
-
return jsxRuntime.jsx(
|
|
685
|
+
return jsxRuntime.jsx(InternalAvatar, {});
|
|
677
686
|
};
|
|
678
687
|
return (jsxRuntime.jsx(UgAvatar, Object.assign({}, props, { badge: fixedBadge, isSystem: props.avatarType === "system" || isSystem, children: wrapChildren(props.avatarType || "text"), size: props.size || "small" })));
|
|
679
688
|
};
|
|
@@ -842,48 +851,48 @@ Tag.Avatar = StyledAvatar;
|
|
|
842
851
|
Tag.Close = StyledClose;
|
|
843
852
|
Tag.SecondaryText = StyledSpan;
|
|
844
853
|
|
|
845
|
-
var _path$
|
|
846
|
-
function _extends$
|
|
847
|
-
const SvgUgSquare = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
854
|
+
var _path$G;
|
|
855
|
+
function _extends$T() { _extends$T = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$T.apply(this, arguments); }
|
|
856
|
+
const SvgUgSquare = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$T({
|
|
848
857
|
width: 24,
|
|
849
858
|
height: 24,
|
|
850
859
|
viewBox: "0 0 24 24",
|
|
851
860
|
fill: "none",
|
|
852
861
|
xmlns: "http://www.w3.org/2000/svg"
|
|
853
|
-
}, props), _path$
|
|
862
|
+
}, props), _path$G || (_path$G = /*#__PURE__*/React__namespace.createElement("path", {
|
|
854
863
|
d: "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM18 19H6C5.45 19 5 18.55 5 18V6C5 5.45 5.45 5 6 5H18C18.55 5 19 5.45 19 6V18C19 18.55 18.55 19 18 19Z",
|
|
855
864
|
fill: "#E80C7A"
|
|
856
865
|
})));
|
|
857
866
|
|
|
858
|
-
var _path$
|
|
859
|
-
function _extends$
|
|
860
|
-
const SvgUgCircle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
867
|
+
var _path$F;
|
|
868
|
+
function _extends$S() { _extends$S = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$S.apply(this, arguments); }
|
|
869
|
+
const SvgUgCircle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$S({
|
|
861
870
|
width: 24,
|
|
862
871
|
height: 24,
|
|
863
872
|
viewBox: "0 0 24 24",
|
|
864
873
|
fill: "none",
|
|
865
874
|
xmlns: "http://www.w3.org/2000/svg"
|
|
866
|
-
}, props), _path$
|
|
875
|
+
}, props), _path$F || (_path$F = /*#__PURE__*/React__namespace.createElement("path", {
|
|
867
876
|
d: "M12 2C6.47 2 2 6.47 2 12C2 17.53 6.47 22 12 22C17.53 22 22 17.53 22 12C22 6.47 17.53 2 12 2ZM12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20Z",
|
|
868
877
|
fill: "#FFCD1A"
|
|
869
878
|
})));
|
|
870
879
|
|
|
871
|
-
var _path$
|
|
872
|
-
function _extends$
|
|
873
|
-
const SvgUgTriangle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
880
|
+
var _path$E;
|
|
881
|
+
function _extends$R() { _extends$R = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$R.apply(this, arguments); }
|
|
882
|
+
const SvgUgTriangle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$R({
|
|
874
883
|
width: 24,
|
|
875
884
|
height: 24,
|
|
876
885
|
viewBox: "0 0 24 24",
|
|
877
886
|
fill: "none",
|
|
878
887
|
xmlns: "http://www.w3.org/2000/svg"
|
|
879
|
-
}, props), _path$
|
|
888
|
+
}, props), _path$E || (_path$E = /*#__PURE__*/React__namespace.createElement("path", {
|
|
880
889
|
d: "M11.9993 7.32625L18.3893 17.5563H5.60929L11.9993 7.32625ZM11.1493 4.91625L2.94929 18.0262C2.53929 18.6962 3.01929 19.5563 3.79929 19.5563H20.1993C20.9893 19.5563 21.4593 18.6962 21.0493 18.0262L12.8493 4.91625C12.4593 4.28625 11.5393 4.28625 11.1493 4.91625Z",
|
|
881
890
|
fill: "#7B0DFF"
|
|
882
891
|
})));
|
|
883
892
|
|
|
884
|
-
var _rect$4, _path$
|
|
885
|
-
function _extends$
|
|
886
|
-
const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
893
|
+
var _rect$4, _path$D, _path2$c, _path3$4;
|
|
894
|
+
function _extends$Q() { _extends$Q = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$Q.apply(this, arguments); }
|
|
895
|
+
const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$Q({
|
|
887
896
|
width: 24,
|
|
888
897
|
height: 24,
|
|
889
898
|
viewBox: "0 0 24 24",
|
|
@@ -894,7 +903,7 @@ const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElemen
|
|
|
894
903
|
height: 24,
|
|
895
904
|
rx: 12,
|
|
896
905
|
fill: "#F6F6F8"
|
|
897
|
-
})), _path$
|
|
906
|
+
})), _path$D || (_path$D = /*#__PURE__*/React__namespace.createElement("path", {
|
|
898
907
|
d: "M20.6953 5.73905C21.0148 5.41953 21.0148 4.90149 20.6953 4.58197C20.3758 4.26245 19.8577 4.26245 19.5382 4.58197L11.88 12.2402L10.0849 9.95981C9.80539 9.60476 9.29098 9.54352 8.93593 9.82303C8.58088 10.1025 8.51963 10.6169 8.79914 10.972L11.1642 13.9763C11.3089 14.16 11.5252 14.2731 11.7586 14.2869C11.9921 14.3008 12.2203 14.2141 12.3856 14.0487L20.6953 5.73905Z",
|
|
899
908
|
fill: "#50BF95"
|
|
900
909
|
})), _path2$c || (_path2$c = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -905,9 +914,9 @@ const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElemen
|
|
|
905
914
|
fill: "#007345"
|
|
906
915
|
})));
|
|
907
916
|
|
|
908
|
-
var _rect$3, _path$
|
|
909
|
-
function _extends$
|
|
910
|
-
const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
917
|
+
var _rect$3, _path$C, _path2$b;
|
|
918
|
+
function _extends$P() { _extends$P = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$P.apply(this, arguments); }
|
|
919
|
+
const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$P({
|
|
911
920
|
width: 24,
|
|
912
921
|
height: 24,
|
|
913
922
|
viewBox: "0 0 24 24",
|
|
@@ -918,7 +927,7 @@ const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("
|
|
|
918
927
|
height: 24,
|
|
919
928
|
rx: 12,
|
|
920
929
|
fill: "#F6F6F8"
|
|
921
|
-
})), _path$
|
|
930
|
+
})), _path$C || (_path$C = /*#__PURE__*/React__namespace.createElement("path", {
|
|
922
931
|
fillRule: "evenodd",
|
|
923
932
|
clipRule: "evenodd",
|
|
924
933
|
d: "M13.55 19.0875C14.25 19.7875 15.1063 20.1375 16.1188 20.1375C17.1313 20.1375 17.9875 19.7875 18.6875 19.0875C19.3875 18.3875 19.7375 17.5312 19.7375 16.5187C19.7375 15.5062 19.3875 14.65 18.6875 13.95C17.9875 13.25 17.1313 12.9 16.1188 12.9C15.1063 12.9 14.25 13.25 13.55 13.95C12.85 14.65 12.5 15.5062 12.5 16.5187C12.5 17.5312 12.85 18.3875 13.55 19.0875ZM17.5062 18.2812C17.4187 18.2812 17.3375 18.25 17.2625 18.1875L15.7438 16.7812C15.6813 16.6687 15.65 16.6 15.65 16.575V14.55C15.65 14.4375 15.6875 14.3437 15.7625 14.2687C15.8375 14.1937 15.9313 14.1562 16.0438 14.1562C16.1563 14.1562 16.25 14.1937 16.325 14.2687C16.4 14.3437 16.4375 14.4375 16.4375 14.55V16.4813L17.7313 17.6625C17.8063 17.725 17.8469 17.8062 17.8531 17.9062C17.8594 18.0063 17.825 18.0938 17.75 18.1688C17.675 18.2438 17.5937 18.2812 17.5062 18.2812Z",
|
|
@@ -930,9 +939,9 @@ const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("
|
|
|
930
939
|
fill: "#F4AC1A"
|
|
931
940
|
})));
|
|
932
941
|
|
|
933
|
-
var _rect$2, _path$
|
|
934
|
-
function _extends$
|
|
935
|
-
const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
942
|
+
var _rect$2, _path$B, _path2$a;
|
|
943
|
+
function _extends$O() { _extends$O = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$O.apply(this, arguments); }
|
|
944
|
+
const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$O({
|
|
936
945
|
width: 24,
|
|
937
946
|
height: 24,
|
|
938
947
|
viewBox: "0 0 24 24",
|
|
@@ -943,7 +952,7 @@ const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement
|
|
|
943
952
|
height: 24,
|
|
944
953
|
rx: 12,
|
|
945
954
|
fill: "#F6F6F8"
|
|
946
|
-
})), _path$
|
|
955
|
+
})), _path$B || (_path$B = /*#__PURE__*/React__namespace.createElement("path", {
|
|
947
956
|
d: "M11.2266 13.0313H14.997M11.2266 9.26075V13.0313V9.26075ZM11.2266 13.0313L20.121 5.03906L11.2266 13.0313Z",
|
|
948
957
|
stroke: "#024780",
|
|
949
958
|
strokeWidth: 1.5,
|
|
@@ -957,9 +966,9 @@ const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement
|
|
|
957
966
|
strokeLinejoin: "round"
|
|
958
967
|
})));
|
|
959
968
|
|
|
960
|
-
var _rect$1, _path$
|
|
961
|
-
function _extends$
|
|
962
|
-
const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
969
|
+
var _rect$1, _path$A, _path2$9, _path3$3, _path4$1, _path5$1, _path6$1, _path7$1, _path8$1, _path9$1, _path10$1;
|
|
970
|
+
function _extends$N() { _extends$N = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$N.apply(this, arguments); }
|
|
971
|
+
const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$N({
|
|
963
972
|
width: 24,
|
|
964
973
|
height: 24,
|
|
965
974
|
viewBox: "0 0 24 24",
|
|
@@ -970,7 +979,7 @@ const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement
|
|
|
970
979
|
height: 24,
|
|
971
980
|
rx: 12,
|
|
972
981
|
fill: "#F6F6F8"
|
|
973
|
-
})), _path$
|
|
982
|
+
})), _path$A || (_path$A = /*#__PURE__*/React__namespace.createElement("path", {
|
|
974
983
|
d: "M13.059 16.7647C13.059 16.1799 12.585 15.7059 12.0002 15.7059C11.4154 15.7059 10.9414 16.1799 10.9414 16.7647V19.9412C10.9414 20.5259 11.4154 21 12.0002 21C12.585 21 13.059 20.5259 13.059 19.9412V16.7647Z",
|
|
975
984
|
fill: "#D1820A"
|
|
976
985
|
})), _path2$9 || (_path2$9 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -1002,21 +1011,21 @@ const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement
|
|
|
1002
1011
|
fill: "#FFB65A"
|
|
1003
1012
|
})));
|
|
1004
1013
|
|
|
1005
|
-
var _g$
|
|
1006
|
-
function _extends$
|
|
1007
|
-
const SvgCampaignExperiential = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
1014
|
+
var _g$c, _path$z, _path2$8, _path3$2, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;
|
|
1015
|
+
function _extends$M() { _extends$M = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$M.apply(this, arguments); }
|
|
1016
|
+
const SvgCampaignExperiential = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$M({
|
|
1008
1017
|
width: 24,
|
|
1009
1018
|
height: 24,
|
|
1010
1019
|
viewBox: "0 0 24 24",
|
|
1011
1020
|
fill: "none",
|
|
1012
1021
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1013
|
-
}, props), _g$
|
|
1022
|
+
}, props), _g$c || (_g$c = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1014
1023
|
opacity: 0.3
|
|
1015
1024
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1016
1025
|
opacity: 0.3,
|
|
1017
1026
|
d: "M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z",
|
|
1018
1027
|
fill: "#50BF95"
|
|
1019
|
-
}))), _path$
|
|
1028
|
+
}))), _path$z || (_path$z = /*#__PURE__*/React__namespace.createElement("path", {
|
|
1020
1029
|
d: "M12.487 3.19652C8.68003 3.19652 5.59895 6.27761 5.59895 10.0846C5.59895 10.2597 5.59895 10.4348 5.62438 10.5855C5.29857 11.1863 4.82307 12.013 4.24678 12.514C3.82117 12.8897 3.92096 13.2908 3.97085 13.4405C4.09609 13.7663 4.44635 14.0413 5.02265 14.2418C5.22322 14.3172 5.44825 14.3671 5.64883 14.417L5.67427 16.8464C5.67427 17.7984 6.47559 18.6251 7.45304 18.6251L8.93044 18.1496L9.08111 19.0263C9.18091 19.6026 9.68185 20.0282 10.2836 20.0282C10.3589 20.0282 10.4343 20.0282 10.5086 20.0028L15.1424 19.177C15.8185 19.0517 16.2441 18.4256 16.1443 17.7495L15.8185 16.1214C17.9974 14.9189 19.375 12.5892 19.375 10.0845C19.375 6.30279 16.2696 3.19641 12.4869 3.19641L12.487 3.19652Z",
|
|
1021
1030
|
fill: "#2B8473",
|
|
1022
1031
|
stroke: "#2B8473"
|
|
@@ -1072,21 +1081,21 @@ const SvgCampaignExperiential = props => /*#__PURE__*/React__namespace.createEle
|
|
|
1072
1081
|
fill: "#ECF4F2"
|
|
1073
1082
|
})));
|
|
1074
1083
|
|
|
1075
|
-
var _g$
|
|
1076
|
-
function _extends$
|
|
1077
|
-
const SvgCampaignFunctional = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
1084
|
+
var _g$b, _path$y;
|
|
1085
|
+
function _extends$L() { _extends$L = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$L.apply(this, arguments); }
|
|
1086
|
+
const SvgCampaignFunctional = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$L({
|
|
1078
1087
|
width: 24,
|
|
1079
1088
|
height: 24,
|
|
1080
1089
|
viewBox: "0 0 24 24",
|
|
1081
1090
|
fill: "none",
|
|
1082
1091
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1083
|
-
}, props), _g$
|
|
1092
|
+
}, props), _g$b || (_g$b = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1084
1093
|
opacity: 0.3
|
|
1085
1094
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1086
1095
|
opacity: 0.3,
|
|
1087
1096
|
d: "M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z",
|
|
1088
1097
|
fill: "#003A57"
|
|
1089
|
-
}))), _path$
|
|
1098
|
+
}))), _path$y || (_path$y = /*#__PURE__*/React__namespace.createElement("path", {
|
|
1090
1099
|
d: "M17.9983 7.16705C17.5188 6.58566 17.1422 6.73039 17.1422 6.73039C17.1422 6.73039 16.406 7.02453 16.0401 7.16303C15.6742 7.30153 15.2408 7.17357 15.2408 7.17357L14.7579 6.8851C14.7579 6.8851 14.4296 6.56554 14.3656 6.18067C14.3123 5.78958 14.1888 5.00269 14.1888 5.00269C14.1888 5.00269 14.1356 4.61159 13.3938 4.47257C12.652 4.33356 12.4678 4.68715 12.4678 4.68715C12.4678 4.68715 12.0932 5.38344 11.9091 5.73703C11.7249 6.09062 11.3114 6.27118 11.3114 6.27118L10.7639 6.36908C10.7639 6.36908 10.3144 6.33771 10.0176 6.07271L9.12712 5.27769C9.12712 5.27769 8.8303 5.01268 8.18313 5.38632C7.53595 5.75997 7.61705 6.14953 7.61705 6.14953L7.86033 7.3182C7.94143 7.70776 7.74381 8.11275 7.74381 8.11275L7.38528 8.53794C7.38528 8.53794 7.02217 8.80577 6.62387 8.78845C6.22557 8.77114 5.43527 8.7474 5.43527 8.7474C5.43527 8.7474 5.03697 8.73009 4.78646 9.44201C4.53595 10.1539 4.84804 10.3956 4.84804 10.3956C4.84804 10.3956 5.46774 10.896 5.77983 11.1376C6.09192 11.3793 6.19373 11.8296 6.19373 11.8296L6.20207 12.3921C6.20207 12.3921 6.09618 12.8314 5.79331 13.079C5.49043 13.3266 4.86759 13.8171 4.86759 13.8171C4.86759 13.8171 4.56471 14.0647 4.81769 14.7769C5.08144 15.4828 5.46713 15.4783 5.46713 15.4783C5.46713 15.4783 6.26012 15.4569 6.64582 15.4524C7.03152 15.4479 7.40116 15.7145 7.40116 15.7145L7.76458 16.1447C7.76458 16.1447 7.96976 16.5499 7.89441 16.9425C7.81907 17.3351 7.66208 18.1094 7.66208 18.1094C7.66208 18.1094 7.58674 18.502 8.23785 18.8824C8.88895 19.2629 9.18553 19.0044 9.18553 19.0044C9.18553 19.0044 9.7724 18.4765 10.069 18.218C10.3655 17.9595 10.8115 17.9347 10.8115 17.9347L11.3609 18.0394C11.3609 18.0394 11.77 18.225 11.9608 18.5803C12.1516 18.9356 12.5268 19.6354 12.5268 19.6354C12.5268 19.6354 12.7176 19.9907 13.4583 19.8539C14.1946 19.7343 14.2529 19.337 14.2529 19.337C14.2529 19.337 14.3586 18.5487 14.4232 18.1623C14.4814 17.765 14.8086 17.4598 14.8086 17.4598L15.2939 17.1796C15.2939 17.1796 15.7281 17.0598 16.095 17.1971C16.4682 17.3453 17.1975 17.637 17.1975 17.637C17.1975 17.637 17.5707 17.7851 18.0424 17.2073C18.5142 16.6295 18.3189 16.2913 18.3189 16.2913C18.3189 16.2913 17.9006 15.6164 17.6882 15.2736C17.4759 14.9307 17.5197 14.4836 17.5197 14.4836L17.7038 13.9555C17.7038 13.9555 17.9482 13.5816 18.3203 13.454C18.6925 13.3264 19.4431 13.0822 19.4431 13.0822C19.4431 13.0822 19.8153 12.9546 19.8113 12.2005C19.8074 11.4464 19.4297 11.3153 19.4297 11.3153C19.4297 11.3153 18.6807 11.0641 18.303 10.9331C17.9253 10.802 17.677 10.4217 17.677 10.4217L17.4861 9.8919C17.4861 9.8919 17.4293 9.4447 17.6368 9.1067C17.8443 8.7687 18.2486 8.09891 18.2486 8.09891C18.2486 8.09891 18.4778 7.74844 17.9983 7.16707L17.9983 7.16705ZM9.33902 8.38466L10.6176 10.5992C10.0433 11.149 9.82793 11.9715 10.0567 12.7413L7.86713 14.0054C6.98868 12.0106 7.60355 9.66286 9.33905 8.38457L9.33902 8.38466ZM13.9748 16.414C11.9998 17.2778 9.65918 16.6363 8.37099 14.8783L10.5605 13.6141C11.1128 14.1971 11.9329 14.4219 12.6961 14.1994L13.9748 16.414ZM12.6552 13.132C12.1159 13.4434 11.4325 13.2561 11.1176 12.7107C10.8027 12.1652 10.9822 11.4797 11.5215 11.1684C12.0608 10.857 12.7441 11.0443 13.0591 11.5897C13.374 12.1352 13.1945 12.8207 12.6552 13.132ZM14.8376 15.9158L13.5591 13.7012C14.1333 13.1515 14.3487 12.3289 14.12 11.5591L16.3095 10.295C17.188 12.2898 16.5731 14.6376 14.8376 15.9159L14.8376 15.9158ZM13.6161 10.6863C13.0638 10.1034 12.2437 9.87862 11.4805 10.1011L10.2019 7.88652C12.1769 7.02266 14.5112 7.65314 15.8057 9.42223L13.6161 10.6863Z",
|
|
1091
1100
|
fill: "#003A57"
|
|
1092
1101
|
})));
|
|
@@ -1947,15 +1956,15 @@ const WaffleChart = ({ height, width, data, total, tooltip, }) => {
|
|
|
1947
1956
|
} }) })));
|
|
1948
1957
|
};
|
|
1949
1958
|
|
|
1950
|
-
var _g$
|
|
1951
|
-
function _extends$
|
|
1952
|
-
const SvgSentiment1 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
1959
|
+
var _g$a, _defs$4;
|
|
1960
|
+
function _extends$K() { _extends$K = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$K.apply(this, arguments); }
|
|
1961
|
+
const SvgSentiment1 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$K({
|
|
1953
1962
|
width: 27,
|
|
1954
1963
|
height: 26,
|
|
1955
1964
|
viewBox: "0 0 27 26",
|
|
1956
1965
|
fill: "none",
|
|
1957
1966
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1958
|
-
}, props), _g$
|
|
1967
|
+
}, props), _g$a || (_g$a = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1959
1968
|
clipPath: "url(#clip0_21_19131)"
|
|
1960
1969
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1961
1970
|
d: "M26.5525 13C26.5525 20.1796 20.6084 26 13.2762 26C5.94481 26 0 20.1796 0 13C0 5.82111 5.94481 0 13.2762 0C20.6084 0 26.5525 5.82111 26.5525 13Z",
|
|
@@ -1971,15 +1980,15 @@ const SvgSentiment1 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
1971
1980
|
fill: "white"
|
|
1972
1981
|
})))));
|
|
1973
1982
|
|
|
1974
|
-
var _g$
|
|
1975
|
-
function _extends$
|
|
1976
|
-
const SvgSentiment2 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
1983
|
+
var _g$9, _defs$3;
|
|
1984
|
+
function _extends$J() { _extends$J = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$J.apply(this, arguments); }
|
|
1985
|
+
const SvgSentiment2 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$J({
|
|
1977
1986
|
width: 27,
|
|
1978
1987
|
height: 26,
|
|
1979
1988
|
viewBox: "0 0 27 26",
|
|
1980
1989
|
fill: "none",
|
|
1981
1990
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1982
|
-
}, props), _g$
|
|
1991
|
+
}, props), _g$9 || (_g$9 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1983
1992
|
clipPath: "url(#clip0_21_19130)"
|
|
1984
1993
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1985
1994
|
d: "M26.5525 13C26.5525 20.1796 20.6084 26 13.2762 26C5.94481 26 0 20.1796 0 13C0 5.82111 5.94481 0 13.2762 0C20.6084 0 26.5525 5.82111 26.5525 13Z",
|
|
@@ -1995,15 +2004,15 @@ const SvgSentiment2 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
1995
2004
|
fill: "white"
|
|
1996
2005
|
})))));
|
|
1997
2006
|
|
|
1998
|
-
var _g$
|
|
1999
|
-
function _extends$
|
|
2000
|
-
const SvgSentiment3 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2007
|
+
var _g$8, _defs$2;
|
|
2008
|
+
function _extends$I() { _extends$I = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$I.apply(this, arguments); }
|
|
2009
|
+
const SvgSentiment3 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$I({
|
|
2001
2010
|
width: 27,
|
|
2002
2011
|
height: 26,
|
|
2003
2012
|
viewBox: "0 0 27 26",
|
|
2004
2013
|
fill: "none",
|
|
2005
2014
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2006
|
-
}, props), _g$
|
|
2015
|
+
}, props), _g$8 || (_g$8 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2007
2016
|
clipPath: "url(#clip0_21_19129)"
|
|
2008
2017
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2009
2018
|
d: "M26.5525 13C26.5525 20.1796 20.6084 26 13.2762 26C5.94481 26 0 20.1796 0 13C0 5.82111 5.94481 0 13.2762 0C20.6084 0 26.5525 5.82111 26.5525 13Z",
|
|
@@ -2025,15 +2034,15 @@ const SvgSentiment3 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
2025
2034
|
fill: "white"
|
|
2026
2035
|
})))));
|
|
2027
2036
|
|
|
2028
|
-
var _g$
|
|
2029
|
-
function _extends$
|
|
2030
|
-
const SvgSentiment4 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2037
|
+
var _g$7, _defs$1;
|
|
2038
|
+
function _extends$H() { _extends$H = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$H.apply(this, arguments); }
|
|
2039
|
+
const SvgSentiment4 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$H({
|
|
2031
2040
|
width: 27,
|
|
2032
2041
|
height: 26,
|
|
2033
2042
|
viewBox: "0 0 27 26",
|
|
2034
2043
|
fill: "none",
|
|
2035
2044
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2036
|
-
}, props), _g$
|
|
2045
|
+
}, props), _g$7 || (_g$7 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2037
2046
|
clipPath: "url(#clip0_21_19127)"
|
|
2038
2047
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2039
2048
|
d: "M26.5525 13C26.5525 20.1796 20.6084 26 13.2762 26C5.94481 26 0 20.1796 0 13C0 5.82111 5.94481 0 13.2762 0C20.6084 0 26.5525 5.82111 26.5525 13Z",
|
|
@@ -2055,15 +2064,15 @@ const SvgSentiment4 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
2055
2064
|
fill: "white"
|
|
2056
2065
|
})))));
|
|
2057
2066
|
|
|
2058
|
-
var _g$
|
|
2059
|
-
function _extends$
|
|
2060
|
-
const SvgSentiment5 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2067
|
+
var _g$6, _defs;
|
|
2068
|
+
function _extends$G() { _extends$G = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$G.apply(this, arguments); }
|
|
2069
|
+
const SvgSentiment5 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$G({
|
|
2061
2070
|
width: 26,
|
|
2062
2071
|
height: 26,
|
|
2063
2072
|
viewBox: "0 0 26 26",
|
|
2064
2073
|
fill: "none",
|
|
2065
2074
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2066
|
-
}, props), _g$
|
|
2075
|
+
}, props), _g$6 || (_g$6 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2067
2076
|
clipPath: "url(#clip0_21_19125)"
|
|
2068
2077
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2069
2078
|
d: "M25.2051 13C25.2051 20.1796 19.5626 26 12.6025 26C5.64314 26 0 20.1796 0 13C0 5.82111 5.64314 0 12.6025 0C19.5626 0 25.2051 5.82111 25.2051 13Z",
|
|
@@ -2337,41 +2346,26 @@ const ChatContextProvider = ({ onSave, onFileUpload, onDeleteThumbnail, setMenti
|
|
|
2337
2346
|
setEditor,
|
|
2338
2347
|
thumbnails,
|
|
2339
2348
|
setThumbnails,
|
|
2340
|
-
afterUploadCallback: (failed) => {
|
|
2341
|
-
|
|
2342
|
-
if (failed.includes(file.name)) {
|
|
2343
|
-
file.isLoadingMedia = false;
|
|
2344
|
-
//file.isError = true;
|
|
2345
|
-
}
|
|
2346
|
-
else {
|
|
2347
|
-
file.isLoadingMedia = false;
|
|
2348
|
-
//file.isError = false
|
|
2349
|
-
}
|
|
2350
|
-
return file;
|
|
2351
|
-
}));
|
|
2352
|
-
},
|
|
2353
|
-
addThumbnails: ({ files }) => {
|
|
2354
|
-
files.forEach((file) => (file.isLoadingMedia = true));
|
|
2349
|
+
afterUploadCallback: (failed) => { },
|
|
2350
|
+
addThumbnails: ({ files }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
2355
2351
|
setThumbnails((prev) => [...prev, ...files]);
|
|
2356
|
-
if (onFileUpload)
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
else {
|
|
2367
|
-
file.isError = false;
|
|
2368
|
-
}
|
|
2369
|
-
return file;
|
|
2370
|
-
});
|
|
2352
|
+
if (!onFileUpload)
|
|
2353
|
+
return;
|
|
2354
|
+
try {
|
|
2355
|
+
const data = yield onFileUpload(files);
|
|
2356
|
+
setThumbnails((prev) => {
|
|
2357
|
+
return prev.map(file => {
|
|
2358
|
+
var _a, _b;
|
|
2359
|
+
file.isLoadingMedia = false;
|
|
2360
|
+
file.error = (_b = (_a = data.failed) === null || _a === void 0 ? void 0 : _a.find(f => f.name === file.name)) === null || _b === void 0 ? void 0 : _b.errorCode;
|
|
2361
|
+
return file;
|
|
2371
2362
|
});
|
|
2372
2363
|
});
|
|
2373
2364
|
}
|
|
2374
|
-
|
|
2365
|
+
catch (e) {
|
|
2366
|
+
console.log("Error uploading files", e);
|
|
2367
|
+
}
|
|
2368
|
+
}),
|
|
2375
2369
|
clearInput: () => {
|
|
2376
2370
|
if (editor && !editor.isEmpty) {
|
|
2377
2371
|
editor.commands.clearContent();
|
|
@@ -2737,96 +2731,28 @@ const ChatTitle = styled__default["default"](Title$1) `
|
|
|
2737
2731
|
padding: ${({ theme }) => `${theme.space.sm} ${theme.space.md}`};
|
|
2738
2732
|
`;
|
|
2739
2733
|
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
justify-content: center;
|
|
2744
|
-
width: ${({ theme }) => theme.space.xl};
|
|
2745
|
-
height: ${({ theme }) => theme.space.xl};
|
|
2746
|
-
`;
|
|
2747
|
-
/**
|
|
2748
|
-
* Title is a basic component used to display a title. Often used in card headers.
|
|
2749
|
-
*/
|
|
2750
|
-
const Close = (props) => jsxRuntime.jsx(UgClose$1, Object.assign({}, props));
|
|
2751
|
-
|
|
2752
|
-
const NOTIFICATION_COMPONENT_ID = "notifications.notification";
|
|
2753
|
-
const CLOSE_COMPONENT_ID = "notifications.notification.close";
|
|
2754
|
-
const CLOSE_ICON_COMPONENT_ID = "notifications.notification.close-icon";
|
|
2755
|
-
const TITLE_COMPONENT_ID = "notifications.notification.title";
|
|
2756
|
-
const UgClose = styled__default["default"](Close).attrs((props) => {
|
|
2757
|
-
var _a;
|
|
2758
|
-
return ({
|
|
2759
|
-
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_ICON_COMPONENT_ID,
|
|
2760
|
-
});
|
|
2761
|
-
}) `
|
|
2762
|
-
${(props) => reactTheming.retrieveComponentStyles(CLOSE_ICON_COMPONENT_ID, props)};
|
|
2763
|
-
`;
|
|
2764
|
-
const UgAnchor = styled__default["default"](reactButtons.Anchor).attrs((props) => {
|
|
2765
|
-
var _a;
|
|
2766
|
-
return ({
|
|
2767
|
-
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_COMPONENT_ID,
|
|
2768
|
-
});
|
|
2769
|
-
}) `
|
|
2770
|
-
${(props) => reactTheming.retrieveComponentStyles(CLOSE_COMPONENT_ID, props)};
|
|
2771
|
-
`;
|
|
2772
|
-
const UgTitle = styled__default["default"](Title$1).attrs((props) => {
|
|
2773
|
-
var _a;
|
|
2774
|
-
return ({
|
|
2775
|
-
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : TITLE_COMPONENT_ID,
|
|
2776
|
-
});
|
|
2777
|
-
}) `
|
|
2778
|
-
${(props) => reactTheming.retrieveComponentStyles(TITLE_COMPONENT_ID, props)};
|
|
2779
|
-
`;
|
|
2780
|
-
const UgNotification = styled__default["default"](reactNotifications.Notification) `
|
|
2781
|
-
display: flex;
|
|
2782
|
-
align-items: center;
|
|
2783
|
-
justify-content: space-between;
|
|
2784
|
-
padding-right: ${({ theme }) => theme.space.md};
|
|
2785
|
-
white-space: pre;
|
|
2786
|
-
|
|
2787
|
-
${UgAnchor} {
|
|
2788
|
-
flex-shrink: 0;
|
|
2789
|
-
margin-left: ${({ theme }) => theme.space.md};
|
|
2790
|
-
}
|
|
2791
|
-
|
|
2792
|
-
${(props) => reactTheming.retrieveComponentStyles(NOTIFICATION_COMPONENT_ID, props)};
|
|
2793
|
-
`;
|
|
2794
|
-
/**
|
|
2795
|
-
* A Notification is a passive status update that keeps users informed of system progress.
|
|
2796
|
-
* <hr>
|
|
2797
|
-
* Used for this:
|
|
2798
|
-
- For a passive status update about user or system activity
|
|
2799
|
-
*/
|
|
2800
|
-
const Notification = (_a) => {
|
|
2801
|
-
var { closeText, message, onClose, type, isPrimary, isRegular } = _a, props = __rest(_a, ["closeText", "message", "onClose", "type", "isPrimary", "isRegular"]);
|
|
2802
|
-
return (jsxRuntime.jsxs(UgNotification, Object.assign({ type: type, isPrimary: isPrimary }, props, { children: [jsxRuntime.jsx(UgTitle, Object.assign({ isRegular: isRegular, type: type, isPrimary: isPrimary }, { children: message })), jsxRuntime.jsx(UgAnchor, Object.assign({ type: type, isPrimary: isPrimary, onClick: onClose }, { children: closeText !== null && closeText !== void 0 ? closeText : jsxRuntime.jsx(UgClose, {}) }))] })));
|
|
2803
|
-
};
|
|
2804
|
-
// ToastProvider
|
|
2805
|
-
const ToastProvider = (props) => (jsxRuntime.jsx(reactNotifications.ToastProvider, Object.assign({}, props)));
|
|
2806
|
-
const useToast = reactNotifications.useToast;
|
|
2807
|
-
|
|
2808
|
-
var _path$v;
|
|
2809
|
-
function _extends$C() { _extends$C = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$C.apply(this, arguments); }
|
|
2810
|
-
const SvgBoldFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$C({
|
|
2734
|
+
var _path$x;
|
|
2735
|
+
function _extends$F() { _extends$F = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$F.apply(this, arguments); }
|
|
2736
|
+
const SvgBoldFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$F({
|
|
2811
2737
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2812
2738
|
width: 16,
|
|
2813
2739
|
height: 16,
|
|
2814
2740
|
focusable: "false",
|
|
2815
2741
|
viewBox: "0 0 16 16"
|
|
2816
|
-
}, props), _path$
|
|
2742
|
+
}, props), _path$x || (_path$x = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2817
2743
|
fill: "currentColor",
|
|
2818
2744
|
d: "M7.5 0C9.952 0 12 2.048 12 4.5a4.483 4.483 0 01-1.27 3.108C12.078 8.39 13 9.855 13 11.5c0 2.452-2.048 4.5-4.5 4.5H4a1 1 0 01-1-1V1a1 1 0 011-1h3.5zM5 14h3.5c1.348 0 2.5-1.152 2.5-2.5S9.848 9 8.5 9H5v5zM7.5 2H5v5h2.5C8.848 7 10 5.848 10 4.5S8.848 2 7.5 2z"
|
|
2819
2745
|
})));
|
|
2820
2746
|
|
|
2821
|
-
var _path$
|
|
2822
|
-
function _extends$
|
|
2823
|
-
const SvgItalicFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2747
|
+
var _path$w;
|
|
2748
|
+
function _extends$E() { _extends$E = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$E.apply(this, arguments); }
|
|
2749
|
+
const SvgItalicFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$E({
|
|
2824
2750
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2825
2751
|
width: 16,
|
|
2826
2752
|
height: 16,
|
|
2827
2753
|
focusable: "false",
|
|
2828
2754
|
viewBox: "0 0 16 16"
|
|
2829
|
-
}, props), _path$
|
|
2755
|
+
}, props), _path$w || (_path$w = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2830
2756
|
fill: "none",
|
|
2831
2757
|
stroke: "currentColor",
|
|
2832
2758
|
strokeLinecap: "round",
|
|
@@ -2834,15 +2760,15 @@ const SvgItalicFill = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
2834
2760
|
d: "M8 1h3M9.5 1l-3 14M5 15h3"
|
|
2835
2761
|
})));
|
|
2836
2762
|
|
|
2837
|
-
var _path$
|
|
2838
|
-
function _extends$
|
|
2839
|
-
const SvgQuoteFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2763
|
+
var _path$v, _path2$7;
|
|
2764
|
+
function _extends$D() { _extends$D = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$D.apply(this, arguments); }
|
|
2765
|
+
const SvgQuoteFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$D({
|
|
2840
2766
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2841
2767
|
width: 16,
|
|
2842
2768
|
height: 16,
|
|
2843
2769
|
focusable: "false",
|
|
2844
2770
|
viewBox: "0 0 16 16"
|
|
2845
|
-
}, props), _path$
|
|
2771
|
+
}, props), _path$v || (_path$v = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2846
2772
|
fill: "currentColor",
|
|
2847
2773
|
d: "M7 8H4c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3c0 .55-.45 1-1 1zm6 0h-3c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3c0 .55-.45 1-1 1z"
|
|
2848
2774
|
})), _path2$7 || (_path2$7 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -2853,15 +2779,15 @@ const SvgQuoteFill = props => /*#__PURE__*/React__namespace.createElement("svg",
|
|
|
2853
2779
|
d: "M5.5 12C6.5 11 7 9.5 7 8V6m4.5 6c1-1 1.5-2.5 1.5-4V6"
|
|
2854
2780
|
})));
|
|
2855
2781
|
|
|
2856
|
-
var _g$
|
|
2857
|
-
function _extends$
|
|
2858
|
-
const SvgH1Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2782
|
+
var _g$5;
|
|
2783
|
+
function _extends$C() { _extends$C = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$C.apply(this, arguments); }
|
|
2784
|
+
const SvgH1Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$C({
|
|
2859
2785
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2860
2786
|
width: 16,
|
|
2861
2787
|
height: 16,
|
|
2862
2788
|
focusable: "false",
|
|
2863
2789
|
viewBox: "0 0 16 16"
|
|
2864
|
-
}, props), _g$
|
|
2790
|
+
}, props), _g$5 || (_g$5 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2865
2791
|
transform: "translate(-464 -332)"
|
|
2866
2792
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
2867
2793
|
width: 16,
|
|
@@ -2881,15 +2807,15 @@ const SvgH1Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _e
|
|
|
2881
2807
|
transform: "translate(474.469 331)"
|
|
2882
2808
|
}))));
|
|
2883
2809
|
|
|
2884
|
-
var _g$
|
|
2885
|
-
function _extends$
|
|
2886
|
-
const SvgH2Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2810
|
+
var _g$4;
|
|
2811
|
+
function _extends$B() { _extends$B = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$B.apply(this, arguments); }
|
|
2812
|
+
const SvgH2Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$B({
|
|
2887
2813
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2888
2814
|
width: 16,
|
|
2889
2815
|
height: 16,
|
|
2890
2816
|
focusable: "false",
|
|
2891
2817
|
viewBox: "0 0 16 16"
|
|
2892
|
-
}, props), _g$
|
|
2818
|
+
}, props), _g$4 || (_g$4 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2893
2819
|
transform: "translate(-464 -332)"
|
|
2894
2820
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
2895
2821
|
width: 16,
|
|
@@ -2909,15 +2835,15 @@ const SvgH2Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _e
|
|
|
2909
2835
|
transform: "translate(469.359 331)"
|
|
2910
2836
|
}))));
|
|
2911
2837
|
|
|
2912
|
-
var _g$
|
|
2913
|
-
function _extends$
|
|
2914
|
-
const SvgH3Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2838
|
+
var _g$3;
|
|
2839
|
+
function _extends$A() { _extends$A = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$A.apply(this, arguments); }
|
|
2840
|
+
const SvgH3Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$A({
|
|
2915
2841
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2916
2842
|
width: 16,
|
|
2917
2843
|
height: 16,
|
|
2918
2844
|
focusable: "false",
|
|
2919
2845
|
viewBox: "0 0 16 16"
|
|
2920
|
-
}, props), _g$
|
|
2846
|
+
}, props), _g$3 || (_g$3 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2921
2847
|
transform: "translate(-464 -332)"
|
|
2922
2848
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
2923
2849
|
width: 16,
|
|
@@ -2978,140 +2904,213 @@ const FloatingMenu = (props) => {
|
|
|
2978
2904
|
const TooltipComponent = (props) => {
|
|
2979
2905
|
var _a;
|
|
2980
2906
|
const theme = React.useContext(styled.ThemeContext);
|
|
2981
|
-
return jsxRuntime.jsx(reactTooltips.Tooltip, Object.assign({}, props, { zIndex: (_a = props.zIndex) !== null && _a !== void 0 ? _a : theme.levels.front }));
|
|
2907
|
+
return (jsxRuntime.jsx(reactTooltips.Tooltip, Object.assign({}, props, { zIndex: (_a = props.zIndex) !== null && _a !== void 0 ? _a : theme.levels.front })));
|
|
2982
2908
|
};
|
|
2983
2909
|
const Tooltip = styled__default["default"](TooltipComponent) `
|
|
2984
2910
|
box-shadow: ${({ theme }) => theme.shadows.lg(`${theme.space.base * 3}px`, `${theme.space.base * 5}px`, getColor("neutralHue", 600, theme, 0.15))};
|
|
2911
|
+
|
|
2912
|
+
${({ isTransparent }) => isTransparent &&
|
|
2913
|
+
`
|
|
2914
|
+
box-shadow: none;
|
|
2915
|
+
background-color: transparent;
|
|
2916
|
+
border: none;
|
|
2917
|
+
`};
|
|
2985
2918
|
`;
|
|
2986
2919
|
|
|
2987
|
-
var _path$
|
|
2988
|
-
function _extends$
|
|
2989
|
-
const SvgBoldStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2920
|
+
var _path$u;
|
|
2921
|
+
function _extends$z() { _extends$z = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$z.apply(this, arguments); }
|
|
2922
|
+
const SvgBoldStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$z({
|
|
2990
2923
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2991
2924
|
width: 16,
|
|
2992
2925
|
height: 16,
|
|
2993
2926
|
focusable: "false",
|
|
2994
2927
|
viewBox: "0 0 16 16"
|
|
2995
|
-
}, props), _path$
|
|
2928
|
+
}, props), _path$u || (_path$u = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2996
2929
|
fill: "currentColor",
|
|
2997
2930
|
d: "M7 1c2.176 0 4 1.824 4 4 0 1.315-.666 2.501-1.673 3.234C10.869 8.792 12 10.287 12 12c0 2.176-1.824 4-4 4H3.5a.5.5 0 01-.5-.5v-14a.5.5 0 01.5-.5H7zM4 15h4c1.624 0 3-1.376 3-3S9.624 9 8 9H4v6zM7 2H4v6h3c1.624 0 3-1.376 3-3S8.624 2 7 2z"
|
|
2998
2931
|
})));
|
|
2999
2932
|
|
|
3000
|
-
var _path$
|
|
3001
|
-
function _extends$
|
|
3002
|
-
const SvgItalicStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2933
|
+
var _path$t;
|
|
2934
|
+
function _extends$y() { _extends$y = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$y.apply(this, arguments); }
|
|
2935
|
+
const SvgItalicStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$y({
|
|
3003
2936
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3004
2937
|
width: 16,
|
|
3005
2938
|
height: 16,
|
|
3006
2939
|
focusable: "false",
|
|
3007
2940
|
viewBox: "0 0 16 16"
|
|
3008
|
-
}, props), _path$
|
|
2941
|
+
}, props), _path$t || (_path$t = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3009
2942
|
fill: "none",
|
|
3010
2943
|
stroke: "currentColor",
|
|
3011
2944
|
strokeLinecap: "round",
|
|
3012
2945
|
d: "M7.5 1.5h3M9 1.5l-3 14m-1.5 0h3"
|
|
3013
2946
|
})));
|
|
3014
2947
|
|
|
3015
|
-
var _path$
|
|
3016
|
-
function _extends$
|
|
3017
|
-
const SvgAtStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2948
|
+
var _path$s;
|
|
2949
|
+
function _extends$x() { _extends$x = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$x.apply(this, arguments); }
|
|
2950
|
+
const SvgAtStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$x({
|
|
3018
2951
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3019
2952
|
width: 16,
|
|
3020
2953
|
height: 16,
|
|
3021
2954
|
focusable: "false",
|
|
3022
2955
|
role: "presentation"
|
|
3023
|
-
}, props), _path$
|
|
2956
|
+
}, props), _path$s || (_path$s = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3024
2957
|
fill: "none",
|
|
3025
2958
|
stroke: "currentColor",
|
|
3026
2959
|
strokeLinecap: "round",
|
|
3027
2960
|
d: "M11.5 4.5V8h0A3.5 3.5 0 018 11.5h0A3.5 3.5 0 014.5 8h0A3.5 3.5 0 018 4.5h0A3.5 3.5 0 0111.5 8h0v1.5a2 2 0 002 2h0a2 2 0 002-2V8h0A7.5 7.5 0 008 .5h0A7.5 7.5 0 00.5 8h0A7.5 7.5 0 008 15.5h3.41"
|
|
3028
2961
|
})));
|
|
3029
2962
|
|
|
3030
|
-
var _path$
|
|
3031
|
-
function _extends$
|
|
3032
|
-
const SvgClipboard = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
2963
|
+
var _path$r;
|
|
2964
|
+
function _extends$w() { _extends$w = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$w.apply(this, arguments); }
|
|
2965
|
+
const SvgClipboard = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$w({
|
|
3033
2966
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3034
2967
|
width: 16,
|
|
3035
2968
|
height: 16,
|
|
3036
2969
|
focusable: "false",
|
|
3037
2970
|
role: "presentation"
|
|
3038
|
-
}, props), _path$
|
|
2971
|
+
}, props), _path$r || (_path$r = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3039
2972
|
fill: "none",
|
|
3040
2973
|
stroke: "currentColor",
|
|
3041
2974
|
strokeLinecap: "round",
|
|
3042
2975
|
d: "M9.5 4v7.7c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5V3C6.5 1.6 7.6.5 9 .5s2.5 1.1 2.5 2.5v9c0 1.9-1.6 3.5-3.5 3.5S4.5 13.9 4.5 12V4"
|
|
3043
2976
|
})));
|
|
3044
2977
|
|
|
3045
|
-
const
|
|
3046
|
-
|
|
2978
|
+
const UgClose$1 = styled__default["default"](reactNotifications.Close) `
|
|
2979
|
+
display: flex;
|
|
2980
|
+
align-items: center;
|
|
2981
|
+
justify-content: center;
|
|
2982
|
+
width: ${({ theme }) => theme.space.xl};
|
|
2983
|
+
height: ${({ theme }) => theme.space.xl};
|
|
2984
|
+
`;
|
|
2985
|
+
/**
|
|
2986
|
+
* Title is a basic component used to display a title. Often used in card headers.
|
|
2987
|
+
*/
|
|
2988
|
+
const Close = (props) => jsxRuntime.jsx(UgClose$1, Object.assign({}, props));
|
|
2989
|
+
|
|
2990
|
+
const NOTIFICATION_COMPONENT_ID = "notifications.notification";
|
|
2991
|
+
const CLOSE_COMPONENT_ID = "notifications.notification.close";
|
|
2992
|
+
const CLOSE_ICON_COMPONENT_ID = "notifications.notification.close-icon";
|
|
2993
|
+
const TITLE_COMPONENT_ID = "notifications.notification.title";
|
|
2994
|
+
const UgClose = styled__default["default"](Close).attrs((props) => {
|
|
2995
|
+
var _a;
|
|
2996
|
+
return ({
|
|
2997
|
+
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_ICON_COMPONENT_ID,
|
|
2998
|
+
});
|
|
2999
|
+
}) `
|
|
3000
|
+
${(props) => reactTheming.retrieveComponentStyles(CLOSE_ICON_COMPONENT_ID, props)};
|
|
3001
|
+
`;
|
|
3002
|
+
const UgAnchor = styled__default["default"](reactButtons.Anchor).attrs((props) => {
|
|
3003
|
+
var _a;
|
|
3004
|
+
return ({
|
|
3005
|
+
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_COMPONENT_ID,
|
|
3006
|
+
});
|
|
3007
|
+
}) `
|
|
3008
|
+
${(props) => reactTheming.retrieveComponentStyles(CLOSE_COMPONENT_ID, props)};
|
|
3009
|
+
`;
|
|
3010
|
+
const UgTitle = styled__default["default"](Title$1).attrs((props) => {
|
|
3011
|
+
var _a;
|
|
3012
|
+
return ({
|
|
3013
|
+
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : TITLE_COMPONENT_ID,
|
|
3014
|
+
});
|
|
3015
|
+
}) `
|
|
3016
|
+
${(props) => reactTheming.retrieveComponentStyles(TITLE_COMPONENT_ID, props)};
|
|
3017
|
+
`;
|
|
3018
|
+
const UgNotification = styled__default["default"](reactNotifications.Notification) `
|
|
3047
3019
|
display: flex;
|
|
3048
|
-
flex-direction: row;
|
|
3049
|
-
justify-content: flex-start;
|
|
3050
3020
|
align-items: center;
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3021
|
+
justify-content: space-between;
|
|
3022
|
+
padding-right: ${({ theme }) => theme.space.md};
|
|
3023
|
+
white-space: pre;
|
|
3024
|
+
|
|
3025
|
+
${UgAnchor} {
|
|
3026
|
+
flex-shrink: 0;
|
|
3027
|
+
margin-left: ${({ theme }) => theme.space.md};
|
|
3028
|
+
}
|
|
3029
|
+
|
|
3030
|
+
${(props) => reactTheming.retrieveComponentStyles(NOTIFICATION_COMPONENT_ID, props)};
|
|
3058
3031
|
`;
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
case "italic":
|
|
3083
|
-
return editor.chain().focus().toggleItalic().run();
|
|
3084
|
-
case "mention":
|
|
3085
|
-
const { from } = editor.state.selection;
|
|
3086
|
-
const char = from > 1 ? " @" : "@";
|
|
3087
|
-
return editor.chain().focus().insertContent(char).run();
|
|
3088
|
-
case "attachment":
|
|
3089
|
-
//open a file browser to select one or more images
|
|
3090
|
-
const fileInput = document.createElement("input");
|
|
3091
|
-
fileInput.type = "file";
|
|
3092
|
-
fileInput.accept = "image/*,video/*";
|
|
3093
|
-
fileInput.multiple = true;
|
|
3094
|
-
fileInput.click();
|
|
3095
|
-
fileInput.onchange = () => {
|
|
3096
|
-
const files = fileInput.files;
|
|
3097
|
-
if (files) {
|
|
3098
|
-
const mediaFiles = Array.from(files).map((file) => {
|
|
3099
|
-
return Object.assign(file, {
|
|
3100
|
-
isLoadingMedia: false,
|
|
3101
|
-
internal_id: uuid.v4(),
|
|
3102
|
-
});
|
|
3103
|
-
});
|
|
3104
|
-
if (mediaFiles.length === 0)
|
|
3105
|
-
return;
|
|
3106
|
-
addThumbnails({ files: mediaFiles });
|
|
3107
|
-
}
|
|
3108
|
-
};
|
|
3109
|
-
return;
|
|
3110
|
-
default:
|
|
3111
|
-
return;
|
|
3032
|
+
/**
|
|
3033
|
+
* A Notification is a passive status update that keeps users informed of system progress.
|
|
3034
|
+
* <hr>
|
|
3035
|
+
* Used for this:
|
|
3036
|
+
- For a passive status update about user or system activity
|
|
3037
|
+
*/
|
|
3038
|
+
const Notification = (_a) => {
|
|
3039
|
+
var { closeText, message, onClose, type, isPrimary, isRegular } = _a, props = __rest(_a, ["closeText", "message", "onClose", "type", "isPrimary", "isRegular"]);
|
|
3040
|
+
return (jsxRuntime.jsxs(UgNotification, Object.assign({ type: type, isPrimary: isPrimary }, props, { children: [jsxRuntime.jsx(UgTitle, Object.assign({ isRegular: isRegular, type: type, isPrimary: isPrimary }, { children: message })), jsxRuntime.jsx(UgAnchor, Object.assign({ type: type, isPrimary: isPrimary, onClick: onClose }, { children: closeText !== null && closeText !== void 0 ? closeText : jsxRuntime.jsx(UgClose, {}) }))] })));
|
|
3041
|
+
};
|
|
3042
|
+
// ToastProvider
|
|
3043
|
+
const ToastProvider = (props) => (jsxRuntime.jsx(reactNotifications.ToastProvider, Object.assign({}, props)));
|
|
3044
|
+
const useToast = reactNotifications.useToast;
|
|
3045
|
+
|
|
3046
|
+
const acceptedMediaTypes = /^(image|video)\//;
|
|
3047
|
+
function useMedia() {
|
|
3048
|
+
const { addToast } = useToast();
|
|
3049
|
+
function getValidMedia(data) {
|
|
3050
|
+
const wrongFiles = Array.from(data).filter((file) => !acceptedMediaTypes.test(file.type));
|
|
3051
|
+
if (wrongFiles.length) {
|
|
3052
|
+
addToast(({ close }) => (jsxRuntime.jsx(Notification, { onClose: close, type: "error", message: wrongFiles.length === 1
|
|
3053
|
+
? `${wrongFiles[0].name} not supported, please upload video or image only`
|
|
3054
|
+
: "Some attachments are not supported, please upload video or image only", isPrimary: true })), { placement: "top" });
|
|
3112
3055
|
}
|
|
3056
|
+
return Array.from(data).filter((file) => acceptedMediaTypes.test(file.type));
|
|
3057
|
+
}
|
|
3058
|
+
function getMedia(data) {
|
|
3059
|
+
return getValidMedia(data).map((file) => {
|
|
3060
|
+
return Object.assign(file, {
|
|
3061
|
+
url: URL.createObjectURL(file),
|
|
3062
|
+
isLoadingMedia: true,
|
|
3063
|
+
id: uuid.v4(),
|
|
3064
|
+
});
|
|
3065
|
+
});
|
|
3066
|
+
}
|
|
3067
|
+
return { getMedia };
|
|
3068
|
+
}
|
|
3069
|
+
|
|
3070
|
+
const MenuContainer = styled__default["default"].div `
|
|
3071
|
+
padding: ${({ theme }) => theme.space.xs} 0;
|
|
3072
|
+
display: flex;
|
|
3073
|
+
flex-direction: row;
|
|
3074
|
+
justify-content: flex-start;
|
|
3075
|
+
align-items: center;
|
|
3076
|
+
gap: ${({ theme }) => theme.space.xxs};
|
|
3077
|
+
`;
|
|
3078
|
+
const VerticalDivider = styled__default["default"].div `
|
|
3079
|
+
width: 2px;
|
|
3080
|
+
height: 24px;
|
|
3081
|
+
background-color: ${({ theme }) => theme.palette.grey[300]};
|
|
3082
|
+
margin: 0 ${({ theme }) => theme.space.xs};
|
|
3083
|
+
`;
|
|
3084
|
+
const CommentBar = ({ editor, i18n, }) => {
|
|
3085
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
3086
|
+
const { addThumbnails } = useChatContext();
|
|
3087
|
+
const { getMedia } = useMedia();
|
|
3088
|
+
if (!editor)
|
|
3089
|
+
return null;
|
|
3090
|
+
const handleBoldClick = () => {
|
|
3091
|
+
editor.chain().focus().toggleBold().run();
|
|
3092
|
+
};
|
|
3093
|
+
const handleItalicClick = () => {
|
|
3094
|
+
editor.chain().focus().toggleItalic().run();
|
|
3095
|
+
};
|
|
3096
|
+
const handleMentionClick = () => {
|
|
3097
|
+
const { from } = editor.state.selection;
|
|
3098
|
+
const char = from > 1 ? " @" : "@";
|
|
3099
|
+
editor.chain().focus().insertContent(char).run();
|
|
3100
|
+
};
|
|
3101
|
+
const handleAttachmentClick = () => {
|
|
3102
|
+
const fileInput = document.createElement("input");
|
|
3103
|
+
fileInput.type = "file";
|
|
3104
|
+
fileInput.accept = "image/*,video/*";
|
|
3105
|
+
fileInput.multiple = true;
|
|
3106
|
+
fileInput.click();
|
|
3107
|
+
fileInput.onchange = () => {
|
|
3108
|
+
if (fileInput.files) {
|
|
3109
|
+
addThumbnails({ files: getMedia(fileInput.files) });
|
|
3110
|
+
}
|
|
3111
|
+
};
|
|
3113
3112
|
};
|
|
3114
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(MenuContainer, Object.assign({ id: "menu-container" }, { children: [jsxRuntime.jsx(Tooltip, Object.assign({ content: `${(_b = (_a = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _a === void 0 ? void 0 : _a.bold) !== null && _b !== void 0 ? _b : "Bold text"} ${isMac() ? "Cmd" : "Ctrl"} + B`, placement: "top", type: "light", size: "small", hasArrow: false }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("bold"), isPrimary: editor.isActive("bold"), isPill: false, onClick:
|
|
3113
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(MenuContainer, Object.assign({ id: "menu-container" }, { children: [jsxRuntime.jsx(Tooltip, Object.assign({ content: `${(_b = (_a = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _a === void 0 ? void 0 : _a.bold) !== null && _b !== void 0 ? _b : "Bold text"} ${isMac() ? "Cmd" : "Ctrl"} + B`, placement: "top", type: "light", size: "small", hasArrow: false }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("bold"), isPrimary: editor.isActive("bold"), isPill: false, onClick: handleBoldClick }, { children: jsxRuntime.jsx(SvgBoldStroke, {}) })) })), jsxRuntime.jsx(Tooltip, Object.assign({ content: `${(_d = (_c = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _c === void 0 ? void 0 : _c.italic) !== null && _d !== void 0 ? _d : "Italic text"} ${isMac() ? "Cmd" : "Ctrl"} + I`, placement: "top", type: "light", size: "small", hasArrow: false }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("italic"), isPrimary: editor.isActive("italic"), isPill: false, onClick: handleItalicClick }, { children: jsxRuntime.jsx(SvgItalicStroke, {}) })) })), jsxRuntime.jsx(VerticalDivider, {}), jsxRuntime.jsx(Tooltip, Object.assign({ content: (_f = (_e = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _e === void 0 ? void 0 : _e.mention) !== null && _f !== void 0 ? _f : "Add a mention", placement: "top", type: "light", size: "small", hasArrow: false }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("mention"), isPrimary: editor.isActive("mention"), isPill: false, onClick: handleMentionClick }, { children: jsxRuntime.jsx(SvgAtStroke, {}) })) })), jsxRuntime.jsx(Tooltip, Object.assign({ style: { textAlign: "center" }, content: (_h = (_g = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _g === void 0 ? void 0 : _g.attachment) !== null && _h !== void 0 ? _h : (jsxRuntime.jsxs("span", { children: ["Upload images and video.", " ", jsxRuntime.jsxs("span", Object.assign({ style: { color: theme.palette.grey[600] } }, { children: [" ", jsxRuntime.jsx("br", {}), " Max size: 5GB", " "] }))] })), placement: "top", type: "light", size: "small", hasArrow: true }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("attachment"), isPrimary: editor.isActive("attachment"), isPill: false, onClick: handleAttachmentClick }, { children: jsxRuntime.jsx(SvgClipboard, {}) })) }))] })) }));
|
|
3115
3114
|
};
|
|
3116
3115
|
|
|
3117
3116
|
const CustomMention = Mention__default["default"].extend({
|
|
@@ -3288,7 +3287,7 @@ const editorExtensions = ({ placeholderOptions, mentionableUsers, }) => {
|
|
|
3288
3287
|
},
|
|
3289
3288
|
}),
|
|
3290
3289
|
Dropcursor__default["default"].configure({
|
|
3291
|
-
color:
|
|
3290
|
+
color: getColor(colors.accentHue, 700),
|
|
3292
3291
|
width: 3,
|
|
3293
3292
|
}),
|
|
3294
3293
|
Placeholder__default["default"].configure(Object.assign({ placeholder: ({ node }) => {
|
|
@@ -3360,20 +3359,20 @@ const editorExtensions = ({ placeholderOptions, mentionableUsers, }) => {
|
|
|
3360
3359
|
];
|
|
3361
3360
|
};
|
|
3362
3361
|
|
|
3363
|
-
var _circle$
|
|
3364
|
-
function _extends$
|
|
3365
|
-
const SvgRemoveMediaIcon = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
3362
|
+
var _circle$3, _path$q, _path2$6;
|
|
3363
|
+
function _extends$v() { _extends$v = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$v.apply(this, arguments); }
|
|
3364
|
+
const SvgRemoveMediaIcon = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$v({
|
|
3366
3365
|
width: 56,
|
|
3367
3366
|
height: 56,
|
|
3368
3367
|
viewBox: "0 0 56 56",
|
|
3369
3368
|
fill: "#68737d",
|
|
3370
3369
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3371
|
-
}, props), _circle$
|
|
3370
|
+
}, props), _circle$3 || (_circle$3 = /*#__PURE__*/React__namespace.createElement("circle", {
|
|
3372
3371
|
cx: 28,
|
|
3373
3372
|
cy: 28,
|
|
3374
3373
|
r: 28,
|
|
3375
3374
|
fill: "#edf7ff"
|
|
3376
|
-
})), _path$
|
|
3375
|
+
})), _path$q || (_path$q = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3377
3376
|
d: "M16.929 16.929L39.071 39.071",
|
|
3378
3377
|
stroke: "currentColor",
|
|
3379
3378
|
strokeWidth: 4
|
|
@@ -3392,178 +3391,149 @@ const StyledDeleteThumbnailX = styled__default["default"].div `
|
|
|
3392
3391
|
width: 32px;
|
|
3393
3392
|
height: 32px;
|
|
3394
3393
|
opacity: 0;
|
|
3394
|
+
transition: opacity 0.2s;
|
|
3395
3395
|
z-index: 2;
|
|
3396
|
+
color: ${({ theme }) => theme.palette.grey[800]};
|
|
3396
3397
|
`;
|
|
3397
3398
|
const DeleteThumbnailX = ({ deleteThumbnail }) => {
|
|
3398
3399
|
return (jsxRuntime.jsx(StyledDeleteThumbnailX, Object.assign({ className: "deleteThumbnail" }, { children: jsxRuntime.jsx(SvgRemoveMediaIcon, { onClick: (e) => deleteThumbnail(e) }) })));
|
|
3399
3400
|
};
|
|
3400
3401
|
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
opacity: 1;
|
|
3405
|
-
}
|
|
3406
|
-
`;
|
|
3407
|
-
const Preview$1 = styled__default["default"].div `
|
|
3408
|
-
display: flex;
|
|
3409
|
-
justify-content: center;
|
|
3410
|
-
align-items: center;
|
|
3411
|
-
height: 150px;
|
|
3412
|
-
width: 100%;
|
|
3413
|
-
background-image: url(${(props) => props.url});
|
|
3414
|
-
background-color: ${({ theme }) => theme.palette.grey[100]};
|
|
3415
|
-
background-size: contain;
|
|
3416
|
-
background-position: center;
|
|
3417
|
-
background-repeat: no-repeat;
|
|
3418
|
-
`;
|
|
3419
|
-
const ImageThumbnail = ({ src, index = 0, removeThumbnail, clickThumbnail, showX = true, isLoadingMedia = true, isError = false, }) => {
|
|
3420
|
-
const handleCancel = (e) => {
|
|
3421
|
-
e.stopPropagation();
|
|
3422
|
-
if (removeThumbnail)
|
|
3423
|
-
removeThumbnail(index);
|
|
3424
|
-
};
|
|
3425
|
-
return (jsxRuntime.jsxs(ImageCard, Object.assign({ onClick: clickThumbnail }, { children: [isLoadingMedia && (jsxRuntime.jsx(Preview$1, Object.assign({ url: "" }, { children: jsxRuntime.jsx(reactLoaders.Spinner, { style: {
|
|
3426
|
-
display: "flex",
|
|
3427
|
-
alignItems: "center",
|
|
3428
|
-
justifyContent: "center",
|
|
3429
|
-
}, size: "large" }) }))), isError && (
|
|
3430
|
-
// todo: add error icon
|
|
3431
|
-
jsxRuntime.jsx("span", { children: "error uploading media" })), !isLoadingMedia && (jsxRuntime.jsx(Preview$1, Object.assign({ url: src }, { children: showX && (jsxRuntime.jsx(DeleteThumbnailX, { deleteThumbnail: (e) => handleCancel(e) })) })))] })));
|
|
3432
|
-
};
|
|
3433
|
-
|
|
3434
|
-
var _circle$1, _path$n;
|
|
3435
|
-
function _extends$r() { _extends$r = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
|
|
3436
|
-
const SvgVideoPlayIcon = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$r({
|
|
3402
|
+
var _circle$2, _path$p;
|
|
3403
|
+
function _extends$u() { _extends$u = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$u.apply(this, arguments); }
|
|
3404
|
+
const SvgVideoPlayIcon = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$u({
|
|
3437
3405
|
width: 56,
|
|
3438
3406
|
height: 56,
|
|
3439
3407
|
viewBox: "0 0 56 56",
|
|
3440
3408
|
fill: "none",
|
|
3441
3409
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3442
|
-
}, props), _circle$
|
|
3410
|
+
}, props), _circle$2 || (_circle$2 = /*#__PURE__*/React__namespace.createElement("circle", {
|
|
3443
3411
|
cx: 28,
|
|
3444
3412
|
cy: 28,
|
|
3445
3413
|
r: 28,
|
|
3446
3414
|
fill: "white"
|
|
3447
|
-
})), _path$
|
|
3415
|
+
})), _path$p || (_path$p = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3448
3416
|
d: "M47 28L18.5 44.4545L18.5 11.5455L47 28Z",
|
|
3449
3417
|
fill: "currentColor"
|
|
3450
3418
|
})));
|
|
3451
3419
|
|
|
3452
|
-
const
|
|
3420
|
+
const ImageCard = styled__default["default"](SpecialCard) `
|
|
3453
3421
|
padding: 0;
|
|
3454
3422
|
position: relative;
|
|
3455
3423
|
overflow: hidden;
|
|
3456
|
-
|
|
3457
|
-
&:hover .deleteThumbnail {
|
|
3458
|
-
opacity: 1;
|
|
3459
|
-
z-index: 9999;
|
|
3460
|
-
}
|
|
3424
|
+
width: 90px;
|
|
3461
3425
|
|
|
3462
3426
|
&:before {
|
|
3463
3427
|
content: "";
|
|
3428
|
+
font-size: ${({ theme }) => theme.fontSizes.xs};
|
|
3464
3429
|
position: absolute;
|
|
3430
|
+
padding: ${({ theme }) => theme.space.xs};
|
|
3465
3431
|
top: 0;
|
|
3466
3432
|
left: 0;
|
|
3467
3433
|
width: 100%;
|
|
3468
3434
|
height: 100%;
|
|
3469
|
-
background-color: ${({ theme }) => theme.palette.grey[800]};
|
|
3470
|
-
|
|
3471
|
-
z-index: 1;
|
|
3435
|
+
background-color: ${({ theme }) => theme.palette.grey[800]}00; // 0% opacity
|
|
3436
|
+
transition: opacity 0.2s;
|
|
3472
3437
|
}
|
|
3473
3438
|
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3439
|
+
&:hover {
|
|
3440
|
+
.deleteThumbnail {
|
|
3441
|
+
opacity: 1;
|
|
3442
|
+
}
|
|
3443
|
+
&:before {
|
|
3444
|
+
background-color: ${({ theme }) => theme.palette.grey[800]}4d; // 30% opacity
|
|
3445
|
+
}
|
|
3446
|
+
}
|
|
3447
|
+
${(p) => p.error &&
|
|
3448
|
+
`
|
|
3449
|
+
&:before{
|
|
3450
|
+
content: "Error: ${p.error}";
|
|
3451
|
+
color: ${p.theme.palette.white};
|
|
3452
|
+
background-color: ${p.theme.palette.grey[800]}b3; // 0.7 opacity
|
|
3453
|
+
}
|
|
3454
|
+
`}
|
|
3455
|
+
${(p) => p.isLoading &&
|
|
3456
|
+
`
|
|
3457
|
+
&:before{
|
|
3458
|
+
background-color: ${p.theme.palette.grey[800]}b3; // 0.7 opacity
|
|
3459
|
+
}
|
|
3460
|
+
`}
|
|
3461
|
+
&.video {
|
|
3462
|
+
svg {
|
|
3463
|
+
color: ${({ theme }) => theme.palette.grey[800]};
|
|
3464
|
+
position: absolute;
|
|
3465
|
+
top: 50%;
|
|
3466
|
+
left: 50%;
|
|
3467
|
+
transform: translate(-50%, -50%);
|
|
3468
|
+
width: 32px;
|
|
3469
|
+
height: 32px;
|
|
3470
|
+
z-index: 2;
|
|
3471
|
+
}
|
|
3482
3472
|
}
|
|
3483
3473
|
`;
|
|
3484
3474
|
const Preview = styled__default["default"].div `
|
|
3485
|
-
padding: ${({ theme }) => theme.space.md};
|
|
3486
3475
|
display: flex;
|
|
3487
3476
|
justify-content: center;
|
|
3488
3477
|
align-items: center;
|
|
3489
|
-
height:
|
|
3478
|
+
height: 100px;
|
|
3490
3479
|
width: 100%;
|
|
3480
|
+
color: ${({ theme }) => theme.palette.white};
|
|
3481
|
+
|
|
3482
|
+
${p => p.url &&
|
|
3483
|
+
`
|
|
3484
|
+
background-image: url(${p.url});
|
|
3485
|
+
background-color: ${p.theme.palette.grey[100]};
|
|
3486
|
+
background-size: cover;
|
|
3487
|
+
background-position: center;
|
|
3488
|
+
background-repeat: no-repeat;
|
|
3489
|
+
`}
|
|
3491
3490
|
|
|
3492
3491
|
> video {
|
|
3493
3492
|
width: 100%;
|
|
3494
3493
|
height: 100%;
|
|
3495
3494
|
}
|
|
3496
3495
|
`;
|
|
3497
|
-
const
|
|
3496
|
+
const Thumbnail = ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia, error = "", }) => {
|
|
3498
3497
|
const handleCancel = (e) => {
|
|
3499
3498
|
e.stopPropagation();
|
|
3500
3499
|
if (removeThumbnail)
|
|
3501
|
-
removeThumbnail(
|
|
3500
|
+
removeThumbnail();
|
|
3502
3501
|
};
|
|
3503
|
-
return (jsxRuntime.
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3507
|
-
|
|
3508
|
-
|
|
3509
|
-
|
|
3502
|
+
return (jsxRuntime.jsx(ImageCard, Object.assign({ onClick: clickThumbnail, className: type.includes("video") ? "video" : "image", error: error, isLoading: isLoadingMedia }, { children: isLoadingMedia ? (jsxRuntime.jsx(Preview, Object.assign({ url: src }, { children: jsxRuntime.jsx(reactLoaders.Spinner, { style: {
|
|
3503
|
+
display: "flex",
|
|
3504
|
+
position: "absolute",
|
|
3505
|
+
color: "white",
|
|
3506
|
+
alignItems: "center",
|
|
3507
|
+
justifyContent: "center",
|
|
3508
|
+
}, size: "large" }) }))) : (jsxRuntime.jsxs(Preview, Object.assign({ url: src }, { children: [showX && (jsxRuntime.jsx(DeleteThumbnailX, { deleteThumbnail: (e) => handleCancel(e) })), type.includes("video") && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("video", Object.assign({ src: src }, { children: jsxRuntime.jsx("track", { kind: "captions" }) })), jsxRuntime.jsx(SvgVideoPlayIcon, { opacity: error ? "0.3" : "1" })] }))] }))) })));
|
|
3510
3509
|
};
|
|
3511
3510
|
|
|
3512
|
-
const
|
|
3513
|
-
|
|
3514
|
-
|
|
3515
|
-
|
|
3516
|
-
/**
|
|
3517
|
-
* The Grid component is a framework for building modular layouts.
|
|
3518
|
-
* <hr>
|
|
3519
|
-
* Used for this:
|
|
3520
|
-
- To structure the layout of a page
|
|
3521
|
-
*/
|
|
3522
|
-
const Grid = (props) => jsxRuntime.jsx(UgGrid, Object.assign({}, props));
|
|
3523
|
-
|
|
3524
|
-
const Row$1 = (props) => jsxRuntime.jsx(reactGrid.Row, Object.assign({}, props));
|
|
3525
|
-
|
|
3526
|
-
const StyledCol$1 = styled__default["default"](reactGrid.Col) `
|
|
3527
|
-
margin-bottom: ${theme.space.lg};
|
|
3528
|
-
|
|
3529
|
-
@media screen and (max-width: ${theme.breakpoints.sm}) {
|
|
3530
|
-
margin-bottom: ${theme.space.md};
|
|
3531
|
-
}
|
|
3511
|
+
const FlexContainer = styled.styled.div `
|
|
3512
|
+
display: flex;
|
|
3513
|
+
gap: ${({ theme }) => theme.space.xs};
|
|
3514
|
+
flex-wrap: wrap;
|
|
3532
3515
|
`;
|
|
3533
|
-
const Col = (props) => jsxRuntime.jsx(StyledCol$1, Object.assign({}, props));
|
|
3534
|
-
|
|
3535
3516
|
const ThumbnailContainer = ({ openLightbox }) => {
|
|
3536
3517
|
const { thumbnails, removeThumbnail, onDeleteThumbnail } = useChatContext();
|
|
3537
3518
|
const mediaFiles = React.useMemo(() => {
|
|
3538
3519
|
return thumbnails.map((file) => ({
|
|
3539
3520
|
fileName: file.name,
|
|
3540
3521
|
fileType: file.type,
|
|
3541
|
-
previewUrl:
|
|
3542
|
-
|
|
3522
|
+
previewUrl: file.url,
|
|
3523
|
+
id: file.id,
|
|
3543
3524
|
isLoadingMedia: file.isLoadingMedia,
|
|
3525
|
+
error: file.error,
|
|
3544
3526
|
}));
|
|
3545
3527
|
}, [thumbnails]);
|
|
3546
3528
|
if (!mediaFiles || mediaFiles.length === 0) {
|
|
3547
3529
|
return null;
|
|
3548
3530
|
}
|
|
3549
|
-
return (jsxRuntime.jsx(
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
}, clickThumbnail: () => {
|
|
3556
|
-
openLightbox(thumbnails[index], index);
|
|
3557
|
-
} }, index) })));
|
|
3558
|
-
if (file.fileType.includes("video"))
|
|
3559
|
-
return (jsxRuntime.jsx(Col, Object.assign({ xs: 12, sm: 3, className: "flex-3-sm" }, { children: jsxRuntime.jsx(VideoThumbnail, { src: file.previewUrl, index: index, showX: true, isLoadingMedia: file.isLoadingMedia, removeThumbnail: () => {
|
|
3560
|
-
removeThumbnail(index);
|
|
3561
|
-
onDeleteThumbnail(file.internal_id);
|
|
3562
|
-
}, clickThumbnail: () => {
|
|
3563
|
-
openLightbox(thumbnails[index], index);
|
|
3564
|
-
} }, index) })));
|
|
3565
|
-
return null;
|
|
3566
|
-
}) })) }));
|
|
3531
|
+
return (jsxRuntime.jsx(FlexContainer, { children: mediaFiles.map((file, index) => (jsxRuntime.jsx(Thumbnail, { src: file.previewUrl, showX: true, type: file.fileType, isLoadingMedia: file.isLoadingMedia, error: file.error, removeThumbnail: () => {
|
|
3532
|
+
removeThumbnail(index);
|
|
3533
|
+
onDeleteThumbnail(file.id);
|
|
3534
|
+
}, clickThumbnail: () => {
|
|
3535
|
+
openLightbox(index);
|
|
3536
|
+
} }, file.id))) }));
|
|
3567
3537
|
};
|
|
3568
3538
|
|
|
3569
3539
|
const UgModalBody = styled__default["default"](reactModals.Body) `
|
|
@@ -3632,28 +3602,28 @@ Lightbox.Body = ModalBody; // Includes Main and Details
|
|
|
3632
3602
|
Lightbox.Footer = Footer$3;
|
|
3633
3603
|
Lightbox.Close = reactModals.Close;
|
|
3634
3604
|
|
|
3635
|
-
var _path$
|
|
3636
|
-
function _extends$
|
|
3637
|
-
const SvgChevronLeftStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
3605
|
+
var _path$o;
|
|
3606
|
+
function _extends$t() { _extends$t = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$t.apply(this, arguments); }
|
|
3607
|
+
const SvgChevronLeftStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$t({
|
|
3638
3608
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3639
3609
|
width: 16,
|
|
3640
3610
|
height: 16,
|
|
3641
3611
|
focusable: "false",
|
|
3642
3612
|
viewBox: "0 0 16 16"
|
|
3643
|
-
}, props), _path$
|
|
3613
|
+
}, props), _path$o || (_path$o = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3644
3614
|
fill: "currentColor",
|
|
3645
3615
|
d: "M10.39 12.688a.5.5 0 01-.718.69l-.062-.066-4-5a.5.5 0 01-.054-.542l.054-.082 4-5a.5.5 0 01.83.55l-.05.074L6.641 8l3.75 4.688z"
|
|
3646
3616
|
})));
|
|
3647
3617
|
|
|
3648
|
-
var _path$
|
|
3649
|
-
function _extends$
|
|
3650
|
-
const SvgChevronRightStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
3618
|
+
var _path$n;
|
|
3619
|
+
function _extends$s() { _extends$s = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$s.apply(this, arguments); }
|
|
3620
|
+
const SvgChevronRightStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$s({
|
|
3651
3621
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3652
3622
|
width: 16,
|
|
3653
3623
|
height: 16,
|
|
3654
3624
|
focusable: "false",
|
|
3655
3625
|
viewBox: "0 0 16 16"
|
|
3656
|
-
}, props), _path$
|
|
3626
|
+
}, props), _path$n || (_path$n = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3657
3627
|
fill: "currentColor",
|
|
3658
3628
|
d: "M5.61 3.312a.5.5 0 01.718-.69l.062.066 4 5a.5.5 0 01.054.542l-.054.082-4 5a.5.5 0 01-.83-.55l.05-.074L9.359 8l-3.75-4.688z"
|
|
3659
3629
|
})));
|
|
@@ -3876,94 +3846,283 @@ Slider.Slide = Slide;
|
|
|
3876
3846
|
Slider.PrevButton = PrevButton;
|
|
3877
3847
|
Slider.NextButton = NextButton;
|
|
3878
3848
|
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
z-index: 1;
|
|
3896
|
-
`;
|
|
3897
|
-
const Content$1 = styled__default["default"].div `
|
|
3898
|
-
display: flex;
|
|
3899
|
-
background-color: ${({ theme }) => theme.palette.grey[800]};
|
|
3900
|
-
border-radius: 2px;
|
|
3901
|
-
width: auto;
|
|
3902
|
-
padding: 2px 4px;
|
|
3903
|
-
display: inline-flex;
|
|
3904
|
-
color: white;
|
|
3905
|
-
align-items: center;
|
|
3906
|
-
justify-content: center;
|
|
3907
|
-
min-height: 16px;
|
|
3908
|
-
`;
|
|
3909
|
-
const PlayerTooltip = (_a) => {
|
|
3910
|
-
var { children } = _a, props = __rest(_a, ["children"]);
|
|
3911
|
-
return (jsxRuntime.jsx(Wrapper$1, Object.assign({}, props, { children: jsxRuntime.jsx(Content$1, { children: children }) })));
|
|
3912
|
-
};
|
|
3849
|
+
var _path$m, _path2$5;
|
|
3850
|
+
function _extends$r() { _extends$r = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$r.apply(this, arguments); }
|
|
3851
|
+
const SvgVolumeMutedFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$r({
|
|
3852
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3853
|
+
width: 16,
|
|
3854
|
+
height: 16,
|
|
3855
|
+
focusable: "false",
|
|
3856
|
+
viewBox: "0 0 16 16"
|
|
3857
|
+
}, props), _path$m || (_path$m = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3858
|
+
stroke: "currentColor",
|
|
3859
|
+
strokeLinecap: "round",
|
|
3860
|
+
d: "M11.5 10l4-4m-4 0l4 4"
|
|
3861
|
+
})), _path2$5 || (_path2$5 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3862
|
+
fill: "currentColor",
|
|
3863
|
+
d: "M9 15.29c-.26 0-.51-.1-.71-.29l-4-4H1c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h3.29l4-4a1.002 1.002 0 011.71.71V14.3a.986.986 0 01-1 .99z"
|
|
3864
|
+
})));
|
|
3913
3865
|
|
|
3914
|
-
var _path$
|
|
3915
|
-
function _extends$
|
|
3916
|
-
const
|
|
3866
|
+
var _path$l, _path2$4;
|
|
3867
|
+
function _extends$q() { _extends$q = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$q.apply(this, arguments); }
|
|
3868
|
+
const SvgVolumeUnmutedFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$q({
|
|
3917
3869
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3918
3870
|
width: 16,
|
|
3919
3871
|
height: 16,
|
|
3920
3872
|
focusable: "false",
|
|
3921
3873
|
viewBox: "0 0 16 16"
|
|
3922
|
-
}, props), _path$
|
|
3874
|
+
}, props), _path$l || (_path$l = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3923
3875
|
fill: "currentColor",
|
|
3924
|
-
d: "
|
|
3876
|
+
d: "M9 15.29c-.26 0-.51-.1-.71-.29l-4-4H1c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h3.29l4-4a1.002 1.002 0 011.71.71V14.3a.986.986 0 01-1 .99z"
|
|
3877
|
+
})), _path2$4 || (_path2$4 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3878
|
+
fill: "none",
|
|
3879
|
+
stroke: "currentColor",
|
|
3880
|
+
strokeLinecap: "round",
|
|
3881
|
+
d: "M11.77 9.77c.45-.45.73-1.08.73-1.77s-.28-1.31-.73-1.77m2.17 5.6c.97-.99 1.56-2.34 1.56-3.83 0-1.52-.62-2.89-1.61-3.89"
|
|
3925
3882
|
})));
|
|
3926
3883
|
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
|
|
3884
|
+
const ControlButton = styled__default["default"](IconButton) `
|
|
3885
|
+
color: ${({ theme }) => theme.palette.grey[700]};
|
|
3886
|
+
`;
|
|
3887
|
+
|
|
3888
|
+
const AudioButton = () => {
|
|
3889
|
+
const [hasAudio, setHasAudio] = React.useState(false);
|
|
3890
|
+
const { isMuted, setMuted, context } = Video.useVideoContext();
|
|
3891
|
+
const { player } = context;
|
|
3892
|
+
const checkAudio = (video) => {
|
|
3893
|
+
if (!video) {
|
|
3894
|
+
return false;
|
|
3895
|
+
}
|
|
3896
|
+
const videohasAudio = video.mozHasAudio ||
|
|
3897
|
+
Boolean(video.webkitAudioDecodedByteCount) ||
|
|
3898
|
+
Boolean(video.audioTracks && video.audioTracks.length);
|
|
3899
|
+
setHasAudio(videohasAudio);
|
|
3900
|
+
};
|
|
3901
|
+
const hasVolume = (video) => {
|
|
3902
|
+
if (!video) {
|
|
3903
|
+
return false;
|
|
3904
|
+
}
|
|
3905
|
+
return video.volume > 0;
|
|
3906
|
+
};
|
|
3907
|
+
React.useEffect(() => {
|
|
3908
|
+
if (player && (player === null || player === void 0 ? void 0 : player.ref)) {
|
|
3909
|
+
setMuted(!hasVolume(player.ref.current));
|
|
3910
|
+
checkAudio(player.ref.current);
|
|
3911
|
+
}
|
|
3912
|
+
}, [context.isPlaying, isMuted, player, setMuted]);
|
|
3913
|
+
return (jsxRuntime.jsx(ControlButton, Object.assign({ disabled: !hasAudio, onClick: () => {
|
|
3914
|
+
if (player === null || player === void 0 ? void 0 : player.ref.current) {
|
|
3915
|
+
player.ref.current.volume = player.ref.current.volume > 0 ? 0 : 1;
|
|
3916
|
+
setMuted(!player.ref.current.volume);
|
|
3917
|
+
}
|
|
3918
|
+
} }, { children: isMuted || !hasAudio ? jsxRuntime.jsx(SvgVolumeMutedFill, {}) : jsxRuntime.jsx(SvgVolumeUnmutedFill, {}) })));
|
|
3919
|
+
};
|
|
3920
|
+
|
|
3921
|
+
const ProgressContext = React.createContext(null);
|
|
3922
|
+
const ProgressContextProvider = ({ children, }) => {
|
|
3923
|
+
const [isGrabbing, setIsGrabbing] = React.useState(false);
|
|
3924
|
+
const [fromEnd, setFromEnd] = React.useState(false);
|
|
3925
|
+
const [activeBookmark, setactiveBookmark] = React.useState(undefined);
|
|
3926
|
+
const progressContextValue = React.useMemo(() => ({
|
|
3927
|
+
isGrabbing,
|
|
3928
|
+
fromEnd,
|
|
3929
|
+
activeBookmark,
|
|
3930
|
+
setIsGrabbing,
|
|
3931
|
+
setFromEnd,
|
|
3932
|
+
setactiveBookmark,
|
|
3933
|
+
reset: () => {
|
|
3934
|
+
setIsGrabbing(false);
|
|
3935
|
+
setFromEnd(false);
|
|
3936
|
+
setactiveBookmark(undefined);
|
|
3937
|
+
},
|
|
3938
|
+
}), [isGrabbing, fromEnd, activeBookmark]);
|
|
3939
|
+
return (jsxRuntime.jsx(ProgressContext.Provider, Object.assign({ value: progressContextValue }, { children: children })));
|
|
3940
|
+
};
|
|
3941
|
+
const useProgressContext = () => {
|
|
3942
|
+
const context = React.useContext(ProgressContext);
|
|
3943
|
+
if (!context)
|
|
3944
|
+
throw new Error("Provider not found for ProgressContextProvider");
|
|
3945
|
+
return context; // Now we can use the context in the component, SAFELY.
|
|
3946
|
+
};
|
|
3947
|
+
|
|
3948
|
+
var _g$2;
|
|
3949
|
+
function _extends$p() { _extends$p = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$p.apply(this, arguments); }
|
|
3950
|
+
const SvgGrip = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$p({
|
|
3930
3951
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3931
3952
|
width: 16,
|
|
3932
3953
|
height: 16,
|
|
3933
3954
|
focusable: "false",
|
|
3934
3955
|
viewBox: "0 0 16 16"
|
|
3935
|
-
}, props), _g$
|
|
3956
|
+
}, props), _g$2 || (_g$2 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
3936
3957
|
fill: "currentColor"
|
|
3937
3958
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3938
|
-
width:
|
|
3939
|
-
height:
|
|
3940
|
-
x:
|
|
3959
|
+
width: 2,
|
|
3960
|
+
height: 2,
|
|
3961
|
+
x: 5,
|
|
3941
3962
|
y: 1,
|
|
3942
|
-
rx:
|
|
3943
|
-
ry:
|
|
3963
|
+
rx: 0.5,
|
|
3964
|
+
ry: 0.5
|
|
3944
3965
|
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3945
|
-
width:
|
|
3946
|
-
height:
|
|
3966
|
+
width: 2,
|
|
3967
|
+
height: 2,
|
|
3947
3968
|
x: 9,
|
|
3948
3969
|
y: 1,
|
|
3949
|
-
rx:
|
|
3950
|
-
ry:
|
|
3970
|
+
rx: 0.5,
|
|
3971
|
+
ry: 0.5
|
|
3972
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3973
|
+
width: 2,
|
|
3974
|
+
height: 2,
|
|
3975
|
+
x: 5,
|
|
3976
|
+
y: 5,
|
|
3977
|
+
rx: 0.5,
|
|
3978
|
+
ry: 0.5
|
|
3979
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3980
|
+
width: 2,
|
|
3981
|
+
height: 2,
|
|
3982
|
+
x: 9,
|
|
3983
|
+
y: 5,
|
|
3984
|
+
rx: 0.5,
|
|
3985
|
+
ry: 0.5
|
|
3986
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3987
|
+
width: 2,
|
|
3988
|
+
height: 2,
|
|
3989
|
+
x: 5,
|
|
3990
|
+
y: 9,
|
|
3991
|
+
rx: 0.5,
|
|
3992
|
+
ry: 0.5
|
|
3993
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3994
|
+
width: 2,
|
|
3995
|
+
height: 2,
|
|
3996
|
+
x: 9,
|
|
3997
|
+
y: 9,
|
|
3998
|
+
rx: 0.5,
|
|
3999
|
+
ry: 0.5
|
|
4000
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
4001
|
+
width: 2,
|
|
4002
|
+
height: 2,
|
|
4003
|
+
x: 5,
|
|
4004
|
+
y: 13,
|
|
4005
|
+
rx: 0.5,
|
|
4006
|
+
ry: 0.5
|
|
4007
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
4008
|
+
width: 2,
|
|
4009
|
+
height: 2,
|
|
4010
|
+
x: 9,
|
|
4011
|
+
y: 13,
|
|
4012
|
+
rx: 0.5,
|
|
4013
|
+
ry: 0.5
|
|
3951
4014
|
}))));
|
|
3952
4015
|
|
|
3953
|
-
|
|
3954
|
-
|
|
3955
|
-
|
|
4016
|
+
const StyledGrabber = styled.styled.div `
|
|
4017
|
+
position: absolute;
|
|
4018
|
+
display: none;
|
|
4019
|
+
${({ isEnd }) => isEnd
|
|
4020
|
+
? `
|
|
4021
|
+
right: 0;
|
|
4022
|
+
border-top-right-radius: 2px;
|
|
4023
|
+
border-bottom-right-radius: 2px;
|
|
4024
|
+
`
|
|
4025
|
+
: `
|
|
4026
|
+
left: 0;
|
|
4027
|
+
border-top-left-radius: 2px;
|
|
4028
|
+
border-bottom-left-radius: 2px;
|
|
4029
|
+
`}
|
|
4030
|
+
height: 100%;
|
|
4031
|
+
width: 8px;
|
|
4032
|
+
background-color: white;
|
|
4033
|
+
z-index: 2;
|
|
4034
|
+
cursor: ew-resize;
|
|
4035
|
+
|
|
4036
|
+
div {
|
|
4037
|
+
display: flex;
|
|
4038
|
+
justify-content: center;
|
|
4039
|
+
align-items: center;
|
|
4040
|
+
height: 100%;
|
|
4041
|
+
width: 100%;
|
|
4042
|
+
color: ${({ theme }) => theme.palette.grey[500]};
|
|
4043
|
+
svg {
|
|
4044
|
+
width: auto;
|
|
4045
|
+
height: 50%;
|
|
4046
|
+
}
|
|
4047
|
+
}
|
|
4048
|
+
`;
|
|
4049
|
+
const activeBookMark = styled.css `
|
|
4050
|
+
height: 250%;
|
|
4051
|
+
transform: translateY(-30%);
|
|
4052
|
+
cursor: pointer;
|
|
4053
|
+
z-index: 2;
|
|
4054
|
+
border-radius: 4px;
|
|
4055
|
+
|
|
4056
|
+
${StyledGrabber} {
|
|
4057
|
+
display: block;
|
|
4058
|
+
}
|
|
4059
|
+
`;
|
|
4060
|
+
const Rect = styled.styled.div `
|
|
4061
|
+
position: absolute;
|
|
4062
|
+
height: 110%;
|
|
4063
|
+
background-color: ${({ hue, theme }) => getColor(hue || theme.palette.grey[800], undefined, undefined, 0.8)};
|
|
4064
|
+
z-index: 1;
|
|
4065
|
+
border-radius: 2px;
|
|
4066
|
+
color: white;
|
|
4067
|
+
transition: width 0.1s ease;
|
|
4068
|
+
|
|
4069
|
+
&:hover {
|
|
4070
|
+
background-color: ${({ hue, theme }) => hue || theme.palette.grey[800]};
|
|
4071
|
+
${activeBookMark}
|
|
4072
|
+
}
|
|
4073
|
+
|
|
4074
|
+
${({ isActive }) => isActive && activeBookMark}
|
|
4075
|
+
`;
|
|
4076
|
+
const StyledTooltip$1 = styled.styled(Tooltip) `
|
|
4077
|
+
margin-bottom: ${({ theme }) => theme.space.sm};
|
|
4078
|
+
color: ${({ tooltipColor }) => tooltipColor};
|
|
4079
|
+
|
|
4080
|
+
`;
|
|
4081
|
+
const Grabber = (props) => {
|
|
4082
|
+
const { observation } = props;
|
|
4083
|
+
const { setIsGrabbing, setactiveBookmark, setFromEnd } = useProgressContext();
|
|
4084
|
+
const handleDragStart = (e) => {
|
|
4085
|
+
setIsGrabbing(true);
|
|
4086
|
+
setactiveBookmark(observation);
|
|
4087
|
+
setFromEnd(!!props.isEnd);
|
|
4088
|
+
e.preventDefault();
|
|
4089
|
+
e.stopPropagation();
|
|
4090
|
+
};
|
|
4091
|
+
return (jsxRuntime.jsx(StyledGrabber, Object.assign({ isEnd: props.isEnd, onMouseDown: handleDragStart, onMouseMove: props.handleMouseMove }, { children: jsxRuntime.jsx("div", { children: jsxRuntime.jsx(SvgGrip, {}) }) })));
|
|
4092
|
+
};
|
|
4093
|
+
const Bookmark = (props) => {
|
|
4094
|
+
var _a, _b;
|
|
4095
|
+
const { start, end, hue, tooltipContent } = props;
|
|
4096
|
+
const { context } = Video.useVideoContext();
|
|
4097
|
+
const videoStart = context.part.start || 0;
|
|
4098
|
+
const videoEnd = context.part.end || ((_a = context.player) === null || _a === void 0 ? void 0 : _a.totalTime) || 0;
|
|
4099
|
+
const duration = videoEnd - videoStart || ((_b = context.player) === null || _b === void 0 ? void 0 : _b.totalTime) || 0; //relative
|
|
4100
|
+
const { activeBookmark } = useProgressContext();
|
|
4101
|
+
if (!context.player || !context.player.ref) {
|
|
4102
|
+
return null;
|
|
4103
|
+
}
|
|
4104
|
+
if (start > videoEnd || start < videoStart)
|
|
4105
|
+
return null;
|
|
4106
|
+
return (jsxRuntime.jsx(StyledTooltip$1, Object.assign({ content: tooltipContent, type: "light", size: "large", isTransparent: true }, { children: jsxRuntime.jsxs(Rect, Object.assign({ isActive: activeBookmark && activeBookmark.id === props.id, hue: hue, style: {
|
|
4107
|
+
left: `${((start - videoStart) / duration) * 100}%`,
|
|
4108
|
+
width: `${((end - start) / duration) * 100}%`,
|
|
4109
|
+
}, onClick: props.onClick }, { children: [jsxRuntime.jsx(Grabber, { observation: props }), jsxRuntime.jsx(Grabber, { isEnd: true, observation: props })] })) })));
|
|
4110
|
+
};
|
|
4111
|
+
|
|
4112
|
+
var _path$k, _path2$3, _path3$1;
|
|
4113
|
+
function _extends$o() { _extends$o = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$o.apply(this, arguments); }
|
|
4114
|
+
const SvgBackSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$o({
|
|
3956
4115
|
width: 16,
|
|
3957
4116
|
height: 16,
|
|
3958
4117
|
viewBox: "0 0 16 16",
|
|
3959
4118
|
fill: "none",
|
|
3960
4119
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3961
|
-
}, props), _path$
|
|
4120
|
+
}, props), _path$k || (_path$k = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3962
4121
|
fillRule: "evenodd",
|
|
3963
4122
|
clipRule: "evenodd",
|
|
3964
|
-
d: "
|
|
4123
|
+
d: "M4.34099 3.5C5.25886 2.85974 6.34919 2.5 7.5 2.5C10.5477 2.5 13 4.95228 13 8C13 11.0477 10.5477 13.5 7.5 13.5C5.79771 13.5 4.25432 12.7171 3.18087 11.3753C2.83586 10.944 2.20657 10.8741 1.7753 11.2191C1.34404 11.5641 1.27412 12.1934 1.61913 12.6247C3.06275 14.4292 5.17372 15.5 7.5 15.5C11.6523 15.5 15 12.1523 15 8C15 3.84772 11.6523 0.5 7.5 0.5C5.84359 0.5 4.28318 1.04496 3 2.00147V1C3 0.447715 2.55229 0 2 0C1.44771 0 1 0.447715 1 1V4C1 4.85228 1.64772 5.5 2.5 5.5H5.5C6.05229 5.5 6.5 5.05228 6.5 4.5C6.5 3.94772 6.05229 3.5 5.5 3.5H4.34099Z",
|
|
3965
4124
|
fill: "currentColor"
|
|
3966
|
-
})), _path2$
|
|
4125
|
+
})), _path2$3 || (_path2$3 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3967
4126
|
d: "M5.5 7.63073V7.07008H6.67566V11H6.02566V7.63073H5.5Z",
|
|
3968
4127
|
fill: "currentColor"
|
|
3969
4128
|
})), _path3$1 || (_path3$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -3971,20 +4130,20 @@ const SvgForwardSecondsFill = props => /*#__PURE__*/React__namespace.createEleme
|
|
|
3971
4130
|
fill: "currentColor"
|
|
3972
4131
|
})));
|
|
3973
4132
|
|
|
3974
|
-
var _path$
|
|
3975
|
-
function _extends$
|
|
3976
|
-
const
|
|
4133
|
+
var _path$j, _path2$2, _path3;
|
|
4134
|
+
function _extends$n() { _extends$n = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$n.apply(this, arguments); }
|
|
4135
|
+
const SvgForwardSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$n({
|
|
3977
4136
|
width: 16,
|
|
3978
4137
|
height: 16,
|
|
3979
4138
|
viewBox: "0 0 16 16",
|
|
3980
4139
|
fill: "none",
|
|
3981
4140
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3982
|
-
}, props), _path$
|
|
4141
|
+
}, props), _path$j || (_path$j = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3983
4142
|
fillRule: "evenodd",
|
|
3984
4143
|
clipRule: "evenodd",
|
|
3985
|
-
d: "
|
|
4144
|
+
d: "M11.659 3.5C10.7411 2.85974 9.65081 2.5 8.5 2.5C5.45228 2.5 3 4.95228 3 8C3 11.0477 5.45228 13.5 8.5 13.5C10.2023 13.5 11.7457 12.7171 12.8191 11.3753C13.1641 10.944 13.7934 10.8741 14.2247 11.2191C14.656 11.5641 14.7259 12.1934 14.3809 12.6247C12.9372 14.4292 10.8263 15.5 8.5 15.5C4.34772 15.5 1 12.1523 1 8C1 3.84772 4.34772 0.5 8.5 0.5C10.1564 0.5 11.7168 1.04496 13 2.00147V1C13 0.447715 13.4477 0 14 0C14.5523 0 15 0.447715 15 1V4C15 4.85228 14.3523 5.5 13.5 5.5H10.5C9.94771 5.5 9.5 5.05228 9.5 4.5C9.5 3.94772 9.94771 3.5 10.5 3.5H11.659Z",
|
|
3986
4145
|
fill: "currentColor"
|
|
3987
|
-
})), _path2$
|
|
4146
|
+
})), _path2$2 || (_path2$2 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3988
4147
|
d: "M5.5 7.63073V7.07008H6.67566V11H6.02566V7.63073H5.5Z",
|
|
3989
4148
|
fill: "currentColor"
|
|
3990
4149
|
})), _path3 || (_path3 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -3992,7 +4151,46 @@ const SvgBackSecondsFill = props => /*#__PURE__*/React__namespace.createElement(
|
|
|
3992
4151
|
fill: "currentColor"
|
|
3993
4152
|
})));
|
|
3994
4153
|
|
|
3995
|
-
var
|
|
4154
|
+
var _g$1;
|
|
4155
|
+
function _extends$m() { _extends$m = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$m.apply(this, arguments); }
|
|
4156
|
+
const SvgPauseFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$m({
|
|
4157
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4158
|
+
width: 16,
|
|
4159
|
+
height: 16,
|
|
4160
|
+
focusable: "false",
|
|
4161
|
+
viewBox: "0 0 16 16"
|
|
4162
|
+
}, props), _g$1 || (_g$1 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
4163
|
+
fill: "currentColor"
|
|
4164
|
+
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
4165
|
+
width: 4,
|
|
4166
|
+
height: 14,
|
|
4167
|
+
x: 3,
|
|
4168
|
+
y: 1,
|
|
4169
|
+
rx: 1,
|
|
4170
|
+
ry: 1
|
|
4171
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
4172
|
+
width: 4,
|
|
4173
|
+
height: 14,
|
|
4174
|
+
x: 9,
|
|
4175
|
+
y: 1,
|
|
4176
|
+
rx: 1,
|
|
4177
|
+
ry: 1
|
|
4178
|
+
}))));
|
|
4179
|
+
|
|
4180
|
+
var _path$i;
|
|
4181
|
+
function _extends$l() { _extends$l = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$l.apply(this, arguments); }
|
|
4182
|
+
const SvgPlayFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$l({
|
|
4183
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4184
|
+
width: 16,
|
|
4185
|
+
height: 16,
|
|
4186
|
+
focusable: "false",
|
|
4187
|
+
viewBox: "0 0 16 16"
|
|
4188
|
+
}, props), _path$i || (_path$i = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4189
|
+
fill: "currentColor",
|
|
4190
|
+
d: "M6 15.79c-.13 0-.26-.03-.38-.08a.977.977 0 01-.62-.92V1.21a1 1 0 01.62-.93C6 .12 6.42.21 6.71.5l6.44 6.44c.58.58.58 1.54 0 2.12L6.71 15.5c-.19.19-.45.29-.71.29z"
|
|
4191
|
+
})));
|
|
4192
|
+
|
|
4193
|
+
var _path$h, _path2$1;
|
|
3996
4194
|
function _extends$k() { _extends$k = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$k.apply(this, arguments); }
|
|
3997
4195
|
const SvgPreviousFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$k({
|
|
3998
4196
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -4003,7 +4201,7 @@ const SvgPreviousFill = props => /*#__PURE__*/React__namespace.createElement("sv
|
|
|
4003
4201
|
}, props), _path$h || (_path$h = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4004
4202
|
d: "M2.75 20C2.75 20.5523 3.19772 21 3.75 21C4.30228 21 4.75 20.5523 4.75 20L4.75 4C4.75 3.44772 4.30229 3 3.75 3C3.19772 3 2.75 3.44772 2.75 4V20Z",
|
|
4005
4203
|
fill: "currentColor"
|
|
4006
|
-
})), _path2$
|
|
4204
|
+
})), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4007
4205
|
d: "M20.75 19.0526C20.75 20.4774 19.1383 21.305 17.9803 20.4748L7.51062 12.9682C6.50574 12.2477 6.54467 10.7407 7.5854 10.073L18.0551 3.35665C19.2198 2.60946 20.75 3.44583 20.75 4.82961L20.75 19.0526Z",
|
|
4008
4206
|
fill: "currentColor"
|
|
4009
4207
|
})));
|
|
@@ -4033,8 +4231,9 @@ const getNextPlaybackRate = (rate = 1) => {
|
|
|
4033
4231
|
const StyledDiv$3 = styled__default["default"].div `
|
|
4034
4232
|
display: flex;
|
|
4035
4233
|
align-items: center;
|
|
4234
|
+
justify-content: center;
|
|
4036
4235
|
`;
|
|
4037
|
-
const ControlsGroupCenter = () => {
|
|
4236
|
+
const ControlsGroupCenter = (props) => {
|
|
4038
4237
|
var _a;
|
|
4039
4238
|
const [playBackRate, setPlayBackRate] = React.useState(1);
|
|
4040
4239
|
const { context, togglePlay } = Video.useVideoContext();
|
|
@@ -4057,107 +4256,77 @@ const ControlsGroupCenter = () => {
|
|
|
4057
4256
|
const nextTime = videoRef.currentTime + 10;
|
|
4058
4257
|
videoRef.currentTime = nextTime;
|
|
4059
4258
|
};
|
|
4060
|
-
return (jsxRuntime.jsxs(StyledDiv$3, { children: [jsxRuntime.jsx(
|
|
4259
|
+
return (jsxRuntime.jsxs(StyledDiv$3, Object.assign({}, props, { children: [jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
|
|
4061
4260
|
if (videoRef) {
|
|
4062
4261
|
videoRef.currentTime = 0;
|
|
4063
4262
|
}
|
|
4064
4263
|
e.stopPropagation();
|
|
4065
|
-
} }, { children: jsxRuntime.jsx(SvgPreviousFill, {}) })), jsxRuntime.jsx(
|
|
4264
|
+
} }, { children: jsxRuntime.jsx(SvgPreviousFill, {}) })), jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
|
|
4066
4265
|
onRewind();
|
|
4067
4266
|
e.stopPropagation();
|
|
4068
|
-
} }, { children: jsxRuntime.jsx(SvgBackSecondsFill, {}) })), jsxRuntime.jsx(
|
|
4267
|
+
} }, { children: jsxRuntime.jsx(SvgBackSecondsFill, {}) })), jsxRuntime.jsx(ControlButton, Object.assign({ size: "large", onClick: togglePlay }, { children: isPlaying ? (jsxRuntime.jsx(SvgPauseFill, { style: { width: "24px", height: "24px" } })) : (jsxRuntime.jsx(SvgPlayFill, { style: { width: "24px", height: "24px" } })) })), jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
|
|
4069
4268
|
onForward();
|
|
4070
4269
|
e.stopPropagation();
|
|
4071
|
-
} }, { children: jsxRuntime.jsx(SvgForwardSecondsFill, {}) })), jsxRuntime.jsx(
|
|
4270
|
+
} }, { children: jsxRuntime.jsx(SvgForwardSecondsFill, {}) })), jsxRuntime.jsx(ControlButton, Object.assign({ isPill: true, onClick: (e) => {
|
|
4072
4271
|
const newSpeed = getNextPlaybackRate(playBackRate);
|
|
4073
4272
|
if (videoRef === null || videoRef === void 0 ? void 0 : videoRef.playbackRate) {
|
|
4074
4273
|
setPlayBackRate(newSpeed);
|
|
4075
4274
|
videoRef.playbackRate = newSpeed;
|
|
4076
4275
|
}
|
|
4077
4276
|
e.stopPropagation();
|
|
4078
|
-
} }, { children: jsxRuntime.jsxs(SM, Object.assign({ isBold: true, style: { lineHeight: "16px" } }, { children: [playBackRate, "x"] })) }))] }));
|
|
4277
|
+
} }, { children: jsxRuntime.jsxs(SM, Object.assign({ isBold: true, style: { lineHeight: "16px" } }, { children: [playBackRate, "x"] })) }))] })));
|
|
4079
4278
|
};
|
|
4080
4279
|
|
|
4081
|
-
|
|
4082
|
-
position: absolute;
|
|
4083
|
-
bottom: ${({ theme }) => theme.space.sm};
|
|
4084
|
-
right: 0;
|
|
4085
|
-
|
|
4086
|
-
padding: 0 ${({ theme }) => theme.space.xs};
|
|
4087
|
-
|
|
4088
|
-
span {
|
|
4089
|
-
color: ${({ theme }) => theme.palette.grey[300]};
|
|
4090
|
-
}
|
|
4091
|
-
`;
|
|
4092
|
-
const TimeLabel = ({ current, duration, }) => (jsxRuntime.jsx(StyledDiv$2, { children: jsxRuntime.jsxs(SM, Object.assign({ tag: "span" }, { children: [current, "/", duration] })) }));
|
|
4093
|
-
|
|
4094
|
-
var _path$g, _path2$2;
|
|
4280
|
+
var _path$g, _circle$1;
|
|
4095
4281
|
function _extends$j() { _extends$j = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$j.apply(this, arguments); }
|
|
4096
|
-
const
|
|
4282
|
+
const SvgTagStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$j({
|
|
4097
4283
|
xmlns: "http://www.w3.org/2000/svg",
|
|
4098
4284
|
width: 16,
|
|
4099
4285
|
height: 16,
|
|
4100
4286
|
focusable: "false",
|
|
4101
4287
|
viewBox: "0 0 16 16"
|
|
4102
4288
|
}, props), _path$g || (_path$g = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4289
|
+
fill: "none",
|
|
4103
4290
|
stroke: "currentColor",
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4291
|
+
d: "M.5 1v5.3c0 .1.1.3.1.4l8.5 8.5c.2.2.5.2.7 0l5.3-5.3c.2-.2.2-.5 0-.7L6.6.6S6.4.5 6.3.5H1C.7.5.5.7.5 1z"
|
|
4292
|
+
})), _circle$1 || (_circle$1 = /*#__PURE__*/React__namespace.createElement("circle", {
|
|
4293
|
+
cx: 4,
|
|
4294
|
+
cy: 4,
|
|
4295
|
+
r: 1,
|
|
4296
|
+
fill: "currentColor"
|
|
4109
4297
|
})));
|
|
4110
|
-
|
|
4111
|
-
var _path$f
|
|
4112
|
-
function _extends$i() { _extends$i = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$i.apply(this, arguments); }
|
|
4113
|
-
const
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
|
|
4117
|
-
focusable: "false",
|
|
4118
|
-
viewBox: "0 0 16 16"
|
|
4119
|
-
}, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4120
|
-
fill: "currentColor",
|
|
4121
|
-
d: "M9 15.29c-.26 0-.51-.1-.71-.29l-4-4H1c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h3.29l4-4a1.002 1.002 0 011.71.71V14.3a.986.986 0 01-1 .99z"
|
|
4122
|
-
})), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4298
|
+
|
|
4299
|
+
var _path$f;
|
|
4300
|
+
function _extends$i() { _extends$i = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$i.apply(this, arguments); }
|
|
4301
|
+
const SvgPlus$1 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$i({
|
|
4302
|
+
width: 12,
|
|
4303
|
+
height: 12,
|
|
4304
|
+
viewBox: "0 0 12 12",
|
|
4123
4305
|
fill: "none",
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4306
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
4307
|
+
}, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4308
|
+
fillRule: "evenodd",
|
|
4309
|
+
clipRule: "evenodd",
|
|
4310
|
+
d: "M6.5 1C6.19318 1 5.94444 1.24873 5.94444 1.55556V5.44444H2.05556C1.74873 5.44444 1.5 5.69318 1.5 6C1.5 6.30683 1.74873 6.55556 2.05556 6.55556H5.94444V10.4444C5.94444 10.7513 6.19318 11 6.5 11C6.80683 11 7.05556 10.7513 7.05556 10.4444V6.55556H10.9444C11.2513 6.55556 11.5 6.30683 11.5 6C11.5 5.69318 11.2513 5.44444 10.9444 5.44444H7.05556V1.55556C7.05556 1.24873 6.80683 1 6.5 1Z",
|
|
4311
|
+
fill: "currentColor"
|
|
4127
4312
|
})));
|
|
4128
4313
|
|
|
4129
|
-
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
};
|
|
4143
|
-
const hasVolume = (video) => {
|
|
4144
|
-
if (!video) {
|
|
4145
|
-
return false;
|
|
4146
|
-
}
|
|
4147
|
-
return video.volume > 0;
|
|
4148
|
-
};
|
|
4149
|
-
React.useEffect(() => {
|
|
4150
|
-
if (player && (player === null || player === void 0 ? void 0 : player.ref)) {
|
|
4151
|
-
setMuted(!hasVolume(player.ref.current));
|
|
4152
|
-
checkAudio(player.ref.current);
|
|
4153
|
-
}
|
|
4154
|
-
}, [context.isPlaying, isMuted]);
|
|
4155
|
-
return (jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, disabled: !hasAudio, onClick: () => {
|
|
4156
|
-
if (player === null || player === void 0 ? void 0 : player.ref.current) {
|
|
4157
|
-
player.ref.current.volume = player.ref.current.volume > 0 ? 0 : 1;
|
|
4158
|
-
setMuted(!player.ref.current.volume);
|
|
4314
|
+
// Prevent button from breaking on smaller screens
|
|
4315
|
+
const StyledButton$2 = styled.styled(Button) `
|
|
4316
|
+
overflow: visible;
|
|
4317
|
+
`;
|
|
4318
|
+
const Cutter = ({ onCutHandler, isCutting, i18n, }) => {
|
|
4319
|
+
var _a;
|
|
4320
|
+
const { context } = Video.useVideoContext();
|
|
4321
|
+
const videoRef = (_a = context.player) === null || _a === void 0 ? void 0 : _a.ref.current;
|
|
4322
|
+
if (!onCutHandler)
|
|
4323
|
+
return null;
|
|
4324
|
+
return (jsxRuntime.jsx(StyledButton$2, Object.assign({ isPrimary: true, isAccent: !isCutting, size: "small", onClick: (e) => {
|
|
4325
|
+
if (videoRef) {
|
|
4326
|
+
onCutHandler(videoRef.currentTime);
|
|
4159
4327
|
}
|
|
4160
|
-
|
|
4328
|
+
e.stopPropagation();
|
|
4329
|
+
} }, { children: isCutting ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button.StartIcon, { children: jsxRuntime.jsx(SvgTagStroke, {}) }), jsxRuntime.jsx(Span, { children: (i18n === null || i18n === void 0 ? void 0 : i18n.onHighlight) || "End observation" })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button.StartIcon, { children: jsxRuntime.jsx(SvgPlus$1, {}) }), jsxRuntime.jsx(Span, { children: (i18n === null || i18n === void 0 ? void 0 : i18n.beforeHighlight) || "Start observation" })] })) })));
|
|
4161
4330
|
};
|
|
4162
4331
|
|
|
4163
4332
|
var _path$e;
|
|
@@ -4226,7 +4395,7 @@ const FullScreenButton = ({ container, }) => {
|
|
|
4226
4395
|
setFullScreen(false);
|
|
4227
4396
|
}
|
|
4228
4397
|
}
|
|
4229
|
-
}), [ref, isFullScreen]);
|
|
4398
|
+
}), [ref, isFullScreen, setFullScreen]);
|
|
4230
4399
|
const canGoFullScreen = React.useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
4231
4400
|
if (ref) {
|
|
4232
4401
|
return (requestFullscreen ||
|
|
@@ -4251,31 +4420,90 @@ const FullScreenButton = ({ container, }) => {
|
|
|
4251
4420
|
}
|
|
4252
4421
|
};
|
|
4253
4422
|
}, [ref]);
|
|
4254
|
-
return (jsxRuntime.jsx(
|
|
4423
|
+
return (jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
|
|
4255
4424
|
handleFullScreen();
|
|
4256
4425
|
e.stopPropagation();
|
|
4257
4426
|
}, disabled: !canGoFullScreen() }, { children: document.fullscreenElement || isFullScreen ? (jsxRuntime.jsx(SvgMinimizeStroke, {})) : (jsxRuntime.jsx(SvgMaximizeStroke, {})) })));
|
|
4258
4427
|
};
|
|
4259
4428
|
|
|
4260
|
-
const
|
|
4429
|
+
const UgProgress = styled__default["default"](reactLoaders.Progress) ``;
|
|
4430
|
+
/**
|
|
4431
|
+
* A Progress loader communicates progress when downloading or uploading content.
|
|
4432
|
+
* <hr>
|
|
4433
|
+
* Used for this:
|
|
4434
|
+
* - To communicate the amount of time left when downloading or uploading content
|
|
4435
|
+
*
|
|
4436
|
+
Not for this:
|
|
4437
|
+
- When the loading time is unknown, use a Spinner instead
|
|
4438
|
+
- When loading page content, use a Skeleton loader instead
|
|
4439
|
+
*/
|
|
4440
|
+
const Progress = React.forwardRef((props, ref) => (jsxRuntime.jsx(UgProgress, Object.assign({ ref: ref }, props))));
|
|
4441
|
+
|
|
4442
|
+
const StyledProgress = styled.styled(Progress) `
|
|
4443
|
+
width: 100%;
|
|
4444
|
+
border-radius: 0;
|
|
4445
|
+
color: ${({ theme }) => theme.palette.grey[400]};
|
|
4446
|
+
cursor: pointer;
|
|
4447
|
+
> div {
|
|
4448
|
+
border-radius: 0;
|
|
4449
|
+
}
|
|
4450
|
+
`;
|
|
4451
|
+
const ProgressBar = React.forwardRef((props, ref) => {
|
|
4452
|
+
const { progress, handleSkipAhead } = props;
|
|
4453
|
+
return (jsxRuntime.jsx(StyledProgress, { className: "progress-bar-1", ref: ref, value: progress, onClick: (e) => handleSkipAhead(e.clientX) }));
|
|
4454
|
+
});
|
|
4455
|
+
|
|
4456
|
+
const StyledDiv$2 = styled__default["default"].div `
|
|
4457
|
+
display: flex;
|
|
4458
|
+
color: ${({ theme }) => theme.palette.grey[700]};
|
|
4459
|
+
`;
|
|
4460
|
+
const TimeLabel = ({ current, duration, }) => (jsxRuntime.jsx(StyledDiv$2, { children: jsxRuntime.jsxs(SM, Object.assign({ tag: "span" }, { children: [formatDuration(current), "/", formatDuration(duration)] })) }));
|
|
4461
|
+
|
|
4462
|
+
const Wrapper$1 = styled__default["default"].div `
|
|
4261
4463
|
position: absolute;
|
|
4464
|
+
bottom: ${({ theme }) => theme.space.sm};
|
|
4465
|
+
z-index: 1;
|
|
4466
|
+
`;
|
|
4467
|
+
const Content$1 = styled__default["default"].div `
|
|
4468
|
+
display: flex;
|
|
4469
|
+
background-color: ${({ theme }) => theme.palette.grey[800]};
|
|
4470
|
+
border-radius: 2px;
|
|
4471
|
+
width: auto;
|
|
4472
|
+
padding: 2px 4px;
|
|
4473
|
+
display: inline-flex;
|
|
4474
|
+
color: white;
|
|
4475
|
+
font-size: ${({ theme }) => theme.fontSizes.sm};
|
|
4476
|
+
align-items: center;
|
|
4477
|
+
justify-content: center;
|
|
4478
|
+
min-height: 14px;
|
|
4479
|
+
`;
|
|
4480
|
+
const PlayerTooltip = (_a) => {
|
|
4481
|
+
var { children } = _a, props = __rest(_a, ["children"]);
|
|
4482
|
+
return (jsxRuntime.jsx(Wrapper$1, Object.assign({}, props, { children: jsxRuntime.jsx(Content$1, { children: children }) })));
|
|
4483
|
+
};
|
|
4484
|
+
|
|
4485
|
+
function useDebounce(value, delay) {
|
|
4486
|
+
const [debouncedValue, setDebouncedValue] = React.useState(value);
|
|
4487
|
+
React.useEffect(() => {
|
|
4488
|
+
const timer = setTimeout(() => setDebouncedValue(value), delay || 500);
|
|
4489
|
+
return () => {
|
|
4490
|
+
clearTimeout(timer);
|
|
4491
|
+
};
|
|
4492
|
+
}, [value, delay]);
|
|
4493
|
+
return debouncedValue;
|
|
4494
|
+
}
|
|
4495
|
+
|
|
4496
|
+
const ControlsWrapper = styled__default["default"].div `
|
|
4497
|
+
${({ showControls }) => showControls ? "position: relative;" : "position: absolute;"}
|
|
4262
4498
|
bottom: 0;
|
|
4263
4499
|
left: 0;
|
|
4264
4500
|
right: 0;
|
|
4265
4501
|
padding: ${({ theme }) => theme.space.xxs} 0;
|
|
4266
|
-
background-color: ${({ theme }) =>
|
|
4502
|
+
background-color: ${({ theme }) => theme.palette.grey[100]};
|
|
4503
|
+
height: 80px;
|
|
4267
4504
|
${({ isPlaying }) => isPlaying && "display: none;"}
|
|
4268
4505
|
z-index: 2;
|
|
4269
4506
|
`;
|
|
4270
|
-
const StyledProgress = styled__default["default"](Progress) `
|
|
4271
|
-
width: 100%;
|
|
4272
|
-
border-radius: 0;
|
|
4273
|
-
color: ${({ theme }) => theme.palette.kale[700]};
|
|
4274
|
-
cursor: pointer;
|
|
4275
|
-
> div {
|
|
4276
|
-
border-radius: 0;
|
|
4277
|
-
}
|
|
4278
|
-
`;
|
|
4279
4507
|
const StyledTooltip = styled__default["default"](PlayerTooltip) `
|
|
4280
4508
|
display: none;
|
|
4281
4509
|
`;
|
|
@@ -4294,18 +4522,34 @@ const StyledDiv$1 = styled__default["default"].div `
|
|
|
4294
4522
|
display: flex;
|
|
4295
4523
|
align-items: center;
|
|
4296
4524
|
`;
|
|
4297
|
-
const
|
|
4525
|
+
const CurrentTimeMarker = styled__default["default"].div `
|
|
4526
|
+
width: 2px;
|
|
4527
|
+
top: 0;
|
|
4528
|
+
left: ${({ left }) => `${left}%`};
|
|
4529
|
+
position: absolute;
|
|
4530
|
+
height: 110%;
|
|
4531
|
+
z-index: 1;
|
|
4532
|
+
background-color: white;
|
|
4533
|
+
`;
|
|
4534
|
+
const Controls = ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpdated, i18n, showControls = false, }) => {
|
|
4298
4535
|
var _a, _b, _c;
|
|
4299
4536
|
const [progress, setProgress] = React.useState(0);
|
|
4300
4537
|
const [tooltipMargin, setTooltipMargin] = React.useState(0);
|
|
4301
4538
|
const [tooltipLabel, setTooltipLabel] = React.useState("00:00");
|
|
4539
|
+
const [marks, setMarks] = React.useState(bookmarks);
|
|
4540
|
+
const [updatedMark, setUpdatedMark] = React.useState();
|
|
4302
4541
|
const progressRef = React.useRef(null);
|
|
4303
4542
|
const { context, setCurrentTime } = Video.useVideoContext();
|
|
4543
|
+
const debouncedMark = useDebounce(updatedMark, 500);
|
|
4544
|
+
const { reset, isGrabbing, activeBookmark, fromEnd } = useProgressContext();
|
|
4545
|
+
React.useEffect(() => {
|
|
4546
|
+
setMarks(bookmarks);
|
|
4547
|
+
}, [bookmarks]);
|
|
4304
4548
|
const relCurrentTime = ((_a = context.player) === null || _a === void 0 ? void 0 : _a.currentTime)
|
|
4305
4549
|
? ((_b = context.player) === null || _b === void 0 ? void 0 : _b.currentTime) - context.part.start
|
|
4306
4550
|
: 0;
|
|
4307
4551
|
const duration = context.part.end - context.part.start || ((_c = context.player) === null || _c === void 0 ? void 0 : _c.totalTime) || 0; //relative
|
|
4308
|
-
const getVideoPositionFromEvent = (clientX) => {
|
|
4552
|
+
const getVideoPositionFromEvent = React.useCallback((clientX) => {
|
|
4309
4553
|
if (progressRef && progressRef.current && duration) {
|
|
4310
4554
|
const bounds = progressRef.current.getBoundingClientRect();
|
|
4311
4555
|
const x = clientX - bounds.left;
|
|
@@ -4313,12 +4557,18 @@ const Controls = ({ container, }) => {
|
|
|
4313
4557
|
return videoPositionSecs;
|
|
4314
4558
|
}
|
|
4315
4559
|
return 0;
|
|
4316
|
-
};
|
|
4560
|
+
}, [progressRef, duration]);
|
|
4561
|
+
const getProgress = React.useCallback((currentTime) => {
|
|
4562
|
+
const current = currentTime - (context.part.start || 0);
|
|
4563
|
+
if (duration === 0)
|
|
4564
|
+
return 0;
|
|
4565
|
+
return (current / duration) * 100;
|
|
4566
|
+
}, [context.part.start, duration]);
|
|
4317
4567
|
const handleSkipAhead = React.useCallback((pageX) => {
|
|
4318
4568
|
const time = getVideoPositionFromEvent(pageX) + (context.part.start || 0);
|
|
4319
4569
|
setCurrentTime(time);
|
|
4320
4570
|
setProgress(getProgress(time));
|
|
4321
|
-
}, [
|
|
4571
|
+
}, [getVideoPositionFromEvent, context.part.start, setCurrentTime, getProgress]);
|
|
4322
4572
|
const onMouseEvent = (e) => {
|
|
4323
4573
|
if (progressRef && progressRef.current) {
|
|
4324
4574
|
const tooltipWidth = 40;
|
|
@@ -4329,20 +4579,45 @@ const Controls = ({ container, }) => {
|
|
|
4329
4579
|
const videoTargetDuration = getVideoPositionFromEvent(e.clientX);
|
|
4330
4580
|
setTooltipMargin(newTooltipMargin);
|
|
4331
4581
|
setTooltipLabel(formatDuration(videoTargetDuration));
|
|
4582
|
+
if (isGrabbing) {
|
|
4583
|
+
handleBookmarkUpdate(marginX, progressRef.current.clientWidth);
|
|
4584
|
+
}
|
|
4332
4585
|
}
|
|
4333
4586
|
};
|
|
4587
|
+
const handleBookmarkUpdate = React.useCallback((newX, clientW) => {
|
|
4588
|
+
if (!activeBookmark || !marks)
|
|
4589
|
+
return;
|
|
4590
|
+
const currentObsIndex = marks.findIndex((mark) => mark.id === activeBookmark.id);
|
|
4591
|
+
const value = (newX / clientW) * duration + context.part.start;
|
|
4592
|
+
const updatedMark = Object.assign(Object.assign({}, marks[currentObsIndex]), (!!fromEnd ? { end: value } : { start: value }));
|
|
4593
|
+
const newMarks = [
|
|
4594
|
+
...marks.slice(0, currentObsIndex),
|
|
4595
|
+
updatedMark,
|
|
4596
|
+
...marks.slice(currentObsIndex + 1),
|
|
4597
|
+
];
|
|
4598
|
+
setMarks(newMarks);
|
|
4599
|
+
setUpdatedMark(updatedMark);
|
|
4600
|
+
}, [activeBookmark, context.part.start, duration, fromEnd, marks]);
|
|
4334
4601
|
React.useEffect(() => {
|
|
4335
4602
|
var _a;
|
|
4336
4603
|
const currentTime = ((_a = context.player) === null || _a === void 0 ? void 0 : _a.currentTime) || 0;
|
|
4337
4604
|
setProgress(getProgress(currentTime));
|
|
4338
|
-
}, [context.player]);
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
return (
|
|
4344
|
-
|
|
4345
|
-
|
|
4605
|
+
}, [context.player, getProgress]);
|
|
4606
|
+
React.useEffect(() => {
|
|
4607
|
+
if (!marks)
|
|
4608
|
+
return;
|
|
4609
|
+
document.addEventListener("mouseup", reset);
|
|
4610
|
+
return () => {
|
|
4611
|
+
document.removeEventListener("mouseup", reset);
|
|
4612
|
+
};
|
|
4613
|
+
}, [reset, marks]);
|
|
4614
|
+
React.useEffect(() => {
|
|
4615
|
+
if (debouncedMark) {
|
|
4616
|
+
onBookMarkUpdated === null || onBookMarkUpdated === void 0 ? void 0 : onBookMarkUpdated(debouncedMark);
|
|
4617
|
+
}
|
|
4618
|
+
}, [debouncedMark, onBookMarkUpdated]);
|
|
4619
|
+
return (jsxRuntime.jsxs(ControlsWrapper, Object.assign({ showControls: showControls }, (!showControls && { isPlaying: context.isPlaying }), { children: [jsxRuntime.jsxs(ProgressContainer, Object.assign({ onMouseEnter: onMouseEvent, onMouseMove: onMouseEvent, onMouseLeave: onMouseEvent }, { children: [jsxRuntime.jsx(StyledTooltip, Object.assign({ style: { marginLeft: `${tooltipMargin}px` } }, { children: tooltipLabel })), !!duration &&
|
|
4620
|
+
(marks === null || marks === void 0 ? void 0 : marks.map((bookmark, index) => (jsxRuntime.jsx(Bookmark, Object.assign({}, bookmark), `${index}${bookmark.start}`)))), jsxRuntime.jsx(ProgressBar, { ref: progressRef, progress: progress, handleSkipAhead: handleSkipAhead, duration: duration }), jsxRuntime.jsx(CurrentTimeMarker, { left: progress })] })), jsxRuntime.jsxs(ControlsBar, { children: [jsxRuntime.jsxs(StyledDiv$1, Object.assign({ style: { width: "20%", justifyContent: "start" } }, { children: [jsxRuntime.jsx(AudioButton, {}), jsxRuntime.jsx(TimeLabel, { current: relCurrentTime, duration: duration })] })), jsxRuntime.jsx(ControlsGroupCenter, { style: { width: "60%" } }), jsxRuntime.jsxs(StyledDiv$1, Object.assign({ style: { width: "20%", justifyContent: "end" } }, { children: [jsxRuntime.jsx(Cutter, { onCutHandler: onCutHandler, isCutting: isCutting, i18n: i18n }), jsxRuntime.jsx(FullScreenButton, { container: container })] }))] })] })));
|
|
4346
4621
|
};
|
|
4347
4622
|
|
|
4348
4623
|
var _path$c;
|
|
@@ -4366,6 +4641,7 @@ const FloatingContainer = styled__default["default"].div `
|
|
|
4366
4641
|
right: 0;
|
|
4367
4642
|
${({ isPlaying }) => isPlaying && "display: none;"}
|
|
4368
4643
|
z-index: 1;
|
|
4644
|
+
height: calc(100% - 80px);
|
|
4369
4645
|
`;
|
|
4370
4646
|
const PlayIcon = styled__default["default"](SvgPlayIcon) ``;
|
|
4371
4647
|
const BigButton = styled__default["default"](IconButton) `
|
|
@@ -4374,6 +4650,10 @@ const BigButton = styled__default["default"](IconButton) `
|
|
|
4374
4650
|
min-width: ${({ theme }) => theme.space.base * 15}px;
|
|
4375
4651
|
width: 80px;
|
|
4376
4652
|
height: 80px;
|
|
4653
|
+
|
|
4654
|
+
box-shadow: ${({ theme }) => theme.shadows.boxShadow(theme)};
|
|
4655
|
+
|
|
4656
|
+
|
|
4377
4657
|
${PlayIcon} {
|
|
4378
4658
|
width: 60%;
|
|
4379
4659
|
height: 60%;
|
|
@@ -4413,9 +4693,11 @@ const VideoStyle = styled.css `
|
|
|
4413
4693
|
|
|
4414
4694
|
const Container$1 = styled__default["default"].div `
|
|
4415
4695
|
position: relative;
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4696
|
+
${({ showControls }) => !showControls && `
|
|
4697
|
+
display: flex;
|
|
4698
|
+
flex-direction: column;
|
|
4699
|
+
justify-content: center;
|
|
4700
|
+
`}
|
|
4419
4701
|
height: 100%;
|
|
4420
4702
|
width: 100%;
|
|
4421
4703
|
video {
|
|
@@ -4440,8 +4722,7 @@ const Container$1 = styled__default["default"].div `
|
|
|
4440
4722
|
}
|
|
4441
4723
|
}
|
|
4442
4724
|
}
|
|
4443
|
-
|
|
4444
|
-
background-color: ${({ theme }) => theme.palette.grey[700]};
|
|
4725
|
+
background: ${({ theme }) => theme.palette.grey[400]};
|
|
4445
4726
|
`;
|
|
4446
4727
|
|
|
4447
4728
|
const UgSpinner = styled__default["default"](reactLoaders.Spinner) ``;
|
|
@@ -4469,18 +4750,15 @@ const VideoSpinner = () => (jsxRuntime.jsx(StyledDiv, { children: jsxRuntime.jsx
|
|
|
4469
4750
|
* Used for this:
|
|
4470
4751
|
- To display a video
|
|
4471
4752
|
*/
|
|
4472
|
-
const Player = React.forwardRef((props, forwardRef) => {
|
|
4473
|
-
const videoRef = React.useRef(null);
|
|
4474
|
-
React.useImperativeHandle(forwardRef, () => videoRef.current);
|
|
4475
|
-
return (jsxRuntime.jsx(Video__default["default"], Object.assign({ src: props.url }, props, { children: jsxRuntime.jsx(PlayerCore, Object.assign({ ref: videoRef }, props)) })));
|
|
4476
|
-
});
|
|
4753
|
+
const Player = React.forwardRef((props, forwardRef) => (jsxRuntime.jsx(Video__default["default"], Object.assign({ src: props.url }, props, { children: jsxRuntime.jsx(PlayerCore, Object.assign({ ref: forwardRef }, props)) }))));
|
|
4477
4754
|
const PlayerCore = React.forwardRef((props, forwardRef) => {
|
|
4478
4755
|
var _a;
|
|
4479
4756
|
const { context, togglePlay, setIsPlaying } = Video.useVideoContext();
|
|
4757
|
+
const { onCutHandler, bookmarks, isCutting } = props;
|
|
4480
4758
|
const videoRef = (_a = context.player) === null || _a === void 0 ? void 0 : _a.ref.current;
|
|
4481
4759
|
const isLoaded = !!videoRef;
|
|
4482
4760
|
const containerRef = React.useRef(null);
|
|
4483
|
-
React.useImperativeHandle(forwardRef, () => videoRef);
|
|
4761
|
+
React.useImperativeHandle(forwardRef, () => videoRef, [videoRef]);
|
|
4484
4762
|
React.useEffect(() => {
|
|
4485
4763
|
if (videoRef) {
|
|
4486
4764
|
videoRef.addEventListener("pause", () => {
|
|
@@ -4494,10 +4772,19 @@ const PlayerCore = React.forwardRef((props, forwardRef) => {
|
|
|
4494
4772
|
});
|
|
4495
4773
|
}
|
|
4496
4774
|
};
|
|
4497
|
-
}, [videoRef]);
|
|
4498
|
-
return (jsxRuntime.jsxs(Container$1, Object.assign({ isLoaded: isLoaded, isPlaying: context.isPlaying, ref: containerRef }, { children: [!isLoaded ? (jsxRuntime.jsx(VideoSpinner, {})) : (jsxRuntime.jsx(FloatingControls, { isPlaying: context.isPlaying, onClick: togglePlay })), jsxRuntime.jsx(Video__default["default"].Player, { className: "player-container" }), jsxRuntime.jsx(Controls, { container: containerRef.current })] })));
|
|
4775
|
+
}, [setIsPlaying, videoRef]);
|
|
4776
|
+
return (jsxRuntime.jsxs(Container$1, Object.assign({ isLoaded: isLoaded, isPlaying: context.isPlaying, ref: containerRef, showControls: props.showControls }, { children: [!isLoaded ? (jsxRuntime.jsx(VideoSpinner, {})) : (jsxRuntime.jsx(FloatingControls, { isPlaying: context.isPlaying, onClick: togglePlay })), jsxRuntime.jsx(Video__default["default"].Player, { className: "player-container" }), jsxRuntime.jsx(ProgressContextProvider, { children: jsxRuntime.jsx(Controls, { container: containerRef.current, onCutHandler: onCutHandler, bookmarks: bookmarks, isCutting: isCutting, onBookMarkUpdated: props.handleBookmarkUpdate, i18n: props.i18n, showControls: props.showControls }) })] })));
|
|
4499
4777
|
});
|
|
4500
4778
|
|
|
4779
|
+
const MediaLightBox = ({ header, onClose, slideChange, selectedImageIndex, thumbnails, videoRefs, isOpen, details }) => {
|
|
4780
|
+
if (!isOpen) {
|
|
4781
|
+
return null;
|
|
4782
|
+
}
|
|
4783
|
+
return (jsxRuntime.jsxs(Lightbox, Object.assign({ onClose: onClose }, { children: [jsxRuntime.jsx(Lightbox.Header, { children: header }), jsxRuntime.jsxs(Lightbox.Body, { children: [jsxRuntime.jsx(Lightbox.Body.Main, Object.assign({ style: { flex: details ? 2 : 3 } }, { children: jsxRuntime.jsx(Slider, Object.assign({ prevArrow: jsxRuntime.jsx(Slider.PrevButton, { isBright: true }), nextArrow: jsxRuntime.jsx(Slider.NextButton, { isBright: true }), onSlideChange: slideChange, initialSlide: selectedImageIndex }, { children: thumbnails.map((item) => (jsxRuntime.jsxs(Slider.Slide, { children: [item.type.includes("image") && (jsxRuntime.jsx("img", { src: item.url, alt: `media ${item.name}`, style: { maxHeight: "100%", height: "auto" } })), item.type.includes("video") && item.url && (jsxRuntime.jsx(Player, { ref: (ref) => {
|
|
4784
|
+
videoRefs.current.push(ref);
|
|
4785
|
+
}, url: item.url }))] }, item.id))) })) })), details && (jsxRuntime.jsx(Lightbox.Body.Details, Object.assign({ style: { flex: 1 } }, { children: details })))] }), jsxRuntime.jsx(Lightbox.Close, { "aria-label": "Close modal" })] })));
|
|
4786
|
+
};
|
|
4787
|
+
|
|
4501
4788
|
const ChatBoxContainer = styled__default["default"].div `
|
|
4502
4789
|
display: flex;
|
|
4503
4790
|
border-top: 1px solid ${({ theme }) => theme.palette.grey[200]};
|
|
@@ -4517,14 +4804,19 @@ const ChatBoxContainer = styled__default["default"].div `
|
|
|
4517
4804
|
- Simple text input, use textarea instead.
|
|
4518
4805
|
*/
|
|
4519
4806
|
const CommentBox = (_a) => {
|
|
4807
|
+
var _b;
|
|
4520
4808
|
var { placeholderOptions } = _a, props = __rest(_a, ["placeholderOptions"]);
|
|
4521
4809
|
const { children, hasFloatingMenu, hasButtonsMenu, bubbleOptions, i18n } = props;
|
|
4522
4810
|
const { editor, setEditor, mentionableUsers, triggerSave, thumbnails, addThumbnails, } = useChatContext();
|
|
4523
|
-
const { addToast } = useToast();
|
|
4524
4811
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
4525
|
-
const [selectedImage, setSelectedImage] = React.useState({});
|
|
4526
4812
|
const [selectedImageIndex, setSelectedImageIndex] = React.useState(0);
|
|
4813
|
+
const { getMedia } = useMedia();
|
|
4527
4814
|
const ext = editorExtensions({ placeholderOptions, mentionableUsers });
|
|
4815
|
+
function handleEvent(data) {
|
|
4816
|
+
if (!data || !data.files)
|
|
4817
|
+
return;
|
|
4818
|
+
addThumbnails({ files: getMedia(data.files) });
|
|
4819
|
+
}
|
|
4528
4820
|
const closeLightbox = () => {
|
|
4529
4821
|
setIsOpen(false);
|
|
4530
4822
|
};
|
|
@@ -4537,10 +4829,7 @@ const CommentBox = (_a) => {
|
|
|
4537
4829
|
}
|
|
4538
4830
|
});
|
|
4539
4831
|
}, [videoRefs]);
|
|
4540
|
-
const handleOpenLightbox = (
|
|
4541
|
-
if (!file)
|
|
4542
|
-
throw Error("Error with the image");
|
|
4543
|
-
setSelectedImage(file);
|
|
4832
|
+
const handleOpenLightbox = (index) => {
|
|
4544
4833
|
setSelectedImageIndex(index);
|
|
4545
4834
|
setIsOpen(true);
|
|
4546
4835
|
};
|
|
@@ -4552,48 +4841,12 @@ const CommentBox = (_a) => {
|
|
|
4552
4841
|
return false;
|
|
4553
4842
|
},
|
|
4554
4843
|
handleDrop: function (view, event, slice, moved) {
|
|
4555
|
-
if (!event.dataTransfer || !event.dataTransfer.files)
|
|
4556
|
-
return false;
|
|
4557
4844
|
event.preventDefault();
|
|
4558
|
-
|
|
4559
|
-
return Object.assign(file, {
|
|
4560
|
-
isLoadingMedia: false,
|
|
4561
|
-
internal_id: uuid.v4(),
|
|
4562
|
-
});
|
|
4563
|
-
});
|
|
4564
|
-
const wrongFiles = files.filter((file) => !/^(image|video)\//.test(file.type));
|
|
4565
|
-
if (wrongFiles.length > 0) {
|
|
4566
|
-
for (const file of wrongFiles) {
|
|
4567
|
-
addToast(({ close }) => (jsxRuntime.jsx(Notification, { onClose: close, type: "error", message: `${props.messageBadFileFormat} - ${file.name}`, isPrimary: true })), { placement: "top" });
|
|
4568
|
-
}
|
|
4569
|
-
}
|
|
4570
|
-
const mediaFiles = files.filter((file) => /^(image|video)\//.test(file.type));
|
|
4571
|
-
if (mediaFiles.length === 0)
|
|
4572
|
-
return false;
|
|
4573
|
-
addThumbnails({ files: mediaFiles });
|
|
4574
|
-
return false;
|
|
4845
|
+
handleEvent(event.dataTransfer);
|
|
4575
4846
|
},
|
|
4576
4847
|
handlePaste: (view, event, slice) => {
|
|
4577
|
-
if (!event.clipboardData || !event.clipboardData.items)
|
|
4578
|
-
return false;
|
|
4579
4848
|
event.preventDefault();
|
|
4580
|
-
|
|
4581
|
-
return Object.assign(file, {
|
|
4582
|
-
isLoadingMedia: false,
|
|
4583
|
-
internal_id: uuid.v4(),
|
|
4584
|
-
});
|
|
4585
|
-
});
|
|
4586
|
-
const wrongFiles = files.filter((file) => !/^(image|video)\//.test(file.type));
|
|
4587
|
-
if (wrongFiles.length > 0) {
|
|
4588
|
-
for (const file of wrongFiles) {
|
|
4589
|
-
addToast(({ close }) => (jsxRuntime.jsx(Notification, { onClose: close, type: "error", message: `${props.messageBadFileFormat} - ${file.name}`, isPrimary: true })), { placement: "top" });
|
|
4590
|
-
}
|
|
4591
|
-
}
|
|
4592
|
-
const mediaFiles = files.filter((file) => /^(image|video)\//.test(file.type));
|
|
4593
|
-
if (mediaFiles.length === 0)
|
|
4594
|
-
return false;
|
|
4595
|
-
addThumbnails({ files: mediaFiles });
|
|
4596
|
-
return false;
|
|
4849
|
+
handleEvent(event.clipboardData);
|
|
4597
4850
|
},
|
|
4598
4851
|
} }, props));
|
|
4599
4852
|
const onKeyDown = (event) => {
|
|
@@ -4606,14 +4859,32 @@ const CommentBox = (_a) => {
|
|
|
4606
4859
|
return null;
|
|
4607
4860
|
ed.on("create", ({ editor }) => setEditor(editor));
|
|
4608
4861
|
ed.on("update", ({ editor }) => setEditor(editor));
|
|
4609
|
-
|
|
4610
|
-
return Object.assign(file, { isLoadingMedia: file.isLoadingMedia });
|
|
4611
|
-
});
|
|
4612
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isOpen && selectedImage && (jsxRuntime.jsxs(Lightbox, Object.assign({ onClose: closeLightbox }, { children: [jsxRuntime.jsx(Lightbox.Header, { children: selectedImage.name }), jsxRuntime.jsx(Lightbox.Body, { children: jsxRuntime.jsx(Lightbox.Body.Main, Object.assign({ style: { flex: 3 } }, { children: jsxRuntime.jsx(Slider, Object.assign({ prevArrow: jsxRuntime.jsx(Slider.PrevButton, { isBright: true }), nextArrow: jsxRuntime.jsx(Slider.NextButton, { isBright: true }), onSlideChange: slideChange, initialSlide: selectedImageIndex }, { children: mediaFiles.map((item, index) => (jsxRuntime.jsxs(Slider.Slide, { children: [item.type.includes("image") && (jsxRuntime.jsx("img", { src: URL.createObjectURL(item), alt: `media ${item.name}` })), item.type.includes("video") && (jsxRuntime.jsx(Player, { ref: (ref) => {
|
|
4613
|
-
videoRefs.current.push(ref);
|
|
4614
|
-
}, url: URL.createObjectURL(item) }))] }))) })) })) }), jsxRuntime.jsx(Lightbox.Close, { "aria-label": "Close modal" })] }))), jsxRuntime.jsx(ChatBoxContainer, { children: jsxRuntime.jsxs(EditorContainer$1, Object.assign({ editable: true, style: { marginLeft: 0, paddingBottom: 12 } }, { children: [hasFloatingMenu && (jsxRuntime.jsx(FloatingMenu, { editor: ed, tippyOptions: Object.assign({}, bubbleOptions) })), jsxRuntime.jsx(react.EditorContent, { editor: ed, onKeyDown: onKeyDown }), jsxRuntime.jsx(ThumbnailContainer, { openLightbox: handleOpenLightbox })] })) }), hasButtonsMenu && jsxRuntime.jsx(CommentBar, { editor: ed, i18n: i18n })] }));
|
|
4862
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(MediaLightBox, { isOpen: isOpen, header: (_b = thumbnails[selectedImageIndex]) === null || _b === void 0 ? void 0 : _b.name, onClose: closeLightbox, slideChange: slideChange, selectedImageIndex: selectedImageIndex, thumbnails: thumbnails, videoRefs: videoRefs }), jsxRuntime.jsx(ChatBoxContainer, { children: jsxRuntime.jsxs(EditorContainer$1, Object.assign({ editable: true, style: { marginLeft: 0, paddingBottom: 12 } }, { children: [hasFloatingMenu && (jsxRuntime.jsx(FloatingMenu, { editor: ed, tippyOptions: Object.assign({}, bubbleOptions) })), jsxRuntime.jsx(react.EditorContent, { editor: ed, onKeyDown: onKeyDown }), jsxRuntime.jsx(ThumbnailContainer, { openLightbox: handleOpenLightbox })] })) }), hasButtonsMenu && jsxRuntime.jsx(CommentBar, { editor: ed, i18n: i18n })] }));
|
|
4615
4863
|
};
|
|
4616
4864
|
|
|
4865
|
+
const UgGrid = styled__default["default"](reactGrid.Grid) `
|
|
4866
|
+
padding-left: 0;
|
|
4867
|
+
padding-right: 0;
|
|
4868
|
+
`;
|
|
4869
|
+
/**
|
|
4870
|
+
* The Grid component is a framework for building modular layouts.
|
|
4871
|
+
* <hr>
|
|
4872
|
+
* Used for this:
|
|
4873
|
+
- To structure the layout of a page
|
|
4874
|
+
*/
|
|
4875
|
+
const Grid = (props) => jsxRuntime.jsx(UgGrid, Object.assign({}, props));
|
|
4876
|
+
|
|
4877
|
+
const Row$1 = (props) => jsxRuntime.jsx(reactGrid.Row, Object.assign({}, props));
|
|
4878
|
+
|
|
4879
|
+
const StyledCol$1 = styled__default["default"](reactGrid.Col) `
|
|
4880
|
+
margin-bottom: ${theme.space.lg};
|
|
4881
|
+
|
|
4882
|
+
@media screen and (max-width: ${theme.breakpoints.sm}) {
|
|
4883
|
+
margin-bottom: ${theme.space.md};
|
|
4884
|
+
}
|
|
4885
|
+
`;
|
|
4886
|
+
const Col = (props) => jsxRuntime.jsx(StyledCol$1, Object.assign({}, props));
|
|
4887
|
+
|
|
4617
4888
|
const CommentCard = styled.styled(Card) `
|
|
4618
4889
|
padding: ${({ theme }) => `${theme.space.base * 3}px ${theme.space.sm}`};
|
|
4619
4890
|
background-color: ${({ theme }) => theme.palette.grey[100]};
|
|
@@ -4657,13 +4928,9 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
|
|
|
4657
4928
|
var _a, _b;
|
|
4658
4929
|
const { mentionableUsers } = useChatContext();
|
|
4659
4930
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
4660
|
-
const [selectedImage, setSelectedImage] = React.useState({});
|
|
4661
4931
|
const [selectedImageIndex, setSelectedImageIndex] = React.useState(0);
|
|
4662
4932
|
const ext = editorExtensions({ mentionableUsers });
|
|
4663
|
-
const handleClickThumbnail = (
|
|
4664
|
-
if (!file)
|
|
4665
|
-
throw Error("Error with the image");
|
|
4666
|
-
setSelectedImage(file);
|
|
4933
|
+
const handleClickThumbnail = (index) => {
|
|
4667
4934
|
setSelectedImageIndex(index);
|
|
4668
4935
|
setIsOpen(true);
|
|
4669
4936
|
};
|
|
@@ -4672,7 +4939,6 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
|
|
|
4672
4939
|
};
|
|
4673
4940
|
const videoRefs = React.useRef([]);
|
|
4674
4941
|
const slideChange = React.useCallback((index) => {
|
|
4675
|
-
setSelectedImage(media[index]);
|
|
4676
4942
|
setSelectedImageIndex(index);
|
|
4677
4943
|
videoRefs.current.forEach((ref) => {
|
|
4678
4944
|
if (ref) {
|
|
@@ -4689,39 +4955,12 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
|
|
|
4689
4955
|
ed.setOptions({
|
|
4690
4956
|
editable: false,
|
|
4691
4957
|
});
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
// link.download =
|
|
4699
|
-
// "media_" + selectedImage.id.toString() || "downloadedFile";
|
|
4700
|
-
// document.body.appendChild(link);
|
|
4701
|
-
// link.click();
|
|
4702
|
-
// window.URL.revokeObjectURL(link.href);
|
|
4703
|
-
// document.body.removeChild(link);
|
|
4704
|
-
// } catch (error) {
|
|
4705
|
-
// console.error("An error occurred while downloading: ", error);
|
|
4706
|
-
// }
|
|
4707
|
-
// };
|
|
4708
|
-
return (jsxRuntime.jsxs(CommentCard, { children: [jsxRuntime.jsxs(AuthorContainer, { children: [jsxRuntime.jsx(Avatar, Object.assign({ avatarType: (_a = author.avatarType) !== null && _a !== void 0 ? _a : "text", style: { flexShrink: 0 } }, { children: author.avatar })), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs(CommentTitle, { children: [(_b = author.name) !== null && _b !== void 0 ? _b : "User", " ", jsxRuntime.jsx(CommentDate, { children: date })] }), jsxRuntime.jsx(ReadOnly, { children: jsxRuntime.jsx(EditorContainer$1, Object.assign({ editable: false }, { children: jsxRuntime.jsx(react.EditorContent, { editor: ed }) })) })] })] }), jsxRuntime.jsx(Grid, { children: jsxRuntime.jsx(Row$1, Object.assign({ className: "responsive-container" }, { children: media.map((file, index) => {
|
|
4709
|
-
// Check if item is an image or a video
|
|
4710
|
-
if (file.type.includes("image"))
|
|
4711
|
-
return (jsxRuntime.jsx(Col, Object.assign({ xs: 12, sm: 4, className: "flex-3-sm" }, { children: jsxRuntime.jsx(ImageThumbnail, { src: file.url, index: index, showX: false, isLoadingMedia: false, clickThumbnail: () => {
|
|
4712
|
-
handleClickThumbnail(file, index);
|
|
4713
|
-
} }, index) })));
|
|
4714
|
-
if (file.type.includes("video"))
|
|
4715
|
-
return (jsxRuntime.jsx(Col, Object.assign({ xs: 12, sm: 4, className: "flex-3-sm" }, { children: jsxRuntime.jsx(VideoThumbnail, { src: file.url, index: index, showX: false, isLoadingMedia: false, clickThumbnail: () => {
|
|
4716
|
-
handleClickThumbnail(file, index);
|
|
4717
|
-
} }, index) })));
|
|
4718
|
-
return null;
|
|
4719
|
-
}) })) }), isOpen && selectedImage && (jsxRuntime.jsxs(Lightbox, Object.assign({ onClose: closeLightbox }, { children: [jsxRuntime.jsx(Lightbox.Header, { children: jsxRuntime.jsxs(reactTypography.MD, Object.assign({ isBold: true }, { children: [jsxRuntime.jsx(Grey600Span, { children: header && header.title }), header && header.message && (jsxRuntime.jsxs(Grey800Span, { children: [" | ", header.message] }))] })) }), jsxRuntime.jsxs(Lightbox.Body, { children: [jsxRuntime.jsx(Lightbox.Body.Main, Object.assign({ style: { flex: 2 } }, { children: jsxRuntime.jsx(Slider, Object.assign({ prevArrow: jsxRuntime.jsx(Slider.PrevButton, { isBright: true }), nextArrow: jsxRuntime.jsx(Slider.NextButton, { isBright: true }), onSlideChange: slideChange, initialSlide: selectedImageIndex }, { children: media.map((item, index) => (jsxRuntime.jsxs(Slider.Slide, { children: [item.type === "image" && (jsxRuntime.jsx("img", { src: item.url, alt: `{{${item.url}}}` })), item.type === "video" && (jsxRuntime.jsx(Player, { ref: (ref) => {
|
|
4720
|
-
videoRefs.current.push(ref);
|
|
4721
|
-
}, url: item.url }))] }))) })) })), jsxRuntime.jsx(Lightbox.Body.Details, Object.assign({ style: { flex: 1 } }, { children: jsxRuntime.jsx(Comment, Object.assign({ header: header, author: {
|
|
4722
|
-
avatar: author.avatar,
|
|
4723
|
-
name: author.name,
|
|
4724
|
-
}, date: date, message: message }, { children: jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("br", {}) }) })) }))] }), jsxRuntime.jsx(Lightbox.Footer, {}), jsxRuntime.jsx(Lightbox.Close, { "aria-label": "Close modal" })] }))), jsxRuntime.jsx(Footer$2, { children: children })] }));
|
|
4958
|
+
return (jsxRuntime.jsxs(CommentCard, { children: [jsxRuntime.jsxs(AuthorContainer, { children: [jsxRuntime.jsx(Avatar, Object.assign({ avatarType: (_a = author.avatarType) !== null && _a !== void 0 ? _a : "text", style: { flexShrink: 0 } }, { children: author.avatar })), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs(CommentTitle, { children: [(_b = author.name) !== null && _b !== void 0 ? _b : "User", " ", jsxRuntime.jsx(CommentDate, { children: date })] }), jsxRuntime.jsx(ReadOnly, { children: jsxRuntime.jsx(EditorContainer$1, Object.assign({ editable: false }, { children: jsxRuntime.jsx(react.EditorContent, { editor: ed }) })) })] })] }), jsxRuntime.jsx(Grid, { children: jsxRuntime.jsx(Row$1, Object.assign({ className: "responsive-container" }, { children: media.map((file, index) => (jsxRuntime.jsx(Col, Object.assign({ xs: 12, sm: 4, className: "flex-3-sm" }, { children: jsxRuntime.jsx(Thumbnail, { src: file.url, type: file.type, showX: false, isLoadingMedia: false, clickThumbnail: () => {
|
|
4959
|
+
handleClickThumbnail(index);
|
|
4960
|
+
} }) }), index))) })) }), jsxRuntime.jsx(MediaLightBox, { isOpen: isOpen, header: jsxRuntime.jsxs(reactTypography.MD, Object.assign({ isBold: true }, { children: [jsxRuntime.jsx(Grey600Span, { children: header && header.title }), header && header.message && (jsxRuntime.jsxs(Grey800Span, { children: [" | ", header.message] }))] })), onClose: closeLightbox, slideChange: slideChange, selectedImageIndex: selectedImageIndex, thumbnails: media, videoRefs: videoRefs, details: jsxRuntime.jsx(Comment, Object.assign({ header: header, author: {
|
|
4961
|
+
avatar: author.avatar,
|
|
4962
|
+
name: author.name,
|
|
4963
|
+
}, date: date, message: message }, { children: jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("br", {}) }) })) }), jsxRuntime.jsx(Footer$2, { children: children })] }));
|
|
4725
4964
|
};
|
|
4726
4965
|
|
|
4727
4966
|
/**
|
|
@@ -5360,6 +5599,200 @@ const UgToggle = styled__default["default"](reactForms.Toggle) ``;
|
|
|
5360
5599
|
**/
|
|
5361
5600
|
const Toggle = (props) => jsxRuntime.jsx(UgToggle, Object.assign({}, props));
|
|
5362
5601
|
|
|
5602
|
+
const HighlightContext = React.createContext(null);
|
|
5603
|
+
const HighlightContextProvider = ({ term, children, }) => {
|
|
5604
|
+
const [searchTerm, setsearchTerm] = React.useState(term !== null && term !== void 0 ? term : "");
|
|
5605
|
+
React.useEffect(() => {
|
|
5606
|
+
setsearchTerm(term !== null && term !== void 0 ? term : "");
|
|
5607
|
+
}, [term]);
|
|
5608
|
+
const HighlightContextValue = React.useMemo(() => ({
|
|
5609
|
+
searchTerm,
|
|
5610
|
+
}), [searchTerm]);
|
|
5611
|
+
return (jsxRuntime.jsx(HighlightContext.Provider, Object.assign({ value: HighlightContextValue }, { children: children })));
|
|
5612
|
+
};
|
|
5613
|
+
const useHighlightContext = () => {
|
|
5614
|
+
const context = React.useContext(HighlightContext);
|
|
5615
|
+
if (!context)
|
|
5616
|
+
throw new Error("Provider not found for HighlightContextProvider");
|
|
5617
|
+
return context; // Now we can use the context in the component, SAFELY.
|
|
5618
|
+
};
|
|
5619
|
+
|
|
5620
|
+
const StyledSearchWord = styled__default["default"].span `
|
|
5621
|
+
background-color: ${({ theme }) => theme.palette.product.talk};
|
|
5622
|
+
color: ${({ theme }) => theme.palette.grey[700]};
|
|
5623
|
+
`;
|
|
5624
|
+
const Searchable = ({ text, }) => {
|
|
5625
|
+
const { searchTerm } = useHighlightContext();
|
|
5626
|
+
if (searchTerm) {
|
|
5627
|
+
const parts = text.split(new RegExp(`(${searchTerm})`, "gi"));
|
|
5628
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: parts.map((part, index) => part.toLowerCase() === searchTerm.toLowerCase() ? (jsxRuntime.jsx(StyledSearchWord, { children: part }, index)) : (jsxRuntime.jsx(jsxRuntime.Fragment, { children: part }))) }));
|
|
5629
|
+
}
|
|
5630
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: text });
|
|
5631
|
+
};
|
|
5632
|
+
|
|
5633
|
+
const CreateObservationButton = styled.styled(Button) `
|
|
5634
|
+
user-select: none;
|
|
5635
|
+
position: absolute;
|
|
5636
|
+
left: ${({ position: { x } }) => x}px;
|
|
5637
|
+
top: ${({ position: { y } }) => y}px;
|
|
5638
|
+
transform: translate(-50%, 0);
|
|
5639
|
+
z-index: ${({ theme }) => theme.levels.front};
|
|
5640
|
+
`;
|
|
5641
|
+
|
|
5642
|
+
const StyledWord = styled__default["default"].div `
|
|
5643
|
+
display: inline-block;
|
|
5644
|
+
font-size: ${({ theme, size }) => theme.fontSizes[size !== null && size !== void 0 ? size : "md"]};
|
|
5645
|
+
padding: ${({ theme }) => theme.space.xxs} 0;
|
|
5646
|
+
position: relative;
|
|
5647
|
+
color: ${({ theme }) => theme.palette.grey[700]};
|
|
5648
|
+
white-space: pre;
|
|
5649
|
+
|
|
5650
|
+
${({ observations, theme }) => {
|
|
5651
|
+
var _a;
|
|
5652
|
+
return observations && observations.length > 0 &&
|
|
5653
|
+
`
|
|
5654
|
+
color: ${(_a = observations[observations.length - 1].color) !== null && _a !== void 0 ? _a : theme.palette.grey[600]};
|
|
5655
|
+
box-sizing: border-box;
|
|
5656
|
+
font-weight: ${theme.fontWeights.semibold};
|
|
5657
|
+
z-index: 1;
|
|
5658
|
+
|
|
5659
|
+
&:focus {
|
|
5660
|
+
outline: none;
|
|
5661
|
+
}
|
|
5662
|
+
`;
|
|
5663
|
+
}}
|
|
5664
|
+
`;
|
|
5665
|
+
const ActiveWord = styled__default["default"].span `
|
|
5666
|
+
position: relative;
|
|
5667
|
+
z-index: 2;
|
|
5668
|
+
background-color: ${({ theme }) => getColor(theme.palette.fuschia, 400, undefined, 0.4)};
|
|
5669
|
+
`;
|
|
5670
|
+
const WordsContainer = styled__default["default"].div `
|
|
5671
|
+
box-sizing: border-box;
|
|
5672
|
+
${StyledWord}, span {
|
|
5673
|
+
&::selection {
|
|
5674
|
+
background-color: ${({ theme }) => getColor(theme.palette.grey, 400, undefined, 0.5)};
|
|
5675
|
+
}
|
|
5676
|
+
}
|
|
5677
|
+
`;
|
|
5678
|
+
const Layer = styled__default["default"].div `
|
|
5679
|
+
position: absolute;
|
|
5680
|
+
top: 0;
|
|
5681
|
+
left: 0;
|
|
5682
|
+
width: 100%;
|
|
5683
|
+
height: 100%;
|
|
5684
|
+
z-index: 0;
|
|
5685
|
+
background-color: ${({ color }) => getColor(color, undefined, undefined, 0.2)};
|
|
5686
|
+
`;
|
|
5687
|
+
/**
|
|
5688
|
+
* Use Highlight to use highlight interation on any text element
|
|
5689
|
+
*/
|
|
5690
|
+
const Highlight = (props) => {
|
|
5691
|
+
var _a;
|
|
5692
|
+
const { onSelectionButtonClick, search, i18n, children } = props;
|
|
5693
|
+
const ref = React.useRef(null);
|
|
5694
|
+
const [isSelecting, setIsSelecting] = React.useState(false);
|
|
5695
|
+
const [position, setPosition] = React.useState();
|
|
5696
|
+
const [selection, setSelection] = React.useState();
|
|
5697
|
+
const activeSelection = document.getSelection();
|
|
5698
|
+
const extractText = (selection) => {
|
|
5699
|
+
if (selection.anchorNode === null || selection.focusNode === null)
|
|
5700
|
+
return "";
|
|
5701
|
+
var range = selection.getRangeAt(0);
|
|
5702
|
+
var tempDiv = document.createElement("div");
|
|
5703
|
+
tempDiv.appendChild(range.cloneContents());
|
|
5704
|
+
var items = tempDiv.querySelectorAll("div");
|
|
5705
|
+
items.forEach(function (item) {
|
|
5706
|
+
if (item.getAttribute("data-unselectable")) {
|
|
5707
|
+
item.remove();
|
|
5708
|
+
}
|
|
5709
|
+
});
|
|
5710
|
+
var filteredText = tempDiv.textContent || tempDiv.innerText;
|
|
5711
|
+
return filteredText.length ? filteredText.trim() : selection.toString();
|
|
5712
|
+
};
|
|
5713
|
+
const handleSelectionChange = React.useCallback(() => {
|
|
5714
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
5715
|
+
if (activeSelection && activeSelection.toString().length > 0) {
|
|
5716
|
+
// Extract the text from the selection cleaning unselectable items
|
|
5717
|
+
const text = extractText(activeSelection);
|
|
5718
|
+
if (!text)
|
|
5719
|
+
return;
|
|
5720
|
+
const anchorNode = (_a = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.anchorNode) === null || _a === void 0 ? void 0 : _a.parentElement;
|
|
5721
|
+
const focusNode = (_b = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.focusNode) === null || _b === void 0 ? void 0 : _b.parentElement;
|
|
5722
|
+
if (anchorNode &&
|
|
5723
|
+
focusNode &&
|
|
5724
|
+
((_c = ref.current) === null || _c === void 0 ? void 0 : _c.contains(anchorNode)) && // Selection starts inside the ref
|
|
5725
|
+
((_d = ref.current) === null || _d === void 0 ? void 0 : _d.contains(focusNode)) // Selection ends inside the ref
|
|
5726
|
+
) {
|
|
5727
|
+
if (onSelectionButtonClick) {
|
|
5728
|
+
setIsSelecting(true);
|
|
5729
|
+
const range = activeSelection.getRangeAt(0);
|
|
5730
|
+
const rects = range.getClientRects();
|
|
5731
|
+
const lastRect = rects[rects.length - 1];
|
|
5732
|
+
const containerRect = ref && ref.current
|
|
5733
|
+
? ref.current.getBoundingClientRect()
|
|
5734
|
+
: null;
|
|
5735
|
+
if (!lastRect || !containerRect)
|
|
5736
|
+
return;
|
|
5737
|
+
const relativeY = lastRect.bottom - containerRect.top + ref.current.scrollTop;
|
|
5738
|
+
const relativeX = lastRect.right - containerRect.left + ref.current.scrollLeft;
|
|
5739
|
+
if (relativeY > 0 || relativeX > 0)
|
|
5740
|
+
// Fix to avoid the button to be placed sometimes at the top left corner of the screen (X: 0, Y: 0)
|
|
5741
|
+
setPosition({
|
|
5742
|
+
x: relativeX,
|
|
5743
|
+
y: relativeY + 15,
|
|
5744
|
+
});
|
|
5745
|
+
}
|
|
5746
|
+
else {
|
|
5747
|
+
setIsSelecting(false);
|
|
5748
|
+
}
|
|
5749
|
+
const selectionPart = {
|
|
5750
|
+
from: Math.min(Number.parseFloat((_e = anchorNode.getAttribute("data-start")) !== null && _e !== void 0 ? _e : "0"), Number.parseFloat((_f = focusNode.getAttribute("data-start")) !== null && _f !== void 0 ? _f : "0")),
|
|
5751
|
+
to: Math.max(Number.parseFloat((_g = anchorNode.getAttribute("data-end")) !== null && _g !== void 0 ? _g : "0"), Number.parseFloat((_h = focusNode.getAttribute("data-end")) !== null && _h !== void 0 ? _h : "0")),
|
|
5752
|
+
};
|
|
5753
|
+
setSelection(Object.assign(Object.assign({}, selectionPart), { text }));
|
|
5754
|
+
}
|
|
5755
|
+
else {
|
|
5756
|
+
setIsSelecting(false);
|
|
5757
|
+
}
|
|
5758
|
+
}
|
|
5759
|
+
else {
|
|
5760
|
+
setIsSelecting(false);
|
|
5761
|
+
}
|
|
5762
|
+
}, [onSelectionButtonClick, activeSelection]);
|
|
5763
|
+
React.useEffect(() => {
|
|
5764
|
+
if (ref.current === null)
|
|
5765
|
+
return;
|
|
5766
|
+
document.addEventListener("selectionchange", handleSelectionChange);
|
|
5767
|
+
return () => {
|
|
5768
|
+
document.removeEventListener("selectionchange", handleSelectionChange);
|
|
5769
|
+
};
|
|
5770
|
+
}, [ref, props, handleSelectionChange]);
|
|
5771
|
+
return (jsxRuntime.jsxs(HighlightContextProvider, Object.assign({ term: search }, { children: [jsxRuntime.jsx(WordsContainer, Object.assign({ ref: ref }, { children: children })), onSelectionButtonClick && isSelecting && selection && (jsxRuntime.jsxs(CreateObservationButton, Object.assign({ isAccent: true, isPrimary: true, position: position !== null && position !== void 0 ? position : {
|
|
5772
|
+
x: 0,
|
|
5773
|
+
y: 0,
|
|
5774
|
+
}, onClick: () => onSelectionButtonClick(selection) }, { children: [jsxRuntime.jsx(CreateObservationButton.StartIcon, { children: jsxRuntime.jsx(SvgTagStroke, {}) }), (_a = i18n === null || i18n === void 0 ? void 0 : i18n.selectionButtonLabel) !== null && _a !== void 0 ? _a : "Create observation"] })))] })));
|
|
5775
|
+
};
|
|
5776
|
+
const Word = (props) => {
|
|
5777
|
+
const isActive = props.currentTime &&
|
|
5778
|
+
props.currentTime >= props.start &&
|
|
5779
|
+
props.currentTime < props.end;
|
|
5780
|
+
// Are there any observations containing this word?
|
|
5781
|
+
const foundObservations = React.useMemo(() => {
|
|
5782
|
+
var _a, _b;
|
|
5783
|
+
return (_b = (_a = props.observations) === null || _a === void 0 ? void 0 : _a.filter((obs) => props.start >= obs.start && props.end <= obs.end)) !== null && _b !== void 0 ? _b : [];
|
|
5784
|
+
}, [props.observations, props.start, props.end]);
|
|
5785
|
+
const ObsWord = React.useMemo(() => (jsxRuntime.jsxs(StyledWord, Object.assign({}, props, { "data-start": props.start, "data-end": props.end, className: foundObservations.length > 0 ? "highlighted" : "" }, (foundObservations && { observations: foundObservations }), { children: [foundObservations.length > 0 && foundObservations.map((obs) => {
|
|
5786
|
+
var _a;
|
|
5787
|
+
return (jsxRuntime.jsx(Layer, { color: (_a = obs.hue) !== null && _a !== void 0 ? _a : theme.palette.grey[600] }, obs.id));
|
|
5788
|
+
}), isActive ? (jsxRuntime.jsx(ActiveWord, Object.assign({ "data-start": props.start, "data-end": props.end }, { children: jsxRuntime.jsx(Searchable, { text: props.text }) }))) : (jsxRuntime.jsx(Searchable, { text: props.text })), " "] }))), [props, foundObservations, isActive]);
|
|
5789
|
+
if (props.tooltipContent !== undefined && foundObservations.length > 0) {
|
|
5790
|
+
return (jsxRuntime.jsx(Tooltip, Object.assign({ content: props.tooltipContent(foundObservations), isTransparent: true }, { children: ObsWord })));
|
|
5791
|
+
}
|
|
5792
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: ObsWord });
|
|
5793
|
+
};
|
|
5794
|
+
Highlight.Word = Word;
|
|
5795
|
+
|
|
5363
5796
|
/**
|
|
5364
5797
|
* The Dots loader communicates ongoing activity after a user takes an action.
|
|
5365
5798
|
* It tells them that something is taking place.
|
|
@@ -6836,6 +7269,7 @@ exports.HeaderItem = HeaderItem;
|
|
|
6836
7269
|
exports.HeaderItemIcon = HeaderItemIcon;
|
|
6837
7270
|
exports.HeaderItemText = HeaderItemText;
|
|
6838
7271
|
exports.HeaderRow = HeaderRow;
|
|
7272
|
+
exports.Highlight = Highlight;
|
|
6839
7273
|
exports.Hint = Hint;
|
|
6840
7274
|
exports.Icon = Icon;
|
|
6841
7275
|
exports.IconButton = IconButton;
|