@appquality/unguess-design-system 3.1.91-beta-attachments → 3.1.91-test-media-errors

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +307 -0
  2. package/build/index.d.ts +1 -0
  3. package/build/index.js +1058 -670
  4. package/build/stories/chat/_types.d.ts +7 -4
  5. package/build/stories/chat/context/chatContext.d.ts +8 -6
  6. package/build/stories/chat/hooks/useMedia.d.ts +8 -0
  7. package/build/stories/chat/index.stories.d.ts +3 -4
  8. package/build/stories/chat/parts/MediaLightbox.d.ts +14 -0
  9. package/build/stories/chat/parts/ThumbnailContainer/Thumbnail.d.ts +11 -0
  10. package/build/stories/chat/parts/ThumbnailContainer/index.d.ts +1 -8
  11. package/build/stories/chat/parts/comment.d.ts +2 -7
  12. package/build/stories/highlight/_types.d.ts +36 -0
  13. package/build/stories/highlight/demo-parts/data.d.ts +55 -0
  14. package/build/stories/highlight/demo-parts/sentiment-tag.d.ts +7 -0
  15. package/build/stories/highlight/demo-parts/transcript-base.d.ts +5 -0
  16. package/build/stories/highlight/demo-parts/transcript-diarization.d.ts +5 -0
  17. package/build/stories/highlight/demo-parts/transcript-paragraph.d.ts +5 -0
  18. package/build/stories/highlight/demo-parts/transcript-sentiment.d.ts +5 -0
  19. package/build/stories/highlight/highlightContext.d.ts +10 -0
  20. package/build/stories/highlight/index.d.ts +10 -0
  21. package/build/stories/highlight/index.stories.d.ts +17 -0
  22. package/build/stories/highlight/searchable.d.ts +3 -0
  23. package/build/stories/player/_types.d.ts +34 -1
  24. package/build/stories/player/context/progressContext.d.ts +16 -0
  25. package/build/stories/player/index.stories.d.ts +1 -2
  26. package/build/stories/player/parts/bookmark.d.ts +2 -0
  27. package/build/stories/player/parts/controlButton.d.ts +289 -0
  28. package/build/stories/player/parts/controls.d.ts +7 -2
  29. package/build/stories/player/parts/controlsCenterGroup.d.ts +2 -1
  30. package/build/stories/player/parts/cutterButton.d.ts +6 -0
  31. package/build/stories/player/parts/progress.d.ts +11 -0
  32. package/build/stories/player/parts/timeLabel.d.ts +2 -2
  33. package/build/stories/tooltip/_types.d.ts +1 -0
  34. package/build/stories/tooltip/index.d.ts +1 -0
  35. package/build/stories/tooltip/index.stories.d.ts +1 -0
  36. package/package.json +5 -2
  37. package/yarn-error.log +17994 -0
  38. package/.vscode/settings.json +0 -3
  39. package/build/stories/chat/parts/ThumbnailContainer/ImageThumbnail.d.ts +0 -11
  40. package/build/stories/chat/parts/ThumbnailContainer/VideoThumbnail.d.ts +0 -11
  41. /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$c, _h;
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$c = reactTheming.DEFAULT_THEME.components) === null || _g$c === void 0 ? void 0 : _g$c.notification) === null || _h === void 0 ? void 0 : _h.well), { padding: "16px" }) }) }), cardCmponentStyle), { "text.primary": () => ({
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),
@@ -841,48 +842,48 @@ Tag.Avatar = StyledAvatar;
841
842
  Tag.Close = StyledClose;
842
843
  Tag.SecondaryText = StyledSpan;
843
844
 
844
- var _path$E;
845
- 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); }
846
- const SvgUgSquare = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$Q({
845
+ var _path$G;
846
+ 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); }
847
+ const SvgUgSquare = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$T({
847
848
  width: 24,
848
849
  height: 24,
849
850
  viewBox: "0 0 24 24",
850
851
  fill: "none",
851
852
  xmlns: "http://www.w3.org/2000/svg"
852
- }, props), _path$E || (_path$E = /*#__PURE__*/React__namespace.createElement("path", {
853
+ }, props), _path$G || (_path$G = /*#__PURE__*/React__namespace.createElement("path", {
853
854
  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
855
  fill: "#E80C7A"
855
856
  })));
856
857
 
857
- var _path$D;
858
- 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); }
859
- const SvgUgCircle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$P({
858
+ var _path$F;
859
+ 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); }
860
+ const SvgUgCircle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$S({
860
861
  width: 24,
861
862
  height: 24,
862
863
  viewBox: "0 0 24 24",
863
864
  fill: "none",
864
865
  xmlns: "http://www.w3.org/2000/svg"
865
- }, props), _path$D || (_path$D = /*#__PURE__*/React__namespace.createElement("path", {
866
+ }, props), _path$F || (_path$F = /*#__PURE__*/React__namespace.createElement("path", {
866
867
  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
868
  fill: "#FFCD1A"
868
869
  })));
869
870
 
870
- var _path$C;
871
- 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); }
872
- const SvgUgTriangle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$O({
871
+ var _path$E;
872
+ 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); }
873
+ const SvgUgTriangle = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$R({
873
874
  width: 24,
874
875
  height: 24,
875
876
  viewBox: "0 0 24 24",
876
877
  fill: "none",
877
878
  xmlns: "http://www.w3.org/2000/svg"
878
- }, props), _path$C || (_path$C = /*#__PURE__*/React__namespace.createElement("path", {
879
+ }, props), _path$E || (_path$E = /*#__PURE__*/React__namespace.createElement("path", {
879
880
  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
881
  fill: "#7B0DFF"
881
882
  })));
882
883
 
883
- var _rect$4, _path$B, _path2$c, _path3$4;
884
- 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); }
885
- const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$N({
884
+ var _rect$4, _path$D, _path2$c, _path3$4;
885
+ 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); }
886
+ const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$Q({
886
887
  width: 24,
887
888
  height: 24,
888
889
  viewBox: "0 0 24 24",
@@ -893,7 +894,7 @@ const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElemen
893
894
  height: 24,
894
895
  rx: 12,
895
896
  fill: "#F6F6F8"
896
- })), _path$B || (_path$B = /*#__PURE__*/React__namespace.createElement("path", {
897
+ })), _path$D || (_path$D = /*#__PURE__*/React__namespace.createElement("path", {
897
898
  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
899
  fill: "#50BF95"
899
900
  })), _path2$c || (_path2$c = /*#__PURE__*/React__namespace.createElement("path", {
@@ -904,9 +905,9 @@ const SvgCampaignCompleted = props => /*#__PURE__*/React__namespace.createElemen
904
905
  fill: "#007345"
905
906
  })));
906
907
 
907
- var _rect$3, _path$A, _path2$b;
908
- 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); }
909
- const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$M({
908
+ var _rect$3, _path$C, _path2$b;
909
+ 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); }
910
+ const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$P({
910
911
  width: 24,
911
912
  height: 24,
912
913
  viewBox: "0 0 24 24",
@@ -917,7 +918,7 @@ const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("
917
918
  height: 24,
918
919
  rx: 12,
919
920
  fill: "#F6F6F8"
920
- })), _path$A || (_path$A = /*#__PURE__*/React__namespace.createElement("path", {
921
+ })), _path$C || (_path$C = /*#__PURE__*/React__namespace.createElement("path", {
921
922
  fillRule: "evenodd",
922
923
  clipRule: "evenodd",
923
924
  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 +930,9 @@ const SvgCampaignLocked = props => /*#__PURE__*/React__namespace.createElement("
929
930
  fill: "#F4AC1A"
930
931
  })));
931
932
 
932
- var _rect$2, _path$z, _path2$a;
933
- 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); }
934
- const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$L({
933
+ var _rect$2, _path$B, _path2$a;
934
+ 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); }
935
+ const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$O({
935
936
  width: 24,
936
937
  height: 24,
937
938
  viewBox: "0 0 24 24",
@@ -942,7 +943,7 @@ const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement
942
943
  height: 24,
943
944
  rx: 12,
944
945
  fill: "#F6F6F8"
945
- })), _path$z || (_path$z = /*#__PURE__*/React__namespace.createElement("path", {
946
+ })), _path$B || (_path$B = /*#__PURE__*/React__namespace.createElement("path", {
946
947
  d: "M11.2266 13.0313H14.997M11.2266 9.26075V13.0313V9.26075ZM11.2266 13.0313L20.121 5.03906L11.2266 13.0313Z",
947
948
  stroke: "#024780",
948
949
  strokeWidth: 1.5,
@@ -956,9 +957,9 @@ const SvgCampaignIncoming = props => /*#__PURE__*/React__namespace.createElement
956
957
  strokeLinejoin: "round"
957
958
  })));
958
959
 
959
- var _rect$1, _path$y, _path2$9, _path3$3, _path4$1, _path5$1, _path6$1, _path7$1, _path8$1, _path9$1, _path10$1;
960
- 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); }
961
- const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$K({
960
+ var _rect$1, _path$A, _path2$9, _path3$3, _path4$1, _path5$1, _path6$1, _path7$1, _path8$1, _path9$1, _path10$1;
961
+ 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); }
962
+ const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$N({
962
963
  width: 24,
963
964
  height: 24,
964
965
  viewBox: "0 0 24 24",
@@ -969,7 +970,7 @@ const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement
969
970
  height: 24,
970
971
  rx: 12,
971
972
  fill: "#F6F6F8"
972
- })), _path$y || (_path$y = /*#__PURE__*/React__namespace.createElement("path", {
973
+ })), _path$A || (_path$A = /*#__PURE__*/React__namespace.createElement("path", {
973
974
  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
975
  fill: "#D1820A"
975
976
  })), _path2$9 || (_path2$9 = /*#__PURE__*/React__namespace.createElement("path", {
@@ -1001,21 +1002,21 @@ const SvgCampaignProgress = props => /*#__PURE__*/React__namespace.createElement
1001
1002
  fill: "#FFB65A"
1002
1003
  })));
1003
1004
 
1004
- var _g$b, _path$x, _path2$8, _path3$2, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;
1005
- 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); }
1006
- const SvgCampaignExperiential = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$J({
1005
+ var _g$c, _path$z, _path2$8, _path3$2, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;
1006
+ 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); }
1007
+ const SvgCampaignExperiential = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$M({
1007
1008
  width: 24,
1008
1009
  height: 24,
1009
1010
  viewBox: "0 0 24 24",
1010
1011
  fill: "none",
1011
1012
  xmlns: "http://www.w3.org/2000/svg"
1012
- }, props), _g$b || (_g$b = /*#__PURE__*/React__namespace.createElement("g", {
1013
+ }, props), _g$c || (_g$c = /*#__PURE__*/React__namespace.createElement("g", {
1013
1014
  opacity: 0.3
1014
1015
  }, /*#__PURE__*/React__namespace.createElement("path", {
1015
1016
  opacity: 0.3,
1016
1017
  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
1018
  fill: "#50BF95"
1018
- }))), _path$x || (_path$x = /*#__PURE__*/React__namespace.createElement("path", {
1019
+ }))), _path$z || (_path$z = /*#__PURE__*/React__namespace.createElement("path", {
1019
1020
  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
1021
  fill: "#2B8473",
1021
1022
  stroke: "#2B8473"
@@ -1071,21 +1072,21 @@ const SvgCampaignExperiential = props => /*#__PURE__*/React__namespace.createEle
1071
1072
  fill: "#ECF4F2"
1072
1073
  })));
1073
1074
 
1074
- var _g$a, _path$w;
1075
- 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); }
1076
- const SvgCampaignFunctional = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$I({
1075
+ var _g$b, _path$y;
1076
+ 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); }
1077
+ const SvgCampaignFunctional = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$L({
1077
1078
  width: 24,
1078
1079
  height: 24,
1079
1080
  viewBox: "0 0 24 24",
1080
1081
  fill: "none",
1081
1082
  xmlns: "http://www.w3.org/2000/svg"
1082
- }, props), _g$a || (_g$a = /*#__PURE__*/React__namespace.createElement("g", {
1083
+ }, props), _g$b || (_g$b = /*#__PURE__*/React__namespace.createElement("g", {
1083
1084
  opacity: 0.3
1084
1085
  }, /*#__PURE__*/React__namespace.createElement("path", {
1085
1086
  opacity: 0.3,
1086
1087
  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
1088
  fill: "#003A57"
1088
- }))), _path$w || (_path$w = /*#__PURE__*/React__namespace.createElement("path", {
1089
+ }))), _path$y || (_path$y = /*#__PURE__*/React__namespace.createElement("path", {
1089
1090
  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
1091
  fill: "#003A57"
1091
1092
  })));
@@ -1946,15 +1947,15 @@ const WaffleChart = ({ height, width, data, total, tooltip, }) => {
1946
1947
  } }) })));
1947
1948
  };
1948
1949
 
1949
- var _g$9, _defs$4;
1950
- 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); }
1951
- const SvgSentiment1 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$H({
1950
+ var _g$a, _defs$4;
1951
+ 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); }
1952
+ const SvgSentiment1 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$K({
1952
1953
  width: 27,
1953
1954
  height: 26,
1954
1955
  viewBox: "0 0 27 26",
1955
1956
  fill: "none",
1956
1957
  xmlns: "http://www.w3.org/2000/svg"
1957
- }, props), _g$9 || (_g$9 = /*#__PURE__*/React__namespace.createElement("g", {
1958
+ }, props), _g$a || (_g$a = /*#__PURE__*/React__namespace.createElement("g", {
1958
1959
  clipPath: "url(#clip0_21_19131)"
1959
1960
  }, /*#__PURE__*/React__namespace.createElement("path", {
1960
1961
  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 +1971,15 @@ const SvgSentiment1 = props => /*#__PURE__*/React__namespace.createElement("svg"
1970
1971
  fill: "white"
1971
1972
  })))));
1972
1973
 
1973
- var _g$8, _defs$3;
1974
- 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); }
1975
- const SvgSentiment2 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$G({
1974
+ var _g$9, _defs$3;
1975
+ 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); }
1976
+ const SvgSentiment2 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$J({
1976
1977
  width: 27,
1977
1978
  height: 26,
1978
1979
  viewBox: "0 0 27 26",
1979
1980
  fill: "none",
1980
1981
  xmlns: "http://www.w3.org/2000/svg"
1981
- }, props), _g$8 || (_g$8 = /*#__PURE__*/React__namespace.createElement("g", {
1982
+ }, props), _g$9 || (_g$9 = /*#__PURE__*/React__namespace.createElement("g", {
1982
1983
  clipPath: "url(#clip0_21_19130)"
1983
1984
  }, /*#__PURE__*/React__namespace.createElement("path", {
1984
1985
  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 +1995,15 @@ const SvgSentiment2 = props => /*#__PURE__*/React__namespace.createElement("svg"
1994
1995
  fill: "white"
1995
1996
  })))));
1996
1997
 
1997
- var _g$7, _defs$2;
1998
- 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); }
1999
- const SvgSentiment3 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$F({
1998
+ var _g$8, _defs$2;
1999
+ 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); }
2000
+ const SvgSentiment3 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$I({
2000
2001
  width: 27,
2001
2002
  height: 26,
2002
2003
  viewBox: "0 0 27 26",
2003
2004
  fill: "none",
2004
2005
  xmlns: "http://www.w3.org/2000/svg"
2005
- }, props), _g$7 || (_g$7 = /*#__PURE__*/React__namespace.createElement("g", {
2006
+ }, props), _g$8 || (_g$8 = /*#__PURE__*/React__namespace.createElement("g", {
2006
2007
  clipPath: "url(#clip0_21_19129)"
2007
2008
  }, /*#__PURE__*/React__namespace.createElement("path", {
2008
2009
  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 +2025,15 @@ const SvgSentiment3 = props => /*#__PURE__*/React__namespace.createElement("svg"
2024
2025
  fill: "white"
2025
2026
  })))));
2026
2027
 
2027
- var _g$6, _defs$1;
2028
- 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); }
2029
- const SvgSentiment4 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$E({
2028
+ var _g$7, _defs$1;
2029
+ 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); }
2030
+ const SvgSentiment4 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$H({
2030
2031
  width: 27,
2031
2032
  height: 26,
2032
2033
  viewBox: "0 0 27 26",
2033
2034
  fill: "none",
2034
2035
  xmlns: "http://www.w3.org/2000/svg"
2035
- }, props), _g$6 || (_g$6 = /*#__PURE__*/React__namespace.createElement("g", {
2036
+ }, props), _g$7 || (_g$7 = /*#__PURE__*/React__namespace.createElement("g", {
2036
2037
  clipPath: "url(#clip0_21_19127)"
2037
2038
  }, /*#__PURE__*/React__namespace.createElement("path", {
2038
2039
  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 +2055,15 @@ const SvgSentiment4 = props => /*#__PURE__*/React__namespace.createElement("svg"
2054
2055
  fill: "white"
2055
2056
  })))));
2056
2057
 
2057
- var _g$5, _defs;
2058
- 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); }
2059
- const SvgSentiment5 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$D({
2058
+ var _g$6, _defs;
2059
+ 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); }
2060
+ const SvgSentiment5 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$G({
2060
2061
  width: 26,
2061
2062
  height: 26,
2062
2063
  viewBox: "0 0 26 26",
2063
2064
  fill: "none",
2064
2065
  xmlns: "http://www.w3.org/2000/svg"
2065
- }, props), _g$5 || (_g$5 = /*#__PURE__*/React__namespace.createElement("g", {
2066
+ }, props), _g$6 || (_g$6 = /*#__PURE__*/React__namespace.createElement("g", {
2066
2067
  clipPath: "url(#clip0_21_19125)"
2067
2068
  }, /*#__PURE__*/React__namespace.createElement("path", {
2068
2069
  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 +2314,7 @@ const ChatFooter = ({ saveText, children, showShortcut, }) => {
2313
2314
  };
2314
2315
 
2315
2316
  const ChatContext = React.createContext(null);
2316
- const ChatContextProvider = ({ onSave, onFileUpload, setMentionableUsers, children, }) => {
2317
+ const ChatContextProvider = ({ onSave, onFileUpload, onDeleteThumbnail, setMentionableUsers, children, }) => {
2317
2318
  const [editor, setEditor] = React.useState();
2318
2319
  const [thumbnails, setThumbnails] = React.useState([]);
2319
2320
  const getMentions = (editor) => {
@@ -2335,53 +2336,45 @@ const ChatContextProvider = ({ onSave, onFileUpload, setMentionableUsers, childr
2335
2336
  editor,
2336
2337
  setEditor,
2337
2338
  thumbnails,
2338
- afterUploadCallback: (failed) => {
2339
- setThumbnails(thumbnails.map((file) => {
2340
- if (failed.includes(file.name)) {
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));
2339
+ setThumbnails,
2340
+ afterUploadCallback: (failed) => { },
2341
+ addThumbnails: ({ files }) => __awaiter(void 0, void 0, void 0, function* () {
2353
2342
  setThumbnails((prev) => [...prev, ...files]);
2354
- if (onFileUpload) {
2355
- onFileUpload(files).then((data) => {
2356
- var _a;
2357
- const failed = (_a = data.failed) === null || _a === void 0 ? void 0 : _a.map((f) => f.name);
2358
- setThumbnails((prev) => {
2359
- return prev.map((file) => {
2360
- file.isLoadingMedia = false;
2361
- if ((failed === null || failed === void 0 ? void 0 : failed.length) && failed.includes(file.name)) {
2362
- file.isError = true;
2363
- }
2364
- else {
2365
- file.isError = false;
2366
- }
2367
- return file;
2368
- });
2343
+ if (!onFileUpload)
2344
+ return;
2345
+ try {
2346
+ const data = yield onFileUpload(files);
2347
+ setThumbnails((prev) => {
2348
+ return prev.map(file => {
2349
+ var _a, _b;
2350
+ file.isLoadingMedia = false;
2351
+ 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;
2352
+ return file;
2369
2353
  });
2370
2354
  });
2371
2355
  }
2372
- },
2373
- clearThumbnails: () => {
2374
- if (editor)
2356
+ catch (e) {
2357
+ console.log("Error uploading files", e);
2358
+ }
2359
+ }),
2360
+ clearInput: () => {
2361
+ if (editor && !editor.isEmpty) {
2362
+ editor.commands.clearContent();
2363
+ }
2364
+ if (thumbnails.length > 0)
2375
2365
  setThumbnails([]);
2376
- console.log("thumbnails cleared", thumbnails);
2377
2366
  },
2378
- removeThumbnail: (index) => setThumbnails(thumbnails.filter((_, i) => i !== index)),
2367
+ onDeleteThumbnail: (id) => {
2368
+ onDeleteThumbnail(id);
2369
+ },
2370
+ removeThumbnail: (index) => {
2371
+ setThumbnails(thumbnails.filter((_, i) => i !== index));
2372
+ },
2379
2373
  triggerSave: () => {
2380
2374
  if (editor && onSave && !editor.isEmpty) {
2381
2375
  onSave(editor, getMentions(editor));
2382
2376
  editor.commands.clearContent();
2383
2377
  setThumbnails([]);
2384
- console.log("thumbnails cleared", thumbnails);
2385
2378
  }
2386
2379
  },
2387
2380
  mentionableUsers: setMentionableUsers,
@@ -2393,6 +2386,7 @@ const ChatContextProvider = ({ onSave, onFileUpload, setMentionableUsers, childr
2393
2386
  thumbnails,
2394
2387
  setThumbnails,
2395
2388
  onFileUpload,
2389
+ onDeleteThumbnail,
2396
2390
  ]);
2397
2391
  return (jsxRuntime.jsx(ChatContext.Provider, Object.assign({ value: chatContextValue }, { children: children })));
2398
2392
  };
@@ -2728,96 +2722,28 @@ const ChatTitle = styled__default["default"](Title$1) `
2728
2722
  padding: ${({ theme }) => `${theme.space.sm} ${theme.space.md}`};
2729
2723
  `;
2730
2724
 
2731
- const UgClose$1 = styled__default["default"](reactNotifications.Close) `
2732
- display: flex;
2733
- align-items: center;
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({
2725
+ var _path$x;
2726
+ 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); }
2727
+ const SvgBoldFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$F({
2802
2728
  xmlns: "http://www.w3.org/2000/svg",
2803
2729
  width: 16,
2804
2730
  height: 16,
2805
2731
  focusable: "false",
2806
2732
  viewBox: "0 0 16 16"
2807
- }, props), _path$v || (_path$v = /*#__PURE__*/React__namespace.createElement("path", {
2733
+ }, props), _path$x || (_path$x = /*#__PURE__*/React__namespace.createElement("path", {
2808
2734
  fill: "currentColor",
2809
2735
  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
2736
  })));
2811
2737
 
2812
- var _path$u;
2813
- 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); }
2814
- const SvgItalicFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$B({
2738
+ var _path$w;
2739
+ 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); }
2740
+ const SvgItalicFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$E({
2815
2741
  xmlns: "http://www.w3.org/2000/svg",
2816
2742
  width: 16,
2817
2743
  height: 16,
2818
2744
  focusable: "false",
2819
2745
  viewBox: "0 0 16 16"
2820
- }, props), _path$u || (_path$u = /*#__PURE__*/React__namespace.createElement("path", {
2746
+ }, props), _path$w || (_path$w = /*#__PURE__*/React__namespace.createElement("path", {
2821
2747
  fill: "none",
2822
2748
  stroke: "currentColor",
2823
2749
  strokeLinecap: "round",
@@ -2825,15 +2751,15 @@ const SvgItalicFill = props => /*#__PURE__*/React__namespace.createElement("svg"
2825
2751
  d: "M8 1h3M9.5 1l-3 14M5 15h3"
2826
2752
  })));
2827
2753
 
2828
- var _path$t, _path2$7;
2829
- 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); }
2830
- const SvgQuoteFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$A({
2754
+ var _path$v, _path2$7;
2755
+ 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); }
2756
+ const SvgQuoteFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$D({
2831
2757
  xmlns: "http://www.w3.org/2000/svg",
2832
2758
  width: 16,
2833
2759
  height: 16,
2834
2760
  focusable: "false",
2835
2761
  viewBox: "0 0 16 16"
2836
- }, props), _path$t || (_path$t = /*#__PURE__*/React__namespace.createElement("path", {
2762
+ }, props), _path$v || (_path$v = /*#__PURE__*/React__namespace.createElement("path", {
2837
2763
  fill: "currentColor",
2838
2764
  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
2765
  })), _path2$7 || (_path2$7 = /*#__PURE__*/React__namespace.createElement("path", {
@@ -2844,15 +2770,15 @@ const SvgQuoteFill = props => /*#__PURE__*/React__namespace.createElement("svg",
2844
2770
  d: "M5.5 12C6.5 11 7 9.5 7 8V6m4.5 6c1-1 1.5-2.5 1.5-4V6"
2845
2771
  })));
2846
2772
 
2847
- var _g$4;
2848
- 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); }
2849
- const SvgH1Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$z({
2773
+ var _g$5;
2774
+ 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); }
2775
+ const SvgH1Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$C({
2850
2776
  xmlns: "http://www.w3.org/2000/svg",
2851
2777
  width: 16,
2852
2778
  height: 16,
2853
2779
  focusable: "false",
2854
2780
  viewBox: "0 0 16 16"
2855
- }, props), _g$4 || (_g$4 = /*#__PURE__*/React__namespace.createElement("g", {
2781
+ }, props), _g$5 || (_g$5 = /*#__PURE__*/React__namespace.createElement("g", {
2856
2782
  transform: "translate(-464 -332)"
2857
2783
  }, /*#__PURE__*/React__namespace.createElement("rect", {
2858
2784
  width: 16,
@@ -2872,15 +2798,15 @@ const SvgH1Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _e
2872
2798
  transform: "translate(474.469 331)"
2873
2799
  }))));
2874
2800
 
2875
- var _g$3;
2876
- 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); }
2877
- const SvgH2Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$y({
2801
+ var _g$4;
2802
+ 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); }
2803
+ const SvgH2Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$B({
2878
2804
  xmlns: "http://www.w3.org/2000/svg",
2879
2805
  width: 16,
2880
2806
  height: 16,
2881
2807
  focusable: "false",
2882
2808
  viewBox: "0 0 16 16"
2883
- }, props), _g$3 || (_g$3 = /*#__PURE__*/React__namespace.createElement("g", {
2809
+ }, props), _g$4 || (_g$4 = /*#__PURE__*/React__namespace.createElement("g", {
2884
2810
  transform: "translate(-464 -332)"
2885
2811
  }, /*#__PURE__*/React__namespace.createElement("rect", {
2886
2812
  width: 16,
@@ -2900,15 +2826,15 @@ const SvgH2Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _e
2900
2826
  transform: "translate(469.359 331)"
2901
2827
  }))));
2902
2828
 
2903
- var _g$2;
2904
- 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); }
2905
- const SvgH3Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$x({
2829
+ var _g$3;
2830
+ 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); }
2831
+ const SvgH3Fill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$A({
2906
2832
  xmlns: "http://www.w3.org/2000/svg",
2907
2833
  width: 16,
2908
2834
  height: 16,
2909
2835
  focusable: "false",
2910
2836
  viewBox: "0 0 16 16"
2911
- }, props), _g$2 || (_g$2 = /*#__PURE__*/React__namespace.createElement("g", {
2837
+ }, props), _g$3 || (_g$3 = /*#__PURE__*/React__namespace.createElement("g", {
2912
2838
  transform: "translate(-464 -332)"
2913
2839
  }, /*#__PURE__*/React__namespace.createElement("rect", {
2914
2840
  width: 16,
@@ -2969,144 +2895,220 @@ const FloatingMenu = (props) => {
2969
2895
  const TooltipComponent = (props) => {
2970
2896
  var _a;
2971
2897
  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 }));
2898
+ return (jsxRuntime.jsx(reactTooltips.Tooltip, Object.assign({}, props, { zIndex: (_a = props.zIndex) !== null && _a !== void 0 ? _a : theme.levels.front })));
2973
2899
  };
2974
2900
  const Tooltip = styled__default["default"](TooltipComponent) `
2975
2901
  box-shadow: ${({ theme }) => theme.shadows.lg(`${theme.space.base * 3}px`, `${theme.space.base * 5}px`, getColor("neutralHue", 600, theme, 0.15))};
2902
+
2903
+ ${({ isTransparent }) => isTransparent &&
2904
+ `
2905
+ box-shadow: none;
2906
+ background-color: transparent;
2907
+ border: none;
2908
+ `};
2976
2909
  `;
2977
2910
 
2978
- var _path$s;
2979
- 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); }
2980
- const SvgBoldStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$w({
2911
+ var _path$u;
2912
+ 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); }
2913
+ const SvgBoldStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$z({
2981
2914
  xmlns: "http://www.w3.org/2000/svg",
2982
2915
  width: 16,
2983
2916
  height: 16,
2984
2917
  focusable: "false",
2985
2918
  viewBox: "0 0 16 16"
2986
- }, props), _path$s || (_path$s = /*#__PURE__*/React__namespace.createElement("path", {
2919
+ }, props), _path$u || (_path$u = /*#__PURE__*/React__namespace.createElement("path", {
2987
2920
  fill: "currentColor",
2988
2921
  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
2922
  })));
2990
2923
 
2991
- var _path$r;
2992
- 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); }
2993
- const SvgItalicStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$v({
2924
+ var _path$t;
2925
+ 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); }
2926
+ const SvgItalicStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$y({
2994
2927
  xmlns: "http://www.w3.org/2000/svg",
2995
2928
  width: 16,
2996
2929
  height: 16,
2997
2930
  focusable: "false",
2998
2931
  viewBox: "0 0 16 16"
2999
- }, props), _path$r || (_path$r = /*#__PURE__*/React__namespace.createElement("path", {
2932
+ }, props), _path$t || (_path$t = /*#__PURE__*/React__namespace.createElement("path", {
3000
2933
  fill: "none",
3001
2934
  stroke: "currentColor",
3002
2935
  strokeLinecap: "round",
3003
2936
  d: "M7.5 1.5h3M9 1.5l-3 14m-1.5 0h3"
3004
2937
  })));
3005
2938
 
3006
- var _path$q;
3007
- 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); }
3008
- const SvgAtStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$u({
2939
+ var _path$s;
2940
+ 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); }
2941
+ const SvgAtStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$x({
3009
2942
  xmlns: "http://www.w3.org/2000/svg",
3010
2943
  width: 16,
3011
2944
  height: 16,
3012
2945
  focusable: "false",
3013
2946
  role: "presentation"
3014
- }, props), _path$q || (_path$q = /*#__PURE__*/React__namespace.createElement("path", {
2947
+ }, props), _path$s || (_path$s = /*#__PURE__*/React__namespace.createElement("path", {
3015
2948
  fill: "none",
3016
2949
  stroke: "currentColor",
3017
2950
  strokeLinecap: "round",
3018
2951
  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
2952
  })));
3020
2953
 
3021
- var _path$p;
3022
- 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); }
3023
- const SvgClipboard = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$t({
2954
+ var _path$r;
2955
+ 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); }
2956
+ const SvgClipboard = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$w({
3024
2957
  xmlns: "http://www.w3.org/2000/svg",
3025
2958
  width: 16,
3026
2959
  height: 16,
3027
2960
  focusable: "false",
3028
2961
  role: "presentation"
3029
- }, props), _path$p || (_path$p = /*#__PURE__*/React__namespace.createElement("path", {
2962
+ }, props), _path$r || (_path$r = /*#__PURE__*/React__namespace.createElement("path", {
3030
2963
  fill: "none",
3031
2964
  stroke: "currentColor",
3032
2965
  strokeLinecap: "round",
3033
2966
  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
2967
  })));
3035
2968
 
3036
- const MenuContainer = styled__default["default"].div `
3037
- padding: ${({ theme }) => theme.space.xs} 0;
3038
- display: flex;
3039
- flex-direction: row;
3040
- justify-content: flex-start;
3041
- align-items: center;
3042
- gap: ${({ theme }) => theme.space.xxs};
2969
+ const UgClose$1 = styled__default["default"](reactNotifications.Close) `
2970
+ display: flex;
2971
+ align-items: center;
2972
+ justify-content: center;
2973
+ width: ${({ theme }) => theme.space.xl};
2974
+ height: ${({ theme }) => theme.space.xl};
3043
2975
  `;
3044
- const VerticalDivider = styled__default["default"].div `
3045
- width: 2px;
3046
- height: 24px;
3047
- background-color: ${({ theme }) => theme.palette.grey[300]};
3048
- margin: 0 ${({ theme }) => theme.space.xs};
2976
+ /**
2977
+ * Title is a basic component used to display a title. Often used in card headers.
2978
+ */
2979
+ const Close = (props) => jsxRuntime.jsx(UgClose$1, Object.assign({}, props));
2980
+
2981
+ const NOTIFICATION_COMPONENT_ID = "notifications.notification";
2982
+ const CLOSE_COMPONENT_ID = "notifications.notification.close";
2983
+ const CLOSE_ICON_COMPONENT_ID = "notifications.notification.close-icon";
2984
+ const TITLE_COMPONENT_ID = "notifications.notification.title";
2985
+ const UgClose = styled__default["default"](Close).attrs((props) => {
2986
+ var _a;
2987
+ return ({
2988
+ "data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_ICON_COMPONENT_ID,
2989
+ });
2990
+ }) `
2991
+ ${(props) => reactTheming.retrieveComponentStyles(CLOSE_ICON_COMPONENT_ID, props)};
3049
2992
  `;
3050
- const CommentBar = ({ editor, i18n, }) => {
3051
- var _a, _b, _c, _d, _e, _f, _g, _h;
3052
- const { addThumbnails } = useChatContext();
3053
- if (!editor)
3054
- return null;
3055
- const getIcon = (type) => {
3056
- switch (type) {
3057
- case "bold":
3058
- return jsxRuntime.jsx(SvgBoldStroke, {});
3059
- case "italic":
3060
- return jsxRuntime.jsx(SvgItalicStroke, {});
3061
- case "mention":
3062
- return jsxRuntime.jsx(SvgAtStroke, {});
3063
- case "attachment":
3064
- return jsxRuntime.jsx(SvgClipboard, {});
3065
- default:
3066
- return null;
3067
- }
3068
- };
3069
- const handleClick = (type) => {
3070
- switch (type) {
3071
- case "bold":
3072
- return editor.chain().focus().toggleBold().run();
3073
- case "italic":
3074
- return editor.chain().focus().toggleItalic().run();
3075
- case "mention":
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
- }
3101
- };
3102
- 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: () => handleClick("bold") }, { children: getIcon("bold") })) })), 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: () => handleClick("italic") }, { children: getIcon("italic") })) })), 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: () => handleClick("mention") }, { children: getIcon("mention") })) })), jsxRuntime.jsx(Tooltip, Object.assign({ 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 : "Upload images and video. 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: () => handleClick("attachment") }, { children: getIcon("attachment") })) }))] })) }));
3103
- };
2993
+ const UgAnchor = styled__default["default"](reactButtons.Anchor).attrs((props) => {
2994
+ var _a;
2995
+ return ({
2996
+ "data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : CLOSE_COMPONENT_ID,
2997
+ });
2998
+ }) `
2999
+ ${(props) => reactTheming.retrieveComponentStyles(CLOSE_COMPONENT_ID, props)};
3000
+ `;
3001
+ const UgTitle = styled__default["default"](Title$1).attrs((props) => {
3002
+ var _a;
3003
+ return ({
3004
+ "data-custom-id": (_a = props["data-custom-id"]) !== null && _a !== void 0 ? _a : TITLE_COMPONENT_ID,
3005
+ });
3006
+ }) `
3007
+ ${(props) => reactTheming.retrieveComponentStyles(TITLE_COMPONENT_ID, props)};
3008
+ `;
3009
+ const UgNotification = styled__default["default"](reactNotifications.Notification) `
3010
+ display: flex;
3011
+ align-items: center;
3012
+ justify-content: space-between;
3013
+ padding-right: ${({ theme }) => theme.space.md};
3014
+ white-space: pre;
3104
3015
 
3105
- const CustomMention = Mention__default["default"].extend({
3106
- addAttributes() {
3107
- return {
3108
- id: {
3109
- default: null,
3016
+ ${UgAnchor} {
3017
+ flex-shrink: 0;
3018
+ margin-left: ${({ theme }) => theme.space.md};
3019
+ }
3020
+
3021
+ ${(props) => reactTheming.retrieveComponentStyles(NOTIFICATION_COMPONENT_ID, props)};
3022
+ `;
3023
+ /**
3024
+ * A Notification is a passive status update that keeps users informed of system progress.
3025
+ * <hr>
3026
+ * Used for this:
3027
+ - For a passive status update about user or system activity
3028
+ */
3029
+ const Notification = (_a) => {
3030
+ var { closeText, message, onClose, type, isPrimary, isRegular } = _a, props = __rest(_a, ["closeText", "message", "onClose", "type", "isPrimary", "isRegular"]);
3031
+ 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, {}) }))] })));
3032
+ };
3033
+ // ToastProvider
3034
+ const ToastProvider = (props) => (jsxRuntime.jsx(reactNotifications.ToastProvider, Object.assign({}, props)));
3035
+ const useToast = reactNotifications.useToast;
3036
+
3037
+ const acceptedMediaTypes = /^(image|video)\//;
3038
+ function useMedia() {
3039
+ const { addToast } = useToast();
3040
+ function getValidMedia(data) {
3041
+ const wrongFiles = Array.from(data).filter((file) => !acceptedMediaTypes.test(file.type));
3042
+ if (wrongFiles.length) {
3043
+ addToast(({ close }) => (jsxRuntime.jsx(Notification, { onClose: close, type: "error", message: wrongFiles.length === 1
3044
+ ? `${wrongFiles[0].name} not supported, please upload video or image only`
3045
+ : "Some attachments are not supported, please upload video or image only", isPrimary: true })), { placement: "top" });
3046
+ }
3047
+ return Array.from(data).filter((file) => acceptedMediaTypes.test(file.type));
3048
+ }
3049
+ function getMedia(data) {
3050
+ return getValidMedia(data).map((file) => {
3051
+ return Object.assign(file, {
3052
+ url: URL.createObjectURL(file),
3053
+ isLoadingMedia: true,
3054
+ id: uuid.v4(),
3055
+ });
3056
+ });
3057
+ }
3058
+ return { getMedia };
3059
+ }
3060
+
3061
+ const MenuContainer = styled__default["default"].div `
3062
+ padding: ${({ theme }) => theme.space.xs} 0;
3063
+ display: flex;
3064
+ flex-direction: row;
3065
+ justify-content: flex-start;
3066
+ align-items: center;
3067
+ gap: ${({ theme }) => theme.space.xxs};
3068
+ `;
3069
+ const VerticalDivider = styled__default["default"].div `
3070
+ width: 2px;
3071
+ height: 24px;
3072
+ background-color: ${({ theme }) => theme.palette.grey[300]};
3073
+ margin: 0 ${({ theme }) => theme.space.xs};
3074
+ `;
3075
+ const CommentBar = ({ editor, i18n, }) => {
3076
+ var _a, _b, _c, _d, _e, _f, _g, _h;
3077
+ const { addThumbnails } = useChatContext();
3078
+ const { getMedia } = useMedia();
3079
+ if (!editor)
3080
+ return null;
3081
+ const handleBoldClick = () => {
3082
+ editor.chain().focus().toggleBold().run();
3083
+ };
3084
+ const handleItalicClick = () => {
3085
+ editor.chain().focus().toggleItalic().run();
3086
+ };
3087
+ const handleMentionClick = () => {
3088
+ const { from } = editor.state.selection;
3089
+ const char = from > 1 ? " @" : "@";
3090
+ editor.chain().focus().insertContent(char).run();
3091
+ };
3092
+ const handleAttachmentClick = () => {
3093
+ const fileInput = document.createElement("input");
3094
+ fileInput.type = "file";
3095
+ fileInput.accept = "image/*,video/*";
3096
+ fileInput.multiple = true;
3097
+ fileInput.click();
3098
+ fileInput.onchange = () => {
3099
+ if (fileInput.files) {
3100
+ addThumbnails({ files: getMedia(fileInput.files) });
3101
+ }
3102
+ };
3103
+ };
3104
+ 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({ 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, {}) })) }))] })) }));
3105
+ };
3106
+
3107
+ const CustomMention = Mention__default["default"].extend({
3108
+ addAttributes() {
3109
+ return {
3110
+ id: {
3111
+ default: null,
3110
3112
  parseHTML: (element) => element.getAttribute("data-mention-id"),
3111
3113
  renderHTML: (attributes) => {
3112
3114
  if (!attributes.id) {
@@ -3276,7 +3278,7 @@ const editorExtensions = ({ placeholderOptions, mentionableUsers, }) => {
3276
3278
  },
3277
3279
  }),
3278
3280
  Dropcursor__default["default"].configure({
3279
- color: "#ff0000",
3281
+ color: getColor(colors.accentHue, 700),
3280
3282
  width: 3,
3281
3283
  }),
3282
3284
  Placeholder__default["default"].configure(Object.assign({ placeholder: ({ node }) => {
@@ -3348,20 +3350,20 @@ const editorExtensions = ({ placeholderOptions, mentionableUsers, }) => {
3348
3350
  ];
3349
3351
  };
3350
3352
 
3351
- var _circle$2, _path$o, _path2$6;
3352
- 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); }
3353
- const SvgRemoveMediaIcon = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$s({
3353
+ var _circle$3, _path$q, _path2$6;
3354
+ 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); }
3355
+ const SvgRemoveMediaIcon = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$v({
3354
3356
  width: 56,
3355
3357
  height: 56,
3356
3358
  viewBox: "0 0 56 56",
3357
3359
  fill: "#68737d",
3358
3360
  xmlns: "http://www.w3.org/2000/svg"
3359
- }, props), _circle$2 || (_circle$2 = /*#__PURE__*/React__namespace.createElement("circle", {
3361
+ }, props), _circle$3 || (_circle$3 = /*#__PURE__*/React__namespace.createElement("circle", {
3360
3362
  cx: 28,
3361
3363
  cy: 28,
3362
3364
  r: 28,
3363
3365
  fill: "#edf7ff"
3364
- })), _path$o || (_path$o = /*#__PURE__*/React__namespace.createElement("path", {
3366
+ })), _path$q || (_path$q = /*#__PURE__*/React__namespace.createElement("path", {
3365
3367
  d: "M16.929 16.929L39.071 39.071",
3366
3368
  stroke: "currentColor",
3367
3369
  strokeWidth: 4
@@ -3380,176 +3382,149 @@ const StyledDeleteThumbnailX = styled__default["default"].div `
3380
3382
  width: 32px;
3381
3383
  height: 32px;
3382
3384
  opacity: 0;
3385
+ transition: opacity 0.2s;
3383
3386
  z-index: 2;
3387
+ color: ${({ theme }) => theme.palette.grey[800]};
3384
3388
  `;
3385
3389
  const DeleteThumbnailX = ({ deleteThumbnail }) => {
3386
3390
  return (jsxRuntime.jsx(StyledDeleteThumbnailX, Object.assign({ className: "deleteThumbnail" }, { children: jsxRuntime.jsx(SvgRemoveMediaIcon, { onClick: (e) => deleteThumbnail(e) }) })));
3387
3391
  };
3388
3392
 
3389
- const ImageCard = styled__default["default"](SpecialCard) `
3390
- padding: 0;
3391
- :hover .deleteThumbnail {
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({
3393
+ var _circle$2, _path$p;
3394
+ 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); }
3395
+ const SvgVideoPlayIcon = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$u({
3425
3396
  width: 56,
3426
3397
  height: 56,
3427
3398
  viewBox: "0 0 56 56",
3428
3399
  fill: "none",
3429
3400
  xmlns: "http://www.w3.org/2000/svg"
3430
- }, props), _circle$1 || (_circle$1 = /*#__PURE__*/React__namespace.createElement("circle", {
3401
+ }, props), _circle$2 || (_circle$2 = /*#__PURE__*/React__namespace.createElement("circle", {
3431
3402
  cx: 28,
3432
3403
  cy: 28,
3433
3404
  r: 28,
3434
3405
  fill: "white"
3435
- })), _path$n || (_path$n = /*#__PURE__*/React__namespace.createElement("path", {
3406
+ })), _path$p || (_path$p = /*#__PURE__*/React__namespace.createElement("path", {
3436
3407
  d: "M47 28L18.5 44.4545L18.5 11.5455L47 28Z",
3437
3408
  fill: "currentColor"
3438
3409
  })));
3439
3410
 
3440
- const VideoCard = styled__default["default"](SpecialCard) `
3411
+ const ImageCard = styled__default["default"](SpecialCard) `
3441
3412
  padding: 0;
3442
3413
  position: relative;
3443
3414
  overflow: hidden;
3444
-
3445
- &:hover .deleteThumbnail {
3446
- opacity: 1;
3447
- z-index: 9999;
3448
- }
3415
+ width: 90px;
3449
3416
 
3450
3417
  &:before {
3451
3418
  content: "";
3419
+ font-size: ${({ theme }) => theme.fontSizes.xs};
3452
3420
  position: absolute;
3421
+ padding: ${({ theme }) => theme.space.xs};
3453
3422
  top: 0;
3454
3423
  left: 0;
3455
3424
  width: 100%;
3456
3425
  height: 100%;
3457
- background-color: ${({ theme }) => theme.palette.grey[800]};
3458
- opacity: 0.3;
3459
- z-index: 1;
3426
+ background-color: ${({ theme }) => theme.palette.grey[800]}00; // 0% opacity
3427
+ transition: opacity 0.2s;
3460
3428
  }
3461
3429
 
3462
- > svg {
3463
- position: absolute;
3464
- top: 50%;
3465
- left: 50%;
3466
- transform: translate(-50%, -50%);
3467
- width: 32px;
3468
- height: 32px;
3469
- z-index: 2;
3430
+ &:hover {
3431
+ .deleteThumbnail {
3432
+ opacity: 1;
3433
+ }
3434
+ &:before {
3435
+ background-color: ${({ theme }) => theme.palette.grey[800]}4d; // 30% opacity
3436
+ }
3437
+ }
3438
+ ${(p) => p.error &&
3439
+ `
3440
+ &:before{
3441
+ content: "Error: ${p.error}";
3442
+ color: ${p.theme.palette.white};
3443
+ background-color: ${p.theme.palette.grey[800]}b3; // 0.7 opacity
3444
+ }
3445
+ `}
3446
+ ${(p) => p.isLoading &&
3447
+ `
3448
+ &:before{
3449
+ background-color: ${p.theme.palette.grey[800]}b3; // 0.7 opacity
3450
+ }
3451
+ `}
3452
+ &.video {
3453
+ svg {
3454
+ color: ${({ theme }) => theme.palette.grey[800]};
3455
+ position: absolute;
3456
+ top: 50%;
3457
+ left: 50%;
3458
+ transform: translate(-50%, -50%);
3459
+ width: 32px;
3460
+ height: 32px;
3461
+ z-index: 2;
3462
+ }
3470
3463
  }
3471
3464
  `;
3472
3465
  const Preview = styled__default["default"].div `
3473
- padding: ${({ theme }) => theme.space.md};
3474
3466
  display: flex;
3475
3467
  justify-content: center;
3476
3468
  align-items: center;
3477
- height: 150px;
3469
+ height: 100px;
3478
3470
  width: 100%;
3471
+ color: ${({ theme }) => theme.palette.white};
3472
+
3473
+ ${p => p.url &&
3474
+ `
3475
+ background-image: url(${p.url});
3476
+ background-color: ${p.theme.palette.grey[100]};
3477
+ background-size: cover;
3478
+ background-position: center;
3479
+ background-repeat: no-repeat;
3480
+ `}
3479
3481
 
3480
3482
  > video {
3481
3483
  width: 100%;
3482
3484
  height: 100%;
3483
3485
  }
3484
3486
  `;
3485
- const VideoThumbnail = ({ src, index = 0, removeThumbnail, clickThumbnail, showX = true, isLoadingMedia = false, isError = false, }) => {
3487
+ const Thumbnail = ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia, error = "", }) => {
3486
3488
  const handleCancel = (e) => {
3487
3489
  e.stopPropagation();
3488
3490
  if (removeThumbnail)
3489
- removeThumbnail(index);
3491
+ removeThumbnail();
3490
3492
  };
3491
- return (jsxRuntime.jsxs(VideoCard, Object.assign({ onClick: clickThumbnail }, { children: [isLoadingMedia && (jsxRuntime.jsx(Preview, { children: jsxRuntime.jsx(reactLoaders.Spinner, { style: {
3492
- display: "flex",
3493
- alignItems: "center",
3494
- justifyContent: "center",
3495
- }, size: "large" }) })), isError && (
3496
- // todo: add error icon
3497
- jsxRuntime.jsx("span", { children: "error uploading media" })), !isLoadingMedia && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [showX && (jsxRuntime.jsx(DeleteThumbnailX, { deleteThumbnail: (e) => handleCancel(e) })), jsxRuntime.jsx(Preview, { children: jsxRuntime.jsx("video", Object.assign({ src: src }, { children: jsxRuntime.jsx("track", { kind: "captions" }) })) }), jsxRuntime.jsx(SvgVideoPlayIcon, {})] }))] })));
3493
+ 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: {
3494
+ display: "flex",
3495
+ position: "absolute",
3496
+ color: "white",
3497
+ alignItems: "center",
3498
+ justifyContent: "center",
3499
+ }, 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
3500
  };
3499
3501
 
3500
- const UgGrid = styled__default["default"](reactGrid.Grid) `
3501
- padding-left: 0;
3502
- padding-right: 0;
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
- }
3502
+ const FlexContainer = styled.styled.div `
3503
+ display: flex;
3504
+ gap: ${({ theme }) => theme.space.xs};
3505
+ flex-wrap: wrap;
3520
3506
  `;
3521
- const Col = (props) => jsxRuntime.jsx(StyledCol$1, Object.assign({}, props));
3522
-
3523
3507
  const ThumbnailContainer = ({ openLightbox }) => {
3524
- const { thumbnails, removeThumbnail } = useChatContext();
3525
- if (!thumbnails || thumbnails.length === 0) {
3526
- return null;
3527
- }
3528
- const mediaFiles = [];
3529
- thumbnails.forEach((file) => {
3530
- mediaFiles.push({
3508
+ const { thumbnails, removeThumbnail, onDeleteThumbnail } = useChatContext();
3509
+ const mediaFiles = React.useMemo(() => {
3510
+ return thumbnails.map((file) => ({
3531
3511
  fileName: file.name,
3532
3512
  fileType: file.type,
3533
- status: file.isLoadingMedia ? "uploading" : "success",
3534
- previewUrl: URL.createObjectURL(file),
3535
- });
3536
- });
3537
- console.log("mediafiles", mediaFiles);
3513
+ previewUrl: file.url,
3514
+ id: file.id,
3515
+ isLoadingMedia: file.isLoadingMedia,
3516
+ error: file.error,
3517
+ }));
3518
+ }, [thumbnails]);
3538
3519
  if (!mediaFiles || mediaFiles.length === 0) {
3539
3520
  return null;
3540
3521
  }
3541
- return (jsxRuntime.jsx(Grid, { children: jsxRuntime.jsx(Row$1, Object.assign({ className: "responsive-container" }, { children: mediaFiles.map((file, index) => {
3542
- // Check if item is an image or a video
3543
- if (file.fileType.includes("image"))
3544
- return (jsxRuntime.jsx(Col, Object.assign({ xs: 12, sm: 3, xl: 3, lg: 3, className: "flex-3-sm" }, { children: jsxRuntime.jsx(ImageThumbnail, { src: file.previewUrl, index: index, showX: true, isLoadingMedia: file.status === "uploading", removeThumbnail: () => removeThumbnail(index), clickThumbnail: () => {
3545
- openLightbox(thumbnails[index], index);
3546
- } }, index) })));
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
- }) })) }));
3522
+ 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: () => {
3523
+ removeThumbnail(index);
3524
+ onDeleteThumbnail(file.id);
3525
+ }, clickThumbnail: () => {
3526
+ openLightbox(index);
3527
+ } }, file.id))) }));
3553
3528
  };
3554
3529
 
3555
3530
  const UgModalBody = styled__default["default"](reactModals.Body) `
@@ -3618,28 +3593,28 @@ Lightbox.Body = ModalBody; // Includes Main and Details
3618
3593
  Lightbox.Footer = Footer$3;
3619
3594
  Lightbox.Close = reactModals.Close;
3620
3595
 
3621
- var _path$m;
3622
- 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); }
3623
- const SvgChevronLeftStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$q({
3596
+ var _path$o;
3597
+ 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); }
3598
+ const SvgChevronLeftStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$t({
3624
3599
  xmlns: "http://www.w3.org/2000/svg",
3625
3600
  width: 16,
3626
3601
  height: 16,
3627
3602
  focusable: "false",
3628
3603
  viewBox: "0 0 16 16"
3629
- }, props), _path$m || (_path$m = /*#__PURE__*/React__namespace.createElement("path", {
3604
+ }, props), _path$o || (_path$o = /*#__PURE__*/React__namespace.createElement("path", {
3630
3605
  fill: "currentColor",
3631
3606
  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
3607
  })));
3633
3608
 
3634
- var _path$l;
3635
- 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); }
3636
- const SvgChevronRightStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$p({
3609
+ var _path$n;
3610
+ 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); }
3611
+ const SvgChevronRightStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$s({
3637
3612
  xmlns: "http://www.w3.org/2000/svg",
3638
3613
  width: 16,
3639
3614
  height: 16,
3640
3615
  focusable: "false",
3641
3616
  viewBox: "0 0 16 16"
3642
- }, props), _path$l || (_path$l = /*#__PURE__*/React__namespace.createElement("path", {
3617
+ }, props), _path$n || (_path$n = /*#__PURE__*/React__namespace.createElement("path", {
3643
3618
  fill: "currentColor",
3644
3619
  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
3620
  })));
@@ -3862,94 +3837,283 @@ Slider.Slide = Slide;
3862
3837
  Slider.PrevButton = PrevButton;
3863
3838
  Slider.NextButton = NextButton;
3864
3839
 
3865
- const UgProgress = styled__default["default"](reactLoaders.Progress) ``;
3866
- /**
3867
- * A Progress loader communicates progress when downloading or uploading content.
3868
- * <hr>
3869
- * Used for this:
3870
- * - To communicate the amount of time left when downloading or uploading content
3871
- *
3872
- Not for this:
3873
- - When the loading time is unknown, use a Spinner instead
3874
- - When loading page content, use a Skeleton loader instead
3875
- */
3876
- const Progress = React.forwardRef((props, ref) => (jsxRuntime.jsx(UgProgress, Object.assign({ ref: ref }, props))));
3877
-
3878
- const Wrapper$1 = styled__default["default"].div `
3879
- position: absolute;
3880
- bottom: ${({ theme }) => theme.space.sm};
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
- };
3840
+ var _path$m, _path2$5;
3841
+ 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); }
3842
+ const SvgVolumeMutedFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$r({
3843
+ xmlns: "http://www.w3.org/2000/svg",
3844
+ width: 16,
3845
+ height: 16,
3846
+ focusable: "false",
3847
+ viewBox: "0 0 16 16"
3848
+ }, props), _path$m || (_path$m = /*#__PURE__*/React__namespace.createElement("path", {
3849
+ stroke: "currentColor",
3850
+ strokeLinecap: "round",
3851
+ d: "M11.5 10l4-4m-4 0l4 4"
3852
+ })), _path2$5 || (_path2$5 = /*#__PURE__*/React__namespace.createElement("path", {
3853
+ fill: "currentColor",
3854
+ 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"
3855
+ })));
3899
3856
 
3900
- var _path$k;
3901
- 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); }
3902
- const SvgPlayFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$o({
3857
+ var _path$l, _path2$4;
3858
+ 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); }
3859
+ const SvgVolumeUnmutedFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$q({
3903
3860
  xmlns: "http://www.w3.org/2000/svg",
3904
3861
  width: 16,
3905
3862
  height: 16,
3906
3863
  focusable: "false",
3907
3864
  viewBox: "0 0 16 16"
3908
- }, props), _path$k || (_path$k = /*#__PURE__*/React__namespace.createElement("path", {
3865
+ }, props), _path$l || (_path$l = /*#__PURE__*/React__namespace.createElement("path", {
3909
3866
  fill: "currentColor",
3910
- 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"
3867
+ 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"
3868
+ })), _path2$4 || (_path2$4 = /*#__PURE__*/React__namespace.createElement("path", {
3869
+ fill: "none",
3870
+ stroke: "currentColor",
3871
+ strokeLinecap: "round",
3872
+ 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
3873
  })));
3912
3874
 
3913
- var _g$1;
3914
- 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); }
3915
- const SvgPauseFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$n({
3875
+ const ControlButton = styled__default["default"](IconButton) `
3876
+ color: ${({ theme }) => theme.palette.grey[700]};
3877
+ `;
3878
+
3879
+ const AudioButton = () => {
3880
+ const [hasAudio, setHasAudio] = React.useState(false);
3881
+ const { isMuted, setMuted, context } = Video.useVideoContext();
3882
+ const { player } = context;
3883
+ const checkAudio = (video) => {
3884
+ if (!video) {
3885
+ return false;
3886
+ }
3887
+ const videohasAudio = video.mozHasAudio ||
3888
+ Boolean(video.webkitAudioDecodedByteCount) ||
3889
+ Boolean(video.audioTracks && video.audioTracks.length);
3890
+ setHasAudio(videohasAudio);
3891
+ };
3892
+ const hasVolume = (video) => {
3893
+ if (!video) {
3894
+ return false;
3895
+ }
3896
+ return video.volume > 0;
3897
+ };
3898
+ React.useEffect(() => {
3899
+ if (player && (player === null || player === void 0 ? void 0 : player.ref)) {
3900
+ setMuted(!hasVolume(player.ref.current));
3901
+ checkAudio(player.ref.current);
3902
+ }
3903
+ }, [context.isPlaying, isMuted, player, setMuted]);
3904
+ return (jsxRuntime.jsx(ControlButton, Object.assign({ disabled: !hasAudio, onClick: () => {
3905
+ if (player === null || player === void 0 ? void 0 : player.ref.current) {
3906
+ player.ref.current.volume = player.ref.current.volume > 0 ? 0 : 1;
3907
+ setMuted(!player.ref.current.volume);
3908
+ }
3909
+ } }, { children: isMuted || !hasAudio ? jsxRuntime.jsx(SvgVolumeMutedFill, {}) : jsxRuntime.jsx(SvgVolumeUnmutedFill, {}) })));
3910
+ };
3911
+
3912
+ const ProgressContext = React.createContext(null);
3913
+ const ProgressContextProvider = ({ children, }) => {
3914
+ const [isGrabbing, setIsGrabbing] = React.useState(false);
3915
+ const [fromEnd, setFromEnd] = React.useState(false);
3916
+ const [activeBookmark, setactiveBookmark] = React.useState(undefined);
3917
+ const progressContextValue = React.useMemo(() => ({
3918
+ isGrabbing,
3919
+ fromEnd,
3920
+ activeBookmark,
3921
+ setIsGrabbing,
3922
+ setFromEnd,
3923
+ setactiveBookmark,
3924
+ reset: () => {
3925
+ setIsGrabbing(false);
3926
+ setFromEnd(false);
3927
+ setactiveBookmark(undefined);
3928
+ },
3929
+ }), [isGrabbing, fromEnd, activeBookmark]);
3930
+ return (jsxRuntime.jsx(ProgressContext.Provider, Object.assign({ value: progressContextValue }, { children: children })));
3931
+ };
3932
+ const useProgressContext = () => {
3933
+ const context = React.useContext(ProgressContext);
3934
+ if (!context)
3935
+ throw new Error("Provider not found for ProgressContextProvider");
3936
+ return context; // Now we can use the context in the component, SAFELY.
3937
+ };
3938
+
3939
+ var _g$2;
3940
+ 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); }
3941
+ const SvgGrip = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$p({
3916
3942
  xmlns: "http://www.w3.org/2000/svg",
3917
3943
  width: 16,
3918
3944
  height: 16,
3919
3945
  focusable: "false",
3920
3946
  viewBox: "0 0 16 16"
3921
- }, props), _g$1 || (_g$1 = /*#__PURE__*/React__namespace.createElement("g", {
3947
+ }, props), _g$2 || (_g$2 = /*#__PURE__*/React__namespace.createElement("g", {
3922
3948
  fill: "currentColor"
3923
3949
  }, /*#__PURE__*/React__namespace.createElement("rect", {
3924
- width: 4,
3925
- height: 14,
3926
- x: 3,
3950
+ width: 2,
3951
+ height: 2,
3952
+ x: 5,
3927
3953
  y: 1,
3928
- rx: 1,
3929
- ry: 1
3954
+ rx: 0.5,
3955
+ ry: 0.5
3930
3956
  }), /*#__PURE__*/React__namespace.createElement("rect", {
3931
- width: 4,
3932
- height: 14,
3957
+ width: 2,
3958
+ height: 2,
3933
3959
  x: 9,
3934
3960
  y: 1,
3935
- rx: 1,
3936
- ry: 1
3961
+ rx: 0.5,
3962
+ ry: 0.5
3963
+ }), /*#__PURE__*/React__namespace.createElement("rect", {
3964
+ width: 2,
3965
+ height: 2,
3966
+ x: 5,
3967
+ y: 5,
3968
+ rx: 0.5,
3969
+ ry: 0.5
3970
+ }), /*#__PURE__*/React__namespace.createElement("rect", {
3971
+ width: 2,
3972
+ height: 2,
3973
+ x: 9,
3974
+ y: 5,
3975
+ rx: 0.5,
3976
+ ry: 0.5
3977
+ }), /*#__PURE__*/React__namespace.createElement("rect", {
3978
+ width: 2,
3979
+ height: 2,
3980
+ x: 5,
3981
+ y: 9,
3982
+ rx: 0.5,
3983
+ ry: 0.5
3984
+ }), /*#__PURE__*/React__namespace.createElement("rect", {
3985
+ width: 2,
3986
+ height: 2,
3987
+ x: 9,
3988
+ y: 9,
3989
+ rx: 0.5,
3990
+ ry: 0.5
3991
+ }), /*#__PURE__*/React__namespace.createElement("rect", {
3992
+ width: 2,
3993
+ height: 2,
3994
+ x: 5,
3995
+ y: 13,
3996
+ rx: 0.5,
3997
+ ry: 0.5
3998
+ }), /*#__PURE__*/React__namespace.createElement("rect", {
3999
+ width: 2,
4000
+ height: 2,
4001
+ x: 9,
4002
+ y: 13,
4003
+ rx: 0.5,
4004
+ ry: 0.5
3937
4005
  }))));
3938
4006
 
3939
- var _path$j, _path2$5, _path3$1;
3940
- 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); }
3941
- const SvgForwardSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$m({
4007
+ const StyledGrabber = styled.styled.div `
4008
+ position: absolute;
4009
+ display: none;
4010
+ ${({ isEnd }) => isEnd
4011
+ ? `
4012
+ right: 0;
4013
+ border-top-right-radius: 2px;
4014
+ border-bottom-right-radius: 2px;
4015
+ `
4016
+ : `
4017
+ left: 0;
4018
+ border-top-left-radius: 2px;
4019
+ border-bottom-left-radius: 2px;
4020
+ `}
4021
+ height: 100%;
4022
+ width: 8px;
4023
+ background-color: white;
4024
+ z-index: 2;
4025
+ cursor: ew-resize;
4026
+
4027
+ div {
4028
+ display: flex;
4029
+ justify-content: center;
4030
+ align-items: center;
4031
+ height: 100%;
4032
+ width: 100%;
4033
+ color: ${({ theme }) => theme.palette.grey[500]};
4034
+ svg {
4035
+ width: auto;
4036
+ height: 50%;
4037
+ }
4038
+ }
4039
+ `;
4040
+ const activeBookMark = styled.css `
4041
+ height: 250%;
4042
+ transform: translateY(-30%);
4043
+ cursor: pointer;
4044
+ z-index: 2;
4045
+ border-radius: 4px;
4046
+
4047
+ ${StyledGrabber} {
4048
+ display: block;
4049
+ }
4050
+ `;
4051
+ const Rect = styled.styled.div `
4052
+ position: absolute;
4053
+ height: 110%;
4054
+ background-color: ${({ hue, theme }) => getColor(hue || theme.palette.grey[800], undefined, undefined, 0.8)};
4055
+ z-index: 1;
4056
+ border-radius: 2px;
4057
+ color: white;
4058
+ transition: width 0.1s ease;
4059
+
4060
+ &:hover {
4061
+ background-color: ${({ hue, theme }) => hue || theme.palette.grey[800]};
4062
+ ${activeBookMark}
4063
+ }
4064
+
4065
+ ${({ isActive }) => isActive && activeBookMark}
4066
+ `;
4067
+ const StyledTooltip$1 = styled.styled(Tooltip) `
4068
+ margin-bottom: ${({ theme }) => theme.space.sm};
4069
+ color: ${({ tooltipColor }) => tooltipColor};
4070
+
4071
+ `;
4072
+ const Grabber = (props) => {
4073
+ const { observation } = props;
4074
+ const { setIsGrabbing, setactiveBookmark, setFromEnd } = useProgressContext();
4075
+ const handleDragStart = (e) => {
4076
+ setIsGrabbing(true);
4077
+ setactiveBookmark(observation);
4078
+ setFromEnd(!!props.isEnd);
4079
+ e.preventDefault();
4080
+ e.stopPropagation();
4081
+ };
4082
+ return (jsxRuntime.jsx(StyledGrabber, Object.assign({ isEnd: props.isEnd, onMouseDown: handleDragStart, onMouseMove: props.handleMouseMove }, { children: jsxRuntime.jsx("div", { children: jsxRuntime.jsx(SvgGrip, {}) }) })));
4083
+ };
4084
+ const Bookmark = (props) => {
4085
+ var _a, _b;
4086
+ const { start, end, hue, tooltipContent } = props;
4087
+ const { context } = Video.useVideoContext();
4088
+ const videoStart = context.part.start || 0;
4089
+ const videoEnd = context.part.end || ((_a = context.player) === null || _a === void 0 ? void 0 : _a.totalTime) || 0;
4090
+ const duration = videoEnd - videoStart || ((_b = context.player) === null || _b === void 0 ? void 0 : _b.totalTime) || 0; //relative
4091
+ const { activeBookmark } = useProgressContext();
4092
+ if (!context.player || !context.player.ref) {
4093
+ return null;
4094
+ }
4095
+ if (start > videoEnd || start < videoStart)
4096
+ return null;
4097
+ return (jsxRuntime.jsx(StyledTooltip$1, Object.assign({ content: tooltipContent, type: "light", size: "large", isTransparent: true }, { children: jsxRuntime.jsxs(Rect, Object.assign({ isActive: activeBookmark && activeBookmark.id === props.id, hue: hue, style: {
4098
+ left: `${((start - videoStart) / duration) * 100}%`,
4099
+ width: `${((end - start) / duration) * 100}%`,
4100
+ }, onClick: props.onClick }, { children: [jsxRuntime.jsx(Grabber, { observation: props }), jsxRuntime.jsx(Grabber, { isEnd: true, observation: props })] })) })));
4101
+ };
4102
+
4103
+ var _path$k, _path2$3, _path3$1;
4104
+ 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); }
4105
+ const SvgBackSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$o({
3942
4106
  width: 16,
3943
4107
  height: 16,
3944
4108
  viewBox: "0 0 16 16",
3945
4109
  fill: "none",
3946
4110
  xmlns: "http://www.w3.org/2000/svg"
3947
- }, props), _path$j || (_path$j = /*#__PURE__*/React__namespace.createElement("path", {
4111
+ }, props), _path$k || (_path$k = /*#__PURE__*/React__namespace.createElement("path", {
3948
4112
  fillRule: "evenodd",
3949
4113
  clipRule: "evenodd",
3950
- 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",
4114
+ 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
4115
  fill: "currentColor"
3952
- })), _path2$5 || (_path2$5 = /*#__PURE__*/React__namespace.createElement("path", {
4116
+ })), _path2$3 || (_path2$3 = /*#__PURE__*/React__namespace.createElement("path", {
3953
4117
  d: "M5.5 7.63073V7.07008H6.67566V11H6.02566V7.63073H5.5Z",
3954
4118
  fill: "currentColor"
3955
4119
  })), _path3$1 || (_path3$1 = /*#__PURE__*/React__namespace.createElement("path", {
@@ -3957,20 +4121,20 @@ const SvgForwardSecondsFill = props => /*#__PURE__*/React__namespace.createEleme
3957
4121
  fill: "currentColor"
3958
4122
  })));
3959
4123
 
3960
- var _path$i, _path2$4, _path3;
3961
- 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); }
3962
- const SvgBackSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$l({
4124
+ var _path$j, _path2$2, _path3;
4125
+ 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); }
4126
+ const SvgForwardSecondsFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$n({
3963
4127
  width: 16,
3964
4128
  height: 16,
3965
4129
  viewBox: "0 0 16 16",
3966
4130
  fill: "none",
3967
4131
  xmlns: "http://www.w3.org/2000/svg"
3968
- }, props), _path$i || (_path$i = /*#__PURE__*/React__namespace.createElement("path", {
4132
+ }, props), _path$j || (_path$j = /*#__PURE__*/React__namespace.createElement("path", {
3969
4133
  fillRule: "evenodd",
3970
4134
  clipRule: "evenodd",
3971
- 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",
4135
+ 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
4136
  fill: "currentColor"
3973
- })), _path2$4 || (_path2$4 = /*#__PURE__*/React__namespace.createElement("path", {
4137
+ })), _path2$2 || (_path2$2 = /*#__PURE__*/React__namespace.createElement("path", {
3974
4138
  d: "M5.5 7.63073V7.07008H6.67566V11H6.02566V7.63073H5.5Z",
3975
4139
  fill: "currentColor"
3976
4140
  })), _path3 || (_path3 = /*#__PURE__*/React__namespace.createElement("path", {
@@ -3978,7 +4142,46 @@ const SvgBackSecondsFill = props => /*#__PURE__*/React__namespace.createElement(
3978
4142
  fill: "currentColor"
3979
4143
  })));
3980
4144
 
3981
- var _path$h, _path2$3;
4145
+ var _g$1;
4146
+ 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); }
4147
+ const SvgPauseFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$m({
4148
+ xmlns: "http://www.w3.org/2000/svg",
4149
+ width: 16,
4150
+ height: 16,
4151
+ focusable: "false",
4152
+ viewBox: "0 0 16 16"
4153
+ }, props), _g$1 || (_g$1 = /*#__PURE__*/React__namespace.createElement("g", {
4154
+ fill: "currentColor"
4155
+ }, /*#__PURE__*/React__namespace.createElement("rect", {
4156
+ width: 4,
4157
+ height: 14,
4158
+ x: 3,
4159
+ y: 1,
4160
+ rx: 1,
4161
+ ry: 1
4162
+ }), /*#__PURE__*/React__namespace.createElement("rect", {
4163
+ width: 4,
4164
+ height: 14,
4165
+ x: 9,
4166
+ y: 1,
4167
+ rx: 1,
4168
+ ry: 1
4169
+ }))));
4170
+
4171
+ var _path$i;
4172
+ 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); }
4173
+ const SvgPlayFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$l({
4174
+ xmlns: "http://www.w3.org/2000/svg",
4175
+ width: 16,
4176
+ height: 16,
4177
+ focusable: "false",
4178
+ viewBox: "0 0 16 16"
4179
+ }, props), _path$i || (_path$i = /*#__PURE__*/React__namespace.createElement("path", {
4180
+ fill: "currentColor",
4181
+ 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"
4182
+ })));
4183
+
4184
+ var _path$h, _path2$1;
3982
4185
  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
4186
  const SvgPreviousFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$k({
3984
4187
  xmlns: "http://www.w3.org/2000/svg",
@@ -3989,7 +4192,7 @@ const SvgPreviousFill = props => /*#__PURE__*/React__namespace.createElement("sv
3989
4192
  }, props), _path$h || (_path$h = /*#__PURE__*/React__namespace.createElement("path", {
3990
4193
  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
4194
  fill: "currentColor"
3992
- })), _path2$3 || (_path2$3 = /*#__PURE__*/React__namespace.createElement("path", {
4195
+ })), _path2$1 || (_path2$1 = /*#__PURE__*/React__namespace.createElement("path", {
3993
4196
  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
4197
  fill: "currentColor"
3995
4198
  })));
@@ -4019,8 +4222,9 @@ const getNextPlaybackRate = (rate = 1) => {
4019
4222
  const StyledDiv$3 = styled__default["default"].div `
4020
4223
  display: flex;
4021
4224
  align-items: center;
4225
+ justify-content: center;
4022
4226
  `;
4023
- const ControlsGroupCenter = () => {
4227
+ const ControlsGroupCenter = (props) => {
4024
4228
  var _a;
4025
4229
  const [playBackRate, setPlayBackRate] = React.useState(1);
4026
4230
  const { context, togglePlay } = Video.useVideoContext();
@@ -4043,107 +4247,73 @@ const ControlsGroupCenter = () => {
4043
4247
  const nextTime = videoRef.currentTime + 10;
4044
4248
  videoRef.currentTime = nextTime;
4045
4249
  };
4046
- return (jsxRuntime.jsxs(StyledDiv$3, { children: [jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, onClick: (e) => {
4250
+ return (jsxRuntime.jsxs(StyledDiv$3, Object.assign({}, props, { children: [jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
4047
4251
  if (videoRef) {
4048
4252
  videoRef.currentTime = 0;
4049
4253
  }
4050
4254
  e.stopPropagation();
4051
- } }, { children: jsxRuntime.jsx(SvgPreviousFill, {}) })), jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, onClick: (e) => {
4255
+ } }, { children: jsxRuntime.jsx(SvgPreviousFill, {}) })), jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
4052
4256
  onRewind();
4053
4257
  e.stopPropagation();
4054
- } }, { children: jsxRuntime.jsx(SvgBackSecondsFill, {}) })), jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, size: "large", onClick: togglePlay }, { children: isPlaying ? (jsxRuntime.jsx(SvgPauseFill, { style: { width: "24px", height: "24px" } })) : (jsxRuntime.jsx(SvgPlayFill, { style: { width: "24px", height: "24px" } })) })), jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, onClick: (e) => {
4055
- onForward();
4056
- e.stopPropagation();
4057
- } }, { children: jsxRuntime.jsx(SvgForwardSecondsFill, {}) })), jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, isPill: true, onClick: (e) => {
4058
- const newSpeed = getNextPlaybackRate(playBackRate);
4059
- if (videoRef === null || videoRef === void 0 ? void 0 : videoRef.playbackRate) {
4060
- setPlayBackRate(newSpeed);
4061
- videoRef.playbackRate = newSpeed;
4062
- }
4063
- e.stopPropagation();
4064
- } }, { children: jsxRuntime.jsxs(SM, Object.assign({ isBold: true, style: { lineHeight: "16px" } }, { children: [playBackRate, "x"] })) }))] }));
4065
- };
4066
-
4067
- const StyledDiv$2 = styled__default["default"].div `
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] })) }));
4258
+ } }, { 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) => {
4259
+ onForward();
4260
+ e.stopPropagation();
4261
+ } }, { children: jsxRuntime.jsx(SvgForwardSecondsFill, {}) })), jsxRuntime.jsx(ControlButton, Object.assign({ isPill: true, onClick: (e) => {
4262
+ const newSpeed = getNextPlaybackRate(playBackRate);
4263
+ if (videoRef === null || videoRef === void 0 ? void 0 : videoRef.playbackRate) {
4264
+ setPlayBackRate(newSpeed);
4265
+ videoRef.playbackRate = newSpeed;
4266
+ }
4267
+ e.stopPropagation();
4268
+ } }, { children: jsxRuntime.jsxs(SM, Object.assign({ isBold: true, style: { lineHeight: "16px" } }, { children: [playBackRate, "x"] })) }))] })));
4269
+ };
4079
4270
 
4080
- var _path$g, _path2$2;
4271
+ var _path$g, _circle$1;
4081
4272
  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 SvgVolumeMutedFill = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$j({
4273
+ const SvgTagStroke = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$j({
4083
4274
  xmlns: "http://www.w3.org/2000/svg",
4084
4275
  width: 16,
4085
4276
  height: 16,
4086
4277
  focusable: "false",
4087
4278
  viewBox: "0 0 16 16"
4088
4279
  }, props), _path$g || (_path$g = /*#__PURE__*/React__namespace.createElement("path", {
4280
+ fill: "none",
4089
4281
  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"
4282
+ 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"
4283
+ })), _circle$1 || (_circle$1 = /*#__PURE__*/React__namespace.createElement("circle", {
4284
+ cx: 4,
4285
+ cy: 4,
4286
+ r: 1,
4287
+ fill: "currentColor"
4095
4288
  })));
4096
4289
 
4097
- var _path$f, _path2$1;
4290
+ var _path$f;
4098
4291
  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", {
4292
+ const SvgPlus$1 = props => /*#__PURE__*/React__namespace.createElement("svg", _extends$i({
4293
+ width: 12,
4294
+ height: 12,
4295
+ viewBox: "0 0 12 12",
4109
4296
  fill: "none",
4110
- stroke: "currentColor",
4111
- strokeLinecap: "round",
4112
- 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"
4297
+ xmlns: "http://www.w3.org/2000/svg"
4298
+ }, props), _path$f || (_path$f = /*#__PURE__*/React__namespace.createElement("path", {
4299
+ fillRule: "evenodd",
4300
+ clipRule: "evenodd",
4301
+ 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",
4302
+ fill: "currentColor"
4113
4303
  })));
4114
4304
 
4115
- const AudioButton = () => {
4116
- const [hasAudio, setHasAudio] = React.useState(false);
4117
- const { isMuted, setMuted, context } = Video.useVideoContext();
4118
- const { player } = context;
4119
- const checkAudio = (video) => {
4120
- if (!video) {
4121
- return false;
4122
- }
4123
- console.log("hasAudio?", video);
4124
- const videohasAudio = video.mozHasAudio ||
4125
- Boolean(video.webkitAudioDecodedByteCount) ||
4126
- Boolean(video.audioTracks && video.audioTracks.length);
4127
- setHasAudio(videohasAudio);
4128
- };
4129
- const hasVolume = (video) => {
4130
- if (!video) {
4131
- return false;
4132
- }
4133
- return video.volume > 0;
4134
- };
4135
- React.useEffect(() => {
4136
- if (player && (player === null || player === void 0 ? void 0 : player.ref)) {
4137
- setMuted(!hasVolume(player.ref.current));
4138
- checkAudio(player.ref.current);
4139
- }
4140
- }, [context.isPlaying, isMuted]);
4141
- return (jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, disabled: !hasAudio, onClick: () => {
4142
- if (player === null || player === void 0 ? void 0 : player.ref.current) {
4143
- player.ref.current.volume = player.ref.current.volume > 0 ? 0 : 1;
4144
- setMuted(!player.ref.current.volume);
4305
+ const Cutter = ({ onCutHandler, isCutting, i18n, }) => {
4306
+ var _a;
4307
+ const { context } = Video.useVideoContext();
4308
+ const videoRef = (_a = context.player) === null || _a === void 0 ? void 0 : _a.ref.current;
4309
+ if (!onCutHandler)
4310
+ return null;
4311
+ return (jsxRuntime.jsx(Button, Object.assign({ isPrimary: true, isAccent: !isCutting, size: "small", onClick: (e) => {
4312
+ if (videoRef) {
4313
+ onCutHandler(videoRef.currentTime);
4145
4314
  }
4146
- } }, { children: isMuted || !hasAudio ? jsxRuntime.jsx(SvgVolumeMutedFill, {}) : jsxRuntime.jsx(SvgVolumeUnmutedFill, {}) })));
4315
+ e.stopPropagation();
4316
+ } }, { children: isCutting ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button.StartIcon, { children: jsxRuntime.jsx(SvgTagStroke, {}) }), (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, {}) }), (i18n === null || i18n === void 0 ? void 0 : i18n.beforeHighlight) || "Start observation"] })) })));
4147
4317
  };
4148
4318
 
4149
4319
  var _path$e;
@@ -4212,7 +4382,7 @@ const FullScreenButton = ({ container, }) => {
4212
4382
  setFullScreen(false);
4213
4383
  }
4214
4384
  }
4215
- }), [ref, isFullScreen]);
4385
+ }), [ref, isFullScreen, setFullScreen]);
4216
4386
  const canGoFullScreen = React.useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
4217
4387
  if (ref) {
4218
4388
  return (requestFullscreen ||
@@ -4237,31 +4407,89 @@ const FullScreenButton = ({ container, }) => {
4237
4407
  }
4238
4408
  };
4239
4409
  }, [ref]);
4240
- return (jsxRuntime.jsx(IconButton, Object.assign({ isBright: true, onClick: (e) => {
4410
+ return (jsxRuntime.jsx(ControlButton, Object.assign({ onClick: (e) => {
4241
4411
  handleFullScreen();
4242
4412
  e.stopPropagation();
4243
4413
  }, disabled: !canGoFullScreen() }, { children: document.fullscreenElement || isFullScreen ? (jsxRuntime.jsx(SvgMinimizeStroke, {})) : (jsxRuntime.jsx(SvgMaximizeStroke, {})) })));
4244
4414
  };
4245
4415
 
4416
+ const UgProgress = styled__default["default"](reactLoaders.Progress) ``;
4417
+ /**
4418
+ * A Progress loader communicates progress when downloading or uploading content.
4419
+ * <hr>
4420
+ * Used for this:
4421
+ * - To communicate the amount of time left when downloading or uploading content
4422
+ *
4423
+ Not for this:
4424
+ - When the loading time is unknown, use a Spinner instead
4425
+ - When loading page content, use a Skeleton loader instead
4426
+ */
4427
+ const Progress = React.forwardRef((props, ref) => (jsxRuntime.jsx(UgProgress, Object.assign({ ref: ref }, props))));
4428
+
4429
+ const StyledProgress = styled.styled(Progress) `
4430
+ width: 100%;
4431
+ border-radius: 0;
4432
+ color: ${({ theme }) => theme.palette.grey[400]};
4433
+ cursor: pointer;
4434
+ > div {
4435
+ border-radius: 0;
4436
+ }
4437
+ `;
4438
+ const ProgressBar = React.forwardRef((props, ref) => {
4439
+ const { progress, handleSkipAhead } = props;
4440
+ return (jsxRuntime.jsx(StyledProgress, { className: "progress-bar-1", ref: ref, value: progress, onClick: (e) => handleSkipAhead(e.clientX) }));
4441
+ });
4442
+
4443
+ const StyledDiv$2 = styled__default["default"].div `
4444
+ display: flex;
4445
+ color: ${({ theme }) => theme.palette.grey[700]};
4446
+ `;
4447
+ const TimeLabel = ({ current, duration, }) => (jsxRuntime.jsx(StyledDiv$2, { children: jsxRuntime.jsxs(SM, Object.assign({ tag: "span" }, { children: [formatDuration(current), "/", formatDuration(duration)] })) }));
4448
+
4449
+ const Wrapper$1 = styled__default["default"].div `
4450
+ position: absolute;
4451
+ bottom: ${({ theme }) => theme.space.sm};
4452
+ z-index: 1;
4453
+ `;
4454
+ const Content$1 = styled__default["default"].div `
4455
+ display: flex;
4456
+ background-color: ${({ theme }) => theme.palette.grey[800]};
4457
+ border-radius: 2px;
4458
+ width: auto;
4459
+ padding: 2px 4px;
4460
+ display: inline-flex;
4461
+ color: white;
4462
+ font-size: ${({ theme }) => theme.fontSizes.sm};
4463
+ align-items: center;
4464
+ justify-content: center;
4465
+ min-height: 14px;
4466
+ `;
4467
+ const PlayerTooltip = (_a) => {
4468
+ var { children } = _a, props = __rest(_a, ["children"]);
4469
+ return (jsxRuntime.jsx(Wrapper$1, Object.assign({}, props, { children: jsxRuntime.jsx(Content$1, { children: children }) })));
4470
+ };
4471
+
4472
+ function useDebounce(value, delay) {
4473
+ const [debouncedValue, setDebouncedValue] = React.useState(value);
4474
+ React.useEffect(() => {
4475
+ const timer = setTimeout(() => setDebouncedValue(value), delay || 500);
4476
+ return () => {
4477
+ clearTimeout(timer);
4478
+ };
4479
+ }, [value, delay]);
4480
+ return debouncedValue;
4481
+ }
4482
+
4246
4483
  const ControlsWrapper = styled__default["default"].div `
4247
4484
  position: absolute;
4248
4485
  bottom: 0;
4249
4486
  left: 0;
4250
4487
  right: 0;
4251
4488
  padding: ${({ theme }) => theme.space.xxs} 0;
4252
- background-color: ${({ theme }) => reactTheming.getColor(theme.palette.grey, 700, undefined, 0.8)};
4489
+ background-color: ${({ theme }) => theme.palette.grey[100]};
4253
4490
  ${({ isPlaying }) => isPlaying && "display: none;"}
4254
4491
  z-index: 2;
4255
4492
  `;
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
4493
  const StyledTooltip = styled__default["default"](PlayerTooltip) `
4266
4494
  display: none;
4267
4495
  `;
@@ -4280,18 +4508,34 @@ const StyledDiv$1 = styled__default["default"].div `
4280
4508
  display: flex;
4281
4509
  align-items: center;
4282
4510
  `;
4283
- const Controls = ({ container, }) => {
4511
+ const CurrentTimeMarker = styled__default["default"].div `
4512
+ width: 2px;
4513
+ top: 0;
4514
+ left: ${({ left }) => `${left}%`};
4515
+ position: absolute;
4516
+ height: 110%;
4517
+ z-index: 1;
4518
+ background-color: white;
4519
+ `;
4520
+ const Controls = ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpdated, i18n, }) => {
4284
4521
  var _a, _b, _c;
4285
4522
  const [progress, setProgress] = React.useState(0);
4286
4523
  const [tooltipMargin, setTooltipMargin] = React.useState(0);
4287
4524
  const [tooltipLabel, setTooltipLabel] = React.useState("00:00");
4525
+ const [marks, setMarks] = React.useState(bookmarks);
4526
+ const [updatedMark, setUpdatedMark] = React.useState();
4288
4527
  const progressRef = React.useRef(null);
4289
4528
  const { context, setCurrentTime } = Video.useVideoContext();
4529
+ const debouncedMark = useDebounce(updatedMark, 500);
4530
+ const { reset, isGrabbing, activeBookmark, fromEnd } = useProgressContext();
4531
+ React.useEffect(() => {
4532
+ setMarks(bookmarks);
4533
+ }, [bookmarks]);
4290
4534
  const relCurrentTime = ((_a = context.player) === null || _a === void 0 ? void 0 : _a.currentTime)
4291
4535
  ? ((_b = context.player) === null || _b === void 0 ? void 0 : _b.currentTime) - context.part.start
4292
4536
  : 0;
4293
4537
  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) => {
4538
+ const getVideoPositionFromEvent = React.useCallback((clientX) => {
4295
4539
  if (progressRef && progressRef.current && duration) {
4296
4540
  const bounds = progressRef.current.getBoundingClientRect();
4297
4541
  const x = clientX - bounds.left;
@@ -4299,12 +4543,18 @@ const Controls = ({ container, }) => {
4299
4543
  return videoPositionSecs;
4300
4544
  }
4301
4545
  return 0;
4302
- };
4546
+ }, [progressRef, duration]);
4547
+ const getProgress = React.useCallback((currentTime) => {
4548
+ const current = currentTime - (context.part.start || 0);
4549
+ if (duration === 0)
4550
+ return 0;
4551
+ return (current / duration) * 100;
4552
+ }, [context.part.start, duration]);
4303
4553
  const handleSkipAhead = React.useCallback((pageX) => {
4304
4554
  const time = getVideoPositionFromEvent(pageX) + (context.part.start || 0);
4305
4555
  setCurrentTime(time);
4306
4556
  setProgress(getProgress(time));
4307
- }, [context.player, context.part]);
4557
+ }, [getVideoPositionFromEvent, context.part.start, setCurrentTime, getProgress]);
4308
4558
  const onMouseEvent = (e) => {
4309
4559
  if (progressRef && progressRef.current) {
4310
4560
  const tooltipWidth = 40;
@@ -4315,20 +4565,45 @@ const Controls = ({ container, }) => {
4315
4565
  const videoTargetDuration = getVideoPositionFromEvent(e.clientX);
4316
4566
  setTooltipMargin(newTooltipMargin);
4317
4567
  setTooltipLabel(formatDuration(videoTargetDuration));
4568
+ if (isGrabbing) {
4569
+ handleBookmarkUpdate(marginX, progressRef.current.clientWidth);
4570
+ }
4318
4571
  }
4319
4572
  };
4573
+ const handleBookmarkUpdate = React.useCallback((newX, clientW) => {
4574
+ if (!activeBookmark || !marks)
4575
+ return;
4576
+ const currentObsIndex = marks.findIndex((mark) => mark.id === activeBookmark.id);
4577
+ const value = (newX / clientW) * duration + context.part.start;
4578
+ const updatedMark = Object.assign(Object.assign({}, marks[currentObsIndex]), (!!fromEnd ? { end: value } : { start: value }));
4579
+ const newMarks = [
4580
+ ...marks.slice(0, currentObsIndex),
4581
+ updatedMark,
4582
+ ...marks.slice(currentObsIndex + 1),
4583
+ ];
4584
+ setMarks(newMarks);
4585
+ setUpdatedMark(updatedMark);
4586
+ }, [activeBookmark, context.part.start, duration, fromEnd, marks]);
4320
4587
  React.useEffect(() => {
4321
4588
  var _a;
4322
4589
  const currentTime = ((_a = context.player) === null || _a === void 0 ? void 0 : _a.currentTime) || 0;
4323
4590
  setProgress(getProgress(currentTime));
4324
- }, [context.player]);
4325
- const getProgress = React.useCallback((currentTime) => {
4326
- const current = currentTime - (context.part.start || 0);
4327
- if (duration === 0)
4328
- return 0;
4329
- return (current / duration) * 100;
4330
- }, [context.player]);
4331
- return (jsxRuntime.jsxs(ControlsWrapper, Object.assign({ 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 })), jsxRuntime.jsx(TimeLabel, { current: formatDuration(relCurrentTime), duration: formatDuration(duration) }), jsxRuntime.jsx(StyledProgress, { ref: progressRef, value: progress, onClick: (e) => handleSkipAhead(e.clientX) })] })), jsxRuntime.jsxs(ControlsBar, { children: [jsxRuntime.jsx(StyledDiv$1, { children: jsxRuntime.jsx(AudioButton, {}) }), jsxRuntime.jsx(ControlsGroupCenter, {}), jsxRuntime.jsx(StyledDiv$1, { children: jsxRuntime.jsx(FullScreenButton, { container: container }) })] })] })));
4591
+ }, [context.player, getProgress]);
4592
+ React.useEffect(() => {
4593
+ if (!marks)
4594
+ return;
4595
+ document.addEventListener("mouseup", reset);
4596
+ return () => {
4597
+ document.removeEventListener("mouseup", reset);
4598
+ };
4599
+ }, [reset, marks]);
4600
+ React.useEffect(() => {
4601
+ if (debouncedMark) {
4602
+ onBookMarkUpdated === null || onBookMarkUpdated === void 0 ? void 0 : onBookMarkUpdated(debouncedMark);
4603
+ }
4604
+ }, [debouncedMark, onBookMarkUpdated]);
4605
+ return (jsxRuntime.jsxs(ControlsWrapper, Object.assign({ 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 &&
4606
+ (marks === null || marks === void 0 ? void 0 : marks.map((bookmark, index) => (jsxRuntime.jsx(Bookmark, Object.assign({}, bookmark), `${index}${bookmark.start}`)))), jsxRuntime.jsx(ProgressBar, { ref: progressRef, progress: progress, handleSkipAhead: handleSkipAhead, duration: duration }), jsxRuntime.jsx(CurrentTimeMarker, { left: progress })] })), jsxRuntime.jsxs(ControlsBar, { children: [jsxRuntime.jsxs(StyledDiv$1, Object.assign({ style: { width: "20%", justifyContent: "start" } }, { children: [jsxRuntime.jsx(AudioButton, {}), jsxRuntime.jsx(TimeLabel, { current: relCurrentTime, duration: duration })] })), jsxRuntime.jsx(ControlsGroupCenter, { style: { width: "60%" } }), jsxRuntime.jsxs(StyledDiv$1, Object.assign({ style: { width: "20%", justifyContent: "end" } }, { children: [jsxRuntime.jsx(Cutter, { onCutHandler: onCutHandler, isCutting: isCutting, i18n: i18n }), jsxRuntime.jsx(FullScreenButton, { container: container })] }))] })] })));
4332
4607
  };
4333
4608
 
4334
4609
  var _path$c;
@@ -4360,6 +4635,10 @@ const BigButton = styled__default["default"](IconButton) `
4360
4635
  min-width: ${({ theme }) => theme.space.base * 15}px;
4361
4636
  width: 80px;
4362
4637
  height: 80px;
4638
+
4639
+ box-shadow: ${({ theme }) => theme.shadows.boxShadow(theme)};
4640
+
4641
+
4363
4642
  ${PlayIcon} {
4364
4643
  width: 60%;
4365
4644
  height: 60%;
@@ -4426,8 +4705,7 @@ const Container$1 = styled__default["default"].div `
4426
4705
  }
4427
4706
  }
4428
4707
  }
4429
-
4430
- background-color: ${({ theme }) => theme.palette.grey[700]};
4708
+ background: ${({ theme }) => theme.palette.grey[400]};
4431
4709
  `;
4432
4710
 
4433
4711
  const UgSpinner = styled__default["default"](reactLoaders.Spinner) ``;
@@ -4455,18 +4733,15 @@ const VideoSpinner = () => (jsxRuntime.jsx(StyledDiv, { children: jsxRuntime.jsx
4455
4733
  * Used for this:
4456
4734
  - To display a video
4457
4735
  */
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
- });
4736
+ 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
4737
  const PlayerCore = React.forwardRef((props, forwardRef) => {
4464
4738
  var _a;
4465
4739
  const { context, togglePlay, setIsPlaying } = Video.useVideoContext();
4740
+ const { onCutHandler, bookmarks, isCutting } = props;
4466
4741
  const videoRef = (_a = context.player) === null || _a === void 0 ? void 0 : _a.ref.current;
4467
4742
  const isLoaded = !!videoRef;
4468
4743
  const containerRef = React.useRef(null);
4469
- React.useImperativeHandle(forwardRef, () => videoRef);
4744
+ React.useImperativeHandle(forwardRef, () => videoRef, [videoRef]);
4470
4745
  React.useEffect(() => {
4471
4746
  if (videoRef) {
4472
4747
  videoRef.addEventListener("pause", () => {
@@ -4480,10 +4755,19 @@ const PlayerCore = React.forwardRef((props, forwardRef) => {
4480
4755
  });
4481
4756
  }
4482
4757
  };
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 })] })));
4758
+ }, [setIsPlaying, videoRef]);
4759
+ 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(ProgressContextProvider, { children: jsxRuntime.jsx(Controls, { container: containerRef.current, onCutHandler: onCutHandler, bookmarks: bookmarks, isCutting: isCutting, onBookMarkUpdated: props.handleBookmarkUpdate, i18n: props.i18n }) })] })));
4485
4760
  });
4486
4761
 
4762
+ const MediaLightBox = ({ header, onClose, slideChange, selectedImageIndex, thumbnails, videoRefs, isOpen, details }) => {
4763
+ if (!isOpen) {
4764
+ return null;
4765
+ }
4766
+ 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) => {
4767
+ videoRefs.current.push(ref);
4768
+ }, 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" })] })));
4769
+ };
4770
+
4487
4771
  const ChatBoxContainer = styled__default["default"].div `
4488
4772
  display: flex;
4489
4773
  border-top: 1px solid ${({ theme }) => theme.palette.grey[200]};
@@ -4503,14 +4787,19 @@ const ChatBoxContainer = styled__default["default"].div `
4503
4787
  - Simple text input, use textarea instead.
4504
4788
  */
4505
4789
  const CommentBox = (_a) => {
4790
+ var _b;
4506
4791
  var { placeholderOptions } = _a, props = __rest(_a, ["placeholderOptions"]);
4507
4792
  const { children, hasFloatingMenu, hasButtonsMenu, bubbleOptions, i18n } = props;
4508
4793
  const { editor, setEditor, mentionableUsers, triggerSave, thumbnails, addThumbnails, } = useChatContext();
4509
- const { addToast } = useToast();
4510
4794
  const [isOpen, setIsOpen] = React.useState(false);
4511
- const [selectedImage, setSelectedImage] = React.useState({});
4512
4795
  const [selectedImageIndex, setSelectedImageIndex] = React.useState(0);
4796
+ const { getMedia } = useMedia();
4513
4797
  const ext = editorExtensions({ placeholderOptions, mentionableUsers });
4798
+ function handleEvent(data) {
4799
+ if (!data || !data.files)
4800
+ return;
4801
+ addThumbnails({ files: getMedia(data.files) });
4802
+ }
4514
4803
  const closeLightbox = () => {
4515
4804
  setIsOpen(false);
4516
4805
  };
@@ -4523,10 +4812,7 @@ const CommentBox = (_a) => {
4523
4812
  }
4524
4813
  });
4525
4814
  }, [videoRefs]);
4526
- const handleOpenLightbox = (file, index) => {
4527
- if (!file)
4528
- throw Error("Error with the image");
4529
- setSelectedImage(file);
4815
+ const handleOpenLightbox = (index) => {
4530
4816
  setSelectedImageIndex(index);
4531
4817
  setIsOpen(true);
4532
4818
  };
@@ -4538,59 +4824,13 @@ const CommentBox = (_a) => {
4538
4824
  return false;
4539
4825
  },
4540
4826
  handleDrop: function (view, event, slice, moved) {
4541
- if (!event.dataTransfer || !event.dataTransfer.files)
4542
- return false;
4543
4827
  event.preventDefault();
4544
- const files = Array.from(event.dataTransfer.files).map((file) => {
4545
- return Object.assign(file, { isLoadingMedia: false });
4546
- });
4547
- const wronfFiles = files.filter((file) => !/^(image|video)\//.test(file.type));
4548
- if (wronfFiles.length > 0) {
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;
4828
+ handleEvent(event.dataTransfer);
4829
+ },
4830
+ handlePaste: (view, event, slice) => {
4831
+ event.preventDefault();
4832
+ handleEvent(event.clipboardData);
4558
4833
  },
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
4834
  } }, props));
4595
4835
  const onKeyDown = (event) => {
4596
4836
  if ((event.ctrlKey || event.metaKey) && event.key === "Enter") {
@@ -4602,14 +4842,32 @@ const CommentBox = (_a) => {
4602
4842
  return null;
4603
4843
  ed.on("create", ({ editor }) => setEditor(editor));
4604
4844
  ed.on("update", ({ editor }) => setEditor(editor));
4605
- const mediaFiles = thumbnails.map((file) => {
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 })] }));
4845
+ 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
4846
  };
4612
4847
 
4848
+ const UgGrid = styled__default["default"](reactGrid.Grid) `
4849
+ padding-left: 0;
4850
+ padding-right: 0;
4851
+ `;
4852
+ /**
4853
+ * The Grid component is a framework for building modular layouts.
4854
+ * <hr>
4855
+ * Used for this:
4856
+ - To structure the layout of a page
4857
+ */
4858
+ const Grid = (props) => jsxRuntime.jsx(UgGrid, Object.assign({}, props));
4859
+
4860
+ const Row$1 = (props) => jsxRuntime.jsx(reactGrid.Row, Object.assign({}, props));
4861
+
4862
+ const StyledCol$1 = styled__default["default"](reactGrid.Col) `
4863
+ margin-bottom: ${theme.space.lg};
4864
+
4865
+ @media screen and (max-width: ${theme.breakpoints.sm}) {
4866
+ margin-bottom: ${theme.space.md};
4867
+ }
4868
+ `;
4869
+ const Col = (props) => jsxRuntime.jsx(StyledCol$1, Object.assign({}, props));
4870
+
4613
4871
  const CommentCard = styled.styled(Card) `
4614
4872
  padding: ${({ theme }) => `${theme.space.base * 3}px ${theme.space.sm}`};
4615
4873
  background-color: ${({ theme }) => theme.palette.grey[100]};
@@ -4653,13 +4911,9 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
4653
4911
  var _a, _b;
4654
4912
  const { mentionableUsers } = useChatContext();
4655
4913
  const [isOpen, setIsOpen] = React.useState(false);
4656
- const [selectedImage, setSelectedImage] = React.useState({});
4657
4914
  const [selectedImageIndex, setSelectedImageIndex] = React.useState(0);
4658
4915
  const ext = editorExtensions({ mentionableUsers });
4659
- const handleClickThumbnail = (file, index) => {
4660
- if (!file)
4661
- throw Error("Error with the image");
4662
- setSelectedImage(file);
4916
+ const handleClickThumbnail = (index) => {
4663
4917
  setSelectedImageIndex(index);
4664
4918
  setIsOpen(true);
4665
4919
  };
@@ -4668,7 +4922,6 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
4668
4922
  };
4669
4923
  const videoRefs = React.useRef([]);
4670
4924
  const slideChange = React.useCallback((index) => {
4671
- setSelectedImage(media[index]);
4672
4925
  setSelectedImageIndex(index);
4673
4926
  videoRefs.current.forEach((ref) => {
4674
4927
  if (ref) {
@@ -4685,23 +4938,12 @@ const Comment = ({ author, message, children, date, media = [], header, }) => {
4685
4938
  ed.setOptions({
4686
4939
  editable: false,
4687
4940
  });
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
- // Check if item is an image or a video
4690
- if (file.type.includes('image'))
4691
- return (jsxRuntime.jsx(Col, Object.assign({ xs: 12, sm: 4, className: "flex-3-sm" }, { children: jsxRuntime.jsx(ImageThumbnail, { src: file.url, index: index, showX: true, isLoadingMedia: false, clickThumbnail: () => {
4692
- handleClickThumbnail(file, index);
4693
- } }, index) })));
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 })] }));
4941
+ 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: () => {
4942
+ handleClickThumbnail(index);
4943
+ } }) }), 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: {
4944
+ avatar: author.avatar,
4945
+ name: author.name,
4946
+ }, date: date, message: message }, { children: jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("br", {}) }) })) }), jsxRuntime.jsx(Footer$2, { children: children })] }));
4705
4947
  };
4706
4948
 
4707
4949
  /**
@@ -5340,6 +5582,151 @@ const UgToggle = styled__default["default"](reactForms.Toggle) ``;
5340
5582
  **/
5341
5583
  const Toggle = (props) => jsxRuntime.jsx(UgToggle, Object.assign({}, props));
5342
5584
 
5585
+ const HighlightContext = React.createContext(null);
5586
+ const HighlightContextProvider = ({ term, children, }) => {
5587
+ const [searchTerm, setsearchTerm] = React.useState(term !== null && term !== void 0 ? term : "");
5588
+ React.useEffect(() => {
5589
+ setsearchTerm(term !== null && term !== void 0 ? term : "");
5590
+ }, [term]);
5591
+ const HighlightContextValue = React.useMemo(() => ({
5592
+ searchTerm,
5593
+ }), [searchTerm]);
5594
+ return (jsxRuntime.jsx(HighlightContext.Provider, Object.assign({ value: HighlightContextValue }, { children: children })));
5595
+ };
5596
+ const useHighlightContext = () => {
5597
+ const context = React.useContext(HighlightContext);
5598
+ if (!context)
5599
+ throw new Error("Provider not found for HighlightContextProvider");
5600
+ return context; // Now we can use the context in the component, SAFELY.
5601
+ };
5602
+
5603
+ const StyledSearchWord = styled__default["default"].span `
5604
+ background-color: ${({ theme }) => theme.palette.product.talk};
5605
+ color: ${({ theme }) => theme.palette.grey[700]};
5606
+ `;
5607
+ const Searchable = ({ text, }) => {
5608
+ const { searchTerm } = useHighlightContext();
5609
+ if (searchTerm) {
5610
+ const parts = text.split(new RegExp(`(${searchTerm})`, "gi"));
5611
+ 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 }))) }));
5612
+ }
5613
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: text });
5614
+ };
5615
+
5616
+ const StyledWord = styled__default["default"].div `
5617
+ display: inline;
5618
+ font-size: ${({ theme, size }) => theme.fontSizes[size !== null && size !== void 0 ? size : "md"]};
5619
+ padding: ${({ theme }) => theme.space.xxs} 0;
5620
+ position: relative;
5621
+
5622
+ ${({ observations, theme }) => {
5623
+ var _a;
5624
+ return observations && observations.length > 0 &&
5625
+ `
5626
+ color: ${(_a = observations[observations.length - 1].color) !== null && _a !== void 0 ? _a : theme.palette.grey[600]};
5627
+ box-sizing: border-box;
5628
+ font-weight: ${theme.fontWeights.semibold};
5629
+
5630
+ &:focus {
5631
+ outline: none;
5632
+ }
5633
+ `;
5634
+ }}
5635
+ `;
5636
+ const ActiveWord = styled__default["default"].span `
5637
+ background-color: ${({ theme }) => getColor(theme.palette.fuschia, 400, undefined, 0.4)};
5638
+ `;
5639
+ const WordsContainer = styled__default["default"].div `
5640
+ box-sizing: border-box;
5641
+ ${StyledWord}, span {
5642
+ &::selection {
5643
+ background-color: ${({ theme }) => getColor(theme.palette.kale, 700, undefined, 0.5)};
5644
+ }
5645
+ }
5646
+ `;
5647
+ const Layer = styled__default["default"].div `
5648
+ position: absolute;
5649
+ top: 0;
5650
+ left: 0;
5651
+ width: 100%;
5652
+ height: 100%;
5653
+ z-index: 0;
5654
+ background-color: ${({ color }) => getColor(color, undefined, undefined, 0.2)};
5655
+ `;
5656
+ /**
5657
+ * Use Highlight to use highlight interation on any text element
5658
+ */
5659
+ const Highlight = (props) => {
5660
+ const ref = React.useRef(null);
5661
+ const extractText = (selection) => {
5662
+ if (selection.anchorNode === null || selection.focusNode === null)
5663
+ return "";
5664
+ var range = selection.getRangeAt(0);
5665
+ var tempDiv = document.createElement("div");
5666
+ tempDiv.appendChild(range.cloneContents());
5667
+ var items = tempDiv.querySelectorAll("div");
5668
+ items.forEach(function (item) {
5669
+ if (item.getAttribute("data-unselectable")) {
5670
+ item.remove();
5671
+ }
5672
+ });
5673
+ var filteredText = tempDiv.textContent || tempDiv.innerText;
5674
+ return filteredText.length ? filteredText.trim() : selection.toString();
5675
+ };
5676
+ const handleSelectionChange = React.useCallback(() => {
5677
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
5678
+ const activeSelection = document.getSelection();
5679
+ if (!activeSelection) {
5680
+ return;
5681
+ }
5682
+ // Extract the text from the selection cleaning unselectable items
5683
+ const text = extractText(activeSelection);
5684
+ if (!text)
5685
+ return;
5686
+ const anchorNode = (_a = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.anchorNode) === null || _a === void 0 ? void 0 : _a.parentElement;
5687
+ const focusNode = (_b = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.focusNode) === null || _b === void 0 ? void 0 : _b.parentElement;
5688
+ if (anchorNode &&
5689
+ focusNode &&
5690
+ ((_c = ref.current) === null || _c === void 0 ? void 0 : _c.contains(anchorNode)) && // Selection starts inside the ref
5691
+ ((_d = ref.current) === null || _d === void 0 ? void 0 : _d.contains(focusNode)) // Selection ends inside the ref
5692
+ ) {
5693
+ const selectionPart = {
5694
+ 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")),
5695
+ 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")),
5696
+ };
5697
+ (_j = props === null || props === void 0 ? void 0 : props.handleSelection) === null || _j === void 0 ? void 0 : _j.call(props, Object.assign(Object.assign({}, selectionPart), { text }));
5698
+ }
5699
+ }, [props]);
5700
+ React.useEffect(() => {
5701
+ if (ref.current === null)
5702
+ return;
5703
+ document.addEventListener("selectionchange", handleSelectionChange);
5704
+ return () => {
5705
+ document.removeEventListener("selectionchange", handleSelectionChange);
5706
+ };
5707
+ }, [ref, props, handleSelectionChange]);
5708
+ return (jsxRuntime.jsx(HighlightContextProvider, Object.assign({ term: props.search }, { children: jsxRuntime.jsx(WordsContainer, Object.assign({ ref: ref }, { children: props.children })) })));
5709
+ };
5710
+ const Word = (props) => {
5711
+ const isActive = props.currentTime &&
5712
+ props.currentTime >= props.start &&
5713
+ props.currentTime < props.end;
5714
+ // Are there any observations containing this word?
5715
+ const foundObservations = React.useMemo(() => {
5716
+ var _a, _b;
5717
+ 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 : [];
5718
+ }, [props.observations, props.start, props.end]);
5719
+ 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) => {
5720
+ var _a;
5721
+ return (jsxRuntime.jsx(Layer, { color: (_a = obs.hue) !== null && _a !== void 0 ? _a : theme.palette.grey[600] }, obs.id));
5722
+ }), isActive ? (jsxRuntime.jsx(ActiveWord, { children: jsxRuntime.jsx(Searchable, { text: props.text }) })) : (jsxRuntime.jsx(Searchable, { text: props.text })), " "] }))), [props, foundObservations, isActive]);
5723
+ if (props.tooltipContent !== undefined && foundObservations.length > 0) {
5724
+ return (jsxRuntime.jsx(Tooltip, Object.assign({ content: props.tooltipContent(foundObservations), isTransparent: true }, { children: ObsWord })));
5725
+ }
5726
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: ObsWord });
5727
+ };
5728
+ Highlight.Word = Word;
5729
+
5343
5730
  /**
5344
5731
  * The Dots loader communicates ongoing activity after a user takes an action.
5345
5732
  * It tells them that something is taking place.
@@ -6816,6 +7203,7 @@ exports.HeaderItem = HeaderItem;
6816
7203
  exports.HeaderItemIcon = HeaderItemIcon;
6817
7204
  exports.HeaderItemText = HeaderItemText;
6818
7205
  exports.HeaderRow = HeaderRow;
7206
+ exports.Highlight = Highlight;
6819
7207
  exports.Hint = Hint;
6820
7208
  exports.Icon = Icon;
6821
7209
  exports.IconButton = IconButton;