@ynput/ayon-frontend-shared 0.3.52 → 0.3.54
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/dist/_virtual/index.cjs10.js +1 -1
- package/dist/_virtual/index.cjs11.js +1 -1
- package/dist/_virtual/index.cjs12.js +1 -1
- package/dist/_virtual/index.cjs3.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.es10.js +3 -3
- package/dist/_virtual/index.es11.js +5 -5
- package/dist/_virtual/index.es12.js +5 -5
- package/dist/_virtual/index.es3.js +5 -2
- package/dist/_virtual/index.es3.js.map +1 -1
- package/dist/_virtual/index.es4.js +2 -5
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
- package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +27 -27
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +92 -79
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js +2 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js +2 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { j as o } from "../../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { getFileSizeString as
|
|
3
|
-
import { File as
|
|
4
|
-
import
|
|
5
|
-
import { useState as
|
|
6
|
-
import { isFilePreviewable as
|
|
7
|
-
import "
|
|
8
|
-
|
|
9
|
-
import "
|
|
10
|
-
import "
|
|
2
|
+
import { getFileSizeString as O, Icon as j, Button as W } from "@ynput/ayon-react-components";
|
|
3
|
+
import { File as $, ContentWrapper as q, ImageWrapper as J, Buttons as M, ExpandButton as _, Footer as T } from "./FileUploadCard.styled.es.js";
|
|
4
|
+
import n from "clsx";
|
|
5
|
+
import { useState as D, useMemo as g } from "react";
|
|
6
|
+
import { isFilePreviewable as G } from "../FileUploadPreview/FileUploadPreview.es.js";
|
|
7
|
+
import "../../../ContextMenu/ContextMenuContext.es.js";
|
|
8
|
+
/* empty css */
|
|
9
|
+
import "react-dom";
|
|
10
|
+
import { useFeedContext as H } from "../../context/FeedContext.es.js";
|
|
11
|
+
import "../Tooltips/UserTooltipItem.es.js";
|
|
12
|
+
import "../Tooltips/UserTooltip/UserTooltip.styled.es.js";
|
|
11
13
|
import "../../../../api/base/client.es.js";
|
|
12
14
|
import "../../../../api/generated/graphql.es.js";
|
|
13
15
|
import "../../../../api/generated/graphqlLinks.es.js";
|
|
@@ -105,6 +107,12 @@ import "../../../../api/queries/views/getViews.es.js";
|
|
|
105
107
|
import "../../../../api/queries/views/updateViews.es.js";
|
|
106
108
|
import "../../../../api/queries/watchers/getWatchers.es.js";
|
|
107
109
|
import "../../../../api/queries/uris/getUris.es.js";
|
|
110
|
+
import "../Tooltips/TeamTooltip/TeamTooltip.styled.es.js";
|
|
111
|
+
import "../Tooltips/EntityTooltip/EntityTooltip.styled.es.js";
|
|
112
|
+
import "../../../../context/RemoteModulesContext.es.js";
|
|
113
|
+
import { useDetailsPanelContext as K } from "../../../../context/DetailsPanelContext.es.js";
|
|
114
|
+
import "../../../../../node_modules/@module-federation/runtime/dist/index.es.js";
|
|
115
|
+
import "../../../../../../_virtual/semver.es.js";
|
|
108
116
|
import "lodash";
|
|
109
117
|
import "react-toastify";
|
|
110
118
|
import "react-redux";
|
|
@@ -117,7 +125,6 @@ import "../../../../context/SubtasksModulesContextInstance.es.js";
|
|
|
117
125
|
import "../../../../context/ThumbnailUploaderContext.es.js";
|
|
118
126
|
import "../../../../context/SettingsPanelContext.es.js";
|
|
119
127
|
import "../../../../context/pip/PiPProvider.es.js";
|
|
120
|
-
import "react-dom";
|
|
121
128
|
import "../../../../context/pip/PiPWrapper.es.js";
|
|
122
129
|
import "../../../../context/AddonProjectContext.es.js";
|
|
123
130
|
import "../../../../context/AddonContext.es.js";
|
|
@@ -127,13 +134,8 @@ import "../../../../context/GlobalContext.es.js";
|
|
|
127
134
|
import "../../../../context/ProjectContext.es.js";
|
|
128
135
|
import "../../../../context/ProjectFoldersContextInstance.es.js";
|
|
129
136
|
import "../../../../context/EntityUpdatesContextInstance.es.js";
|
|
130
|
-
import "
|
|
131
|
-
|
|
132
|
-
import "../../context/FeedContext.es.js";
|
|
133
|
-
import "../Tooltips/UserTooltipItem.es.js";
|
|
134
|
-
import "../Tooltips/UserTooltip/UserTooltip.styled.es.js";
|
|
135
|
-
import "../Tooltips/TeamTooltip/TeamTooltip.styled.es.js";
|
|
136
|
-
import "../Tooltips/EntityTooltip/EntityTooltip.styled.es.js";
|
|
137
|
+
import "../../../../context/UriContext.es.js";
|
|
138
|
+
import "../../../../context/DeleteEntitiesContext.es.js";
|
|
137
139
|
import "react-markdown";
|
|
138
140
|
import "remark-emoji";
|
|
139
141
|
import "remark-gfm";
|
|
@@ -296,9 +298,7 @@ import "../../../Views/Views.styled.es.js";
|
|
|
296
298
|
import "../../../Views/ViewsMenuContainer/ViewsMenuContainer.es.js";
|
|
297
299
|
import "../../../ListTable/ListTableRow.es.js";
|
|
298
300
|
import "../../../ListTable/ListTable.styled.es.js";
|
|
299
|
-
|
|
300
|
-
import "../../../../context/DeleteEntitiesContext.es.js";
|
|
301
|
-
const T = {
|
|
301
|
+
const L = {
|
|
302
302
|
// special cases
|
|
303
303
|
description: ["doc"],
|
|
304
304
|
folder_zip: ["zip"],
|
|
@@ -340,88 +340,101 @@ const T = {
|
|
|
340
340
|
filter_none: ["sequence"],
|
|
341
341
|
font_download: ["font"],
|
|
342
342
|
deployed_code: ["model", ".obj", ".abc", ".stl", ".fbx", ".gltf", ".glb", ".usd"]
|
|
343
|
-
},
|
|
344
|
-
for (const [
|
|
345
|
-
if (
|
|
346
|
-
return
|
|
343
|
+
}, Q = (a) => {
|
|
344
|
+
for (const [i, p] of Object.entries(L))
|
|
345
|
+
if (p.some((t) => a.includes(t)))
|
|
346
|
+
return i;
|
|
347
347
|
return "draft";
|
|
348
|
-
},
|
|
349
|
-
name:
|
|
350
|
-
mime:
|
|
351
|
-
src:
|
|
348
|
+
}, vm = ({
|
|
349
|
+
name: a,
|
|
350
|
+
mime: i,
|
|
351
|
+
src: p,
|
|
352
352
|
unsavedAnnotation: t,
|
|
353
|
-
savedAnnotation:
|
|
354
|
-
size:
|
|
355
|
-
progress:
|
|
356
|
-
onRemove:
|
|
357
|
-
isCompact:
|
|
353
|
+
savedAnnotation: c,
|
|
354
|
+
size: y,
|
|
355
|
+
progress: l,
|
|
356
|
+
onRemove: d,
|
|
357
|
+
isCompact: k,
|
|
358
358
|
isDownloadable: e = !1,
|
|
359
|
-
onExpand:
|
|
360
|
-
disableExpand:
|
|
361
|
-
onJumpTo:
|
|
362
|
-
className:
|
|
363
|
-
...
|
|
359
|
+
onExpand: v,
|
|
360
|
+
disableExpand: u,
|
|
361
|
+
onJumpTo: C,
|
|
362
|
+
className: F,
|
|
363
|
+
...B
|
|
364
364
|
}) => {
|
|
365
|
-
const
|
|
366
|
-
/* @__PURE__ */ o.jsx("span", { className: "size", children:
|
|
367
|
-
/* @__PURE__ */ o.jsx(
|
|
368
|
-
] }),
|
|
365
|
+
const E = l && l < 100, [I, P] = D(!1), { feedAnnotationsEnabled: z } = K(), { entities: h } = H(), N = a.split("."), f = N.pop() || "", S = N.join("."), m = G(i || "." + f), U = i?.includes("image/") || !!t, b = /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
|
|
366
|
+
/* @__PURE__ */ o.jsx("span", { className: "size", children: O(y) }),
|
|
367
|
+
/* @__PURE__ */ o.jsx(j, { icon: "download", className: "download-icon" })
|
|
368
|
+
] }), r = g(
|
|
369
|
+
() => t ?? c,
|
|
370
|
+
[t, c]
|
|
371
|
+
), w = g(() => h.at(0), [h]), s = g(() => {
|
|
372
|
+
if (!r?.range)
|
|
373
|
+
return [1, 1];
|
|
374
|
+
if (!w?.attrib)
|
|
375
|
+
return r?.range ?? [1, 1];
|
|
376
|
+
const { frameStart: x } = w?.attrib;
|
|
377
|
+
return Number.isNaN(x) ? r?.range ?? [1, 1] : [
|
|
378
|
+
x - 1 + r.range[0],
|
|
379
|
+
x - 1 + r.range[1]
|
|
380
|
+
];
|
|
381
|
+
}, [r]);
|
|
369
382
|
return /* @__PURE__ */ o.jsxs(
|
|
370
|
-
|
|
383
|
+
$,
|
|
371
384
|
{
|
|
372
|
-
className:
|
|
373
|
-
compact:
|
|
385
|
+
className: n(F, {
|
|
386
|
+
compact: k,
|
|
374
387
|
isDownloadable: e,
|
|
375
|
-
isPreviewable:
|
|
388
|
+
isPreviewable: m,
|
|
376
389
|
isUnsavedAnnotation: !!t
|
|
377
390
|
}),
|
|
378
|
-
...
|
|
391
|
+
...B,
|
|
379
392
|
children: [
|
|
380
393
|
/* @__PURE__ */ o.jsxs(
|
|
381
|
-
|
|
394
|
+
q,
|
|
382
395
|
{
|
|
383
|
-
className:
|
|
384
|
-
isPreviewable:
|
|
396
|
+
className: n("content-wrapper", {
|
|
397
|
+
isPreviewable: m,
|
|
385
398
|
isUnsavedAnnotation: !!t
|
|
386
399
|
}),
|
|
387
400
|
children: [
|
|
388
|
-
/* @__PURE__ */ o.jsx(
|
|
389
|
-
|
|
390
|
-
|
|
401
|
+
/* @__PURE__ */ o.jsx(j, { icon: Q(i || "." + f), className: "type-icon" }),
|
|
402
|
+
U && p && /* @__PURE__ */ o.jsx(
|
|
403
|
+
J,
|
|
391
404
|
{
|
|
392
|
-
className:
|
|
405
|
+
className: n({
|
|
393
406
|
"image-wrapper": !0,
|
|
394
|
-
isDownloadable: e ||
|
|
407
|
+
isDownloadable: e || m || t
|
|
395
408
|
}),
|
|
396
409
|
children: /* @__PURE__ */ o.jsx(
|
|
397
410
|
"img",
|
|
398
411
|
{
|
|
399
|
-
src:
|
|
400
|
-
onError: () =>
|
|
412
|
+
src: p,
|
|
413
|
+
onError: () => P(!0),
|
|
401
414
|
style: {
|
|
402
|
-
display:
|
|
415
|
+
display: I ? "none" : "block"
|
|
403
416
|
}
|
|
404
417
|
}
|
|
405
418
|
)
|
|
406
419
|
}
|
|
407
420
|
),
|
|
408
|
-
/* @__PURE__ */ o.jsxs(
|
|
409
|
-
|
|
410
|
-
|
|
421
|
+
/* @__PURE__ */ o.jsxs(M, { className: "expand-buttons", children: [
|
|
422
|
+
m && !u && /* @__PURE__ */ o.jsx(
|
|
423
|
+
_,
|
|
411
424
|
{
|
|
412
425
|
"data-tooltip": "Open preview",
|
|
413
426
|
icon: "open_in_full",
|
|
414
427
|
variant: "nav",
|
|
415
|
-
onClick:
|
|
428
|
+
onClick: v
|
|
416
429
|
}
|
|
417
430
|
),
|
|
418
|
-
(t ||
|
|
419
|
-
|
|
431
|
+
(t || z && c) && /* @__PURE__ */ o.jsx(
|
|
432
|
+
_,
|
|
420
433
|
{
|
|
421
434
|
"data-tooltip": "Jump to annotation",
|
|
422
435
|
icon: "play_circle",
|
|
423
436
|
variant: "nav",
|
|
424
|
-
onClick:
|
|
437
|
+
onClick: C
|
|
425
438
|
}
|
|
426
439
|
)
|
|
427
440
|
] })
|
|
@@ -429,36 +442,36 @@ const T = {
|
|
|
429
442
|
}
|
|
430
443
|
),
|
|
431
444
|
/* @__PURE__ */ o.jsxs(
|
|
432
|
-
|
|
445
|
+
T,
|
|
433
446
|
{
|
|
434
|
-
className:
|
|
435
|
-
inProgress:
|
|
436
|
-
isPreviewable:
|
|
447
|
+
className: n({
|
|
448
|
+
inProgress: E,
|
|
449
|
+
isPreviewable: m && !u,
|
|
437
450
|
isDownloadable: e
|
|
438
451
|
}),
|
|
439
452
|
children: [
|
|
440
|
-
/* @__PURE__ */ o.jsx("span", { className: "progress", style: { right: `${100 -
|
|
441
|
-
/* @__PURE__ */ o.jsx("div", { className: "name-wrapper", children:
|
|
442
|
-
/* @__PURE__ */ o.jsx(
|
|
443
|
-
|
|
444
|
-
|
|
453
|
+
/* @__PURE__ */ o.jsx("span", { className: "progress", style: { right: `${100 - l}%` } }),
|
|
454
|
+
/* @__PURE__ */ o.jsx("div", { className: "name-wrapper", children: r ? /* @__PURE__ */ o.jsxs("span", { className: "name", children: [
|
|
455
|
+
/* @__PURE__ */ o.jsx(j, { icon: "draw" }),
|
|
456
|
+
s[0],
|
|
457
|
+
s[1] !== s[0] && ` - ${s[1]}`
|
|
445
458
|
] }) : /* @__PURE__ */ o.jsxs("span", { className: "name", children: [
|
|
446
|
-
|
|
459
|
+
S,
|
|
447
460
|
/* @__PURE__ */ o.jsxs("span", { className: "extension", children: [
|
|
448
461
|
".",
|
|
449
|
-
|
|
462
|
+
f
|
|
450
463
|
] })
|
|
451
464
|
] }) }),
|
|
452
|
-
e && (
|
|
465
|
+
e && (d ? /* @__PURE__ */ o.jsx("div", { className: "download", children: b }) : /* @__PURE__ */ o.jsx("a", { href: p, target: "_blank", rel: "noopener noreferrer", className: "download", children: b }))
|
|
453
466
|
]
|
|
454
467
|
}
|
|
455
468
|
),
|
|
456
|
-
|
|
469
|
+
d && /* @__PURE__ */ o.jsx(W, { className: "remove", onClick: d, icon: "close" })
|
|
457
470
|
]
|
|
458
471
|
}
|
|
459
472
|
);
|
|
460
473
|
};
|
|
461
474
|
export {
|
|
462
|
-
|
|
475
|
+
vm as default
|
|
463
476
|
};
|
|
464
477
|
//# sourceMappingURL=FileUploadCard.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploadCard.es.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.tsx"],"sourcesContent":["import { Button, getFileSizeString, Icon } from '@ynput/ayon-react-components'\nimport * as Styled from './FileUploadCard.styled'\nimport clsx from 'clsx'\nimport { useState } from 'react'\nimport { isFilePreviewable } from '../FileUploadPreview'\nimport { SavedAnnotationMetadata } from '@shared/containers'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { AnnotationPreview } from '../CommentInput/hooks/useAnnotationsSync'\n\nexport interface FileUploadCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string\n mime?: string\n src?: string\n unsavedAnnotation?: AnnotationPreview\n savedAnnotation?: SavedAnnotationMetadata\n size: number\n progress: number\n onRemove?: () => void\n isCompact?: boolean\n isDownloadable?: boolean\n onExpand?: () => void\n disableExpand?: boolean\n onJumpTo?: () => void\n}\n\nconst fileIcons: { [key: string]: string[] } = {\n // special cases\n description: ['doc'],\n folder_zip: ['zip'],\n code_blocks: [\n 'json',\n 'javascript',\n 'python',\n 'html',\n 'css',\n '.py',\n '.js',\n '.html',\n '.css',\n '.json',\n '.ts',\n ],\n brush: ['.psd', '.ai', '.xd', '.sketch'],\n '3d_rotation': [\n '.mb',\n '.ma',\n '.c4d',\n '.blend',\n '.max',\n '.3ds',\n '.lwo',\n '.lws',\n '.lxo',\n '.hip',\n '.hda',\n ],\n theaters: ['.aep', '.tpl', '.clip', '.nk', '.fusion', '.prproj', '.spsm', '.drp'],\n picture_as_pdf: ['pdf', '.pdf'],\n // default\n image: ['image', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp'],\n videocam: ['video', '.mp4', '.mov', '.avi', '.mkv', '.webm', '.mxf'],\n business_center: ['application'],\n audio_file: ['audio'],\n text_snippet: ['text'],\n filter_none: ['sequence'],\n font_download: ['font'],\n deployed_code: ['model', '.obj', '.abc', '.stl', '.fbx', '.gltf', '.glb', '.usd'],\n}\n\nconst getIconForType = (type: string): string => {\n for (const [icon, keywords] of Object.entries(fileIcons)) {\n if (keywords.some((keyword) => type.includes(keyword))) {\n return icon\n }\n }\n return 'draft'\n}\n\nconst FileUploadCard = ({\n name,\n mime,\n src,\n unsavedAnnotation,\n savedAnnotation,\n size,\n progress,\n onRemove,\n isCompact,\n isDownloadable = false,\n onExpand,\n disableExpand,\n onJumpTo,\n className,\n ...props\n}: FileUploadCardProps) => {\n const inProgress = progress && progress < 100\n\n const [imageError, setImageError] = useState(false)\n const { feedAnnotationsEnabled } = useDetailsPanelContext()\n\n // split name and file extension\n const nameParts = name.split('.')\n const extension = nameParts.pop() || ''\n const fileName = nameParts.join('.')\n\n const isPreviewable = isFilePreviewable(mime || '.' + extension)\n const isImage = mime?.includes('image/') || Boolean(unsavedAnnotation)\n\n const downloadComponent = (\n <>\n <span className=\"size\">{getFileSizeString(size)}</span>\n <Icon icon=\"download\" className=\"download-icon\" />\n </>\n )\n\n const someAnnotation = unsavedAnnotation ?? savedAnnotation\n\n return (\n <Styled.File\n className={clsx(className, {\n compact: isCompact,\n isDownloadable,\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n {...props}\n >\n <Styled.ContentWrapper\n className={clsx('content-wrapper', {\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n >\n <Icon icon={getIconForType(mime || '.' + extension)} className=\"type-icon\" />\n {isImage && src && (\n <Styled.ImageWrapper\n className={clsx({\n 'image-wrapper': true,\n isDownloadable: isDownloadable || isPreviewable || unsavedAnnotation,\n })}\n >\n <img\n src={src}\n onError={() => setImageError(true)}\n style={{\n display: imageError ? 'none' : 'block',\n }}\n />\n </Styled.ImageWrapper>\n )}\n <Styled.Buttons className=\"expand-buttons\">\n {isPreviewable && !disableExpand && (\n <Styled.ExpandButton\n data-tooltip=\"Open preview\"\n icon=\"open_in_full\"\n variant=\"nav\"\n onClick={onExpand}\n />\n )}\n {(unsavedAnnotation || (feedAnnotationsEnabled && savedAnnotation)) && (\n <Styled.ExpandButton\n data-tooltip=\"Jump to annotation\"\n icon=\"play_circle\"\n variant=\"nav\"\n onClick={onJumpTo}\n />\n )}\n </Styled.Buttons>\n </Styled.ContentWrapper>\n <Styled.Footer\n className={clsx({\n inProgress,\n isPreviewable: isPreviewable && !disableExpand,\n isDownloadable,\n })}\n >\n <span className=\"progress\" style={{ right: `${100 - progress}%` }} />\n <div className=\"name-wrapper\">\n {someAnnotation ? (\n <span className=\"name\">\n <Icon icon=\"draw\" />\n {someAnnotation.range[0]}\n {someAnnotation.range[1] !== someAnnotation.range[0] &&\n ` - ${someAnnotation.range[1]}`}\n </span>\n ) : (\n <span className=\"name\">\n {fileName}\n <span className=\"extension\">.{extension}</span>\n </span>\n )}\n </div>\n\n {isDownloadable &&\n (!onRemove ? (\n <a href={src} target=\"_blank\" rel=\"noopener noreferrer\" className=\"download\">\n {downloadComponent}\n </a>\n ) : (\n <div className=\"download\">{downloadComponent}</div>\n ))}\n </Styled.Footer>\n {onRemove && <Button className=\"remove\" onClick={onRemove} icon=\"close\" />}\n </Styled.File>\n )\n}\n\nexport default FileUploadCard\n"],"names":["fileIcons","getIconForType","type","icon","keywords","keyword","FileUploadCard","name","mime","src","unsavedAnnotation","savedAnnotation","size","progress","onRemove","isCompact","isDownloadable","onExpand","disableExpand","onJumpTo","className","props","inProgress","imageError","setImageError","useState","feedAnnotationsEnabled","useDetailsPanelContext","nameParts","extension","fileName","isPreviewable","isFilePreviewable","isImage","downloadComponent","jsxs","Fragment","jsx","getFileSizeString","Icon","someAnnotation","Styled.File","clsx","Styled.ContentWrapper","Styled.ImageWrapper","Styled.Buttons","Styled.ExpandButton","Styled.Footer","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileUploadCard.es.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.tsx"],"sourcesContent":["import { Button, getFileSizeString, Icon } from '@ynput/ayon-react-components'\nimport * as Styled from './FileUploadCard.styled'\nimport clsx from 'clsx'\nimport { useMemo, useState } from 'react'\nimport { isFilePreviewable } from '../FileUploadPreview'\nimport { SavedAnnotationMetadata, useFeedContext } from '@shared/containers'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { AnnotationPreview } from '../CommentInput/hooks/useAnnotationsSync'\n\nexport interface FileUploadCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string\n mime?: string\n src?: string\n unsavedAnnotation?: AnnotationPreview\n savedAnnotation?: SavedAnnotationMetadata\n size: number\n progress: number\n onRemove?: () => void\n isCompact?: boolean\n isDownloadable?: boolean\n onExpand?: () => void\n disableExpand?: boolean\n onJumpTo?: () => void\n}\n\nconst fileIcons: { [key: string]: string[] } = {\n // special cases\n description: ['doc'],\n folder_zip: ['zip'],\n code_blocks: [\n 'json',\n 'javascript',\n 'python',\n 'html',\n 'css',\n '.py',\n '.js',\n '.html',\n '.css',\n '.json',\n '.ts',\n ],\n brush: ['.psd', '.ai', '.xd', '.sketch'],\n '3d_rotation': [\n '.mb',\n '.ma',\n '.c4d',\n '.blend',\n '.max',\n '.3ds',\n '.lwo',\n '.lws',\n '.lxo',\n '.hip',\n '.hda',\n ],\n theaters: ['.aep', '.tpl', '.clip', '.nk', '.fusion', '.prproj', '.spsm', '.drp'],\n picture_as_pdf: ['pdf', '.pdf'],\n // default\n image: ['image', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp'],\n videocam: ['video', '.mp4', '.mov', '.avi', '.mkv', '.webm', '.mxf'],\n business_center: ['application'],\n audio_file: ['audio'],\n text_snippet: ['text'],\n filter_none: ['sequence'],\n font_download: ['font'],\n deployed_code: ['model', '.obj', '.abc', '.stl', '.fbx', '.gltf', '.glb', '.usd'],\n}\n\nconst getIconForType = (type: string): string => {\n for (const [icon, keywords] of Object.entries(fileIcons)) {\n if (keywords.some((keyword) => type.includes(keyword))) {\n return icon\n }\n }\n return 'draft'\n}\n\nconst FileUploadCard = ({\n name,\n mime,\n src,\n unsavedAnnotation,\n savedAnnotation,\n size,\n progress,\n onRemove,\n isCompact,\n isDownloadable = false,\n onExpand,\n disableExpand,\n onJumpTo,\n className,\n ...props\n}: FileUploadCardProps) => {\n const inProgress = progress && progress < 100\n\n const [imageError, setImageError] = useState(false)\n const { feedAnnotationsEnabled } = useDetailsPanelContext()\n const { entities } = useFeedContext()\n\n // split name and file extension\n const nameParts = name.split('.')\n const extension = nameParts.pop() || ''\n const fileName = nameParts.join('.')\n\n const isPreviewable = isFilePreviewable(mime || '.' + extension)\n const isImage = mime?.includes('image/') || Boolean(unsavedAnnotation)\n\n const downloadComponent = (\n <>\n <span className=\"size\">{getFileSizeString(size)}</span>\n <Icon icon=\"download\" className=\"download-icon\" />\n </>\n )\n\n const someAnnotation = useMemo(\n () => unsavedAnnotation ?? savedAnnotation,\n [unsavedAnnotation, savedAnnotation],\n )\n\n const firstEntity = useMemo(() => {\n return entities.at(0)\n }, [entities])\n\n const annotationDisplayRange = useMemo(() => {\n if (!someAnnotation?.range) {\n return [1, 1]\n }\n\n if (!firstEntity?.attrib) {\n return someAnnotation?.range ?? [1, 1]\n }\n\n const { frameStart } = firstEntity?.attrib\n if (Number.isNaN(frameStart)) {\n return someAnnotation?.range ?? [1, 1]\n }\n\n return [\n frameStart - 1 + someAnnotation.range[0],\n frameStart - 1 + someAnnotation.range[1],\n ]\n }, [someAnnotation])\n\n return (\n <Styled.File\n className={clsx(className, {\n compact: isCompact,\n isDownloadable,\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n {...props}\n >\n <Styled.ContentWrapper\n className={clsx('content-wrapper', {\n isPreviewable,\n isUnsavedAnnotation: Boolean(unsavedAnnotation),\n })}\n >\n <Icon icon={getIconForType(mime || '.' + extension)} className=\"type-icon\" />\n {isImage && src && (\n <Styled.ImageWrapper\n className={clsx({\n 'image-wrapper': true,\n isDownloadable: isDownloadable || isPreviewable || unsavedAnnotation,\n })}\n >\n <img\n src={src}\n onError={() => setImageError(true)}\n style={{\n display: imageError ? 'none' : 'block',\n }}\n />\n </Styled.ImageWrapper>\n )}\n <Styled.Buttons className=\"expand-buttons\">\n {isPreviewable && !disableExpand && (\n <Styled.ExpandButton\n data-tooltip=\"Open preview\"\n icon=\"open_in_full\"\n variant=\"nav\"\n onClick={onExpand}\n />\n )}\n {(unsavedAnnotation || (feedAnnotationsEnabled && savedAnnotation)) && (\n <Styled.ExpandButton\n data-tooltip=\"Jump to annotation\"\n icon=\"play_circle\"\n variant=\"nav\"\n onClick={onJumpTo}\n />\n )}\n </Styled.Buttons>\n </Styled.ContentWrapper>\n <Styled.Footer\n className={clsx({\n inProgress,\n isPreviewable: isPreviewable && !disableExpand,\n isDownloadable,\n })}\n >\n <span className=\"progress\" style={{ right: `${100 - progress}%` }} />\n <div className=\"name-wrapper\">\n {someAnnotation ? (\n <span className=\"name\">\n <Icon icon=\"draw\" />\n {annotationDisplayRange[0]}\n {annotationDisplayRange[1] !== annotationDisplayRange[0] &&\n ` - ${annotationDisplayRange[1]}`}\n </span>\n ) : (\n <span className=\"name\">\n {fileName}\n <span className=\"extension\">.{extension}</span>\n </span>\n )}\n </div>\n\n {isDownloadable &&\n (!onRemove ? (\n <a href={src} target=\"_blank\" rel=\"noopener noreferrer\" className=\"download\">\n {downloadComponent}\n </a>\n ) : (\n <div className=\"download\">{downloadComponent}</div>\n ))}\n </Styled.Footer>\n {onRemove && <Button className=\"remove\" onClick={onRemove} icon=\"close\" />}\n </Styled.File>\n )\n}\n\nexport default FileUploadCard\n"],"names":["fileIcons","getIconForType","type","icon","keywords","keyword","FileUploadCard","name","mime","src","unsavedAnnotation","savedAnnotation","size","progress","onRemove","isCompact","isDownloadable","onExpand","disableExpand","onJumpTo","className","props","inProgress","imageError","setImageError","useState","feedAnnotationsEnabled","useDetailsPanelContext","entities","useFeedContext","nameParts","extension","fileName","isPreviewable","isFilePreviewable","isImage","downloadComponent","jsxs","Fragment","jsx","getFileSizeString","Icon","someAnnotation","useMemo","firstEntity","annotationDisplayRange","frameStart","Styled.File","clsx","Styled.ContentWrapper","Styled.ImageWrapper","Styled.Buttons","Styled.ExpandButton","Styled.Footer","Button"],"mappings":"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"}
|
package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploadCard.styled.cjs.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.ts"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const File = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: var(--border-radius-m);\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n z-index: 0;\n user-select: none;\n\n height: 105px;\n\n &.compact {\n height: 75px;\n }\n\n .icon {\n font-size: 30px;\n }\n\n .remove {\n position: absolute;\n top: 2px;\n right: 2px;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-error-container);\n color: var(--md-sys-color-on-error-container);\n }\n\n .icon {\n font-size: 20px;\n }\n }\n\n /* move icon up slightly to center it */\n .type-icon {\n margin-top: -20px;\n }\n\n /* set download default color outline */\n .download,\n .download-icon {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport const Footer = styled.footer`\n background-color: var(--md-sys-color-surface-container-low);\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--padding-s);\n overflow: hidden;\n color: var(--md-sys-color-on-surface);\n\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n\n transition: padding 0.2s ease;\n\n span {\n font-size: 12px;\n }\n\n .name-wrapper {\n overflow: hidden;\n }\n\n .download {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n display: none;\n color: var(--md-sys-color-on-surface);\n }\n\n .name {\n position: relative;\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n z-index: 20;\n display:
|
|
1
|
+
{"version":3,"file":"FileUploadCard.styled.cjs.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.ts"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const File = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: var(--border-radius-m);\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n z-index: 0;\n user-select: none;\n\n height: 105px;\n\n &.compact {\n height: 75px;\n }\n\n .icon {\n font-size: 30px;\n }\n\n .remove {\n position: absolute;\n top: 2px;\n right: 2px;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-error-container);\n color: var(--md-sys-color-on-error-container);\n }\n\n .icon {\n font-size: 20px;\n }\n }\n\n /* move icon up slightly to center it */\n .type-icon {\n margin-top: -20px;\n }\n\n /* set download default color outline */\n .download,\n .download-icon {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport const Footer = styled.footer`\n background-color: var(--md-sys-color-surface-container-low);\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--padding-s);\n overflow: hidden;\n color: var(--md-sys-color-on-surface);\n\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n\n transition: padding 0.2s ease;\n\n span {\n font-size: 12px;\n }\n\n .name-wrapper {\n overflow: hidden;\n }\n\n .download {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n display: none;\n color: var(--md-sys-color-on-surface);\n }\n\n .name {\n position: relative;\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n z-index: 20;\n display: flex;\n align-items: center;\n\n .icon {\n font-size: inherit;\n margin-right: var(--padding-s);\n vertical-align: text-top;\n }\n }\n\n .extension {\n z-index: 20;\n min-width: fit-content;\n overflow: hidden;\n }\n\n .progress {\n position: absolute;\n inset: 0;\n background-color: var(--md-sys-color-primary-container);\n z-index: 10;\n\n transition: right 0.3s;\n\n display: none;\n }\n\n &.inProgress {\n .progress {\n display: block;\n }\n }\n\n .download-icon {\n font-size: 20px;\n }\n\n &.isDownloadable {\n &:hover {\n cursor: pointer;\n\n padding: var(--padding-m) var(--padding-s);\n\n background-color: var(--md-sys-color-surface-container-low-hover);\n\n .download,\n .download-icon {\n color: var(--md-sys-color-on-surface);\n }\n\n /* reveal size and download */\n .download {\n display: flex;\n }\n .name-wrapper,\n .extension {\n display: none;\n }\n }\n }\n`\n\nexport const ContentWrapper = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: var(--md-sys-color-surface-container-lowest);\n\n flex: 1;\n\n .icon {\n user-select: none;\n }\n\n .download-icon {\n display: none;\n }\n\n /* previewable styles (it can be expanded) */\n /* on hover it shows the expand buttons */\n &.isPreviewable,\n &.isUnsavedAnnotation {\n cursor: pointer;\n\n &:hover {\n .expand-buttons {\n display: flex;\n }\n .type-icon {\n display: none;\n }\n }\n }\n\n &:hover .image-wrapper::after {\n opacity: 0.8;\n }\n`\n\nexport const ImageWrapper = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n justify-content: center;\n background-color: var(--md-sys-color-surface-container-lowest);\n img {\n position: absolute;\n max-height: 100%;\n max-width: 100%;\n object-fit: contain;\n height: calc(100% - 20px);\n\n transition: scale 0.2s ease;\n }\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background-color: var(--md-sys-color-surface-container-lowest);\n opacity: 0;\n transition: opacity 0.1s ease;\n }\n\n &.isDownloadable {\n &:hover {\n .icon {\n display: block;\n z-index: 10;\n }\n }\n }\n`\n\nexport const Buttons = styled.div`\n display: none;\n position: absolute;\n left: 0;\n top: 0;\n transform: none;\n height: calc(100% - 20px);\n width: 100%;\n gap: 0;\n`\n\nexport const ExpandButton = styled(Button)`\n height: 100%;\n width: 100%;\n border: none;\n opacity: 0.5;\n transition: opacity 250ms;\n\n &:hover {\n background: none;\n opacity: 1;\n }\n`\n"],"names":["File","styled","Footer","ContentWrapper","ImageWrapper","Buttons","ExpandButton","Button"],"mappings":"+JAGaA,EAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgDdC,EAASD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsGhBE,EAAiBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCxBG,EAAeH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmCtBI,EAAUJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWjBK,EAAeL,EAAOM,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
|
package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploadCard.styled.es.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.ts"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const File = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: var(--border-radius-m);\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n z-index: 0;\n user-select: none;\n\n height: 105px;\n\n &.compact {\n height: 75px;\n }\n\n .icon {\n font-size: 30px;\n }\n\n .remove {\n position: absolute;\n top: 2px;\n right: 2px;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-error-container);\n color: var(--md-sys-color-on-error-container);\n }\n\n .icon {\n font-size: 20px;\n }\n }\n\n /* move icon up slightly to center it */\n .type-icon {\n margin-top: -20px;\n }\n\n /* set download default color outline */\n .download,\n .download-icon {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport const Footer = styled.footer`\n background-color: var(--md-sys-color-surface-container-low);\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--padding-s);\n overflow: hidden;\n color: var(--md-sys-color-on-surface);\n\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n\n transition: padding 0.2s ease;\n\n span {\n font-size: 12px;\n }\n\n .name-wrapper {\n overflow: hidden;\n }\n\n .download {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n display: none;\n color: var(--md-sys-color-on-surface);\n }\n\n .name {\n position: relative;\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n z-index: 20;\n display:
|
|
1
|
+
{"version":3,"file":"FileUploadCard.styled.es.js","sources":["../../../../../../../src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.ts"],"sourcesContent":["import { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const File = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: var(--border-radius-m);\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n z-index: 0;\n user-select: none;\n\n height: 105px;\n\n &.compact {\n height: 75px;\n }\n\n .icon {\n font-size: 30px;\n }\n\n .remove {\n position: absolute;\n top: 2px;\n right: 2px;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-error-container);\n color: var(--md-sys-color-on-error-container);\n }\n\n .icon {\n font-size: 20px;\n }\n }\n\n /* move icon up slightly to center it */\n .type-icon {\n margin-top: -20px;\n }\n\n /* set download default color outline */\n .download,\n .download-icon {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport const Footer = styled.footer`\n background-color: var(--md-sys-color-surface-container-low);\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 var(--padding-s);\n overflow: hidden;\n color: var(--md-sys-color-on-surface);\n\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n\n transition: padding 0.2s ease;\n\n span {\n font-size: 12px;\n }\n\n .name-wrapper {\n overflow: hidden;\n }\n\n .download {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n display: none;\n color: var(--md-sys-color-on-surface);\n }\n\n .name {\n position: relative;\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n z-index: 20;\n display: flex;\n align-items: center;\n\n .icon {\n font-size: inherit;\n margin-right: var(--padding-s);\n vertical-align: text-top;\n }\n }\n\n .extension {\n z-index: 20;\n min-width: fit-content;\n overflow: hidden;\n }\n\n .progress {\n position: absolute;\n inset: 0;\n background-color: var(--md-sys-color-primary-container);\n z-index: 10;\n\n transition: right 0.3s;\n\n display: none;\n }\n\n &.inProgress {\n .progress {\n display: block;\n }\n }\n\n .download-icon {\n font-size: 20px;\n }\n\n &.isDownloadable {\n &:hover {\n cursor: pointer;\n\n padding: var(--padding-m) var(--padding-s);\n\n background-color: var(--md-sys-color-surface-container-low-hover);\n\n .download,\n .download-icon {\n color: var(--md-sys-color-on-surface);\n }\n\n /* reveal size and download */\n .download {\n display: flex;\n }\n .name-wrapper,\n .extension {\n display: none;\n }\n }\n }\n`\n\nexport const ContentWrapper = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: var(--md-sys-color-surface-container-lowest);\n\n flex: 1;\n\n .icon {\n user-select: none;\n }\n\n .download-icon {\n display: none;\n }\n\n /* previewable styles (it can be expanded) */\n /* on hover it shows the expand buttons */\n &.isPreviewable,\n &.isUnsavedAnnotation {\n cursor: pointer;\n\n &:hover {\n .expand-buttons {\n display: flex;\n }\n .type-icon {\n display: none;\n }\n }\n }\n\n &:hover .image-wrapper::after {\n opacity: 0.8;\n }\n`\n\nexport const ImageWrapper = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n justify-content: center;\n background-color: var(--md-sys-color-surface-container-lowest);\n img {\n position: absolute;\n max-height: 100%;\n max-width: 100%;\n object-fit: contain;\n height: calc(100% - 20px);\n\n transition: scale 0.2s ease;\n }\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background-color: var(--md-sys-color-surface-container-lowest);\n opacity: 0;\n transition: opacity 0.1s ease;\n }\n\n &.isDownloadable {\n &:hover {\n .icon {\n display: block;\n z-index: 10;\n }\n }\n }\n`\n\nexport const Buttons = styled.div`\n display: none;\n position: absolute;\n left: 0;\n top: 0;\n transform: none;\n height: calc(100% - 20px);\n width: 100%;\n gap: 0;\n`\n\nexport const ExpandButton = styled(Button)`\n height: 100%;\n width: 100%;\n border: none;\n opacity: 0.5;\n transition: opacity 250ms;\n\n &:hover {\n background: none;\n opacity: 1;\n }\n`\n"],"names":["File","styled","Footer","ContentWrapper","ImageWrapper","Buttons","ExpandButton","Button"],"mappings":";;AAGO,MAAMA,IAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgDdC,IAASD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAsGhBE,IAAiBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAsCxBG,IAAeH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmCtBI,IAAUJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWjBK,IAAeL,EAAOM,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|