@appquality/unguess-design-system 3.1.91-beta-attachments → 3.1.91-highlight-obs
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 +307 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +1157 -664
- package/build/stories/avatar/InternalAvatar.d.ts +2 -0
- package/build/stories/buttons/button/index.stories.d.ts +1 -0
- package/build/stories/buttons/utils.d.ts +27 -27
- package/build/stories/chat/_types.d.ts +7 -4
- package/build/stories/chat/context/chatContext.d.ts +8 -6
- 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 -8
- package/build/stories/chat/parts/comment.d.ts +2 -7
- package/build/stories/dropdowns/select/index.stories.d.ts +1 -0
- package/build/stories/editor/index.stories.d.ts +1 -0
- 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 +19 -0
- package/build/stories/highlight/searchable.d.ts +3 -0
- package/build/stories/player/_types.d.ts +37 -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/CutStart.d.ts +4 -0
- 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/floatingControls.d.ts +1 -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 +5 -2
- 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
|
@@ -27,6 +27,7 @@ var line = require('@nivo/line');
|
|
|
27
27
|
var reactForms = require('@zendeskgarden/react-forms');
|
|
28
28
|
var react = require('@tiptap/react');
|
|
29
29
|
var reactTooltips = require('@zendeskgarden/react-tooltips');
|
|
30
|
+
var uuid = require('uuid');
|
|
30
31
|
var Typography = require('@tiptap/extension-typography');
|
|
31
32
|
var Link = require('@tiptap/extension-link');
|
|
32
33
|
var StarterKit = require('@tiptap/starter-kit');
|
|
@@ -37,10 +38,10 @@ var Mention = require('@tiptap/extension-mention');
|
|
|
37
38
|
var tippy = require('tippy.js');
|
|
38
39
|
var Image$2 = require('@tiptap/extension-image');
|
|
39
40
|
var Dropcursor = require('@tiptap/extension-dropcursor');
|
|
40
|
-
var reactGrid = require('@zendeskgarden/react-grid');
|
|
41
41
|
var reactModals = require('@zendeskgarden/react-modals');
|
|
42
42
|
var SlickSlider = require('react-slick');
|
|
43
43
|
var Video = require('@appquality/stream-player');
|
|
44
|
+
var reactGrid = require('@zendeskgarden/react-grid');
|
|
44
45
|
var containerUtilities = require('@zendeskgarden/container-utilities');
|
|
45
46
|
var reactColorpickers = require('@zendeskgarden/react-colorpickers');
|
|
46
47
|
var reactDropdowns = require('@zendeskgarden/react-dropdowns');
|
|
@@ -333,8 +334,8 @@ const UgContainerCard = styled__default["default"](reactNotifications.Well) `
|
|
|
333
334
|
`;
|
|
334
335
|
const ContainerCard = (props) => jsxRuntime.jsx(UgContainerCard, Object.assign({}, props));
|
|
335
336
|
|
|
336
|
-
var _a, _b, _c, _d, _e, _f, _g$
|
|
337
|
-
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": () => ({
|
|
338
339
|
color: getColor(colors.primaryHue, 600),
|
|
339
340
|
}), "text.success": () => ({
|
|
340
341
|
color: getColor(colors.successHue, 700),
|
|
@@ -641,6 +642,15 @@ Alert.Close = reactNotifications.Close;
|
|
|
641
642
|
|
|
642
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";
|
|
643
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
|
+
|
|
644
654
|
const UgAvatar = styled__default["default"](reactAvatars.Avatar) `
|
|
645
655
|
text-transform: uppercase;
|
|
646
656
|
|
|
@@ -672,7 +682,7 @@ const Avatar = (_a) => {
|
|
|
672
682
|
if (type === "text")
|
|
673
683
|
return jsxRuntime.jsx(Avatar.Text, { children: props.children });
|
|
674
684
|
if (type === "system")
|
|
675
|
-
return jsxRuntime.jsx(
|
|
685
|
+
return jsxRuntime.jsx(InternalAvatar, {});
|
|
676
686
|
};
|
|
677
687
|
return (jsxRuntime.jsx(UgAvatar, Object.assign({}, props, { badge: fixedBadge, isSystem: props.avatarType === "system" || isSystem, children: wrapChildren(props.avatarType || "text"), size: props.size || "small" })));
|
|
678
688
|
};
|
|
@@ -841,48 +851,48 @@ Tag.Avatar = StyledAvatar;
|
|
|
841
851
|
Tag.Close = StyledClose;
|
|
842
852
|
Tag.SecondaryText = StyledSpan;
|
|
843
853
|
|
|
844
|
-
var _path$
|
|
845
|
-
function _extends$
|
|
846
|
-
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({
|
|
847
857
|
width: 24,
|
|
848
858
|
height: 24,
|
|
849
859
|
viewBox: "0 0 24 24",
|
|
850
860
|
fill: "none",
|
|
851
861
|
xmlns: "http://www.w3.org/2000/svg"
|
|
852
|
-
}, props), _path$
|
|
862
|
+
}, props), _path$G || (_path$G = /*#__PURE__*/React__namespace.createElement("path", {
|
|
853
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",
|
|
854
864
|
fill: "#E80C7A"
|
|
855
865
|
})));
|
|
856
866
|
|
|
857
|
-
var _path$
|
|
858
|
-
function _extends$
|
|
859
|
-
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({
|
|
860
870
|
width: 24,
|
|
861
871
|
height: 24,
|
|
862
872
|
viewBox: "0 0 24 24",
|
|
863
873
|
fill: "none",
|
|
864
874
|
xmlns: "http://www.w3.org/2000/svg"
|
|
865
|
-
}, props), _path$
|
|
875
|
+
}, props), _path$F || (_path$F = /*#__PURE__*/React__namespace.createElement("path", {
|
|
866
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",
|
|
867
877
|
fill: "#FFCD1A"
|
|
868
878
|
})));
|
|
869
879
|
|
|
870
|
-
var _path$
|
|
871
|
-
function _extends$
|
|
872
|
-
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({
|
|
873
883
|
width: 24,
|
|
874
884
|
height: 24,
|
|
875
885
|
viewBox: "0 0 24 24",
|
|
876
886
|
fill: "none",
|
|
877
887
|
xmlns: "http://www.w3.org/2000/svg"
|
|
878
|
-
}, props), _path$
|
|
888
|
+
}, props), _path$E || (_path$E = /*#__PURE__*/React__namespace.createElement("path", {
|
|
879
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",
|
|
880
890
|
fill: "#7B0DFF"
|
|
881
891
|
})));
|
|
882
892
|
|
|
883
|
-
var _rect$4, _path$
|
|
884
|
-
function _extends$
|
|
885
|
-
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({
|
|
886
896
|
width: 24,
|
|
887
897
|
height: 24,
|
|
888
898
|
viewBox: "0 0 24 24",
|
|
@@ -893,7 +903,7 @@ const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElemen
|
|
|
893
903
|
height: 24,
|
|
894
904
|
rx: 12,
|
|
895
905
|
fill: "#F6F6F8"
|
|
896
|
-
})), _path$
|
|
906
|
+
})), _path$D || (_path$D = /*#__PURE__*/React__namespace.createElement("path", {
|
|
897
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",
|
|
898
908
|
fill: "#50BF95"
|
|
899
909
|
})), _path2$c || (_path2$c = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -904,9 +914,9 @@ const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElemen
|
|
|
904
914
|
fill: "#007345"
|
|
905
915
|
})));
|
|
906
916
|
|
|
907
|
-
var _rect$3, _path$
|
|
908
|
-
function _extends$
|
|
909
|
-
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({
|
|
910
920
|
width: 24,
|
|
911
921
|
height: 24,
|
|
912
922
|
viewBox: "0 0 24 24",
|
|
@@ -917,7 +927,7 @@ const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("
|
|
|
917
927
|
height: 24,
|
|
918
928
|
rx: 12,
|
|
919
929
|
fill: "#F6F6F8"
|
|
920
|
-
})), _path$
|
|
930
|
+
})), _path$C || (_path$C = /*#__PURE__*/React__namespace.createElement("path", {
|
|
921
931
|
fillRule: "evenodd",
|
|
922
932
|
clipRule: "evenodd",
|
|
923
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",
|
|
@@ -929,9 +939,9 @@ const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("
|
|
|
929
939
|
fill: "#F4AC1A"
|
|
930
940
|
})));
|
|
931
941
|
|
|
932
|
-
var _rect$2, _path$
|
|
933
|
-
function _extends$
|
|
934
|
-
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({
|
|
935
945
|
width: 24,
|
|
936
946
|
height: 24,
|
|
937
947
|
viewBox: "0 0 24 24",
|
|
@@ -942,7 +952,7 @@ const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement
|
|
|
942
952
|
height: 24,
|
|
943
953
|
rx: 12,
|
|
944
954
|
fill: "#F6F6F8"
|
|
945
|
-
})), _path$
|
|
955
|
+
})), _path$B || (_path$B = /*#__PURE__*/React__namespace.createElement("path", {
|
|
946
956
|
d: "M11.2266 13.0313H14.997M11.2266 9.26075V13.0313V9.26075ZM11.2266 13.0313L20.121 5.03906L11.2266 13.0313Z",
|
|
947
957
|
stroke: "#024780",
|
|
948
958
|
strokeWidth: 1.5,
|
|
@@ -956,9 +966,9 @@ const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement
|
|
|
956
966
|
strokeLinejoin: "round"
|
|
957
967
|
})));
|
|
958
968
|
|
|
959
|
-
var _rect$1, _path$
|
|
960
|
-
function _extends$
|
|
961
|
-
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({
|
|
962
972
|
width: 24,
|
|
963
973
|
height: 24,
|
|
964
974
|
viewBox: "0 0 24 24",
|
|
@@ -969,7 +979,7 @@ const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement
|
|
|
969
979
|
height: 24,
|
|
970
980
|
rx: 12,
|
|
971
981
|
fill: "#F6F6F8"
|
|
972
|
-
})), _path$
|
|
982
|
+
})), _path$A || (_path$A = /*#__PURE__*/React__namespace.createElement("path", {
|
|
973
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",
|
|
974
984
|
fill: "#D1820A"
|
|
975
985
|
})), _path2$9 || (_path2$9 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -1001,21 +1011,21 @@ const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement
|
|
|
1001
1011
|
fill: "#FFB65A"
|
|
1002
1012
|
})));
|
|
1003
1013
|
|
|
1004
|
-
var _g$
|
|
1005
|
-
function _extends$
|
|
1006
|
-
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({
|
|
1007
1017
|
width: 24,
|
|
1008
1018
|
height: 24,
|
|
1009
1019
|
viewBox: "0 0 24 24",
|
|
1010
1020
|
fill: "none",
|
|
1011
1021
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1012
|
-
}, props), _g$
|
|
1022
|
+
}, props), _g$c || (_g$c = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1013
1023
|
opacity: 0.3
|
|
1014
1024
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1015
1025
|
opacity: 0.3,
|
|
1016
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",
|
|
1017
1027
|
fill: "#50BF95"
|
|
1018
|
-
}))), _path$
|
|
1028
|
+
}))), _path$z || (_path$z = /*#__PURE__*/React__namespace.createElement("path", {
|
|
1019
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",
|
|
1020
1030
|
fill: "#2B8473",
|
|
1021
1031
|
stroke: "#2B8473"
|
|
@@ -1071,21 +1081,21 @@ const SvgCampaignExperiential = props => /*#__PURE__*/React__namespace.createEle
|
|
|
1071
1081
|
fill: "#ECF4F2"
|
|
1072
1082
|
})));
|
|
1073
1083
|
|
|
1074
|
-
var _g$
|
|
1075
|
-
function _extends$
|
|
1076
|
-
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({
|
|
1077
1087
|
width: 24,
|
|
1078
1088
|
height: 24,
|
|
1079
1089
|
viewBox: "0 0 24 24",
|
|
1080
1090
|
fill: "none",
|
|
1081
1091
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1082
|
-
}, props), _g$
|
|
1092
|
+
}, props), _g$b || (_g$b = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1083
1093
|
opacity: 0.3
|
|
1084
1094
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1085
1095
|
opacity: 0.3,
|
|
1086
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",
|
|
1087
1097
|
fill: "#003A57"
|
|
1088
|
-
}))), _path$
|
|
1098
|
+
}))), _path$y || (_path$y = /*#__PURE__*/React__namespace.createElement("path", {
|
|
1089
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",
|
|
1090
1100
|
fill: "#003A57"
|
|
1091
1101
|
})));
|
|
@@ -1946,15 +1956,15 @@ const WaffleChart = ({ height, width, data, total, tooltip, }) => {
|
|
|
1946
1956
|
} }) })));
|
|
1947
1957
|
};
|
|
1948
1958
|
|
|
1949
|
-
var _g$
|
|
1950
|
-
function _extends$
|
|
1951
|
-
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({
|
|
1952
1962
|
width: 27,
|
|
1953
1963
|
height: 26,
|
|
1954
1964
|
viewBox: "0 0 27 26",
|
|
1955
1965
|
fill: "none",
|
|
1956
1966
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1957
|
-
}, props), _g$
|
|
1967
|
+
}, props), _g$a || (_g$a = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1958
1968
|
clipPath: "url(#clip0_21_19131)"
|
|
1959
1969
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1960
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",
|
|
@@ -1970,15 +1980,15 @@ const SvgSentiment1 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
1970
1980
|
fill: "white"
|
|
1971
1981
|
})))));
|
|
1972
1982
|
|
|
1973
|
-
var _g$
|
|
1974
|
-
function _extends$
|
|
1975
|
-
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({
|
|
1976
1986
|
width: 27,
|
|
1977
1987
|
height: 26,
|
|
1978
1988
|
viewBox: "0 0 27 26",
|
|
1979
1989
|
fill: "none",
|
|
1980
1990
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1981
|
-
}, props), _g$
|
|
1991
|
+
}, props), _g$9 || (_g$9 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
1982
1992
|
clipPath: "url(#clip0_21_19130)"
|
|
1983
1993
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
1984
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",
|
|
@@ -1994,15 +2004,15 @@ const SvgSentiment2 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
1994
2004
|
fill: "white"
|
|
1995
2005
|
})))));
|
|
1996
2006
|
|
|
1997
|
-
var _g$
|
|
1998
|
-
function _extends$
|
|
1999
|
-
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({
|
|
2000
2010
|
width: 27,
|
|
2001
2011
|
height: 26,
|
|
2002
2012
|
viewBox: "0 0 27 26",
|
|
2003
2013
|
fill: "none",
|
|
2004
2014
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2005
|
-
}, props), _g$
|
|
2015
|
+
}, props), _g$8 || (_g$8 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2006
2016
|
clipPath: "url(#clip0_21_19129)"
|
|
2007
2017
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2008
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",
|
|
@@ -2024,15 +2034,15 @@ const SvgSentiment3 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
2024
2034
|
fill: "white"
|
|
2025
2035
|
})))));
|
|
2026
2036
|
|
|
2027
|
-
var _g$
|
|
2028
|
-
function _extends$
|
|
2029
|
-
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({
|
|
2030
2040
|
width: 27,
|
|
2031
2041
|
height: 26,
|
|
2032
2042
|
viewBox: "0 0 27 26",
|
|
2033
2043
|
fill: "none",
|
|
2034
2044
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2035
|
-
}, props), _g$
|
|
2045
|
+
}, props), _g$7 || (_g$7 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2036
2046
|
clipPath: "url(#clip0_21_19127)"
|
|
2037
2047
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2038
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",
|
|
@@ -2054,15 +2064,15 @@ const SvgSentiment4 = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
2054
2064
|
fill: "white"
|
|
2055
2065
|
})))));
|
|
2056
2066
|
|
|
2057
|
-
var _g$
|
|
2058
|
-
function _extends$
|
|
2059
|
-
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({
|
|
2060
2070
|
width: 26,
|
|
2061
2071
|
height: 26,
|
|
2062
2072
|
viewBox: "0 0 26 26",
|
|
2063
2073
|
fill: "none",
|
|
2064
2074
|
xmlns: "http://www.w3.org/2000/svg"
|
|
2065
|
-
}, props), _g$
|
|
2075
|
+
}, props), _g$6 || (_g$6 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2066
2076
|
clipPath: "url(#clip0_21_19125)"
|
|
2067
2077
|
}, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2068
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",
|
|
@@ -2313,7 +2323,7 @@ const ChatFooter = ({ saveText, children, showShortcut, }) => {
|
|
|
2313
2323
|
};
|
|
2314
2324
|
|
|
2315
2325
|
const ChatContext = React.createContext(null);
|
|
2316
|
-
const ChatContextProvider = ({ onSave, onFileUpload, setMentionableUsers, children, }) => {
|
|
2326
|
+
const ChatContextProvider = ({ onSave, onFileUpload, onDeleteThumbnail, setMentionableUsers, children, }) => {
|
|
2317
2327
|
const [editor, setEditor] = React.useState();
|
|
2318
2328
|
const [thumbnails, setThumbnails] = React.useState([]);
|
|
2319
2329
|
const getMentions = (editor) => {
|
|
@@ -2335,53 +2345,45 @@ const ChatContextProvider = ({ onSave, onFileUpload, setMentionableUsers, childr
|
|
|
2335
2345
|
editor,
|
|
2336
2346
|
setEditor,
|
|
2337
2347
|
thumbnails,
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
file.isLoadingMedia = false;
|
|
2342
|
-
//file.isError = true;
|
|
2343
|
-
}
|
|
2344
|
-
else {
|
|
2345
|
-
file.isLoadingMedia = false;
|
|
2346
|
-
//file.isError = false
|
|
2347
|
-
}
|
|
2348
|
-
return file;
|
|
2349
|
-
}));
|
|
2350
|
-
},
|
|
2351
|
-
addThumbnails: ({ files }) => {
|
|
2352
|
-
files.forEach((file) => (file.isLoadingMedia = true));
|
|
2348
|
+
setThumbnails,
|
|
2349
|
+
afterUploadCallback: (failed) => { },
|
|
2350
|
+
addThumbnails: ({ files }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
2353
2351
|
setThumbnails((prev) => [...prev, ...files]);
|
|
2354
|
-
if (onFileUpload)
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
else {
|
|
2365
|
-
file.isError = false;
|
|
2366
|
-
}
|
|
2367
|
-
return file;
|
|
2368
|
-
});
|
|
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;
|
|
2369
2362
|
});
|
|
2370
2363
|
});
|
|
2371
2364
|
}
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2365
|
+
catch (e) {
|
|
2366
|
+
console.log("Error uploading files", e);
|
|
2367
|
+
}
|
|
2368
|
+
}),
|
|
2369
|
+
clearInput: () => {
|
|
2370
|
+
if (editor && !editor.isEmpty) {
|
|
2371
|
+
editor.commands.clearContent();
|
|
2372
|
+
}
|
|
2373
|
+
if (thumbnails.length > 0)
|
|
2375
2374
|
setThumbnails([]);
|
|
2376
|
-
console.log("thumbnails cleared", thumbnails);
|
|
2377
2375
|
},
|
|
2378
|
-
|
|
2376
|
+
onDeleteThumbnail: (id) => {
|
|
2377
|
+
onDeleteThumbnail(id);
|
|
2378
|
+
},
|
|
2379
|
+
removeThumbnail: (index) => {
|
|
2380
|
+
setThumbnails(thumbnails.filter((_, i) => i !== index));
|
|
2381
|
+
},
|
|
2379
2382
|
triggerSave: () => {
|
|
2380
2383
|
if (editor && onSave && !editor.isEmpty) {
|
|
2381
2384
|
onSave(editor, getMentions(editor));
|
|
2382
2385
|
editor.commands.clearContent();
|
|
2383
2386
|
setThumbnails([]);
|
|
2384
|
-
console.log("thumbnails cleared", thumbnails);
|
|
2385
2387
|
}
|
|
2386
2388
|
},
|
|
2387
2389
|
mentionableUsers: setMentionableUsers,
|
|
@@ -2393,6 +2395,7 @@ const ChatContextProvider = ({ onSave, onFileUpload, setMentionableUsers, childr
|
|
|
2393
2395
|
thumbnails,
|
|
2394
2396
|
setThumbnails,
|
|
2395
2397
|
onFileUpload,
|
|
2398
|
+
onDeleteThumbnail,
|
|
2396
2399
|
]);
|
|
2397
2400
|
return (jsxRuntime.jsx(ChatContext.Provider, Object.assign({ value: chatContextValue }, { children: children })));
|
|
2398
2401
|
};
|
|
@@ -2728,96 +2731,28 @@ const ChatTitle = styled__default["default"](Title$1) `
|
|
|
2728
2731
|
padding: ${({ theme }) => `${theme.space.sm} ${theme.space.md}`};
|
|
2729
2732
|
`;
|
|
2730
2733
|
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
justify-content: center;
|
|
2735
|
-
width: ${({ theme }) => theme.space.xl};
|
|
2736
|
-
height: ${({ theme }) => theme.space.xl};
|
|
2737
|
-
`;
|
|
2738
|
-
/**
|
|
2739
|
-
* Title is a basic component used to display a title. Often used in card headers.
|
|
2740
|
-
*/
|
|
2741
|
-
const Close = (props) => jsxRuntime.jsx(UgClose$1, Object.assign({}, props));
|
|
2742
|
-
|
|
2743
|
-
const NOTIFICATION_COMPONENT_ID = "notifications.notification";
|
|
2744
|
-
const CLOSE_COMPONENT_ID = "notifications.notification.close";
|
|
2745
|
-
const CLOSE_ICON_COMPONENT_ID = "notifications.notification.close-icon";
|
|
2746
|
-
const TITLE_COMPONENT_ID = "notifications.notification.title";
|
|
2747
|
-
const UgClose = styled__default["default"](Close).attrs((props) => {
|
|
2748
|
-
var _a;
|
|
2749
|
-
return ({
|
|
2750
|
-
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_ICON_COMPONENT_ID,
|
|
2751
|
-
});
|
|
2752
|
-
}) `
|
|
2753
|
-
${(props) => reactTheming.retrieveComponentStyles(CLOSE_ICON_COMPONENT_ID, props)};
|
|
2754
|
-
`;
|
|
2755
|
-
const UgAnchor = styled__default["default"](reactButtons.Anchor).attrs((props) => {
|
|
2756
|
-
var _a;
|
|
2757
|
-
return ({
|
|
2758
|
-
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_COMPONENT_ID,
|
|
2759
|
-
});
|
|
2760
|
-
}) `
|
|
2761
|
-
${(props) => reactTheming.retrieveComponentStyles(CLOSE_COMPONENT_ID, props)};
|
|
2762
|
-
`;
|
|
2763
|
-
const UgTitle = styled__default["default"](Title$1).attrs((props) => {
|
|
2764
|
-
var _a;
|
|
2765
|
-
return ({
|
|
2766
|
-
"data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : TITLE_COMPONENT_ID,
|
|
2767
|
-
});
|
|
2768
|
-
}) `
|
|
2769
|
-
${(props) => reactTheming.retrieveComponentStyles(TITLE_COMPONENT_ID, props)};
|
|
2770
|
-
`;
|
|
2771
|
-
const UgNotification = styled__default["default"](reactNotifications.Notification) `
|
|
2772
|
-
display: flex;
|
|
2773
|
-
align-items: center;
|
|
2774
|
-
justify-content: space-between;
|
|
2775
|
-
padding-right: ${({ theme }) => theme.space.md};
|
|
2776
|
-
white-space: pre;
|
|
2777
|
-
|
|
2778
|
-
${UgAnchor} {
|
|
2779
|
-
flex-shrink: 0;
|
|
2780
|
-
margin-left: ${({ theme }) => theme.space.md};
|
|
2781
|
-
}
|
|
2782
|
-
|
|
2783
|
-
${(props) => reactTheming.retrieveComponentStyles(NOTIFICATION_COMPONENT_ID, props)};
|
|
2784
|
-
`;
|
|
2785
|
-
/**
|
|
2786
|
-
* A Notification is a passive status update that keeps users informed of system progress.
|
|
2787
|
-
* <hr>
|
|
2788
|
-
* Used for this:
|
|
2789
|
-
- For a passive status update about user or system activity
|
|
2790
|
-
*/
|
|
2791
|
-
const Notification = (_a) => {
|
|
2792
|
-
var { closeText, message, onClose, type, isPrimary, isRegular } = _a, props = __rest(_a, ["closeText", "message", "onClose", "type", "isPrimary", "isRegular"]);
|
|
2793
|
-
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, {}) }))] })));
|
|
2794
|
-
};
|
|
2795
|
-
// ToastProvider
|
|
2796
|
-
const ToastProvider = (props) => (jsxRuntime.jsx(reactNotifications.ToastProvider, Object.assign({}, props)));
|
|
2797
|
-
const useToast = reactNotifications.useToast;
|
|
2798
|
-
|
|
2799
|
-
var _path$v;
|
|
2800
|
-
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); }
|
|
2801
|
-
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({
|
|
2802
2737
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2803
2738
|
width: 16,
|
|
2804
2739
|
height: 16,
|
|
2805
2740
|
focusable: "false",
|
|
2806
2741
|
viewBox: "0 0 16 16"
|
|
2807
|
-
}, props), _path$
|
|
2742
|
+
}, props), _path$x || (_path$x = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2808
2743
|
fill: "currentColor",
|
|
2809
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"
|
|
2810
2745
|
})));
|
|
2811
2746
|
|
|
2812
|
-
var _path$
|
|
2813
|
-
function _extends$
|
|
2814
|
-
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({
|
|
2815
2750
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2816
2751
|
width: 16,
|
|
2817
2752
|
height: 16,
|
|
2818
2753
|
focusable: "false",
|
|
2819
2754
|
viewBox: "0 0 16 16"
|
|
2820
|
-
}, props), _path$
|
|
2755
|
+
}, props), _path$w || (_path$w = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2821
2756
|
fill: "none",
|
|
2822
2757
|
stroke: "currentColor",
|
|
2823
2758
|
strokeLinecap: "round",
|
|
@@ -2825,15 +2760,15 @@ const SvgItalicFill = props => /*#__PURE__*/React__namespace.createElement("svg"
|
|
|
2825
2760
|
d: "M8 1h3M9.5 1l-3 14M5 15h3"
|
|
2826
2761
|
})));
|
|
2827
2762
|
|
|
2828
|
-
var _path$
|
|
2829
|
-
function _extends$
|
|
2830
|
-
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({
|
|
2831
2766
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2832
2767
|
width: 16,
|
|
2833
2768
|
height: 16,
|
|
2834
2769
|
focusable: "false",
|
|
2835
2770
|
viewBox: "0 0 16 16"
|
|
2836
|
-
}, props), _path$
|
|
2771
|
+
}, props), _path$v || (_path$v = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2837
2772
|
fill: "currentColor",
|
|
2838
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"
|
|
2839
2774
|
})), _path2$7 || (_path2$7 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -2844,15 +2779,15 @@ const SvgQuoteFill = props => /*#__PURE__*/React__namespace.createElement("svg",
|
|
|
2844
2779
|
d: "M5.5 12C6.5 11 7 9.5 7 8V6m4.5 6c1-1 1.5-2.5 1.5-4V6"
|
|
2845
2780
|
})));
|
|
2846
2781
|
|
|
2847
|
-
var _g$
|
|
2848
|
-
function _extends$
|
|
2849
|
-
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({
|
|
2850
2785
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2851
2786
|
width: 16,
|
|
2852
2787
|
height: 16,
|
|
2853
2788
|
focusable: "false",
|
|
2854
2789
|
viewBox: "0 0 16 16"
|
|
2855
|
-
}, props), _g$
|
|
2790
|
+
}, props), _g$5 || (_g$5 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2856
2791
|
transform: "translate(-464 -332)"
|
|
2857
2792
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
2858
2793
|
width: 16,
|
|
@@ -2872,15 +2807,15 @@ const SvgH1Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _e
|
|
|
2872
2807
|
transform: "translate(474.469 331)"
|
|
2873
2808
|
}))));
|
|
2874
2809
|
|
|
2875
|
-
var _g$
|
|
2876
|
-
function _extends$
|
|
2877
|
-
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({
|
|
2878
2813
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2879
2814
|
width: 16,
|
|
2880
2815
|
height: 16,
|
|
2881
2816
|
focusable: "false",
|
|
2882
2817
|
viewBox: "0 0 16 16"
|
|
2883
|
-
}, props), _g$
|
|
2818
|
+
}, props), _g$4 || (_g$4 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2884
2819
|
transform: "translate(-464 -332)"
|
|
2885
2820
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
2886
2821
|
width: 16,
|
|
@@ -2900,15 +2835,15 @@ const SvgH2Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _e
|
|
|
2900
2835
|
transform: "translate(469.359 331)"
|
|
2901
2836
|
}))));
|
|
2902
2837
|
|
|
2903
|
-
var _g$
|
|
2904
|
-
function _extends$
|
|
2905
|
-
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({
|
|
2906
2841
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2907
2842
|
width: 16,
|
|
2908
2843
|
height: 16,
|
|
2909
2844
|
focusable: "false",
|
|
2910
2845
|
viewBox: "0 0 16 16"
|
|
2911
|
-
}, props), _g$
|
|
2846
|
+
}, props), _g$3 || (_g$3 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
2912
2847
|
transform: "translate(-464 -332)"
|
|
2913
2848
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
2914
2849
|
width: 16,
|
|
@@ -2969,137 +2904,213 @@ const FloatingMenu = (props) => {
|
|
|
2969
2904
|
const TooltipComponent = (props) => {
|
|
2970
2905
|
var _a;
|
|
2971
2906
|
const theme = React.useContext(styled.ThemeContext);
|
|
2972
|
-
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 })));
|
|
2973
2908
|
};
|
|
2974
2909
|
const Tooltip = styled__default["default"](TooltipComponent) `
|
|
2975
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
|
+
`};
|
|
2976
2918
|
`;
|
|
2977
2919
|
|
|
2978
|
-
var _path$
|
|
2979
|
-
function _extends$
|
|
2980
|
-
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({
|
|
2981
2923
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2982
2924
|
width: 16,
|
|
2983
2925
|
height: 16,
|
|
2984
2926
|
focusable: "false",
|
|
2985
2927
|
viewBox: "0 0 16 16"
|
|
2986
|
-
}, props), _path$
|
|
2928
|
+
}, props), _path$u || (_path$u = /*#__PURE__*/React__namespace.createElement("path", {
|
|
2987
2929
|
fill: "currentColor",
|
|
2988
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"
|
|
2989
2931
|
})));
|
|
2990
2932
|
|
|
2991
|
-
var _path$
|
|
2992
|
-
function _extends$
|
|
2993
|
-
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({
|
|
2994
2936
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2995
2937
|
width: 16,
|
|
2996
2938
|
height: 16,
|
|
2997
2939
|
focusable: "false",
|
|
2998
2940
|
viewBox: "0 0 16 16"
|
|
2999
|
-
}, props), _path$
|
|
2941
|
+
}, props), _path$t || (_path$t = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3000
2942
|
fill: "none",
|
|
3001
2943
|
stroke: "currentColor",
|
|
3002
2944
|
strokeLinecap: "round",
|
|
3003
2945
|
d: "M7.5 1.5h3M9 1.5l-3 14m-1.5 0h3"
|
|
3004
2946
|
})));
|
|
3005
2947
|
|
|
3006
|
-
var _path$
|
|
3007
|
-
function _extends$
|
|
3008
|
-
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({
|
|
3009
2951
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3010
2952
|
width: 16,
|
|
3011
2953
|
height: 16,
|
|
3012
2954
|
focusable: "false",
|
|
3013
2955
|
role: "presentation"
|
|
3014
|
-
}, props), _path$
|
|
2956
|
+
}, props), _path$s || (_path$s = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3015
2957
|
fill: "none",
|
|
3016
2958
|
stroke: "currentColor",
|
|
3017
2959
|
strokeLinecap: "round",
|
|
3018
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"
|
|
3019
2961
|
})));
|
|
3020
2962
|
|
|
3021
|
-
var _path$
|
|
3022
|
-
function _extends$
|
|
3023
|
-
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({
|
|
3024
2966
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3025
2967
|
width: 16,
|
|
3026
2968
|
height: 16,
|
|
3027
2969
|
focusable: "false",
|
|
3028
2970
|
role: "presentation"
|
|
3029
|
-
}, props), _path$
|
|
2971
|
+
}, props), _path$r || (_path$r = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3030
2972
|
fill: "none",
|
|
3031
2973
|
stroke: "currentColor",
|
|
3032
2974
|
strokeLinecap: "round",
|
|
3033
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"
|
|
3034
2976
|
})));
|
|
3035
2977
|
|
|
3036
|
-
const
|
|
3037
|
-
|
|
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) `
|
|
3038
3019
|
display: flex;
|
|
3039
|
-
flex-direction: row;
|
|
3040
|
-
justify-content: flex-start;
|
|
3041
3020
|
align-items: center;
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
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)};
|
|
3049
3031
|
`;
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
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" });
|
|
3067
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();
|
|
3068
3092
|
};
|
|
3069
|
-
const
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
const { from } = editor.state.selection;
|
|
3077
|
-
const char = from > 1 ? " @" : "@";
|
|
3078
|
-
return editor.chain().focus().insertContent(char).run();
|
|
3079
|
-
case "attachment":
|
|
3080
|
-
//open a file browser to select one or more images
|
|
3081
|
-
const fileInput = document.createElement("input");
|
|
3082
|
-
fileInput.type = "file";
|
|
3083
|
-
fileInput.accept = "image/*,video/*";
|
|
3084
|
-
fileInput.multiple = true;
|
|
3085
|
-
fileInput.click();
|
|
3086
|
-
fileInput.onchange = () => {
|
|
3087
|
-
const files = fileInput.files;
|
|
3088
|
-
if (files) {
|
|
3089
|
-
const mediaFiles = Array.from(files).map((file) => {
|
|
3090
|
-
return Object.assign(file, { isLoadingMedia: false });
|
|
3091
|
-
});
|
|
3092
|
-
if (mediaFiles.length === 0)
|
|
3093
|
-
return;
|
|
3094
|
-
addThumbnails({ files: mediaFiles });
|
|
3095
|
-
}
|
|
3096
|
-
};
|
|
3097
|
-
return;
|
|
3098
|
-
default:
|
|
3099
|
-
return;
|
|
3100
|
-
}
|
|
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();
|
|
3101
3100
|
};
|
|
3102
|
-
|
|
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
|
+
};
|
|
3112
|
+
};
|
|
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, {}) })) }))] })) }));
|
|
3103
3114
|
};
|
|
3104
3115
|
|
|
3105
3116
|
const CustomMention = Mention__default["default"].extend({
|
|
@@ -3276,7 +3287,7 @@ const editorExtensions = ({ placeholderOptions, mentionableUsers, }) => {
|
|
|
3276
3287
|
},
|
|
3277
3288
|
}),
|
|
3278
3289
|
Dropcursor__default["default"].configure({
|
|
3279
|
-
color:
|
|
3290
|
+
color: getColor(colors.accentHue, 700),
|
|
3280
3291
|
width: 3,
|
|
3281
3292
|
}),
|
|
3282
3293
|
Placeholder__default["default"].configure(Object.assign({ placeholder: ({ node }) => {
|
|
@@ -3348,20 +3359,20 @@ const editorExtensions = ({ placeholderOptions, mentionableUsers, }) => {
|
|
|
3348
3359
|
];
|
|
3349
3360
|
};
|
|
3350
3361
|
|
|
3351
|
-
var _circle$
|
|
3352
|
-
function _extends$
|
|
3353
|
-
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({
|
|
3354
3365
|
width: 56,
|
|
3355
3366
|
height: 56,
|
|
3356
3367
|
viewBox: "0 0 56 56",
|
|
3357
3368
|
fill: "#68737d",
|
|
3358
3369
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3359
|
-
}, props), _circle$
|
|
3370
|
+
}, props), _circle$3 || (_circle$3 = /*#__PURE__*/React__namespace.createElement("circle", {
|
|
3360
3371
|
cx: 28,
|
|
3361
3372
|
cy: 28,
|
|
3362
3373
|
r: 28,
|
|
3363
3374
|
fill: "#edf7ff"
|
|
3364
|
-
})), _path$
|
|
3375
|
+
})), _path$q || (_path$q = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3365
3376
|
d: "M16.929 16.929L39.071 39.071",
|
|
3366
3377
|
stroke: "currentColor",
|
|
3367
3378
|
strokeWidth: 4
|
|
@@ -3380,176 +3391,149 @@ const StyledDeleteThumbnailX = styled__default["default"].div `
|
|
|
3380
3391
|
width: 32px;
|
|
3381
3392
|
height: 32px;
|
|
3382
3393
|
opacity: 0;
|
|
3394
|
+
transition: opacity 0.2s;
|
|
3383
3395
|
z-index: 2;
|
|
3396
|
+
color: ${({ theme }) => theme.palette.grey[800]};
|
|
3384
3397
|
`;
|
|
3385
3398
|
const DeleteThumbnailX = ({ deleteThumbnail }) => {
|
|
3386
3399
|
return (jsxRuntime.jsx(StyledDeleteThumbnailX, Object.assign({ className: "deleteThumbnail" }, { children: jsxRuntime.jsx(SvgRemoveMediaIcon, { onClick: (e) => deleteThumbnail(e) }) })));
|
|
3387
3400
|
};
|
|
3388
3401
|
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
opacity: 1;
|
|
3393
|
-
}
|
|
3394
|
-
`;
|
|
3395
|
-
const Preview$1 = styled__default["default"].div `
|
|
3396
|
-
display: flex;
|
|
3397
|
-
justify-content: center;
|
|
3398
|
-
align-items: center;
|
|
3399
|
-
height: 150px;
|
|
3400
|
-
width: 100%;
|
|
3401
|
-
background-image: url(${(props) => props.url});
|
|
3402
|
-
background-color: ${({ theme }) => theme.palette.grey[100]};
|
|
3403
|
-
background-size: contain;
|
|
3404
|
-
background-position: center;
|
|
3405
|
-
background-repeat: no-repeat;
|
|
3406
|
-
`;
|
|
3407
|
-
const ImageThumbnail = ({ src, index = 0, removeThumbnail, clickThumbnail, showX = true, isLoadingMedia = false, isError = false, }) => {
|
|
3408
|
-
const handleCancel = (e) => {
|
|
3409
|
-
e.stopPropagation();
|
|
3410
|
-
if (removeThumbnail)
|
|
3411
|
-
removeThumbnail(index);
|
|
3412
|
-
};
|
|
3413
|
-
return (jsxRuntime.jsxs(ImageCard, Object.assign({ onClick: clickThumbnail }, { children: [isLoadingMedia && (jsxRuntime.jsx(Preview$1, Object.assign({ url: "" }, { children: jsxRuntime.jsx(reactLoaders.Spinner, { style: {
|
|
3414
|
-
display: "flex",
|
|
3415
|
-
alignItems: "center",
|
|
3416
|
-
justifyContent: "center",
|
|
3417
|
-
}, size: "large" }) }))), isError && (
|
|
3418
|
-
// todo: add error icon
|
|
3419
|
-
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) })) })))] })));
|
|
3420
|
-
};
|
|
3421
|
-
|
|
3422
|
-
var _circle$1, _path$n;
|
|
3423
|
-
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); }
|
|
3424
|
-
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({
|
|
3425
3405
|
width: 56,
|
|
3426
3406
|
height: 56,
|
|
3427
3407
|
viewBox: "0 0 56 56",
|
|
3428
3408
|
fill: "none",
|
|
3429
3409
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3430
|
-
}, props), _circle$
|
|
3410
|
+
}, props), _circle$2 || (_circle$2 = /*#__PURE__*/React__namespace.createElement("circle", {
|
|
3431
3411
|
cx: 28,
|
|
3432
3412
|
cy: 28,
|
|
3433
3413
|
r: 28,
|
|
3434
3414
|
fill: "white"
|
|
3435
|
-
})), _path$
|
|
3415
|
+
})), _path$p || (_path$p = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3436
3416
|
d: "M47 28L18.5 44.4545L18.5 11.5455L47 28Z",
|
|
3437
3417
|
fill: "currentColor"
|
|
3438
3418
|
})));
|
|
3439
3419
|
|
|
3440
|
-
const
|
|
3420
|
+
const ImageCard = styled__default["default"](SpecialCard) `
|
|
3441
3421
|
padding: 0;
|
|
3442
3422
|
position: relative;
|
|
3443
3423
|
overflow: hidden;
|
|
3444
|
-
|
|
3445
|
-
&:hover .deleteThumbnail {
|
|
3446
|
-
opacity: 1;
|
|
3447
|
-
z-index: 9999;
|
|
3448
|
-
}
|
|
3424
|
+
width: 90px;
|
|
3449
3425
|
|
|
3450
3426
|
&:before {
|
|
3451
3427
|
content: "";
|
|
3428
|
+
font-size: ${({ theme }) => theme.fontSizes.xs};
|
|
3452
3429
|
position: absolute;
|
|
3430
|
+
padding: ${({ theme }) => theme.space.xs};
|
|
3453
3431
|
top: 0;
|
|
3454
3432
|
left: 0;
|
|
3455
3433
|
width: 100%;
|
|
3456
3434
|
height: 100%;
|
|
3457
|
-
background-color: ${({ theme }) => theme.palette.grey[800]};
|
|
3458
|
-
|
|
3459
|
-
z-index: 1;
|
|
3435
|
+
background-color: ${({ theme }) => theme.palette.grey[800]}00; // 0% opacity
|
|
3436
|
+
transition: opacity 0.2s;
|
|
3460
3437
|
}
|
|
3461
3438
|
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
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
|
+
}
|
|
3470
3472
|
}
|
|
3471
3473
|
`;
|
|
3472
3474
|
const Preview = styled__default["default"].div `
|
|
3473
|
-
padding: ${({ theme }) => theme.space.md};
|
|
3474
3475
|
display: flex;
|
|
3475
3476
|
justify-content: center;
|
|
3476
3477
|
align-items: center;
|
|
3477
|
-
height:
|
|
3478
|
+
height: 100px;
|
|
3478
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
|
+
`}
|
|
3479
3490
|
|
|
3480
3491
|
> video {
|
|
3481
3492
|
width: 100%;
|
|
3482
3493
|
height: 100%;
|
|
3483
3494
|
}
|
|
3484
3495
|
`;
|
|
3485
|
-
const
|
|
3496
|
+
const Thumbnail = ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia, error = "", }) => {
|
|
3486
3497
|
const handleCancel = (e) => {
|
|
3487
3498
|
e.stopPropagation();
|
|
3488
3499
|
if (removeThumbnail)
|
|
3489
|
-
removeThumbnail(
|
|
3500
|
+
removeThumbnail();
|
|
3490
3501
|
};
|
|
3491
|
-
return (jsxRuntime.
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
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" })] }))] }))) })));
|
|
3498
3509
|
};
|
|
3499
3510
|
|
|
3500
|
-
const
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
/**
|
|
3505
|
-
* The Grid component is a framework for building modular layouts.
|
|
3506
|
-
* <hr>
|
|
3507
|
-
* Used for this:
|
|
3508
|
-
- To structure the layout of a page
|
|
3509
|
-
*/
|
|
3510
|
-
const Grid = (props) => jsxRuntime.jsx(UgGrid, Object.assign({}, props));
|
|
3511
|
-
|
|
3512
|
-
const Row$1 = (props) => jsxRuntime.jsx(reactGrid.Row, Object.assign({}, props));
|
|
3513
|
-
|
|
3514
|
-
const StyledCol$1 = styled__default["default"](reactGrid.Col) `
|
|
3515
|
-
margin-bottom: ${theme.space.lg};
|
|
3516
|
-
|
|
3517
|
-
@media screen and (max-width: ${theme.breakpoints.sm}) {
|
|
3518
|
-
margin-bottom: ${theme.space.md};
|
|
3519
|
-
}
|
|
3511
|
+
const FlexContainer = styled.styled.div `
|
|
3512
|
+
display: flex;
|
|
3513
|
+
gap: ${({ theme }) => theme.space.xs};
|
|
3514
|
+
flex-wrap: wrap;
|
|
3520
3515
|
`;
|
|
3521
|
-
const Col = (props) => jsxRuntime.jsx(StyledCol$1, Object.assign({}, props));
|
|
3522
|
-
|
|
3523
3516
|
const ThumbnailContainer = ({ openLightbox }) => {
|
|
3524
|
-
const { thumbnails, removeThumbnail } = useChatContext();
|
|
3525
|
-
|
|
3526
|
-
return
|
|
3527
|
-
}
|
|
3528
|
-
const mediaFiles = [];
|
|
3529
|
-
thumbnails.forEach((file) => {
|
|
3530
|
-
mediaFiles.push({
|
|
3517
|
+
const { thumbnails, removeThumbnail, onDeleteThumbnail } = useChatContext();
|
|
3518
|
+
const mediaFiles = React.useMemo(() => {
|
|
3519
|
+
return thumbnails.map((file) => ({
|
|
3531
3520
|
fileName: file.name,
|
|
3532
3521
|
fileType: file.type,
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
|
|
3522
|
+
previewUrl: file.url,
|
|
3523
|
+
id: file.id,
|
|
3524
|
+
isLoadingMedia: file.isLoadingMedia,
|
|
3525
|
+
error: file.error,
|
|
3526
|
+
}));
|
|
3527
|
+
}, [thumbnails]);
|
|
3538
3528
|
if (!mediaFiles || mediaFiles.length === 0) {
|
|
3539
3529
|
return null;
|
|
3540
3530
|
}
|
|
3541
|
-
return (jsxRuntime.jsx(
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
if (file.fileType.includes("video"))
|
|
3548
|
-
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.status === "uploading", removeThumbnail: () => removeThumbnail(index), clickThumbnail: () => {
|
|
3549
|
-
openLightbox(thumbnails[index], index);
|
|
3550
|
-
} }, index) })));
|
|
3551
|
-
return null;
|
|
3552
|
-
}) })) }));
|
|
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))) }));
|
|
3553
3537
|
};
|
|
3554
3538
|
|
|
3555
3539
|
const UgModalBody = styled__default["default"](reactModals.Body) `
|
|
@@ -3618,28 +3602,28 @@ Lightbox.Body = ModalBody; // Includes Main and Details
|
|
|
3618
3602
|
Lightbox.Footer = Footer$3;
|
|
3619
3603
|
Lightbox.Close = reactModals.Close;
|
|
3620
3604
|
|
|
3621
|
-
var _path$
|
|
3622
|
-
function _extends$
|
|
3623
|
-
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({
|
|
3624
3608
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3625
3609
|
width: 16,
|
|
3626
3610
|
height: 16,
|
|
3627
3611
|
focusable: "false",
|
|
3628
3612
|
viewBox: "0 0 16 16"
|
|
3629
|
-
}, props), _path$
|
|
3613
|
+
}, props), _path$o || (_path$o = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3630
3614
|
fill: "currentColor",
|
|
3631
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"
|
|
3632
3616
|
})));
|
|
3633
3617
|
|
|
3634
|
-
var _path$
|
|
3635
|
-
function _extends$
|
|
3636
|
-
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({
|
|
3637
3621
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3638
3622
|
width: 16,
|
|
3639
3623
|
height: 16,
|
|
3640
3624
|
focusable: "false",
|
|
3641
3625
|
viewBox: "0 0 16 16"
|
|
3642
|
-
}, props), _path$
|
|
3626
|
+
}, props), _path$n || (_path$n = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3643
3627
|
fill: "currentColor",
|
|
3644
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"
|
|
3645
3629
|
})));
|
|
@@ -3862,94 +3846,284 @@ Slider.Slide = Slide;
|
|
|
3862
3846
|
Slider.PrevButton = PrevButton;
|
|
3863
3847
|
Slider.NextButton = NextButton;
|
|
3864
3848
|
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
z-index: 1;
|
|
3882
|
-
`;
|
|
3883
|
-
const Content$1 = styled__default["default"].div `
|
|
3884
|
-
display: flex;
|
|
3885
|
-
background-color: ${({ theme }) => theme.palette.grey[800]};
|
|
3886
|
-
border-radius: 2px;
|
|
3887
|
-
width: auto;
|
|
3888
|
-
padding: 2px 4px;
|
|
3889
|
-
display: inline-flex;
|
|
3890
|
-
color: white;
|
|
3891
|
-
align-items: center;
|
|
3892
|
-
justify-content: center;
|
|
3893
|
-
min-height: 16px;
|
|
3894
|
-
`;
|
|
3895
|
-
const PlayerTooltip = (_a) => {
|
|
3896
|
-
var { children } = _a, props = __rest(_a, ["children"]);
|
|
3897
|
-
return (jsxRuntime.jsx(Wrapper$1, Object.assign({}, props, { children: jsxRuntime.jsx(Content$1, { children: children }) })));
|
|
3898
|
-
};
|
|
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
|
+
})));
|
|
3899
3865
|
|
|
3900
|
-
var _path$
|
|
3901
|
-
function _extends$
|
|
3902
|
-
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({
|
|
3903
3869
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3904
3870
|
width: 16,
|
|
3905
3871
|
height: 16,
|
|
3906
3872
|
focusable: "false",
|
|
3907
3873
|
viewBox: "0 0 16 16"
|
|
3908
|
-
}, props), _path$
|
|
3874
|
+
}, props), _path$l || (_path$l = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3909
3875
|
fill: "currentColor",
|
|
3910
|
-
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"
|
|
3911
3882
|
})));
|
|
3912
3883
|
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
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({
|
|
3916
3951
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3917
3952
|
width: 16,
|
|
3918
3953
|
height: 16,
|
|
3919
3954
|
focusable: "false",
|
|
3920
3955
|
viewBox: "0 0 16 16"
|
|
3921
|
-
}, props), _g$
|
|
3956
|
+
}, props), _g$2 || (_g$2 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
3922
3957
|
fill: "currentColor"
|
|
3923
3958
|
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3924
|
-
width:
|
|
3925
|
-
height:
|
|
3926
|
-
x:
|
|
3959
|
+
width: 2,
|
|
3960
|
+
height: 2,
|
|
3961
|
+
x: 5,
|
|
3927
3962
|
y: 1,
|
|
3928
|
-
rx:
|
|
3929
|
-
ry:
|
|
3963
|
+
rx: 0.5,
|
|
3964
|
+
ry: 0.5
|
|
3930
3965
|
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
3931
|
-
width:
|
|
3932
|
-
height:
|
|
3966
|
+
width: 2,
|
|
3967
|
+
height: 2,
|
|
3933
3968
|
x: 9,
|
|
3934
3969
|
y: 1,
|
|
3935
|
-
rx:
|
|
3936
|
-
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
|
|
3937
4014
|
}))));
|
|
3938
4015
|
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
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
|
+
${({ isFocused }) => isFocused && activeBookMark}
|
|
4076
|
+
`;
|
|
4077
|
+
const StyledTooltip$1 = styled.styled(Tooltip) `
|
|
4078
|
+
margin-bottom: ${({ theme }) => theme.space.sm};
|
|
4079
|
+
color: ${({ tooltipColor }) => tooltipColor};
|
|
4080
|
+
|
|
4081
|
+
`;
|
|
4082
|
+
const Grabber = (props) => {
|
|
4083
|
+
const { observation } = props;
|
|
4084
|
+
const { setIsGrabbing, setactiveBookmark, setFromEnd } = useProgressContext();
|
|
4085
|
+
const handleDragStart = (e) => {
|
|
4086
|
+
setIsGrabbing(true);
|
|
4087
|
+
setactiveBookmark(observation);
|
|
4088
|
+
setFromEnd(!!props.isEnd);
|
|
4089
|
+
e.preventDefault();
|
|
4090
|
+
e.stopPropagation();
|
|
4091
|
+
};
|
|
4092
|
+
return (jsxRuntime.jsx(StyledGrabber, Object.assign({ isEnd: props.isEnd, onMouseDown: handleDragStart, onMouseMove: props.handleMouseMove }, { children: jsxRuntime.jsx("div", { children: jsxRuntime.jsx(SvgGrip, {}) }) })));
|
|
4093
|
+
};
|
|
4094
|
+
const Bookmark = (props) => {
|
|
4095
|
+
var _a, _b;
|
|
4096
|
+
const { start, end, hue, tooltipContent } = props;
|
|
4097
|
+
const { context } = Video.useVideoContext();
|
|
4098
|
+
const videoStart = context.part.start || 0;
|
|
4099
|
+
const videoEnd = context.part.end || ((_a = context.player) === null || _a === void 0 ? void 0 : _a.totalTime) || 0;
|
|
4100
|
+
const duration = videoEnd - videoStart || ((_b = context.player) === null || _b === void 0 ? void 0 : _b.totalTime) || 0; //relative
|
|
4101
|
+
const { activeBookmark } = useProgressContext();
|
|
4102
|
+
if (!context.player || !context.player.ref) {
|
|
4103
|
+
return null;
|
|
4104
|
+
}
|
|
4105
|
+
if (start > videoEnd || start < videoStart)
|
|
4106
|
+
return null;
|
|
4107
|
+
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, isFocused: props.isFocused, style: {
|
|
4108
|
+
left: `${((start - videoStart) / duration) * 100}%`,
|
|
4109
|
+
width: `${((end - start) / duration) * 100}%`,
|
|
4110
|
+
}, onClick: props.onClick }, { children: [jsxRuntime.jsx(Grabber, { observation: props }), jsxRuntime.jsx(Grabber, { isEnd: true, observation: props })] })) })));
|
|
4111
|
+
};
|
|
4112
|
+
|
|
4113
|
+
var _path$k, _path2$3, _path3$1;
|
|
4114
|
+
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); }
|
|
4115
|
+
const SvgBackSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$o({
|
|
3942
4116
|
width: 16,
|
|
3943
4117
|
height: 16,
|
|
3944
4118
|
viewBox: "0 0 16 16",
|
|
3945
4119
|
fill: "none",
|
|
3946
4120
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3947
|
-
}, props), _path$
|
|
4121
|
+
}, props), _path$k || (_path$k = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3948
4122
|
fillRule: "evenodd",
|
|
3949
4123
|
clipRule: "evenodd",
|
|
3950
|
-
d: "
|
|
4124
|
+
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",
|
|
3951
4125
|
fill: "currentColor"
|
|
3952
|
-
})), _path2$
|
|
4126
|
+
})), _path2$3 || (_path2$3 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3953
4127
|
d: "M5.5 7.63073V7.07008H6.67566V11H6.02566V7.63073H5.5Z",
|
|
3954
4128
|
fill: "currentColor"
|
|
3955
4129
|
})), _path3$1 || (_path3$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -3957,20 +4131,20 @@ const SvgForwardSecondsFill = props => /*#__PURE__*/React__namespace.createEleme
|
|
|
3957
4131
|
fill: "currentColor"
|
|
3958
4132
|
})));
|
|
3959
4133
|
|
|
3960
|
-
var _path$
|
|
3961
|
-
function _extends$
|
|
3962
|
-
const
|
|
4134
|
+
var _path$j, _path2$2, _path3;
|
|
4135
|
+
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); }
|
|
4136
|
+
const SvgForwardSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$n({
|
|
3963
4137
|
width: 16,
|
|
3964
4138
|
height: 16,
|
|
3965
4139
|
viewBox: "0 0 16 16",
|
|
3966
4140
|
fill: "none",
|
|
3967
4141
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3968
|
-
}, props), _path$
|
|
4142
|
+
}, props), _path$j || (_path$j = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3969
4143
|
fillRule: "evenodd",
|
|
3970
4144
|
clipRule: "evenodd",
|
|
3971
|
-
d: "
|
|
4145
|
+
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",
|
|
3972
4146
|
fill: "currentColor"
|
|
3973
|
-
})), _path2$
|
|
4147
|
+
})), _path2$2 || (_path2$2 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3974
4148
|
d: "M5.5 7.63073V7.07008H6.67566V11H6.02566V7.63073H5.5Z",
|
|
3975
4149
|
fill: "currentColor"
|
|
3976
4150
|
})), _path3 || (_path3 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
@@ -3978,7 +4152,46 @@ const SvgBackSecondsFill = props => /*#__PURE__*/React__namespace.createElement(
|
|
|
3978
4152
|
fill: "currentColor"
|
|
3979
4153
|
})));
|
|
3980
4154
|
|
|
3981
|
-
var
|
|
4155
|
+
var _g$1;
|
|
4156
|
+
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); }
|
|
4157
|
+
const SvgPauseFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$m({
|
|
4158
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4159
|
+
width: 16,
|
|
4160
|
+
height: 16,
|
|
4161
|
+
focusable: "false",
|
|
4162
|
+
viewBox: "0 0 16 16"
|
|
4163
|
+
}, props), _g$1 || (_g$1 = /*#__PURE__*/React__namespace.createElement("g", {
|
|
4164
|
+
fill: "currentColor"
|
|
4165
|
+
}, /*#__PURE__*/React__namespace.createElement("rect", {
|
|
4166
|
+
width: 4,
|
|
4167
|
+
height: 14,
|
|
4168
|
+
x: 3,
|
|
4169
|
+
y: 1,
|
|
4170
|
+
rx: 1,
|
|
4171
|
+
ry: 1
|
|
4172
|
+
}), /*#__PURE__*/React__namespace.createElement("rect", {
|
|
4173
|
+
width: 4,
|
|
4174
|
+
height: 14,
|
|
4175
|
+
x: 9,
|
|
4176
|
+
y: 1,
|
|
4177
|
+
rx: 1,
|
|
4178
|
+
ry: 1
|
|
4179
|
+
}))));
|
|
4180
|
+
|
|
4181
|
+
var _path$i;
|
|
4182
|
+
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); }
|
|
4183
|
+
const SvgPlayFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$l({
|
|
4184
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4185
|
+
width: 16,
|
|
4186
|
+
height: 16,
|
|
4187
|
+
focusable: "false",
|
|
4188
|
+
viewBox: "0 0 16 16"
|
|
4189
|
+
}, props), _path$i || (_path$i = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4190
|
+
fill: "currentColor",
|
|
4191
|
+
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"
|
|
4192
|
+
})));
|
|
4193
|
+
|
|
4194
|
+
var _path$h, _path2$1;
|
|
3982
4195
|
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); }
|
|
3983
4196
|
const SvgPreviousFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$k({
|
|
3984
4197
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -3989,7 +4202,7 @@ const SvgPreviousFill = props => /*#__PURE__*/React__namespace.createElement("sv
|
|
|
3989
4202
|
}, props), _path$h || (_path$h = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3990
4203
|
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",
|
|
3991
4204
|
fill: "currentColor"
|
|
3992
|
-
})), _path2$
|
|
4205
|
+
})), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
3993
4206
|
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",
|
|
3994
4207
|
fill: "currentColor"
|
|
3995
4208
|
})));
|
|
@@ -4019,8 +4232,9 @@ const getNextPlaybackRate = (rate = 1) => {
|
|
|
4019
4232
|
const StyledDiv$3 = styled__default["default"].div `
|
|
4020
4233
|
display: flex;
|
|
4021
4234
|
align-items: center;
|
|
4235
|
+
justify-content: center;
|
|
4022
4236
|
`;
|
|
4023
|
-
const ControlsGroupCenter = () => {
|
|
4237
|
+
const ControlsGroupCenter = (props) => {
|
|
4024
4238
|
var _a;
|
|
4025
4239
|
const [playBackRate, setPlayBackRate] = React.useState(1);
|
|
4026
4240
|
const { context, togglePlay } = Video.useVideoContext();
|
|
@@ -4043,107 +4257,77 @@ const ControlsGroupCenter = () => {
|
|
|
4043
4257
|
const nextTime = videoRef.currentTime + 10;
|
|
4044
4258
|
videoRef.currentTime = nextTime;
|
|
4045
4259
|
};
|
|
4046
|
-
return (jsxRuntime.jsxs(StyledDiv$3, { children: [jsxRuntime.jsx(
|
|
4260
|
+
return (jsxRuntime.jsxs(StyledDiv$3, Object.assign({}, props, { children: [jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
|
|
4047
4261
|
if (videoRef) {
|
|
4048
4262
|
videoRef.currentTime = 0;
|
|
4049
4263
|
}
|
|
4050
4264
|
e.stopPropagation();
|
|
4051
|
-
} }, { children: jsxRuntime.jsx(SvgPreviousFill, {}) })), jsxRuntime.jsx(
|
|
4265
|
+
} }, { children: jsxRuntime.jsx(SvgPreviousFill, {}) })), jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
|
|
4052
4266
|
onRewind();
|
|
4053
4267
|
e.stopPropagation();
|
|
4054
|
-
} }, { children: jsxRuntime.jsx(SvgBackSecondsFill, {}) })), jsxRuntime.jsx(
|
|
4268
|
+
} }, { 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) => {
|
|
4055
4269
|
onForward();
|
|
4056
4270
|
e.stopPropagation();
|
|
4057
|
-
} }, { children: jsxRuntime.jsx(SvgForwardSecondsFill, {}) })), jsxRuntime.jsx(
|
|
4271
|
+
} }, { children: jsxRuntime.jsx(SvgForwardSecondsFill, {}) })), jsxRuntime.jsx(ControlButton, Object.assign({ isPill: true, onClick: (e) => {
|
|
4058
4272
|
const newSpeed = getNextPlaybackRate(playBackRate);
|
|
4059
4273
|
if (videoRef === null || videoRef === void 0 ? void 0 : videoRef.playbackRate) {
|
|
4060
4274
|
setPlayBackRate(newSpeed);
|
|
4061
4275
|
videoRef.playbackRate = newSpeed;
|
|
4062
4276
|
}
|
|
4063
4277
|
e.stopPropagation();
|
|
4064
|
-
} }, { children: jsxRuntime.jsxs(SM, Object.assign({ isBold: true, style: { lineHeight: "16px" } }, { children: [playBackRate, "x"] })) }))] }));
|
|
4278
|
+
} }, { children: jsxRuntime.jsxs(SM, Object.assign({ isBold: true, style: { lineHeight: "16px" } }, { children: [playBackRate, "x"] })) }))] })));
|
|
4065
4279
|
};
|
|
4066
4280
|
|
|
4067
|
-
|
|
4068
|
-
position: absolute;
|
|
4069
|
-
bottom: ${({ theme }) => theme.space.sm};
|
|
4070
|
-
right: 0;
|
|
4071
|
-
|
|
4072
|
-
padding: 0 ${({ theme }) => theme.space.xs};
|
|
4073
|
-
|
|
4074
|
-
span {
|
|
4075
|
-
color: ${({ theme }) => theme.palette.grey[300]};
|
|
4076
|
-
}
|
|
4077
|
-
`;
|
|
4078
|
-
const TimeLabel = ({ current, duration, }) => (jsxRuntime.jsx(StyledDiv$2, { children: jsxRuntime.jsxs(SM, Object.assign({ tag: "span" }, { children: [current, "/", duration] })) }));
|
|
4079
|
-
|
|
4080
|
-
var _path$g, _path2$2;
|
|
4281
|
+
var _path$g, _circle$1;
|
|
4081
4282
|
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); }
|
|
4082
|
-
const
|
|
4283
|
+
const SvgTagStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$j({
|
|
4083
4284
|
xmlns: "http://www.w3.org/2000/svg",
|
|
4084
4285
|
width: 16,
|
|
4085
4286
|
height: 16,
|
|
4086
4287
|
focusable: "false",
|
|
4087
4288
|
viewBox: "0 0 16 16"
|
|
4088
4289
|
}, props), _path$g || (_path$g = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4089
|
-
stroke: "currentColor",
|
|
4090
|
-
strokeLinecap: "round",
|
|
4091
|
-
d: "M11.5 10l4-4m-4 0l4 4"
|
|
4092
|
-
})), _path2$2 || (_path2$2 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4093
|
-
fill: "currentColor",
|
|
4094
|
-
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"
|
|
4095
|
-
})));
|
|
4096
|
-
|
|
4097
|
-
var _path$f, _path2$1;
|
|
4098
|
-
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); }
|
|
4099
|
-
const SvgVolumeUnmutedFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$i({
|
|
4100
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
4101
|
-
width: 16,
|
|
4102
|
-
height: 16,
|
|
4103
|
-
focusable: "false",
|
|
4104
|
-
viewBox: "0 0 16 16"
|
|
4105
|
-
}, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4106
|
-
fill: "currentColor",
|
|
4107
|
-
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"
|
|
4108
|
-
})), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4109
4290
|
fill: "none",
|
|
4110
4291
|
stroke: "currentColor",
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
}
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4292
|
+
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"
|
|
4293
|
+
})), _circle$1 || (_circle$1 = /*#__PURE__*/React__namespace.createElement("circle", {
|
|
4294
|
+
cx: 4,
|
|
4295
|
+
cy: 4,
|
|
4296
|
+
r: 1,
|
|
4297
|
+
fill: "currentColor"
|
|
4298
|
+
})));
|
|
4299
|
+
|
|
4300
|
+
var _path$f;
|
|
4301
|
+
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); }
|
|
4302
|
+
const SvgPlus$1 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$i({
|
|
4303
|
+
width: 12,
|
|
4304
|
+
height: 12,
|
|
4305
|
+
viewBox: "0 0 12 12",
|
|
4306
|
+
fill: "none",
|
|
4307
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
4308
|
+
}, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4309
|
+
fillRule: "evenodd",
|
|
4310
|
+
clipRule: "evenodd",
|
|
4311
|
+
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",
|
|
4312
|
+
fill: "currentColor"
|
|
4313
|
+
})));
|
|
4314
|
+
|
|
4315
|
+
// Prevent button from breaking on smaller screens
|
|
4316
|
+
const StyledButton$2 = styled.styled(Button) `
|
|
4317
|
+
overflow: visible;
|
|
4318
|
+
`;
|
|
4319
|
+
const Cutter = ({ onCutHandler, isCutting, i18n, }) => {
|
|
4320
|
+
var _a;
|
|
4321
|
+
const { context } = Video.useVideoContext();
|
|
4322
|
+
const videoRef = (_a = context.player) === null || _a === void 0 ? void 0 : _a.ref.current;
|
|
4323
|
+
if (!onCutHandler)
|
|
4324
|
+
return null;
|
|
4325
|
+
return (jsxRuntime.jsx(StyledButton$2, Object.assign({ isPrimary: true, isAccent: !isCutting, size: "small", onClick: (e) => {
|
|
4326
|
+
if (videoRef) {
|
|
4327
|
+
onCutHandler(videoRef.currentTime);
|
|
4145
4328
|
}
|
|
4146
|
-
|
|
4329
|
+
e.stopPropagation();
|
|
4330
|
+
} }, { 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" })] })) })));
|
|
4147
4331
|
};
|
|
4148
4332
|
|
|
4149
4333
|
var _path$e;
|
|
@@ -4212,7 +4396,7 @@ const FullScreenButton = ({ container, }) => {
|
|
|
4212
4396
|
setFullScreen(false);
|
|
4213
4397
|
}
|
|
4214
4398
|
}
|
|
4215
|
-
}), [ref, isFullScreen]);
|
|
4399
|
+
}), [ref, isFullScreen, setFullScreen]);
|
|
4216
4400
|
const canGoFullScreen = React.useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
4217
4401
|
if (ref) {
|
|
4218
4402
|
return (requestFullscreen ||
|
|
@@ -4237,31 +4421,116 @@ const FullScreenButton = ({ container, }) => {
|
|
|
4237
4421
|
}
|
|
4238
4422
|
};
|
|
4239
4423
|
}, [ref]);
|
|
4240
|
-
return (jsxRuntime.jsx(
|
|
4424
|
+
return (jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
|
|
4241
4425
|
handleFullScreen();
|
|
4242
4426
|
e.stopPropagation();
|
|
4243
4427
|
}, disabled: !canGoFullScreen() }, { children: document.fullscreenElement || isFullScreen ? (jsxRuntime.jsx(SvgMinimizeStroke, {})) : (jsxRuntime.jsx(SvgMaximizeStroke, {})) })));
|
|
4244
4428
|
};
|
|
4245
4429
|
|
|
4246
|
-
const
|
|
4430
|
+
const UgProgress = styled__default["default"](reactLoaders.Progress) ``;
|
|
4431
|
+
/**
|
|
4432
|
+
* A Progress loader communicates progress when downloading or uploading content.
|
|
4433
|
+
* <hr>
|
|
4434
|
+
* Used for this:
|
|
4435
|
+
* - To communicate the amount of time left when downloading or uploading content
|
|
4436
|
+
*
|
|
4437
|
+
Not for this:
|
|
4438
|
+
- When the loading time is unknown, use a Spinner instead
|
|
4439
|
+
- When loading page content, use a Skeleton loader instead
|
|
4440
|
+
*/
|
|
4441
|
+
const Progress = React.forwardRef((props, ref) => (jsxRuntime.jsx(UgProgress, Object.assign({ ref: ref }, props))));
|
|
4442
|
+
|
|
4443
|
+
const StyledProgress = styled.styled(Progress) `
|
|
4444
|
+
width: 100%;
|
|
4445
|
+
border-radius: 0;
|
|
4446
|
+
color: ${({ theme }) => theme.palette.grey[400]};
|
|
4447
|
+
cursor: pointer;
|
|
4448
|
+
> div {
|
|
4449
|
+
border-radius: 0;
|
|
4450
|
+
}
|
|
4451
|
+
`;
|
|
4452
|
+
const ProgressBar = React.forwardRef((props, ref) => {
|
|
4453
|
+
const { progress, handleSkipAhead } = props;
|
|
4454
|
+
return (jsxRuntime.jsx(StyledProgress, { className: "progress-bar-1", ref: ref, value: progress, onClick: (e) => handleSkipAhead(e.clientX) }));
|
|
4455
|
+
});
|
|
4456
|
+
|
|
4457
|
+
const StyledDiv$2 = styled__default["default"].div `
|
|
4458
|
+
display: flex;
|
|
4459
|
+
color: ${({ theme }) => theme.palette.grey[700]};
|
|
4460
|
+
`;
|
|
4461
|
+
const TimeLabel = ({ current, duration, }) => (jsxRuntime.jsx(StyledDiv$2, { children: jsxRuntime.jsxs(SM, Object.assign({ tag: "span" }, { children: [formatDuration(current), "/", formatDuration(duration)] })) }));
|
|
4462
|
+
|
|
4463
|
+
const Wrapper$1 = styled__default["default"].div `
|
|
4464
|
+
position: absolute;
|
|
4465
|
+
bottom: ${({ theme }) => theme.space.sm};
|
|
4466
|
+
z-index: 1;
|
|
4467
|
+
`;
|
|
4468
|
+
const Content$1 = styled__default["default"].div `
|
|
4469
|
+
display: flex;
|
|
4470
|
+
background-color: ${({ theme }) => theme.palette.grey[800]};
|
|
4471
|
+
border-radius: 2px;
|
|
4472
|
+
width: auto;
|
|
4473
|
+
padding: 2px 4px;
|
|
4474
|
+
display: inline-flex;
|
|
4475
|
+
color: white;
|
|
4476
|
+
font-size: ${({ theme }) => theme.fontSizes.sm};
|
|
4477
|
+
align-items: center;
|
|
4478
|
+
justify-content: center;
|
|
4479
|
+
min-height: 14px;
|
|
4480
|
+
`;
|
|
4481
|
+
const PlayerTooltip = (_a) => {
|
|
4482
|
+
var { children } = _a, props = __rest(_a, ["children"]);
|
|
4483
|
+
return (jsxRuntime.jsx(Wrapper$1, Object.assign({}, props, { children: jsxRuntime.jsx(Content$1, { children: children }) })));
|
|
4484
|
+
};
|
|
4485
|
+
|
|
4486
|
+
function useDebounce(value, delay) {
|
|
4487
|
+
const [debouncedValue, setDebouncedValue] = React.useState(value);
|
|
4488
|
+
React.useEffect(() => {
|
|
4489
|
+
const timer = setTimeout(() => setDebouncedValue(value), delay || 500);
|
|
4490
|
+
return () => {
|
|
4491
|
+
clearTimeout(timer);
|
|
4492
|
+
};
|
|
4493
|
+
}, [value, delay]);
|
|
4494
|
+
return debouncedValue;
|
|
4495
|
+
}
|
|
4496
|
+
|
|
4497
|
+
const Pin = styled.styled.div `
|
|
4498
|
+
width: 2px;
|
|
4499
|
+
bottom: 0;
|
|
4500
|
+
left: ${({ left }) => `${left}%`};
|
|
4247
4501
|
position: absolute;
|
|
4502
|
+
height: 250%;
|
|
4503
|
+
z-index: 2;
|
|
4504
|
+
background-color: ${({ theme }) => theme.palette.grey[600]};
|
|
4505
|
+
margin-left: -2px; // To not override the current time marker
|
|
4506
|
+
|
|
4507
|
+
&:after {
|
|
4508
|
+
content: "";
|
|
4509
|
+
position: absolute;
|
|
4510
|
+
bottom: 100%;
|
|
4511
|
+
left: 50%;
|
|
4512
|
+
width: 10px;
|
|
4513
|
+
height: 10px;
|
|
4514
|
+
border-radius: 50%;
|
|
4515
|
+
transform: translate(-50%, 0);
|
|
4516
|
+
background-color: ${({ theme }) => theme.palette.grey[600]};
|
|
4517
|
+
}
|
|
4518
|
+
`;
|
|
4519
|
+
const CutStart = ({ left }) => {
|
|
4520
|
+
return jsxRuntime.jsx(Pin, { id: "obs-start-pin", left: left });
|
|
4521
|
+
};
|
|
4522
|
+
|
|
4523
|
+
const ControlsWrapper = styled__default["default"].div `
|
|
4524
|
+
${({ showControls }) => showControls ? "position: relative;" : "position: absolute;"}
|
|
4248
4525
|
bottom: 0;
|
|
4249
4526
|
left: 0;
|
|
4250
4527
|
right: 0;
|
|
4251
4528
|
padding: ${({ theme }) => theme.space.xxs} 0;
|
|
4252
|
-
background-color: ${({ theme }) =>
|
|
4529
|
+
background-color: ${({ theme }) => theme.palette.grey[100]};
|
|
4530
|
+
height: 80px;
|
|
4253
4531
|
${({ isPlaying }) => isPlaying && "display: none;"}
|
|
4254
4532
|
z-index: 2;
|
|
4255
4533
|
`;
|
|
4256
|
-
const StyledProgress = styled__default["default"](Progress) `
|
|
4257
|
-
width: 100%;
|
|
4258
|
-
border-radius: 0;
|
|
4259
|
-
color: ${({ theme }) => theme.palette.kale[700]};
|
|
4260
|
-
cursor: pointer;
|
|
4261
|
-
> div {
|
|
4262
|
-
border-radius: 0;
|
|
4263
|
-
}
|
|
4264
|
-
`;
|
|
4265
4534
|
const StyledTooltip = styled__default["default"](PlayerTooltip) `
|
|
4266
4535
|
display: none;
|
|
4267
4536
|
`;
|
|
@@ -4280,18 +4549,35 @@ const StyledDiv$1 = styled__default["default"].div `
|
|
|
4280
4549
|
display: flex;
|
|
4281
4550
|
align-items: center;
|
|
4282
4551
|
`;
|
|
4283
|
-
const
|
|
4552
|
+
const CurrentTimeMarker = styled__default["default"].div `
|
|
4553
|
+
width: 2px;
|
|
4554
|
+
top: 0;
|
|
4555
|
+
left: ${({ left }) => `${left}%`};
|
|
4556
|
+
position: absolute;
|
|
4557
|
+
height: 110%;
|
|
4558
|
+
z-index: 1;
|
|
4559
|
+
background-color: white;
|
|
4560
|
+
`;
|
|
4561
|
+
const Controls = ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpdated, i18n, showControls = false, }) => {
|
|
4284
4562
|
var _a, _b, _c;
|
|
4285
4563
|
const [progress, setProgress] = React.useState(0);
|
|
4286
4564
|
const [tooltipMargin, setTooltipMargin] = React.useState(0);
|
|
4287
4565
|
const [tooltipLabel, setTooltipLabel] = React.useState("00:00");
|
|
4566
|
+
const [marks, setMarks] = React.useState(bookmarks);
|
|
4567
|
+
const [updatedMark, setUpdatedMark] = React.useState();
|
|
4288
4568
|
const progressRef = React.useRef(null);
|
|
4289
4569
|
const { context, setCurrentTime } = Video.useVideoContext();
|
|
4570
|
+
const debouncedMark = useDebounce(updatedMark, 500);
|
|
4571
|
+
const [cutStart, setCutStart] = React.useState(0);
|
|
4572
|
+
const { reset, isGrabbing, activeBookmark, fromEnd } = useProgressContext();
|
|
4573
|
+
React.useEffect(() => {
|
|
4574
|
+
setMarks(bookmarks);
|
|
4575
|
+
}, [bookmarks]);
|
|
4290
4576
|
const relCurrentTime = ((_a = context.player) === null || _a === void 0 ? void 0 : _a.currentTime)
|
|
4291
4577
|
? ((_b = context.player) === null || _b === void 0 ? void 0 : _b.currentTime) - context.part.start
|
|
4292
4578
|
: 0;
|
|
4293
4579
|
const duration = context.part.end - context.part.start || ((_c = context.player) === null || _c === void 0 ? void 0 : _c.totalTime) || 0; //relative
|
|
4294
|
-
const getVideoPositionFromEvent = (clientX) => {
|
|
4580
|
+
const getVideoPositionFromEvent = React.useCallback((clientX) => {
|
|
4295
4581
|
if (progressRef && progressRef.current && duration) {
|
|
4296
4582
|
const bounds = progressRef.current.getBoundingClientRect();
|
|
4297
4583
|
const x = clientX - bounds.left;
|
|
@@ -4299,12 +4585,18 @@ const Controls = ({ container, }) => {
|
|
|
4299
4585
|
return videoPositionSecs;
|
|
4300
4586
|
}
|
|
4301
4587
|
return 0;
|
|
4302
|
-
};
|
|
4588
|
+
}, [progressRef, duration]);
|
|
4589
|
+
const getProgress = React.useCallback((currentTime) => {
|
|
4590
|
+
const current = currentTime - (context.part.start || 0);
|
|
4591
|
+
if (duration === 0)
|
|
4592
|
+
return 0;
|
|
4593
|
+
return (current / duration) * 100;
|
|
4594
|
+
}, [context.part.start, duration]);
|
|
4303
4595
|
const handleSkipAhead = React.useCallback((pageX) => {
|
|
4304
4596
|
const time = getVideoPositionFromEvent(pageX) + (context.part.start || 0);
|
|
4305
4597
|
setCurrentTime(time);
|
|
4306
4598
|
setProgress(getProgress(time));
|
|
4307
|
-
}, [
|
|
4599
|
+
}, [getVideoPositionFromEvent, context.part.start, setCurrentTime, getProgress]);
|
|
4308
4600
|
const onMouseEvent = (e) => {
|
|
4309
4601
|
if (progressRef && progressRef.current) {
|
|
4310
4602
|
const tooltipWidth = 40;
|
|
@@ -4315,20 +4607,51 @@ const Controls = ({ container, }) => {
|
|
|
4315
4607
|
const videoTargetDuration = getVideoPositionFromEvent(e.clientX);
|
|
4316
4608
|
setTooltipMargin(newTooltipMargin);
|
|
4317
4609
|
setTooltipLabel(formatDuration(videoTargetDuration));
|
|
4610
|
+
if (isGrabbing) {
|
|
4611
|
+
handleBookmarkUpdate(marginX, progressRef.current.clientWidth);
|
|
4612
|
+
}
|
|
4318
4613
|
}
|
|
4319
4614
|
};
|
|
4615
|
+
const handleBookmarkUpdate = React.useCallback((newX, clientW) => {
|
|
4616
|
+
if (!activeBookmark || !marks)
|
|
4617
|
+
return;
|
|
4618
|
+
const currentObsIndex = marks.findIndex((mark) => mark.id === activeBookmark.id);
|
|
4619
|
+
const value = (newX / clientW) * duration + context.part.start;
|
|
4620
|
+
const updatedMark = Object.assign(Object.assign({}, marks[currentObsIndex]), (!!fromEnd ? { end: value } : { start: value }));
|
|
4621
|
+
const newMarks = [
|
|
4622
|
+
...marks.slice(0, currentObsIndex),
|
|
4623
|
+
updatedMark,
|
|
4624
|
+
...marks.slice(currentObsIndex + 1),
|
|
4625
|
+
];
|
|
4626
|
+
setMarks(newMarks);
|
|
4627
|
+
setUpdatedMark(updatedMark);
|
|
4628
|
+
}, [activeBookmark, context.part.start, duration, fromEnd, marks]);
|
|
4320
4629
|
React.useEffect(() => {
|
|
4321
4630
|
var _a;
|
|
4322
4631
|
const currentTime = ((_a = context.player) === null || _a === void 0 ? void 0 : _a.currentTime) || 0;
|
|
4323
4632
|
setProgress(getProgress(currentTime));
|
|
4324
|
-
}, [context.player]);
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
return (
|
|
4330
|
-
|
|
4331
|
-
|
|
4633
|
+
}, [context.player, getProgress]);
|
|
4634
|
+
React.useEffect(() => {
|
|
4635
|
+
if (!marks)
|
|
4636
|
+
return;
|
|
4637
|
+
document.addEventListener("mouseup", reset);
|
|
4638
|
+
return () => {
|
|
4639
|
+
document.removeEventListener("mouseup", reset);
|
|
4640
|
+
};
|
|
4641
|
+
}, [reset, marks]);
|
|
4642
|
+
React.useEffect(() => {
|
|
4643
|
+
if (debouncedMark) {
|
|
4644
|
+
onBookMarkUpdated === null || onBookMarkUpdated === void 0 ? void 0 : onBookMarkUpdated(debouncedMark);
|
|
4645
|
+
}
|
|
4646
|
+
}, [debouncedMark, onBookMarkUpdated]);
|
|
4647
|
+
React.useEffect(() => {
|
|
4648
|
+
if (isCutting) {
|
|
4649
|
+
setCutStart(progress);
|
|
4650
|
+
}
|
|
4651
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4652
|
+
}, [isCutting]);
|
|
4653
|
+
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 &&
|
|
4654
|
+
(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 }), isCutting && jsxRuntime.jsx(CutStart, { left: cutStart }), 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 })] }))] })] })));
|
|
4332
4655
|
};
|
|
4333
4656
|
|
|
4334
4657
|
var _path$c;
|
|
@@ -4350,8 +4673,9 @@ const FloatingContainer = styled__default["default"].div `
|
|
|
4350
4673
|
top: 0;
|
|
4351
4674
|
left: 0;
|
|
4352
4675
|
right: 0;
|
|
4353
|
-
${({ isPlaying }) => isPlaying && "display: none;"}
|
|
4354
4676
|
z-index: 1;
|
|
4677
|
+
${({ isPlaying }) => isPlaying && "display: none;"}
|
|
4678
|
+
${({ showControls }) => showControls ? "height: 100%" : "height: calc(100% - 80px)"};
|
|
4355
4679
|
`;
|
|
4356
4680
|
const PlayIcon = styled__default["default"](SvgPlayIcon) ``;
|
|
4357
4681
|
const BigButton = styled__default["default"](IconButton) `
|
|
@@ -4360,6 +4684,10 @@ const BigButton = styled__default["default"](IconButton) `
|
|
|
4360
4684
|
min-width: ${({ theme }) => theme.space.base * 15}px;
|
|
4361
4685
|
width: 80px;
|
|
4362
4686
|
height: 80px;
|
|
4687
|
+
|
|
4688
|
+
box-shadow: ${({ theme }) => theme.shadows.boxShadow(theme)};
|
|
4689
|
+
|
|
4690
|
+
|
|
4363
4691
|
${PlayIcon} {
|
|
4364
4692
|
width: 60%;
|
|
4365
4693
|
height: 60%;
|
|
@@ -4372,8 +4700,8 @@ const ButtonsContainer = styled__default["default"].div `
|
|
|
4372
4700
|
height: 100%;
|
|
4373
4701
|
`;
|
|
4374
4702
|
const FloatingControls = (props) => {
|
|
4375
|
-
const { isPlaying, onClick } = props;
|
|
4376
|
-
return (jsxRuntime.jsx(FloatingContainer, Object.assign({ isPlaying: isPlaying, onClick: onClick }, { children: jsxRuntime.jsx(ButtonsContainer, { children: !isPlaying && (jsxRuntime.jsx(BigButton, Object.assign({ isPrimary: true, size: "large" }, { children: jsxRuntime.jsx(PlayIcon, { color: "red" }) }))) }) })));
|
|
4703
|
+
const { isPlaying, showControls, onClick } = props;
|
|
4704
|
+
return (jsxRuntime.jsx(FloatingContainer, Object.assign({ isPlaying: isPlaying, showControls: showControls, onClick: onClick }, { children: jsxRuntime.jsx(ButtonsContainer, { children: !isPlaying && (jsxRuntime.jsx(BigButton, Object.assign({ isPrimary: true, size: "large" }, { children: jsxRuntime.jsx(PlayIcon, { color: "red" }) }))) }) })));
|
|
4377
4705
|
};
|
|
4378
4706
|
|
|
4379
4707
|
const VideoStyle = styled.css `
|
|
@@ -4399,9 +4727,13 @@ const VideoStyle = styled.css `
|
|
|
4399
4727
|
|
|
4400
4728
|
const Container$1 = styled__default["default"].div `
|
|
4401
4729
|
position: relative;
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4730
|
+
${({ showControls }) => !showControls ? `
|
|
4731
|
+
display: flex;
|
|
4732
|
+
flex-direction: column;
|
|
4733
|
+
justify-content: center;
|
|
4734
|
+
` : `
|
|
4735
|
+
margin-bottom: 80px;
|
|
4736
|
+
`}
|
|
4405
4737
|
height: 100%;
|
|
4406
4738
|
width: 100%;
|
|
4407
4739
|
video {
|
|
@@ -4426,8 +4758,7 @@ const Container$1 = styled__default["default"].div `
|
|
|
4426
4758
|
}
|
|
4427
4759
|
}
|
|
4428
4760
|
}
|
|
4429
|
-
|
|
4430
|
-
background-color: ${({ theme }) => theme.palette.grey[700]};
|
|
4761
|
+
background: ${({ theme }) => theme.palette.grey[400]};
|
|
4431
4762
|
`;
|
|
4432
4763
|
|
|
4433
4764
|
const UgSpinner = styled__default["default"](reactLoaders.Spinner) ``;
|
|
@@ -4455,18 +4786,15 @@ const VideoSpinner = () => (jsxRuntime.jsx(StyledDiv, { children: jsxRuntime.jsx
|
|
|
4455
4786
|
* Used for this:
|
|
4456
4787
|
- To display a video
|
|
4457
4788
|
*/
|
|
4458
|
-
const Player = React.forwardRef((props, forwardRef) => {
|
|
4459
|
-
const videoRef = React.useRef(null);
|
|
4460
|
-
React.useImperativeHandle(forwardRef, () => videoRef.current);
|
|
4461
|
-
return (jsxRuntime.jsx(Video__default["default"], Object.assign({ src: props.url }, props, { children: jsxRuntime.jsx(PlayerCore, Object.assign({ ref: videoRef }, props)) })));
|
|
4462
|
-
});
|
|
4789
|
+
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)) }))));
|
|
4463
4790
|
const PlayerCore = React.forwardRef((props, forwardRef) => {
|
|
4464
4791
|
var _a;
|
|
4465
4792
|
const { context, togglePlay, setIsPlaying } = Video.useVideoContext();
|
|
4793
|
+
const { onCutHandler, bookmarks, isCutting } = props;
|
|
4466
4794
|
const videoRef = (_a = context.player) === null || _a === void 0 ? void 0 : _a.ref.current;
|
|
4467
4795
|
const isLoaded = !!videoRef;
|
|
4468
4796
|
const containerRef = React.useRef(null);
|
|
4469
|
-
React.useImperativeHandle(forwardRef, () => videoRef);
|
|
4797
|
+
React.useImperativeHandle(forwardRef, () => videoRef, [videoRef]);
|
|
4470
4798
|
React.useEffect(() => {
|
|
4471
4799
|
if (videoRef) {
|
|
4472
4800
|
videoRef.addEventListener("pause", () => {
|
|
@@ -4480,10 +4808,19 @@ const PlayerCore = React.forwardRef((props, forwardRef) => {
|
|
|
4480
4808
|
});
|
|
4481
4809
|
}
|
|
4482
4810
|
};
|
|
4483
|
-
}, [videoRef]);
|
|
4484
|
-
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 })] })));
|
|
4811
|
+
}, [setIsPlaying, videoRef]);
|
|
4812
|
+
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, showControls: props.showControls, 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 }) })] })));
|
|
4485
4813
|
});
|
|
4486
4814
|
|
|
4815
|
+
const MediaLightBox = ({ header, onClose, slideChange, selectedImageIndex, thumbnails, videoRefs, isOpen, details }) => {
|
|
4816
|
+
if (!isOpen) {
|
|
4817
|
+
return null;
|
|
4818
|
+
}
|
|
4819
|
+
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) => {
|
|
4820
|
+
videoRefs.current.push(ref);
|
|
4821
|
+
}, 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" })] })));
|
|
4822
|
+
};
|
|
4823
|
+
|
|
4487
4824
|
const ChatBoxContainer = styled__default["default"].div `
|
|
4488
4825
|
display: flex;
|
|
4489
4826
|
border-top: 1px solid ${({ theme }) => theme.palette.grey[200]};
|
|
@@ -4503,14 +4840,19 @@ const ChatBoxContainer = styled__default["default"].div `
|
|
|
4503
4840
|
- Simple text input, use textarea instead.
|
|
4504
4841
|
*/
|
|
4505
4842
|
const CommentBox = (_a) => {
|
|
4843
|
+
var _b;
|
|
4506
4844
|
var { placeholderOptions } = _a, props = __rest(_a, ["placeholderOptions"]);
|
|
4507
4845
|
const { children, hasFloatingMenu, hasButtonsMenu, bubbleOptions, i18n } = props;
|
|
4508
4846
|
const { editor, setEditor, mentionableUsers, triggerSave, thumbnails, addThumbnails, } = useChatContext();
|
|
4509
|
-
const { addToast } = useToast();
|
|
4510
4847
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
4511
|
-
const [selectedImage, setSelectedImage] = React.useState({});
|
|
4512
4848
|
const [selectedImageIndex, setSelectedImageIndex] = React.useState(0);
|
|
4849
|
+
const { getMedia } = useMedia();
|
|
4513
4850
|
const ext = editorExtensions({ placeholderOptions, mentionableUsers });
|
|
4851
|
+
function handleEvent(data) {
|
|
4852
|
+
if (!data || !data.files)
|
|
4853
|
+
return;
|
|
4854
|
+
addThumbnails({ files: getMedia(data.files) });
|
|
4855
|
+
}
|
|
4514
4856
|
const closeLightbox = () => {
|
|
4515
4857
|
setIsOpen(false);
|
|
4516
4858
|
};
|
|
@@ -4523,10 +4865,7 @@ const CommentBox = (_a) => {
|
|
|
4523
4865
|
}
|
|
4524
4866
|
});
|
|
4525
4867
|
}, [videoRefs]);
|
|
4526
|
-
const handleOpenLightbox = (
|
|
4527
|
-
if (!file)
|
|
4528
|
-
throw Error("Error with the image");
|
|
4529
|
-
setSelectedImage(file);
|
|
4868
|
+
const handleOpenLightbox = (index) => {
|
|
4530
4869
|
setSelectedImageIndex(index);
|
|
4531
4870
|
setIsOpen(true);
|
|
4532
4871
|
};
|
|
@@ -4538,59 +4877,13 @@ const CommentBox = (_a) => {
|
|
|
4538
4877
|
return false;
|
|
4539
4878
|
},
|
|
4540
4879
|
handleDrop: function (view, event, slice, moved) {
|
|
4541
|
-
if (!event.dataTransfer || !event.dataTransfer.files)
|
|
4542
|
-
return false;
|
|
4543
4880
|
event.preventDefault();
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
for (const file of wronfFiles) {
|
|
4550
|
-
addToast(({ close }) => (jsxRuntime.jsx(Notification, { onClose: close, type: "error", message: `${props.messageBadFileFormat} - ${file.name}`, isPrimary: true })), { placement: "top" });
|
|
4551
|
-
}
|
|
4552
|
-
}
|
|
4553
|
-
const mediaFiles = files.filter((file) => /^(image|video)\//.test(file.type));
|
|
4554
|
-
if (mediaFiles.length === 0)
|
|
4555
|
-
return false;
|
|
4556
|
-
addThumbnails({ files: mediaFiles });
|
|
4557
|
-
return false;
|
|
4881
|
+
handleEvent(event.dataTransfer);
|
|
4882
|
+
},
|
|
4883
|
+
handlePaste: (view, event, slice) => {
|
|
4884
|
+
event.preventDefault();
|
|
4885
|
+
handleEvent(event.clipboardData);
|
|
4558
4886
|
},
|
|
4559
|
-
/*handlePaste: (view, event, slice) => {
|
|
4560
|
-
if (!event.clipboardData || !event.clipboardData.items) return false;
|
|
4561
|
-
|
|
4562
|
-
event.preventDefault();
|
|
4563
|
-
|
|
4564
|
-
const items = Array.from(event.clipboardData.items);
|
|
4565
|
-
|
|
4566
|
-
const imageItems = items.filter(
|
|
4567
|
-
(item) => item.type && item.type.startsWith("image/")
|
|
4568
|
-
);
|
|
4569
|
-
const textItem = items.find((item) => item.type === "text/plain");
|
|
4570
|
-
|
|
4571
|
-
if (imageItems.length > 0) {
|
|
4572
|
-
imageItems.forEach((imageItem) => {
|
|
4573
|
-
const file = imageItem.getAsFile();
|
|
4574
|
-
if (file) {
|
|
4575
|
-
const imageUrl = URL.createObjectURL(file);
|
|
4576
|
-
const node = view.state.schema.nodes.image.create({
|
|
4577
|
-
src: imageUrl,
|
|
4578
|
-
});
|
|
4579
|
-
const transaction = view.state.tr.replaceSelectionWith(node);
|
|
4580
|
-
view.dispatch(transaction);
|
|
4581
|
-
}
|
|
4582
|
-
});
|
|
4583
|
-
} else if (textItem) {
|
|
4584
|
-
textItem.getAsString(async (text) => {
|
|
4585
|
-
const node = view.state.schema.text(text);
|
|
4586
|
-
const tr = view.state.tr;
|
|
4587
|
-
tr.replaceSelectionWith(node);
|
|
4588
|
-
view.dispatch(tr);
|
|
4589
|
-
});
|
|
4590
|
-
}
|
|
4591
|
-
|
|
4592
|
-
return true;
|
|
4593
|
-
},*/
|
|
4594
4887
|
} }, props));
|
|
4595
4888
|
const onKeyDown = (event) => {
|
|
4596
4889
|
if ((event.ctrlKey || event.metaKey) && event.key === "Enter") {
|
|
@@ -4602,14 +4895,32 @@ const CommentBox = (_a) => {
|
|
|
4602
4895
|
return null;
|
|
4603
4896
|
ed.on("create", ({ editor }) => setEditor(editor));
|
|
4604
4897
|
ed.on("update", ({ editor }) => setEditor(editor));
|
|
4605
|
-
|
|
4606
|
-
return Object.assign(file, { isLoadingMedia: file.isLoadingMedia });
|
|
4607
|
-
});
|
|
4608
|
-
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) => {
|
|
4609
|
-
videoRefs.current.push(ref);
|
|
4610
|
-
}, 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 })] }));
|
|
4898
|
+
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 })] }));
|
|
4611
4899
|
};
|
|
4612
4900
|
|
|
4901
|
+
const UgGrid = styled__default["default"](reactGrid.Grid) `
|
|
4902
|
+
padding-left: 0;
|
|
4903
|
+
padding-right: 0;
|
|
4904
|
+
`;
|
|
4905
|
+
/**
|
|
4906
|
+
* The Grid component is a framework for building modular layouts.
|
|
4907
|
+
* <hr>
|
|
4908
|
+
* Used for this:
|
|
4909
|
+
- To structure the layout of a page
|
|
4910
|
+
*/
|
|
4911
|
+
const Grid = (props) => jsxRuntime.jsx(UgGrid, Object.assign({}, props));
|
|
4912
|
+
|
|
4913
|
+
const Row$1 = (props) => jsxRuntime.jsx(reactGrid.Row, Object.assign({}, props));
|
|
4914
|
+
|
|
4915
|
+
const StyledCol$1 = styled__default["default"](reactGrid.Col) `
|
|
4916
|
+
margin-bottom: ${theme.space.lg};
|
|
4917
|
+
|
|
4918
|
+
@media screen and (max-width: ${theme.breakpoints.sm}) {
|
|
4919
|
+
margin-bottom: ${theme.space.md};
|
|
4920
|
+
}
|
|
4921
|
+
`;
|
|
4922
|
+
const Col = (props) => jsxRuntime.jsx(StyledCol$1, Object.assign({}, props));
|
|
4923
|
+
|
|
4613
4924
|
const CommentCard = styled.styled(Card) `
|
|
4614
4925
|
padding: ${({ theme }) => `${theme.space.base * 3}px ${theme.space.sm}`};
|
|
4615
4926
|
background-color: ${({ theme }) => theme.palette.grey[100]};
|
|
@@ -4653,13 +4964,9 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
|
|
|
4653
4964
|
var _a, _b;
|
|
4654
4965
|
const { mentionableUsers } = useChatContext();
|
|
4655
4966
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
4656
|
-
const [selectedImage, setSelectedImage] = React.useState({});
|
|
4657
4967
|
const [selectedImageIndex, setSelectedImageIndex] = React.useState(0);
|
|
4658
4968
|
const ext = editorExtensions({ mentionableUsers });
|
|
4659
|
-
const handleClickThumbnail = (
|
|
4660
|
-
if (!file)
|
|
4661
|
-
throw Error("Error with the image");
|
|
4662
|
-
setSelectedImage(file);
|
|
4969
|
+
const handleClickThumbnail = (index) => {
|
|
4663
4970
|
setSelectedImageIndex(index);
|
|
4664
4971
|
setIsOpen(true);
|
|
4665
4972
|
};
|
|
@@ -4668,7 +4975,6 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
|
|
|
4668
4975
|
};
|
|
4669
4976
|
const videoRefs = React.useRef([]);
|
|
4670
4977
|
const slideChange = React.useCallback((index) => {
|
|
4671
|
-
setSelectedImage(media[index]);
|
|
4672
4978
|
setSelectedImageIndex(index);
|
|
4673
4979
|
videoRefs.current.forEach((ref) => {
|
|
4674
4980
|
if (ref) {
|
|
@@ -4685,23 +4991,12 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
|
|
|
4685
4991
|
ed.setOptions({
|
|
4686
4992
|
editable: false,
|
|
4687
4993
|
});
|
|
4688
|
-
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) => {
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
if (file.type.includes('video'))
|
|
4695
|
-
return (jsxRuntime.jsx(Col, Object.assign({ xs: 12, sm: 4, className: "flex-3-sm" }, { children: jsxRuntime.jsx(VideoThumbnail, { src: file.url, index: index, showX: true, isLoadingMedia: false, clickThumbnail: () => {
|
|
4696
|
-
handleClickThumbnail(file, index);
|
|
4697
|
-
} }, index) })));
|
|
4698
|
-
return null;
|
|
4699
|
-
}) })) }), 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) => {
|
|
4700
|
-
videoRefs.current.push(ref);
|
|
4701
|
-
}, url: item.url }))] }))) })) })), jsxRuntime.jsx(Lightbox.Body.Details, Object.assign({ style: { flex: 1 } }, { children: jsxRuntime.jsx(Comment, Object.assign({ header: header, author: {
|
|
4702
|
-
avatar: author.avatar,
|
|
4703
|
-
name: author.name,
|
|
4704
|
-
}, 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 })] }));
|
|
4994
|
+
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: () => {
|
|
4995
|
+
handleClickThumbnail(index);
|
|
4996
|
+
} }) }), 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: {
|
|
4997
|
+
avatar: author.avatar,
|
|
4998
|
+
name: author.name,
|
|
4999
|
+
}, date: date, message: message }, { children: jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("br", {}) }) })) }), jsxRuntime.jsx(Footer$2, { children: children })] }));
|
|
4705
5000
|
};
|
|
4706
5001
|
|
|
4707
5002
|
/**
|
|
@@ -5340,6 +5635,203 @@ const UgToggle = styled__default["default"](reactForms.Toggle) ``;
|
|
|
5340
5635
|
**/
|
|
5341
5636
|
const Toggle = (props) => jsxRuntime.jsx(UgToggle, Object.assign({}, props));
|
|
5342
5637
|
|
|
5638
|
+
const HighlightContext = React.createContext(null);
|
|
5639
|
+
const HighlightContextProvider = ({ term, children, }) => {
|
|
5640
|
+
const [searchTerm, setsearchTerm] = React.useState(term !== null && term !== void 0 ? term : "");
|
|
5641
|
+
React.useEffect(() => {
|
|
5642
|
+
setsearchTerm(term !== null && term !== void 0 ? term : "");
|
|
5643
|
+
}, [term]);
|
|
5644
|
+
const HighlightContextValue = React.useMemo(() => ({
|
|
5645
|
+
searchTerm,
|
|
5646
|
+
}), [searchTerm]);
|
|
5647
|
+
return (jsxRuntime.jsx(HighlightContext.Provider, Object.assign({ value: HighlightContextValue }, { children: children })));
|
|
5648
|
+
};
|
|
5649
|
+
const useHighlightContext = () => {
|
|
5650
|
+
const context = React.useContext(HighlightContext);
|
|
5651
|
+
if (!context)
|
|
5652
|
+
throw new Error("Provider not found for HighlightContextProvider");
|
|
5653
|
+
return context; // Now we can use the context in the component, SAFELY.
|
|
5654
|
+
};
|
|
5655
|
+
|
|
5656
|
+
const StyledSearchWord = styled__default["default"].span `
|
|
5657
|
+
background-color: ${({ theme }) => theme.palette.product.talk};
|
|
5658
|
+
color: ${({ theme }) => theme.palette.grey[700]};
|
|
5659
|
+
`;
|
|
5660
|
+
const Searchable = ({ text, }) => {
|
|
5661
|
+
const { searchTerm } = useHighlightContext();
|
|
5662
|
+
if (searchTerm) {
|
|
5663
|
+
const parts = text.split(new RegExp(`(${searchTerm})`, "gi"));
|
|
5664
|
+
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 }))) }));
|
|
5665
|
+
}
|
|
5666
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: text });
|
|
5667
|
+
};
|
|
5668
|
+
|
|
5669
|
+
const CreateObservationButton = styled.styled(Button) `
|
|
5670
|
+
user-select: none;
|
|
5671
|
+
position: absolute;
|
|
5672
|
+
left: ${({ position: { x } }) => x}px;
|
|
5673
|
+
top: ${({ position: { y } }) => y}px;
|
|
5674
|
+
transform: translate(-50%, 0);
|
|
5675
|
+
z-index: ${({ theme }) => theme.levels.front};
|
|
5676
|
+
`;
|
|
5677
|
+
|
|
5678
|
+
const getFocusedObs = (observations) => {
|
|
5679
|
+
return observations.find((obs) => obs.isFocused);
|
|
5680
|
+
};
|
|
5681
|
+
const StyledWord = styled__default["default"].div `
|
|
5682
|
+
display: inline-block;
|
|
5683
|
+
font-size: ${({ theme, size }) => theme.fontSizes[size !== null && size !== void 0 ? size : "md"]};
|
|
5684
|
+
padding: ${({ theme }) => theme.space.xxs} 0;
|
|
5685
|
+
position: relative;
|
|
5686
|
+
color: ${({ theme }) => theme.palette.grey[700]};
|
|
5687
|
+
white-space: pre;
|
|
5688
|
+
|
|
5689
|
+
${({ observations, theme }) => {
|
|
5690
|
+
var _a;
|
|
5691
|
+
return observations && observations.length > 0 &&
|
|
5692
|
+
`
|
|
5693
|
+
color: ${(_a = observations[observations.length - 1].color) !== null && _a !== void 0 ? _a : theme.palette.grey[600]};
|
|
5694
|
+
box-sizing: border-box;
|
|
5695
|
+
font-weight: ${getFocusedObs(observations) ? theme.fontWeights.extrabold : theme.fontWeights.semibold};
|
|
5696
|
+
font-style: ${getFocusedObs(observations) ? 'italic' : 'normal'};
|
|
5697
|
+
z-index: 1;
|
|
5698
|
+
&:focus {
|
|
5699
|
+
outline: none;
|
|
5700
|
+
}
|
|
5701
|
+
`;
|
|
5702
|
+
}}
|
|
5703
|
+
`;
|
|
5704
|
+
const ActiveWord = styled__default["default"].span `
|
|
5705
|
+
position: relative;
|
|
5706
|
+
z-index: 2;
|
|
5707
|
+
background-color: ${({ theme }) => getColor(theme.palette.fuschia, 400, undefined, 0.4)};
|
|
5708
|
+
`;
|
|
5709
|
+
const WordsContainer = styled__default["default"].div `
|
|
5710
|
+
box-sizing: border-box;
|
|
5711
|
+
${StyledWord}, span {
|
|
5712
|
+
&::selection {
|
|
5713
|
+
background-color: ${({ theme }) => getColor(theme.palette.grey, 400, undefined, 0.5)};
|
|
5714
|
+
}
|
|
5715
|
+
}
|
|
5716
|
+
`;
|
|
5717
|
+
const Layer = styled__default["default"].div `
|
|
5718
|
+
position: absolute;
|
|
5719
|
+
top: 0;
|
|
5720
|
+
left: 0;
|
|
5721
|
+
width: 100%;
|
|
5722
|
+
height: 100%;
|
|
5723
|
+
z-index: 0;
|
|
5724
|
+
background-color: ${({ color }) => getColor(color, undefined, undefined, 0.2)};
|
|
5725
|
+
`;
|
|
5726
|
+
/**
|
|
5727
|
+
* Use Highlight to use highlight interation on any text element
|
|
5728
|
+
*/
|
|
5729
|
+
const Highlight = (props) => {
|
|
5730
|
+
var _a;
|
|
5731
|
+
const { onSelectionButtonClick, search, i18n, children } = props;
|
|
5732
|
+
const ref = React.useRef(null);
|
|
5733
|
+
const [isSelecting, setIsSelecting] = React.useState(false);
|
|
5734
|
+
const [position, setPosition] = React.useState();
|
|
5735
|
+
const [selection, setSelection] = React.useState();
|
|
5736
|
+
const activeSelection = document.getSelection();
|
|
5737
|
+
const extractText = (selection) => {
|
|
5738
|
+
if (selection.anchorNode === null || selection.focusNode === null)
|
|
5739
|
+
return "";
|
|
5740
|
+
var range = selection.getRangeAt(0);
|
|
5741
|
+
var tempDiv = document.createElement("div");
|
|
5742
|
+
tempDiv.appendChild(range.cloneContents());
|
|
5743
|
+
var items = tempDiv.querySelectorAll("div");
|
|
5744
|
+
items.forEach(function (item) {
|
|
5745
|
+
if (item.getAttribute("data-unselectable")) {
|
|
5746
|
+
item.remove();
|
|
5747
|
+
}
|
|
5748
|
+
});
|
|
5749
|
+
var filteredText = tempDiv.textContent || tempDiv.innerText;
|
|
5750
|
+
return filteredText.length ? filteredText.trim() : selection.toString();
|
|
5751
|
+
};
|
|
5752
|
+
const handleSelectionChange = React.useCallback(() => {
|
|
5753
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
5754
|
+
if (activeSelection && activeSelection.toString().length > 0) {
|
|
5755
|
+
// Extract the text from the selection cleaning unselectable items
|
|
5756
|
+
const text = extractText(activeSelection);
|
|
5757
|
+
if (!text)
|
|
5758
|
+
return;
|
|
5759
|
+
const anchorNode = (_a = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.anchorNode) === null || _a === void 0 ? void 0 : _a.parentElement;
|
|
5760
|
+
const focusNode = (_b = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.focusNode) === null || _b === void 0 ? void 0 : _b.parentElement;
|
|
5761
|
+
if (anchorNode &&
|
|
5762
|
+
focusNode &&
|
|
5763
|
+
((_c = ref.current) === null || _c === void 0 ? void 0 : _c.contains(anchorNode)) && // Selection starts inside the ref
|
|
5764
|
+
((_d = ref.current) === null || _d === void 0 ? void 0 : _d.contains(focusNode)) // Selection ends inside the ref
|
|
5765
|
+
) {
|
|
5766
|
+
if (onSelectionButtonClick) {
|
|
5767
|
+
setIsSelecting(true);
|
|
5768
|
+
const range = activeSelection.getRangeAt(0);
|
|
5769
|
+
const rects = range.getClientRects();
|
|
5770
|
+
const lastRect = rects[rects.length - 1];
|
|
5771
|
+
const containerRect = ref && ref.current
|
|
5772
|
+
? ref.current.getBoundingClientRect()
|
|
5773
|
+
: null;
|
|
5774
|
+
if (!lastRect || !containerRect)
|
|
5775
|
+
return;
|
|
5776
|
+
const relativeY = lastRect.bottom - containerRect.top + ref.current.scrollTop;
|
|
5777
|
+
const relativeX = lastRect.right - containerRect.left + ref.current.scrollLeft;
|
|
5778
|
+
if (relativeY > 0 || relativeX > 0)
|
|
5779
|
+
// Fix to avoid the button to be placed sometimes at the top left corner of the screen (X: 0, Y: 0)
|
|
5780
|
+
setPosition({
|
|
5781
|
+
x: relativeX,
|
|
5782
|
+
y: relativeY + 15,
|
|
5783
|
+
});
|
|
5784
|
+
}
|
|
5785
|
+
else {
|
|
5786
|
+
setIsSelecting(false);
|
|
5787
|
+
}
|
|
5788
|
+
const selectionPart = {
|
|
5789
|
+
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")),
|
|
5790
|
+
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")),
|
|
5791
|
+
};
|
|
5792
|
+
setSelection(Object.assign(Object.assign({}, selectionPart), { text }));
|
|
5793
|
+
}
|
|
5794
|
+
else {
|
|
5795
|
+
setIsSelecting(false);
|
|
5796
|
+
}
|
|
5797
|
+
}
|
|
5798
|
+
else {
|
|
5799
|
+
setIsSelecting(false);
|
|
5800
|
+
}
|
|
5801
|
+
}, [onSelectionButtonClick, activeSelection]);
|
|
5802
|
+
React.useEffect(() => {
|
|
5803
|
+
if (ref.current === null)
|
|
5804
|
+
return;
|
|
5805
|
+
document.addEventListener("selectionchange", handleSelectionChange);
|
|
5806
|
+
return () => {
|
|
5807
|
+
document.removeEventListener("selectionchange", handleSelectionChange);
|
|
5808
|
+
};
|
|
5809
|
+
}, [ref, props, handleSelectionChange]);
|
|
5810
|
+
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 : {
|
|
5811
|
+
x: 0,
|
|
5812
|
+
y: 0,
|
|
5813
|
+
}, 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"] })))] })));
|
|
5814
|
+
};
|
|
5815
|
+
const Word = (props) => {
|
|
5816
|
+
const isActive = props.currentTime &&
|
|
5817
|
+
props.currentTime >= props.start &&
|
|
5818
|
+
props.currentTime < props.end;
|
|
5819
|
+
// Are there any observations containing this word?
|
|
5820
|
+
const foundObservations = React.useMemo(() => {
|
|
5821
|
+
var _a, _b;
|
|
5822
|
+
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 : [];
|
|
5823
|
+
}, [props.observations, props.start, props.end]);
|
|
5824
|
+
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) => {
|
|
5825
|
+
var _a;
|
|
5826
|
+
return (jsxRuntime.jsx(Layer, { color: (_a = obs.hue) !== null && _a !== void 0 ? _a : theme.palette.grey[600] }, obs.id));
|
|
5827
|
+
}), 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]);
|
|
5828
|
+
if (props.tooltipContent !== undefined && foundObservations.length > 0) {
|
|
5829
|
+
return (jsxRuntime.jsx(Tooltip, Object.assign({ content: props.tooltipContent(foundObservations), isTransparent: true }, { children: ObsWord })));
|
|
5830
|
+
}
|
|
5831
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: ObsWord });
|
|
5832
|
+
};
|
|
5833
|
+
Highlight.Word = Word;
|
|
5834
|
+
|
|
5343
5835
|
/**
|
|
5344
5836
|
* The Dots loader communicates ongoing activity after a user takes an action.
|
|
5345
5837
|
* It tells them that something is taking place.
|
|
@@ -6816,6 +7308,7 @@ exports.HeaderItem = HeaderItem;
|
|
|
6816
7308
|
exports.HeaderItemIcon = HeaderItemIcon;
|
|
6817
7309
|
exports.HeaderItemText = HeaderItemText;
|
|
6818
7310
|
exports.HeaderRow = HeaderRow;
|
|
7311
|
+
exports.Highlight = Highlight;
|
|
6819
7312
|
exports.Hint = Hint;
|
|
6820
7313
|
exports.Icon = Icon;
|
|
6821
7314
|
exports.IconButton = IconButton;
|