@appquality/unguess-design-system 3.1.91-multi-layers → 3.1.91-test-fix-obs

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -642,6 +642,15 @@ Alert.Close = reactNotifications.Close;
642
642
 
643
643
  var img$2 = "data:image/svg+xml,%3csvg width='26' height='26' viewBox='0 0 26 26' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M17.2597 12.9199V14.767H17.2367C17.075 17.4452 15.5974 18.969 13.127 18.969C10.4949 18.969 8.92496 17.4452 8.76335 14.767H8.74026V12.9199H5V14.767V14.7901C5.20779 19.4538 8.34777 22.4322 13.1039 22.4322C17.8139 22.4322 20.7922 19.5231 21 14.7901V12.9199H17.2597Z' fill='%23003A57'/%3e%3cpath d='M8.78629 3.5H5.02295V7.26335H8.78629V3.5Z' fill='%2370C38A'/%3e%3cpath d='M20.9768 3.5H17.1672V7.30952H20.9768V3.5Z' fill='%23003A57'/%3e%3c/svg%3e";
644
644
 
645
+ const StyledInternalAvatar = styled__default["default"].div `
646
+ display: flex;
647
+ align-items: center;
648
+ justify-content: center;
649
+ `;
650
+ const InternalAvatar = () => {
651
+ return (jsxRuntime.jsx(StyledInternalAvatar, { children: jsxRuntime.jsx("img", { alt: "avatar", src: img$2 }) }));
652
+ };
653
+
645
654
  const UgAvatar = styled__default["default"](reactAvatars.Avatar) `
646
655
  text-transform: uppercase;
647
656
 
@@ -673,7 +682,7 @@ const Avatar = (_a) => {
673
682
  if (type === "text")
674
683
  return jsxRuntime.jsx(Avatar.Text, { children: props.children });
675
684
  if (type === "system")
676
- return jsxRuntime.jsx("img", { alt: "avatar", src: img$2 });
685
+ return jsxRuntime.jsx(InternalAvatar, {});
677
686
  };
678
687
  return (jsxRuntime.jsx(UgAvatar, Object.assign({}, props, { badge: fixedBadge, isSystem: props.avatarType === "system" || isSystem, children: wrapChildren(props.avatarType || "text"), size: props.size || "small" })));
679
688
  };
@@ -2337,40 +2346,26 @@ const ChatContextProvider = ({ onSave, onFileUpload, onDeleteThumbnail, setMenti
2337
2346
  setEditor,
2338
2347
  thumbnails,
2339
2348
  setThumbnails,
2340
- afterUploadCallback: (failed) => {
2341
- setThumbnails(thumbnails.map((file) => {
2342
- if (failed.includes(file.id)) {
2343
- file.isLoadingMedia = false;
2344
- //file.isError = true;
2345
- }
2346
- else {
2347
- file.isLoadingMedia = false;
2348
- //file.isError = false
2349
- }
2350
- return file;
2351
- }));
2352
- },
2353
- addThumbnails: ({ files }) => {
2349
+ afterUploadCallback: (failed) => { },
2350
+ addThumbnails: ({ files }) => __awaiter(void 0, void 0, void 0, function* () {
2354
2351
  setThumbnails((prev) => [...prev, ...files]);
2355
- if (onFileUpload) {
2356
- onFileUpload(files).then((data) => {
2357
- var _a;
2358
- const failed = (_a = data.failed) === null || _a === void 0 ? void 0 : _a.map((f) => f.name);
2359
- setThumbnails((prev) => {
2360
- return prev.map((file) => {
2361
- file.isLoadingMedia = false;
2362
- if ((failed === null || failed === void 0 ? void 0 : failed.length) && failed.includes(file.id)) {
2363
- file.isError = true;
2364
- }
2365
- else {
2366
- file.isError = false;
2367
- }
2368
- return file;
2369
- });
2352
+ if (!onFileUpload)
2353
+ return;
2354
+ try {
2355
+ const data = yield onFileUpload(files);
2356
+ setThumbnails((prev) => {
2357
+ return prev.map(file => {
2358
+ var _a, _b;
2359
+ file.isLoadingMedia = false;
2360
+ file.error = (_b = (_a = data.failed) === null || _a === void 0 ? void 0 : _a.find(f => f.name === file.name)) === null || _b === void 0 ? void 0 : _b.errorCode;
2361
+ return file;
2370
2362
  });
2371
2363
  });
2372
2364
  }
2373
- },
2365
+ catch (e) {
2366
+ console.log("Error uploading files", e);
2367
+ }
2368
+ }),
2374
2369
  clearInput: () => {
2375
2370
  if (editor && !editor.isEmpty) {
2376
2371
  editor.commands.clearContent();
@@ -3115,7 +3110,7 @@ const CommentBar = ({ editor, i18n, }) => {
3115
3110
  }
3116
3111
  };
3117
3112
  };
3118
- 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, {}) })) }))] })) }));
3113
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(MenuContainer, Object.assign({ id: "menu-container" }, { children: [jsxRuntime.jsx(Tooltip, Object.assign({ content: `${(_b = (_a = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _a === void 0 ? void 0 : _a.bold) !== null && _b !== void 0 ? _b : "Bold text"} ${isMac() ? "Cmd" : "Ctrl"} + B`, placement: "top", type: "light", size: "small", hasArrow: false }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("bold"), isPrimary: editor.isActive("bold"), isPill: false, onClick: handleBoldClick }, { children: jsxRuntime.jsx(SvgBoldStroke, {}) })) })), jsxRuntime.jsx(Tooltip, Object.assign({ content: `${(_d = (_c = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _c === void 0 ? void 0 : _c.italic) !== null && _d !== void 0 ? _d : "Italic text"} ${isMac() ? "Cmd" : "Ctrl"} + I`, placement: "top", type: "light", size: "small", hasArrow: false }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("italic"), isPrimary: editor.isActive("italic"), isPill: false, onClick: handleItalicClick }, { children: jsxRuntime.jsx(SvgItalicStroke, {}) })) })), jsxRuntime.jsx(VerticalDivider, {}), jsxRuntime.jsx(Tooltip, Object.assign({ content: (_f = (_e = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _e === void 0 ? void 0 : _e.mention) !== null && _f !== void 0 ? _f : "Add a mention", placement: "top", type: "light", size: "small", hasArrow: false }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("mention"), isPrimary: editor.isActive("mention"), isPill: false, onClick: handleMentionClick }, { children: jsxRuntime.jsx(SvgAtStroke, {}) })) })), jsxRuntime.jsx(Tooltip, Object.assign({ style: { textAlign: "center" }, content: (_h = (_g = i18n === null || i18n === void 0 ? void 0 : i18n.menu) === null || _g === void 0 ? void 0 : _g.attachment) !== null && _h !== void 0 ? _h : (jsxRuntime.jsxs("span", { children: ["Upload images and video.", " ", jsxRuntime.jsxs("span", Object.assign({ style: { color: theme.palette.grey[600] } }, { children: [" ", jsxRuntime.jsx("br", {}), " Max size: 5GB", " "] }))] })), placement: "top", type: "light", size: "small", hasArrow: true }, { children: jsxRuntime.jsx(IconButton, Object.assign({ size: "small", isBasic: !editor.isActive("attachment"), isPrimary: editor.isActive("attachment"), isPill: false, onClick: handleAttachmentClick }, { children: jsxRuntime.jsx(SvgClipboard, {}) })) }))] })) }));
3119
3114
  };
3120
3115
 
3121
3116
  const CustomMention = Mention__default["default"].extend({
@@ -3398,6 +3393,7 @@ const StyledDeleteThumbnailX = styled__default["default"].div `
3398
3393
  opacity: 0;
3399
3394
  transition: opacity 0.2s;
3400
3395
  z-index: 2;
3396
+ color: ${({ theme }) => theme.palette.grey[800]};
3401
3397
  `;
3402
3398
  const DeleteThumbnailX = ({ deleteThumbnail }) => {
3403
3399
  return (jsxRuntime.jsx(StyledDeleteThumbnailX, Object.assign({ className: "deleteThumbnail" }, { children: jsxRuntime.jsx(SvgRemoveMediaIcon, { onClick: (e) => deleteThumbnail(e) }) })));
@@ -3425,19 +3421,19 @@ const ImageCard = styled__default["default"](SpecialCard) `
3425
3421
  padding: 0;
3426
3422
  position: relative;
3427
3423
  overflow: hidden;
3428
- min-width: 90px;
3424
+ width: 90px;
3429
3425
 
3430
3426
  &:before {
3431
3427
  content: "";
3428
+ font-size: ${({ theme }) => theme.fontSizes.xs};
3432
3429
  position: absolute;
3430
+ padding: ${({ theme }) => theme.space.xs};
3433
3431
  top: 0;
3434
3432
  left: 0;
3435
3433
  width: 100%;
3436
3434
  height: 100%;
3437
- background-color: ${({ theme }) => theme.palette.grey[800]};
3438
- opacity: 0;
3435
+ background-color: ${({ theme }) => theme.palette.grey[800]}00; // 0% opacity
3439
3436
  transition: opacity 0.2s;
3440
- z-index: 1;
3441
3437
  }
3442
3438
 
3443
3439
  &:hover {
@@ -3445,12 +3441,26 @@ const ImageCard = styled__default["default"](SpecialCard) `
3445
3441
  opacity: 1;
3446
3442
  }
3447
3443
  &:before {
3448
- opacity: 0.3;
3444
+ background-color: ${({ theme }) => theme.palette.grey[800]}4d; // 30% opacity
3449
3445
  }
3450
3446
  }
3451
-
3447
+ ${(p) => p.error &&
3448
+ `
3449
+ &:before{
3450
+ content: "Error: ${p.error}";
3451
+ color: ${p.theme.palette.white};
3452
+ background-color: ${p.theme.palette.grey[800]}b3; // 0.7 opacity
3453
+ }
3454
+ `}
3455
+ ${(p) => p.isLoading &&
3456
+ `
3457
+ &:before{
3458
+ background-color: ${p.theme.palette.grey[800]}b3; // 0.7 opacity
3459
+ }
3460
+ `}
3452
3461
  &.video {
3453
3462
  svg {
3463
+ color: ${({ theme }) => theme.palette.grey[800]};
3454
3464
  position: absolute;
3455
3465
  top: 50%;
3456
3466
  left: 50%;
@@ -3467,8 +3477,9 @@ const Preview = styled__default["default"].div `
3467
3477
  align-items: center;
3468
3478
  height: 100px;
3469
3479
  width: 100%;
3470
-
3471
- ${(p) => p.url &&
3480
+ color: ${({ theme }) => theme.palette.white};
3481
+
3482
+ ${p => p.url &&
3472
3483
  `
3473
3484
  background-image: url(${p.url});
3474
3485
  background-color: ${p.theme.palette.grey[100]};
@@ -3482,19 +3493,19 @@ const Preview = styled__default["default"].div `
3482
3493
  height: 100%;
3483
3494
  }
3484
3495
  `;
3485
- const Thumbnail = ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia = true, isError = false, }) => {
3496
+ const Thumbnail = ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia, error = "", }) => {
3486
3497
  const handleCancel = (e) => {
3487
3498
  e.stopPropagation();
3488
3499
  if (removeThumbnail)
3489
3500
  removeThumbnail();
3490
3501
  };
3491
- return (jsxRuntime.jsxs(ImageCard, Object.assign({ onClick: clickThumbnail, className: type.includes("video") ? "video" : "image" }, { children: [isError && (
3492
- // todo: add error icon
3493
- jsxRuntime.jsx("span", { children: "error uploading media" })), isLoadingMedia ? (jsxRuntime.jsx(Preview, { children: jsxRuntime.jsx(reactLoaders.Spinner, { style: {
3494
- display: "flex",
3495
- alignItems: "center",
3496
- justifyContent: "center",
3497
- }, 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, {})] }))] })))] })));
3502
+ return (jsxRuntime.jsx(ImageCard, Object.assign({ onClick: clickThumbnail, className: type.includes("video") ? "video" : "image", error: error, isLoading: isLoadingMedia }, { children: isLoadingMedia ? (jsxRuntime.jsx(Preview, Object.assign({ url: src }, { children: jsxRuntime.jsx(reactLoaders.Spinner, { style: {
3503
+ display: "flex",
3504
+ position: "absolute",
3505
+ color: "white",
3506
+ alignItems: "center",
3507
+ justifyContent: "center",
3508
+ }, size: "large" }) }))) : (jsxRuntime.jsxs(Preview, Object.assign({ url: src }, { children: [showX && (jsxRuntime.jsx(DeleteThumbnailX, { deleteThumbnail: (e) => handleCancel(e) })), type.includes("video") && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("video", Object.assign({ src: src }, { children: jsxRuntime.jsx("track", { kind: "captions" }) })), jsxRuntime.jsx(SvgVideoPlayIcon, { opacity: error ? "0.3" : "1" })] }))] }))) })));
3498
3509
  };
3499
3510
 
3500
3511
  const FlexContainer = styled.styled.div `
@@ -3511,12 +3522,13 @@ const ThumbnailContainer = ({ openLightbox }) => {
3511
3522
  previewUrl: file.url,
3512
3523
  id: file.id,
3513
3524
  isLoadingMedia: file.isLoadingMedia,
3525
+ error: file.error,
3514
3526
  }));
3515
3527
  }, [thumbnails]);
3516
3528
  if (!mediaFiles || mediaFiles.length === 0) {
3517
3529
  return null;
3518
3530
  }
3519
- return (jsxRuntime.jsx(FlexContainer, { children: mediaFiles.map((file, index) => (jsxRuntime.jsx(Thumbnail, { src: file.previewUrl, showX: true, type: file.fileType, isLoadingMedia: file.isLoadingMedia, removeThumbnail: () => {
3531
+ return (jsxRuntime.jsx(FlexContainer, { children: mediaFiles.map((file, index) => (jsxRuntime.jsx(Thumbnail, { src: file.previewUrl, showX: true, type: file.fileType, isLoadingMedia: file.isLoadingMedia, error: file.error, removeThumbnail: () => {
3520
3532
  removeThumbnail(index);
3521
3533
  onDeleteThumbnail(file.id);
3522
3534
  }, clickThumbnail: () => {
@@ -4060,6 +4072,7 @@ const Rect = styled.styled.div `
4060
4072
  }
4061
4073
 
4062
4074
  ${({ isActive }) => isActive && activeBookMark}
4075
+ ${({ isFocused }) => isFocused && activeBookMark}
4063
4076
  `;
4064
4077
  const StyledTooltip$1 = styled.styled(Tooltip) `
4065
4078
  margin-bottom: ${({ theme }) => theme.space.sm};
@@ -4091,7 +4104,7 @@ const Bookmark = (props) => {
4091
4104
  }
4092
4105
  if (start > videoEnd || start < videoStart)
4093
4106
  return null;
4094
- return (jsxRuntime.jsx(StyledTooltip$1, Object.assign({ content: tooltipContent, type: "light", size: "large", isTransparent: true }, { children: jsxRuntime.jsxs(Rect, Object.assign({ isActive: activeBookmark && activeBookmark.id === props.id, hue: hue, style: {
4107
+ return (jsxRuntime.jsx(StyledTooltip$1, Object.assign({ content: tooltipContent, type: "light", size: "large", isTransparent: true }, { children: jsxRuntime.jsxs(Rect, Object.assign({ isActive: activeBookmark && activeBookmark.id === props.id, hue: hue, isFocused: props.isFocused, style: {
4095
4108
  left: `${((start - videoStart) / duration) * 100}%`,
4096
4109
  width: `${((end - start) / duration) * 100}%`,
4097
4110
  }, onClick: props.onClick }, { children: [jsxRuntime.jsx(Grabber, { observation: props }), jsxRuntime.jsx(Grabber, { isEnd: true, observation: props })] })) })));
@@ -4299,18 +4312,22 @@ const SvgPlus$1 = props => /*#__PURE__*/React__namespace.createElement("svg", _e
4299
4312
  fill: "currentColor"
4300
4313
  })));
4301
4314
 
4315
+ // Prevent button from breaking on smaller screens
4316
+ const StyledButton$2 = styled.styled(Button) `
4317
+ overflow: visible;
4318
+ `;
4302
4319
  const Cutter = ({ onCutHandler, isCutting, i18n, }) => {
4303
4320
  var _a;
4304
4321
  const { context } = Video.useVideoContext();
4305
4322
  const videoRef = (_a = context.player) === null || _a === void 0 ? void 0 : _a.ref.current;
4306
4323
  if (!onCutHandler)
4307
4324
  return null;
4308
- return (jsxRuntime.jsx(Button, Object.assign({ isPrimary: true, isAccent: !isCutting, size: "small", onClick: (e) => {
4325
+ return (jsxRuntime.jsx(StyledButton$2, Object.assign({ isPrimary: true, isAccent: !isCutting, size: "small", onClick: (e) => {
4309
4326
  if (videoRef) {
4310
4327
  onCutHandler(videoRef.currentTime);
4311
4328
  }
4312
4329
  e.stopPropagation();
4313
- } }, { 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"] })) })));
4330
+ } }, { children: isCutting ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button.StartIcon, { children: jsxRuntime.jsx(SvgTagStroke, {}) }), jsxRuntime.jsx(Span, { children: (i18n === null || i18n === void 0 ? void 0 : i18n.onHighlight) || "End observation" })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button.StartIcon, { children: jsxRuntime.jsx(SvgPlus$1, {}) }), jsxRuntime.jsx(Span, { children: (i18n === null || i18n === void 0 ? void 0 : i18n.beforeHighlight) || "Start observation" })] })) })));
4314
4331
  };
4315
4332
 
4316
4333
  var _path$e;
@@ -4477,13 +4494,40 @@ function useDebounce(value, delay) {
4477
4494
  return debouncedValue;
4478
4495
  }
4479
4496
 
4480
- const ControlsWrapper = styled__default["default"].div `
4497
+ const Pin = styled.styled.div `
4498
+ width: 2px;
4499
+ bottom: 0;
4500
+ left: ${({ left }) => `${left}%`};
4481
4501
  position: absolute;
4502
+ height: 250%;
4503
+ z-index: 2;
4504
+ background-color: ${({ theme }) => theme.palette.grey[600]};
4505
+ margin-left: -2px; // To not override the current time marker
4506
+
4507
+ &:after {
4508
+ content: "";
4509
+ position: absolute;
4510
+ bottom: 100%;
4511
+ left: 50%;
4512
+ width: 10px;
4513
+ height: 10px;
4514
+ border-radius: 50%;
4515
+ transform: translate(-50%, 0);
4516
+ background-color: ${({ theme }) => theme.palette.grey[600]};
4517
+ }
4518
+ `;
4519
+ const CutStart = ({ left }) => {
4520
+ return jsxRuntime.jsx(Pin, { id: "obs-start-pin", left: left });
4521
+ };
4522
+
4523
+ const ControlsWrapper = styled__default["default"].div `
4524
+ ${({ showControls }) => showControls ? "position: relative;" : "position: absolute;"}
4482
4525
  bottom: 0;
4483
4526
  left: 0;
4484
4527
  right: 0;
4485
4528
  padding: ${({ theme }) => theme.space.xxs} 0;
4486
4529
  background-color: ${({ theme }) => theme.palette.grey[100]};
4530
+ height: 80px;
4487
4531
  ${({ isPlaying }) => isPlaying && "display: none;"}
4488
4532
  z-index: 2;
4489
4533
  `;
@@ -4514,7 +4558,7 @@ const CurrentTimeMarker = styled__default["default"].div `
4514
4558
  z-index: 1;
4515
4559
  background-color: white;
4516
4560
  `;
4517
- const Controls = ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpdated, i18n, }) => {
4561
+ const Controls = ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpdated, i18n, showControls = false, }) => {
4518
4562
  var _a, _b, _c;
4519
4563
  const [progress, setProgress] = React.useState(0);
4520
4564
  const [tooltipMargin, setTooltipMargin] = React.useState(0);
@@ -4524,6 +4568,7 @@ const Controls = ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpd
4524
4568
  const progressRef = React.useRef(null);
4525
4569
  const { context, setCurrentTime } = Video.useVideoContext();
4526
4570
  const debouncedMark = useDebounce(updatedMark, 500);
4571
+ const [cutStart, setCutStart] = React.useState(0);
4527
4572
  const { reset, isGrabbing, activeBookmark, fromEnd } = useProgressContext();
4528
4573
  React.useEffect(() => {
4529
4574
  setMarks(bookmarks);
@@ -4599,8 +4644,14 @@ const Controls = ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpd
4599
4644
  onBookMarkUpdated === null || onBookMarkUpdated === void 0 ? void 0 : onBookMarkUpdated(debouncedMark);
4600
4645
  }
4601
4646
  }, [debouncedMark, onBookMarkUpdated]);
4602
- 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 &&
4603
- (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 })] }))] })] })));
4647
+ React.useEffect(() => {
4648
+ if (isCutting) {
4649
+ setCutStart(progress);
4650
+ }
4651
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4652
+ }, [isCutting]);
4653
+ return (jsxRuntime.jsxs(ControlsWrapper, Object.assign({ showControls: showControls }, (!showControls && { isPlaying: context.isPlaying }), { children: [jsxRuntime.jsxs(ProgressContainer, Object.assign({ onMouseEnter: onMouseEvent, onMouseMove: onMouseEvent, onMouseLeave: onMouseEvent }, { children: [jsxRuntime.jsx(StyledTooltip, Object.assign({ style: { marginLeft: `${tooltipMargin}px` } }, { children: tooltipLabel })), !!duration &&
4654
+ (marks === null || marks === void 0 ? void 0 : marks.map((bookmark, index) => (jsxRuntime.jsx(Bookmark, Object.assign({}, bookmark), `${index}${bookmark.start}`)))), jsxRuntime.jsx(ProgressBar, { ref: progressRef, progress: progress, handleSkipAhead: handleSkipAhead, duration: duration }), isCutting && jsxRuntime.jsx(CutStart, { left: cutStart }), jsxRuntime.jsx(CurrentTimeMarker, { left: progress })] })), jsxRuntime.jsxs(ControlsBar, { children: [jsxRuntime.jsxs(StyledDiv$1, Object.assign({ style: { width: "20%", justifyContent: "start" } }, { children: [jsxRuntime.jsx(AudioButton, {}), jsxRuntime.jsx(TimeLabel, { current: relCurrentTime, duration: duration })] })), jsxRuntime.jsx(ControlsGroupCenter, { style: { width: "60%" } }), jsxRuntime.jsxs(StyledDiv$1, Object.assign({ style: { width: "20%", justifyContent: "end" } }, { children: [jsxRuntime.jsx(Cutter, { onCutHandler: onCutHandler, isCutting: isCutting, i18n: i18n }), jsxRuntime.jsx(FullScreenButton, { container: container })] }))] })] })));
4604
4655
  };
4605
4656
 
4606
4657
  var _path$c;
@@ -4622,8 +4673,9 @@ const FloatingContainer = styled__default["default"].div `
4622
4673
  top: 0;
4623
4674
  left: 0;
4624
4675
  right: 0;
4625
- ${({ isPlaying }) => isPlaying && "display: none;"}
4626
4676
  z-index: 1;
4677
+ ${({ isPlaying }) => isPlaying && "display: none;"}
4678
+ ${({ showControls }) => showControls ? "height: 100%" : "height: calc(100% - 80px)"};
4627
4679
  `;
4628
4680
  const PlayIcon = styled__default["default"](SvgPlayIcon) ``;
4629
4681
  const BigButton = styled__default["default"](IconButton) `
@@ -4648,8 +4700,8 @@ const ButtonsContainer = styled__default["default"].div `
4648
4700
  height: 100%;
4649
4701
  `;
4650
4702
  const FloatingControls = (props) => {
4651
- const { isPlaying, onClick } = props;
4652
- return (jsxRuntime.jsx(FloatingContainer, Object.assign({ isPlaying: isPlaying, onClick: onClick }, { children: jsxRuntime.jsx(ButtonsContainer, { children: !isPlaying && (jsxRuntime.jsx(BigButton, Object.assign({ isPrimary: true, size: "large" }, { children: jsxRuntime.jsx(PlayIcon, { color: "red" }) }))) }) })));
4703
+ const { isPlaying, showControls, onClick } = props;
4704
+ return (jsxRuntime.jsx(FloatingContainer, Object.assign({ isPlaying: isPlaying, showControls: showControls, onClick: onClick }, { children: jsxRuntime.jsx(ButtonsContainer, { children: !isPlaying && (jsxRuntime.jsx(BigButton, Object.assign({ isPrimary: true, size: "large" }, { children: jsxRuntime.jsx(PlayIcon, { color: "red" }) }))) }) })));
4653
4705
  };
4654
4706
 
4655
4707
  const VideoStyle = styled.css `
@@ -4675,9 +4727,13 @@ const VideoStyle = styled.css `
4675
4727
 
4676
4728
  const Container$1 = styled__default["default"].div `
4677
4729
  position: relative;
4678
- display: flex;
4679
- flex-direction: column;
4680
- justify-content: center;
4730
+ ${({ showControls }) => !showControls ? `
4731
+ display: flex;
4732
+ flex-direction: column;
4733
+ justify-content: center;
4734
+ ` : `
4735
+ margin-bottom: 80px;
4736
+ `}
4681
4737
  height: 100%;
4682
4738
  width: 100%;
4683
4739
  video {
@@ -4753,7 +4809,7 @@ const PlayerCore = React.forwardRef((props, forwardRef) => {
4753
4809
  }
4754
4810
  };
4755
4811
  }, [setIsPlaying, videoRef]);
4756
- 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 }) })] })));
4812
+ return (jsxRuntime.jsxs(Container$1, Object.assign({ isLoaded: isLoaded, isPlaying: context.isPlaying, ref: containerRef, showControls: props.showControls }, { children: [!isLoaded ? (jsxRuntime.jsx(VideoSpinner, {})) : (jsxRuntime.jsx(FloatingControls, { isPlaying: context.isPlaying, showControls: props.showControls, onClick: togglePlay })), jsxRuntime.jsx(Video__default["default"].Player, { className: "player-container" }), jsxRuntime.jsx(ProgressContextProvider, { children: jsxRuntime.jsx(Controls, { container: containerRef.current, onCutHandler: onCutHandler, bookmarks: bookmarks, isCutting: isCutting, onBookMarkUpdated: props.handleBookmarkUpdate, i18n: props.i18n, showControls: props.showControls }) })] })));
4757
4813
  });
4758
4814
 
4759
4815
  const MediaLightBox = ({ header, onClose, slideChange, selectedImageIndex, thumbnails, videoRefs, isOpen, details }) => {
@@ -5610,11 +5666,25 @@ const Searchable = ({ text, }) => {
5610
5666
  return jsxRuntime.jsx(jsxRuntime.Fragment, { children: text });
5611
5667
  };
5612
5668
 
5669
+ const CreateObservationButton = styled.styled(Button) `
5670
+ user-select: none;
5671
+ position: absolute;
5672
+ left: ${({ position: { x } }) => x}px;
5673
+ top: ${({ position: { y } }) => y}px;
5674
+ transform: translate(-50%, 0);
5675
+ z-index: ${({ theme }) => theme.levels.front};
5676
+ `;
5677
+
5678
+ const getFocusedObs = (observations) => {
5679
+ return observations.find((obs) => obs.isFocused);
5680
+ };
5613
5681
  const StyledWord = styled__default["default"].div `
5614
- display: inline;
5682
+ display: inline-block;
5615
5683
  font-size: ${({ theme, size }) => theme.fontSizes[size !== null && size !== void 0 ? size : "md"]};
5616
5684
  padding: ${({ theme }) => theme.space.xxs} 0;
5617
5685
  position: relative;
5686
+ color: ${({ theme }) => theme.palette.grey[700]};
5687
+ white-space: pre;
5618
5688
 
5619
5689
  ${({ observations, theme }) => {
5620
5690
  var _a;
@@ -5622,8 +5692,9 @@ const StyledWord = styled__default["default"].div `
5622
5692
  `
5623
5693
  color: ${(_a = observations[observations.length - 1].color) !== null && _a !== void 0 ? _a : theme.palette.grey[600]};
5624
5694
  box-sizing: border-box;
5625
- font-weight: ${theme.fontWeights.semibold};
5626
-
5695
+ font-weight: ${getFocusedObs(observations) ? theme.fontWeights.extrabold : theme.fontWeights.semibold};
5696
+ font-style: ${getFocusedObs(observations) ? 'italic' : 'normal'};
5697
+ z-index: 1;
5627
5698
  &:focus {
5628
5699
  outline: none;
5629
5700
  }
@@ -5631,14 +5702,15 @@ const StyledWord = styled__default["default"].div `
5631
5702
  }}
5632
5703
  `;
5633
5704
  const ActiveWord = styled__default["default"].span `
5705
+ position: relative;
5706
+ z-index: 2;
5634
5707
  background-color: ${({ theme }) => getColor(theme.palette.fuschia, 400, undefined, 0.4)};
5635
- padding: 0 2px;
5636
5708
  `;
5637
5709
  const WordsContainer = styled__default["default"].div `
5638
5710
  box-sizing: border-box;
5639
5711
  ${StyledWord}, span {
5640
5712
  &::selection {
5641
- background-color: ${({ theme }) => getColor(theme.palette.kale, 700, undefined, 0.5)};
5713
+ background-color: ${({ theme }) => getColor(theme.palette.grey, 400, undefined, 0.5)};
5642
5714
  }
5643
5715
  }
5644
5716
  `;
@@ -5649,13 +5721,19 @@ const Layer = styled__default["default"].div `
5649
5721
  width: 100%;
5650
5722
  height: 100%;
5651
5723
  z-index: 0;
5652
- background-color: ${({ color }) => getColor(color, 700, undefined, 0.5)};
5724
+ background-color: ${({ color }) => getColor(color, undefined, undefined, 0.2)};
5653
5725
  `;
5654
5726
  /**
5655
5727
  * Use Highlight to use highlight interation on any text element
5656
5728
  */
5657
5729
  const Highlight = (props) => {
5730
+ var _a;
5731
+ const { onSelectionButtonClick, search, i18n, children } = props;
5658
5732
  const ref = React.useRef(null);
5733
+ const [isSelecting, setIsSelecting] = React.useState(false);
5734
+ const [position, setPosition] = React.useState();
5735
+ const [selection, setSelection] = React.useState();
5736
+ const activeSelection = document.getSelection();
5659
5737
  const extractText = (selection) => {
5660
5738
  if (selection.anchorNode === null || selection.focusNode === null)
5661
5739
  return "";
@@ -5672,29 +5750,55 @@ const Highlight = (props) => {
5672
5750
  return filteredText.length ? filteredText.trim() : selection.toString();
5673
5751
  };
5674
5752
  const handleSelectionChange = React.useCallback(() => {
5675
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
5676
- const activeSelection = document.getSelection();
5677
- if (!activeSelection) {
5678
- return;
5753
+ var _a, _b, _c, _d, _e, _f, _g, _h;
5754
+ if (activeSelection && activeSelection.toString().length > 0) {
5755
+ // Extract the text from the selection cleaning unselectable items
5756
+ const text = extractText(activeSelection);
5757
+ if (!text)
5758
+ return;
5759
+ const anchorNode = (_a = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.anchorNode) === null || _a === void 0 ? void 0 : _a.parentElement;
5760
+ const focusNode = (_b = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.focusNode) === null || _b === void 0 ? void 0 : _b.parentElement;
5761
+ if (anchorNode &&
5762
+ focusNode &&
5763
+ ((_c = ref.current) === null || _c === void 0 ? void 0 : _c.contains(anchorNode)) && // Selection starts inside the ref
5764
+ ((_d = ref.current) === null || _d === void 0 ? void 0 : _d.contains(focusNode)) // Selection ends inside the ref
5765
+ ) {
5766
+ if (onSelectionButtonClick) {
5767
+ setIsSelecting(true);
5768
+ const range = activeSelection.getRangeAt(0);
5769
+ const rects = range.getClientRects();
5770
+ const lastRect = rects[rects.length - 1];
5771
+ const containerRect = ref && ref.current
5772
+ ? ref.current.getBoundingClientRect()
5773
+ : null;
5774
+ if (!lastRect || !containerRect)
5775
+ return;
5776
+ const relativeY = lastRect.bottom - containerRect.top + ref.current.scrollTop;
5777
+ const relativeX = lastRect.right - containerRect.left + ref.current.scrollLeft;
5778
+ if (relativeY > 0 || relativeX > 0)
5779
+ // Fix to avoid the button to be placed sometimes at the top left corner of the screen (X: 0, Y: 0)
5780
+ setPosition({
5781
+ x: relativeX,
5782
+ y: relativeY + 15,
5783
+ });
5784
+ }
5785
+ else {
5786
+ setIsSelecting(false);
5787
+ }
5788
+ const selectionPart = {
5789
+ from: Math.min(Number.parseFloat((_e = anchorNode.getAttribute("data-start")) !== null && _e !== void 0 ? _e : "0"), Number.parseFloat((_f = focusNode.getAttribute("data-start")) !== null && _f !== void 0 ? _f : "0")),
5790
+ to: Math.max(Number.parseFloat((_g = anchorNode.getAttribute("data-end")) !== null && _g !== void 0 ? _g : "0"), Number.parseFloat((_h = focusNode.getAttribute("data-end")) !== null && _h !== void 0 ? _h : "0")),
5791
+ };
5792
+ setSelection(Object.assign(Object.assign({}, selectionPart), { text }));
5793
+ }
5794
+ else {
5795
+ setIsSelecting(false);
5796
+ }
5679
5797
  }
5680
- // Extract the text from the selection cleaning unselectable items
5681
- const text = extractText(activeSelection);
5682
- if (!text)
5683
- return;
5684
- const anchorNode = (_a = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.anchorNode) === null || _a === void 0 ? void 0 : _a.parentElement;
5685
- const focusNode = (_b = activeSelection === null || activeSelection === void 0 ? void 0 : activeSelection.focusNode) === null || _b === void 0 ? void 0 : _b.parentElement;
5686
- if (anchorNode &&
5687
- focusNode &&
5688
- ((_c = ref.current) === null || _c === void 0 ? void 0 : _c.contains(anchorNode)) && // Selection starts inside the ref
5689
- ((_d = ref.current) === null || _d === void 0 ? void 0 : _d.contains(focusNode)) // Selection ends inside the ref
5690
- ) {
5691
- const selectionPart = {
5692
- 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")),
5693
- 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")),
5694
- };
5695
- (_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 }));
5798
+ else {
5799
+ setIsSelecting(false);
5696
5800
  }
5697
- }, [props]);
5801
+ }, [onSelectionButtonClick, activeSelection]);
5698
5802
  React.useEffect(() => {
5699
5803
  if (ref.current === null)
5700
5804
  return;
@@ -5703,7 +5807,10 @@ const Highlight = (props) => {
5703
5807
  document.removeEventListener("selectionchange", handleSelectionChange);
5704
5808
  };
5705
5809
  }, [ref, props, handleSelectionChange]);
5706
- return (jsxRuntime.jsx(HighlightContextProvider, Object.assign({ term: props.search }, { children: jsxRuntime.jsx(WordsContainer, Object.assign({ ref: ref }, { children: props.children })) })));
5810
+ return (jsxRuntime.jsxs(HighlightContextProvider, Object.assign({ term: search }, { children: [jsxRuntime.jsx(WordsContainer, Object.assign({ ref: ref }, { children: children })), onSelectionButtonClick && isSelecting && selection && (jsxRuntime.jsxs(CreateObservationButton, Object.assign({ isAccent: true, isPrimary: true, position: position !== null && position !== void 0 ? position : {
5811
+ x: 0,
5812
+ y: 0,
5813
+ }, onClick: () => onSelectionButtonClick(selection) }, { children: [jsxRuntime.jsx(CreateObservationButton.StartIcon, { children: jsxRuntime.jsx(SvgTagStroke, {}) }), (_a = i18n === null || i18n === void 0 ? void 0 : i18n.selectionButtonLabel) !== null && _a !== void 0 ? _a : "Create observation"] })))] })));
5707
5814
  };
5708
5815
  const Word = (props) => {
5709
5816
  const isActive = props.currentTime &&
@@ -5717,7 +5824,7 @@ const Word = (props) => {
5717
5824
  const ObsWord = React.useMemo(() => (jsxRuntime.jsxs(StyledWord, Object.assign({}, props, { "data-start": props.start, "data-end": props.end, className: foundObservations.length > 0 ? "highlighted" : "" }, (foundObservations && { observations: foundObservations }), { children: [foundObservations.length > 0 && foundObservations.map((obs) => {
5718
5825
  var _a;
5719
5826
  return (jsxRuntime.jsx(Layer, { color: (_a = obs.hue) !== null && _a !== void 0 ? _a : theme.palette.grey[600] }, obs.id));
5720
- }), isActive ? (jsxRuntime.jsx(ActiveWord, { children: jsxRuntime.jsx(Searchable, { text: props.text }) })) : (jsxRuntime.jsx(Searchable, { text: props.text })), " "] }))), [props, foundObservations, isActive]);
5827
+ }), isActive ? (jsxRuntime.jsx(ActiveWord, Object.assign({ "data-start": props.start, "data-end": props.end }, { children: jsxRuntime.jsx(Searchable, { text: props.text }) }))) : (jsxRuntime.jsx(Searchable, { text: props.text })), " "] }))), [props, foundObservations, isActive]);
5721
5828
  if (props.tooltipContent !== undefined && foundObservations.length > 0) {
5722
5829
  return (jsxRuntime.jsx(Tooltip, Object.assign({ content: props.tooltipContent(foundObservations), isTransparent: true }, { children: ObsWord })));
5723
5830
  }
@@ -0,0 +1,2 @@
1
+ declare const InternalAvatar: () => import("react/jsx-runtime").JSX.Element;
2
+ export default InternalAvatar;
@@ -73,7 +73,7 @@ export declare const Row: import("styled-components").IStyledComponent<"web", {
73
73
  results?: number | undefined;
74
74
  security?: string | undefined;
75
75
  unselectable?: "on" | "off" | undefined;
76
- inputMode?: "text" | "search" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
76
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
77
77
  is?: string | undefined;
78
78
  "aria-activedescendant"?: string | undefined;
79
79
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
@@ -84,7 +84,7 @@ export declare const Row: import("styled-components").IStyledComponent<"web", {
84
84
  "aria-colindex"?: number | undefined;
85
85
  "aria-colspan"?: number | undefined;
86
86
  "aria-controls"?: string | undefined;
87
- "aria-current"?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
87
+ "aria-current"?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
88
88
  "aria-describedby"?: string | undefined;
89
89
  "aria-details"?: string | undefined;
90
90
  "aria-disabled"?: (boolean | "true" | "false") | undefined;
@@ -93,7 +93,7 @@ export declare const Row: import("styled-components").IStyledComponent<"web", {
93
93
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
94
94
  "aria-flowto"?: string | undefined;
95
95
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
96
- "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
96
+ "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
97
97
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
98
98
  "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
99
99
  "aria-keyshortcuts"?: string | undefined;
@@ -299,12 +299,12 @@ export declare const Col: import("styled-components").IStyledComponent<"web", {
299
299
  md?: string | number | boolean | undefined;
300
300
  lg?: string | number | boolean | undefined;
301
301
  xl?: string | number | boolean | undefined;
302
- alignSelf?: "center" | "auto" | "start" | "end" | "baseline" | "stretch" | undefined;
303
- alignSelfXs?: "center" | "auto" | "start" | "end" | "baseline" | "stretch" | undefined;
304
- alignSelfSm?: "center" | "auto" | "start" | "end" | "baseline" | "stretch" | undefined;
305
- alignSelfMd?: "center" | "auto" | "start" | "end" | "baseline" | "stretch" | undefined;
306
- alignSelfLg?: "center" | "auto" | "start" | "end" | "baseline" | "stretch" | undefined;
307
- alignSelfXl?: "center" | "auto" | "start" | "end" | "baseline" | "stretch" | undefined;
302
+ alignSelf?: "center" | "start" | "end" | "baseline" | "stretch" | "auto" | undefined;
303
+ alignSelfXs?: "center" | "start" | "end" | "baseline" | "stretch" | "auto" | undefined;
304
+ alignSelfSm?: "center" | "start" | "end" | "baseline" | "stretch" | "auto" | undefined;
305
+ alignSelfMd?: "center" | "start" | "end" | "baseline" | "stretch" | "auto" | undefined;
306
+ alignSelfLg?: "center" | "start" | "end" | "baseline" | "stretch" | "auto" | undefined;
307
+ alignSelfXl?: "center" | "start" | "end" | "baseline" | "stretch" | "auto" | undefined;
308
308
  textAlign?: "center" | "start" | "end" | "justify" | undefined;
309
309
  textAlignXs?: "center" | "start" | "end" | "justify" | undefined;
310
310
  textAlignSm?: "center" | "start" | "end" | "justify" | undefined;
@@ -370,7 +370,7 @@ export declare const Col: import("styled-components").IStyledComponent<"web", {
370
370
  results?: number | undefined;
371
371
  security?: string | undefined;
372
372
  unselectable?: "on" | "off" | undefined;
373
- inputMode?: "text" | "search" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
373
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
374
374
  is?: string | undefined;
375
375
  "aria-activedescendant"?: string | undefined;
376
376
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
@@ -381,7 +381,7 @@ export declare const Col: import("styled-components").IStyledComponent<"web", {
381
381
  "aria-colindex"?: number | undefined;
382
382
  "aria-colspan"?: number | undefined;
383
383
  "aria-controls"?: string | undefined;
384
- "aria-current"?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
384
+ "aria-current"?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
385
385
  "aria-describedby"?: string | undefined;
386
386
  "aria-details"?: string | undefined;
387
387
  "aria-disabled"?: (boolean | "true" | "false") | undefined;
@@ -390,7 +390,7 @@ export declare const Col: import("styled-components").IStyledComponent<"web", {
390
390
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
391
391
  "aria-flowto"?: string | undefined;
392
392
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
393
- "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
393
+ "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
394
394
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
395
395
  "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
396
396
  "aria-keyshortcuts"?: string | undefined;
@@ -640,7 +640,7 @@ export declare const MD: import("styled-components").IStyledComponent<"web", {
640
640
  results?: number | undefined;
641
641
  security?: string | undefined;
642
642
  unselectable?: "on" | "off" | undefined;
643
- inputMode?: "text" | "search" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
643
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
644
644
  is?: string | undefined;
645
645
  "aria-activedescendant"?: string | undefined;
646
646
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
@@ -651,7 +651,7 @@ export declare const MD: import("styled-components").IStyledComponent<"web", {
651
651
  "aria-colindex"?: number | undefined;
652
652
  "aria-colspan"?: number | undefined;
653
653
  "aria-controls"?: string | undefined;
654
- "aria-current"?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
654
+ "aria-current"?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
655
655
  "aria-describedby"?: string | undefined;
656
656
  "aria-details"?: string | undefined;
657
657
  "aria-disabled"?: (boolean | "true" | "false") | undefined;
@@ -660,7 +660,7 @@ export declare const MD: import("styled-components").IStyledComponent<"web", {
660
660
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
661
661
  "aria-flowto"?: string | undefined;
662
662
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
663
- "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
663
+ "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
664
664
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
665
665
  "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
666
666
  "aria-keyshortcuts"?: string | undefined;
@@ -42,7 +42,7 @@ export interface CommentMedia {
42
42
  type: string;
43
43
  name?: string;
44
44
  isLoadingMedia?: boolean;
45
- isError?: boolean;
45
+ error?: string;
46
46
  url?: string;
47
47
  }
48
48
  export interface FloatingMenuArgs extends Partial<BubbleMenuProps> {
@@ -5,7 +5,7 @@ interface Props {
5
5
  isLoadingMedia?: boolean;
6
6
  removeThumbnail?: () => void;
7
7
  showX?: boolean;
8
- isError?: boolean;
8
+ error?: string;
9
9
  }
10
- declare const Thumbnail: ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia, isError, }: Props) => import("react/jsx-runtime").JSX.Element;
10
+ declare const Thumbnail: ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia, error, }: Props) => import("react/jsx-runtime").JSX.Element;
11
11
  export default Thumbnail;
@@ -1,11 +1,3 @@
1
- export interface FileElement {
2
- fileName: string;
3
- fileType: string;
4
- errorCode?: "FILE_TOO_BIG" | "INVALID_FILE_EXTENSION" | "GENERIC_ERROR";
5
- previewUrl: string;
6
- internal_id: string;
7
- isLoadingMedia: boolean;
8
- }
9
1
  interface Props {
10
2
  openLightbox: (index: number) => void;
11
3
  }
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ declare const CreateObservationButton: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("../buttons/button/_types").ButtonArgs & import("react").RefAttributes<HTMLButtonElement>, {
3
+ position: {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ }>> & import("react").ForwardRefExoticComponent<import("../buttons/button/_types").ButtonArgs & import("react").RefAttributes<HTMLButtonElement>> & {
8
+ EndIcon: {
9
+ (props: import("@zendeskgarden/react-buttons").IButtonEndIconProps): JSX.Element;
10
+ displayName: string;
11
+ };
12
+ StartIcon: {
13
+ (props: import("@zendeskgarden/react-buttons").IButtonEndIconProps): JSX.Element;
14
+ displayName: string;
15
+ };
16
+ };
17
+ export { CreateObservationButton };
@@ -15,12 +15,15 @@ export interface HighlightArgs {
15
15
  isMonospace?: boolean;
16
16
  /** Adjusts the font size. By default font size is medium */
17
17
  size?: "xs" | "sm" | "md" | "lg" | "xl" | "xxl" | "xxxl";
18
- handleSelection?: (part: {
18
+ search?: string;
19
+ onSelectionButtonClick?: (part: {
19
20
  from: number;
20
21
  to: number;
21
22
  text: string;
22
23
  }) => void;
23
- search?: string;
24
+ i18n?: {
25
+ selectionButtonLabel: string;
26
+ };
24
27
  }
25
28
  export interface Observation extends Omit<IBookmark, "onClick"> {
26
29
  color?: string;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { HighlightArgs, WordProps } from "./_types";
2
3
  export interface StoryArgs extends HighlightArgs {
3
4
  words: Array<WordProps & {
@@ -7,9 +8,10 @@ export interface StoryArgs extends HighlightArgs {
7
8
  includeSearch?: boolean;
8
9
  }
9
10
  export declare const Default: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
10
- export declare const VideoSync: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
11
- export declare const WithSearch: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
11
+ export declare const WithSelectionButton: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
12
12
  export declare const WithTooltip: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
13
+ export declare const WithSearch: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
14
+ export declare const VideoSync: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
13
15
  export declare const Demo: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, StoryArgs>;
14
16
  declare const _default: import("@storybook/types").ComponentAnnotations<import("@storybook/react/dist/types-0a347bb9").R, HighlightArgs & {
15
17
  children?: import("react").ReactNode;
@@ -9,6 +9,7 @@ export interface PlayerArgs extends HTMLAttributes<HTMLVideoElement> {
9
9
  bookmarks?: IBookmark[];
10
10
  handleBookmarkUpdate?: (bookmark: IBookmark) => void;
11
11
  i18n?: PlayerI18n;
12
+ showControls?: boolean;
12
13
  }
13
14
  export interface PlayerI18n {
14
15
  beforeHighlight?: string;
@@ -21,12 +22,14 @@ export interface IBookmark {
21
22
  hue?: string;
22
23
  label?: string;
23
24
  tooltipContent?: ReactNode;
25
+ isFocused?: boolean;
24
26
  onClick?: () => void;
25
27
  tags?: VideoTag[];
26
28
  }
27
29
  export interface WrapperProps {
28
30
  isPlaying?: boolean;
29
31
  isLoaded?: boolean;
32
+ showControls?: boolean;
30
33
  }
31
34
  type VideoTag = {
32
35
  group: {
@@ -1,7 +1,9 @@
1
+ /// <reference types="react" />
1
2
  import { PlayerArgs } from "./_types";
2
3
  interface PlayerStoryArgs extends PlayerArgs {
3
4
  }
4
5
  export declare const Basic: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, PlayerStoryArgs>;
6
+ export declare const ShowControls: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, PlayerStoryArgs>;
5
7
  export declare const Streaming: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, PlayerStoryArgs>;
6
8
  export declare const WithBookmarks: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0a347bb9").R, PlayerStoryArgs>;
7
9
  declare const _default: import("@storybook/types").ComponentAnnotations<import("@storybook/react/dist/types-0a347bb9").R, PlayerArgs & import("react").RefAttributes<HTMLVideoElement>>;
@@ -0,0 +1,4 @@
1
+ declare const CutStart: ({ left }: {
2
+ left: number;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ export { CutStart };
@@ -268,11 +268,12 @@ export declare const ControlsBar: import("styled-components").IStyledComponent<"
268
268
  onTransitionEnd?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
269
269
  onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
270
270
  }>;
271
- export declare const Controls: ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpdated, i18n, }: {
271
+ export declare const Controls: ({ container, onCutHandler, bookmarks, isCutting, onBookMarkUpdated, i18n, showControls, }: {
272
272
  container: HTMLDivElement | null;
273
273
  onCutHandler?: ((time: number) => void) | undefined;
274
274
  bookmarks?: IBookmark[] | undefined;
275
275
  isCutting?: boolean | undefined;
276
276
  onBookMarkUpdated?: ((bookmark: IBookmark) => void) | undefined;
277
277
  i18n?: PlayerI18n | undefined;
278
+ showControls?: boolean | undefined;
278
279
  }) => import("react/jsx-runtime").JSX.Element;
@@ -3,5 +3,6 @@ import { WrapperProps } from "../_types";
3
3
  export declare const FloatingContainer: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, WrapperProps>>;
4
4
  export declare const FloatingControls: (props: {
5
5
  isPlaying?: boolean;
6
+ showControls?: boolean;
6
7
  onClick?: () => void;
7
8
  }) => import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appquality/unguess-design-system",
3
- "version": "3.1.91-multi-layers",
3
+ "version": "3.1.91-test-fix-obs",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",