@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 +199 -92
- package/build/stories/avatar/InternalAvatar.d.ts +2 -0
- package/build/stories/buttons/utils.d.ts +15 -15
- package/build/stories/chat/_types.d.ts +1 -1
- package/build/stories/chat/parts/ThumbnailContainer/Thumbnail.d.ts +2 -2
- package/build/stories/chat/parts/ThumbnailContainer/index.d.ts +0 -8
- package/build/stories/highlight/CreateObservationButton.d.ts +17 -0
- package/build/stories/highlight/_types.d.ts +5 -2
- package/build/stories/highlight/index.stories.d.ts +4 -2
- package/build/stories/player/_types.d.ts +3 -0
- package/build/stories/player/index.stories.d.ts +2 -0
- package/build/stories/player/parts/CutStart.d.ts +4 -0
- package/build/stories/player/parts/controls.d.ts +2 -1
- package/build/stories/player/parts/floatingControls.d.ts +1 -0
- package/package.json +1 -1
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(
|
|
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
|
-
|
|
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
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3502
|
+
return (jsxRuntime.jsx(ImageCard, Object.assign({ onClick: clickThumbnail, className: type.includes("video") ? "video" : "image", error: error, isLoading: isLoadingMedia }, { children: isLoadingMedia ? (jsxRuntime.jsx(Preview, Object.assign({ url: src }, { children: jsxRuntime.jsx(reactLoaders.Spinner, { style: {
|
|
3503
|
+
display: "flex",
|
|
3504
|
+
position: "absolute",
|
|
3505
|
+
color: "white",
|
|
3506
|
+
alignItems: "center",
|
|
3507
|
+
justifyContent: "center",
|
|
3508
|
+
}, size: "large" }) }))) : (jsxRuntime.jsxs(Preview, Object.assign({ url: src }, { children: [showX && (jsxRuntime.jsx(DeleteThumbnailX, { deleteThumbnail: (e) => handleCancel(e) })), type.includes("video") && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("video", Object.assign({ src: src }, { children: jsxRuntime.jsx("track", { kind: "captions" }) })), jsxRuntime.jsx(SvgVideoPlayIcon, { opacity: error ? "0.3" : "1" })] }))] }))) })));
|
|
3498
3509
|
};
|
|
3499
3510
|
|
|
3500
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(
|
|
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
|
|
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
|
-
|
|
4603
|
-
|
|
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
|
-
|
|
4679
|
-
|
|
4680
|
-
|
|
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.
|
|
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,
|
|
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
|
|
5676
|
-
|
|
5677
|
-
|
|
5678
|
-
|
|
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
|
-
|
|
5681
|
-
|
|
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
|
-
}, [
|
|
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.
|
|
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
|
}
|
|
@@ -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?: "
|
|
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 | "
|
|
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 | "
|
|
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" | "
|
|
303
|
-
alignSelfXs?: "center" | "
|
|
304
|
-
alignSelfSm?: "center" | "
|
|
305
|
-
alignSelfMd?: "center" | "
|
|
306
|
-
alignSelfLg?: "center" | "
|
|
307
|
-
alignSelfXl?: "center" | "
|
|
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?: "
|
|
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 | "
|
|
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 | "
|
|
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?: "
|
|
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 | "
|
|
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 | "
|
|
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;
|
|
@@ -5,7 +5,7 @@ interface Props {
|
|
|
5
5
|
isLoadingMedia?: boolean;
|
|
6
6
|
removeThumbnail?: () => void;
|
|
7
7
|
showX?: boolean;
|
|
8
|
-
|
|
8
|
+
error?: string;
|
|
9
9
|
}
|
|
10
|
-
declare const Thumbnail: ({ src, type, removeThumbnail, clickThumbnail, showX, isLoadingMedia,
|
|
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
|
-
|
|
18
|
+
search?: string;
|
|
19
|
+
onSelectionButtonClick?: (part: {
|
|
19
20
|
from: number;
|
|
20
21
|
to: number;
|
|
21
22
|
text: string;
|
|
22
23
|
}) => void;
|
|
23
|
-
|
|
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
|
|
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>>;
|
|
@@ -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;
|