@zextras/carbonio-ui-preview 1.2.2 → 1.2.4
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/README.md +62 -0
- package/THIRDPARTIES +388 -0
- package/lib/constants/index.js +2 -5
- package/lib/constants/index.js.map +1 -1
- package/lib/index.d.ts +9 -6
- package/lib/index.js +11 -22
- package/lib/index.js.map +1 -1
- package/lib/preview/FocusWithin.d.ts +5 -0
- package/lib/preview/FocusWithin.js +26 -57
- package/lib/preview/FocusWithin.js.map +1 -1
- package/lib/preview/FocusWithin.module.css +13 -0
- package/lib/preview/Header.d.ts +37 -4
- package/lib/preview/Header.js +17 -38
- package/lib/preview/Header.js.map +1 -1
- package/lib/preview/Header.module.css +37 -0
- package/lib/preview/ImagePreview.d.ts +7 -47
- package/lib/preview/ImagePreview.js +17 -96
- package/lib/preview/ImagePreview.js.map +1 -1
- package/lib/preview/ImagePreview.module.css +29 -0
- package/lib/preview/Navigator.d.ts +1 -0
- package/lib/preview/Navigator.js +7 -21
- package/lib/preview/Navigator.js.map +1 -1
- package/lib/preview/Navigator.module.css +18 -0
- package/lib/preview/PageController.d.ts +8 -0
- package/lib/preview/PageController.js +29 -67
- package/lib/preview/PageController.js.map +1 -1
- package/lib/preview/PageController.module.css +19 -0
- package/lib/preview/PdfPreview.d.ts +21 -69
- package/lib/preview/PdfPreview.js +79 -161
- package/lib/preview/PdfPreview.js.map +1 -1
- package/lib/preview/PdfPreview.module.css +46 -0
- package/lib/preview/PreviewCriteriaAlternativeContent.d.ts +13 -1
- package/lib/preview/PreviewCriteriaAlternativeContent.js +22 -55
- package/lib/preview/PreviewCriteriaAlternativeContent.js.map +1 -1
- package/lib/preview/PreviewCriteriaAlternativeContent.module.css +15 -0
- package/lib/preview/PreviewManager.d.ts +38 -15
- package/lib/preview/PreviewManager.js +40 -74
- package/lib/preview/PreviewManager.js.map +1 -1
- package/lib/preview/PreviewNavigator.d.ts +42 -0
- package/lib/preview/PreviewNavigator.js +29 -0
- package/lib/preview/PreviewNavigator.js.map +1 -0
- package/lib/preview/PreviewNavigator.module.css +43 -0
- package/lib/preview/PreviewWrapper.d.ts +14 -8
- package/lib/preview/PreviewWrapper.js +12 -24
- package/lib/preview/PreviewWrapper.js.map +1 -1
- package/lib/preview/ZoomController.d.ts +1 -0
- package/lib/preview/ZoomController.js +11 -52
- package/lib/preview/ZoomController.js.map +1 -1
- package/lib/preview/ZoomController.module.css +18 -0
- package/lib/preview/usePageScrollController.js +18 -22
- package/lib/preview/usePageScrollController.js.map +1 -1
- package/lib/preview/useZoom.js +31 -39
- package/lib/preview/useZoom.js.map +1 -1
- package/lib/types/utils.d.ts +4 -0
- package/lib/types/utils.js +2 -0
- package/lib/types/utils.js.map +1 -0
- package/lib/utils/utils.js +5 -9
- package/lib/utils/utils.js.map +1 -1
- package/package.json +55 -44
- package/lib/preview/StyledComponents.d.ts +0 -2
- package/lib/preview/StyledComponents.js +0 -21
- package/lib/preview/StyledComponents.js.map +0 -1
- package/lib/utils/type-utils.d.ts +0 -3
- package/lib/utils/type-utils.js +0 -3
- package/lib/utils/type-utils.js.map +0 -1
- package/lib-esm/constants/index.d.ts +0 -2
- package/lib-esm/constants/index.js +0 -8
- package/lib-esm/constants/index.js.map +0 -1
- package/lib-esm/index.d.ts +0 -6
- package/lib-esm/index.js +0 -12
- package/lib-esm/index.js.map +0 -1
- package/lib-esm/preview/FocusWithin.d.ts +0 -7
- package/lib-esm/preview/FocusWithin.js +0 -57
- package/lib-esm/preview/FocusWithin.js.map +0 -1
- package/lib-esm/preview/Header.d.ts +0 -29
- package/lib-esm/preview/Header.js +0 -39
- package/lib-esm/preview/Header.js.map +0 -1
- package/lib-esm/preview/ImagePreview.d.ts +0 -50
- package/lib-esm/preview/ImagePreview.js +0 -105
- package/lib-esm/preview/ImagePreview.js.map +0 -1
- package/lib-esm/preview/Navigator.d.ts +0 -5
- package/lib-esm/preview/Navigator.js +0 -21
- package/lib-esm/preview/Navigator.js.map +0 -1
- package/lib-esm/preview/PageController.d.ts +0 -8
- package/lib-esm/preview/PageController.js +0 -82
- package/lib-esm/preview/PageController.js.map +0 -1
- package/lib-esm/preview/PdfPreview.d.ts +0 -89
- package/lib-esm/preview/PdfPreview.js +0 -280
- package/lib-esm/preview/PdfPreview.js.map +0 -1
- package/lib-esm/preview/PreviewCriteriaAlternativeContent.d.ts +0 -13
- package/lib-esm/preview/PreviewCriteriaAlternativeContent.js +0 -42
- package/lib-esm/preview/PreviewCriteriaAlternativeContent.js.map +0 -1
- package/lib-esm/preview/PreviewManager.d.ts +0 -19
- package/lib-esm/preview/PreviewManager.js +0 -108
- package/lib-esm/preview/PreviewManager.js.map +0 -1
- package/lib-esm/preview/PreviewWrapper.d.ts +0 -9
- package/lib-esm/preview/PreviewWrapper.js +0 -36
- package/lib-esm/preview/PreviewWrapper.js.map +0 -1
- package/lib-esm/preview/StyledComponents.d.ts +0 -2
- package/lib-esm/preview/StyledComponents.js +0 -15
- package/lib-esm/preview/StyledComponents.js.map +0 -1
- package/lib-esm/preview/ZoomController.d.ts +0 -17
- package/lib-esm/preview/ZoomController.js +0 -28
- package/lib-esm/preview/ZoomController.js.map +0 -1
- package/lib-esm/preview/usePageScrollController.d.ts +0 -4
- package/lib-esm/preview/usePageScrollController.js +0 -67
- package/lib-esm/preview/usePageScrollController.js.map +0 -1
- package/lib-esm/preview/useZoom.d.ts +0 -13
- package/lib-esm/preview/useZoom.js +0 -78
- package/lib-esm/preview/useZoom.js.map +0 -1
- package/lib-esm/utils/type-utils.d.ts +0 -3
- package/lib-esm/utils/type-utils.js +0 -2
- package/lib-esm/utils/type-utils.js.map +0 -1
- package/lib-esm/utils/utils.d.ts +0 -1
- package/lib-esm/utils/utils.js +0 -18
- package/lib-esm/utils/utils.js.map +0 -1
|
@@ -1,72 +1,42 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
-
return cooked;
|
|
5
|
-
};
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
30
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
31
|
-
};
|
|
32
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
1
|
/* eslint-disable jsx-a11y/no-noninteractive-tabindex */
|
|
34
2
|
/*
|
|
35
3
|
* SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>
|
|
36
4
|
*
|
|
37
5
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
38
6
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
7
|
+
import React, { useCallback, useEffect, useRef } from 'react';
|
|
8
|
+
import { last } from 'lodash';
|
|
9
|
+
import styles from './FocusWithin.module.css';
|
|
10
|
+
/**
|
|
11
|
+
* Utility component which keeps the focus within its content, allowing the user to use the keyboard to
|
|
12
|
+
* move across interactive elements, without exiting from the content area
|
|
13
|
+
*/
|
|
14
|
+
const FocusWithin = ({ children, returnFocus = true }) => {
|
|
15
|
+
const contentRef = useRef(null);
|
|
16
|
+
const startSentinelRef = useRef(null);
|
|
17
|
+
const endSentinelRef = useRef(null);
|
|
18
|
+
const onStartSentinelFocus = useCallback(() => {
|
|
49
19
|
if (contentRef.current) {
|
|
50
|
-
|
|
20
|
+
const node = last(contentRef.current.querySelectorAll('[tabindex]'));
|
|
51
21
|
node === null || node === void 0 ? void 0 : node.focus();
|
|
52
22
|
}
|
|
53
23
|
}, []);
|
|
54
|
-
|
|
24
|
+
const onEndSentinelFocus = useCallback(() => {
|
|
55
25
|
if (contentRef.current) {
|
|
56
|
-
|
|
26
|
+
const node = contentRef.current.querySelector('[tabindex]');
|
|
57
27
|
node === null || node === void 0 ? void 0 : node.focus();
|
|
58
28
|
}
|
|
59
29
|
}, []);
|
|
60
|
-
|
|
30
|
+
useEffect(() => {
|
|
61
31
|
var _a, _b, _c, _d, _e;
|
|
62
|
-
|
|
63
|
-
|
|
32
|
+
const documentElement = (_b = (_a = window.top) === null || _a === void 0 ? void 0 : _a.document) !== null && _b !== void 0 ? _b : document;
|
|
33
|
+
const focusedElement = documentElement.activeElement;
|
|
64
34
|
(_c = contentRef.current) === null || _c === void 0 ? void 0 : _c.focus();
|
|
65
35
|
(_d = startSentinelRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener('focus', onStartSentinelFocus);
|
|
66
36
|
(_e = endSentinelRef.current) === null || _e === void 0 ? void 0 : _e.addEventListener('focus', onEndSentinelFocus);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return
|
|
37
|
+
const startSentinelRefSave = startSentinelRef.current;
|
|
38
|
+
const endSentinelRefSave = endSentinelRef.current;
|
|
39
|
+
return () => {
|
|
70
40
|
startSentinelRefSave === null || startSentinelRefSave === void 0 ? void 0 : startSentinelRefSave.removeEventListener('focus', onStartSentinelFocus);
|
|
71
41
|
endSentinelRefSave === null || endSentinelRefSave === void 0 ? void 0 : endSentinelRefSave.removeEventListener('focus', onEndSentinelFocus);
|
|
72
42
|
// return focus to previous initial element
|
|
@@ -75,11 +45,10 @@ var FocusWithin = function (_a) {
|
|
|
75
45
|
}
|
|
76
46
|
};
|
|
77
47
|
}, [onStartSentinelFocus, onEndSentinelFocus, returnFocus]);
|
|
78
|
-
return (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
48
|
+
return (React.createElement("span", { className: styles.focusContainer },
|
|
49
|
+
React.createElement("span", { tabIndex: 0, ref: startSentinelRef }),
|
|
50
|
+
React.createElement("div", { tabIndex: -1, ref: contentRef }, children),
|
|
51
|
+
React.createElement("span", { tabIndex: 0, ref: endSentinelRef })));
|
|
82
52
|
};
|
|
83
|
-
|
|
84
|
-
var templateObject_1;
|
|
53
|
+
export default FocusWithin;
|
|
85
54
|
//# sourceMappingURL=FocusWithin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusWithin.js","sourceRoot":"","sources":["../../src/preview/FocusWithin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FocusWithin.js","sourceRoot":"","sources":["../../src/preview/FocusWithin.tsx"],"names":[],"mappings":"AAAA,wDAAwD;AACxD;;;;GAIG;AACH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAQ9C;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,EAAuB,EAAqB,EAAE;IAChG,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAE3D,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAc,YAAY,CAAC,CAAC,CAAC;YAClF,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAC;QACf,CAAC;IACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAc,YAAY,CAAC,CAAC;YACzE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAC;QACf,CAAC;IACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;;QACd,MAAM,eAAe,GAAG,MAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,QAAQ,mCAAI,QAAQ,CAAC;QACzD,MAAM,cAAc,GAAG,eAAe,CAAC,aAA4B,CAAC;QAEpE,MAAA,UAAU,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QAC5B,MAAA,gBAAgB,CAAC,OAAO,0CAAE,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAC1E,MAAA,cAAc,CAAC,OAAO,0CAAE,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACtE,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;QACtD,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC;QAElD,OAAO,GAAS,EAAE;YACjB,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;YACzE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACrE,2CAA2C;YAC3C,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;gBACnC,cAAc,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;QACF,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5D,OAAO,CACN,8BAAM,SAAS,EAAE,MAAM,CAAC,cAAc;QACrC,8BAAM,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAI;QAC5C,6BAAK,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,IAChC,QAAQ,CACJ;QACN,8BAAM,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,GAAI,CACpC,CACP,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
package/lib/preview/Header.d.ts
CHANGED
|
@@ -1,22 +1,54 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Theme, TooltipProps } from '@zextras/carbonio-design-system';
|
|
3
3
|
export interface HeaderAction {
|
|
4
4
|
/** id used as key */
|
|
5
5
|
id: string;
|
|
6
6
|
/** Action called on click */
|
|
7
7
|
onClick: (ev: React.MouseEvent<HTMLButtonElement> | KeyboardEvent) => void;
|
|
8
8
|
/** Icon from the theme */
|
|
9
|
-
icon:
|
|
9
|
+
icon: keyof Theme['icons'];
|
|
10
10
|
/** Label to show as tooltip for the action */
|
|
11
11
|
tooltipLabel?: string;
|
|
12
|
-
|
|
12
|
+
/** Define the placement of the tooltip for the action */
|
|
13
|
+
tooltipPlacement?: TooltipProps['placement'];
|
|
13
14
|
/** Disabled status for the action */
|
|
14
15
|
disabled?: boolean;
|
|
15
16
|
}
|
|
16
17
|
export interface HeaderProps {
|
|
17
18
|
/** Left Action for the preview */
|
|
18
19
|
closeAction?: HeaderAction;
|
|
19
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Actions for the preview.
|
|
22
|
+
*
|
|
23
|
+
* Note: by default the actions does not prevent the default behavior nor the propagation of the
|
|
24
|
+
* event. This means that a click on an action will cause a click on the preview overlay too, resulting
|
|
25
|
+
* in the preview to close.
|
|
26
|
+
*
|
|
27
|
+
* To prevent the preview to close when an action is clicked, the onClick callback should invoke the
|
|
28
|
+
* preventDefault on the event received.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const actions = [
|
|
33
|
+
* {
|
|
34
|
+
* id: 'do-action-and-close-preview',
|
|
35
|
+
* icon: 'Airplane',
|
|
36
|
+
* onClick: (e: React.MouseEvent<HTMLButtonElement> | KeyboardEvent): void => {
|
|
37
|
+
* // do action
|
|
38
|
+
* // do NOT prevent default
|
|
39
|
+
* }
|
|
40
|
+
* },
|
|
41
|
+
* {
|
|
42
|
+
* id: 'do-action-and-leave-preview-open',
|
|
43
|
+
* icon: 'Activity',
|
|
44
|
+
* onClick: (e: React.MouseEvent<HTMLButtonElement> | KeyboardEvent): void => {
|
|
45
|
+
* // do action
|
|
46
|
+
* // prevent default to tell the preview to not close
|
|
47
|
+
* e.preventDefault();
|
|
48
|
+
* }
|
|
49
|
+
* ]
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
20
52
|
actions: HeaderAction[];
|
|
21
53
|
/** Extension of the file, shown as info */
|
|
22
54
|
extension: string;
|
|
@@ -25,5 +57,6 @@ export interface HeaderProps {
|
|
|
25
57
|
/** Size of the file, shown as info */
|
|
26
58
|
size: string;
|
|
27
59
|
}
|
|
60
|
+
/** Preview header, shows the file information and the actions */
|
|
28
61
|
declare const Header: React.VFC<HeaderProps>;
|
|
29
62
|
export default Header;
|
package/lib/preview/Header.js
CHANGED
|
@@ -1,44 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
-
return cooked;
|
|
5
|
-
};
|
|
6
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
-
};
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
1
|
/*
|
|
11
2
|
* SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>
|
|
12
3
|
*
|
|
13
4
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
14
5
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
react_1.default.createElement(UpperCaseText, { size: "small", color: "gray6" },
|
|
33
|
-
extension,
|
|
34
|
-
extension && size && react_1.default.createElement(react_1.default.Fragment, null, " \u00B7 "),
|
|
35
|
-
size))),
|
|
36
|
-
react_1.default.createElement(RightContainer, null, (0, map_1.default)(actions, function (_a) {
|
|
37
|
-
var id = _a.id, onClick = _a.onClick, disabled = _a.disabled, icon = _a.icon, tooltipLabel = _a.tooltipLabel, tooltipPlacement = _a.tooltipPlacement;
|
|
38
|
-
return (react_1.default.createElement(carbonio_design_system_1.Tooltip, { label: tooltipLabel, disabled: !tooltipLabel, key: id, placement: tooltipPlacement },
|
|
39
|
-
react_1.default.createElement(carbonio_design_system_1.IconButton, { onClick: onClick, disabled: disabled, icon: icon, size: "medium", backgroundColor: "transparent", iconColor: "gray6" })));
|
|
40
|
-
}))));
|
|
41
|
-
};
|
|
42
|
-
exports.default = Header;
|
|
43
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { IconButton, Text, Tooltip } from '@zextras/carbonio-design-system';
|
|
8
|
+
import styles from './Header.module.css';
|
|
9
|
+
/** Preview header, shows the file information and the actions */
|
|
10
|
+
const Header = ({ closeAction, actions, filename, extension, size }) => (React.createElement("div", { className: styles.headerContainer },
|
|
11
|
+
React.createElement("div", { className: styles.leftContainer },
|
|
12
|
+
closeAction ? (React.createElement(Tooltip, { label: closeAction.tooltipLabel, disabled: !closeAction.tooltipLabel, key: closeAction.id, placement: closeAction.tooltipPlacement },
|
|
13
|
+
React.createElement(IconButton, { onClick: closeAction.onClick, icon: closeAction.icon, size: "medium", backgroundColor: "transparent", iconColor: "gray6" }))) : null,
|
|
14
|
+
React.createElement("div", { className: styles.infoContainer },
|
|
15
|
+
React.createElement(Text, { size: "small", color: "gray6" }, filename),
|
|
16
|
+
React.createElement(Text, { size: "small", color: "gray6", className: styles.upperCase },
|
|
17
|
+
extension,
|
|
18
|
+
extension && size ? React.createElement(React.Fragment, null, " \u00B7 ") : null,
|
|
19
|
+
size))),
|
|
20
|
+
React.createElement("div", { className: styles.rightContainer }, actions.map(({ id, onClick, disabled, icon, tooltipLabel, tooltipPlacement }) => (React.createElement(Tooltip, { label: tooltipLabel, disabled: !tooltipLabel, key: id, placement: tooltipPlacement },
|
|
21
|
+
React.createElement(IconButton, { onClick: onClick, disabled: disabled, icon: icon, size: "medium", backgroundColor: "transparent", iconColor: "gray6" })))))));
|
|
22
|
+
export default Header;
|
|
44
23
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/preview/Header.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/preview/Header.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAS,OAAO,EAAgB,MAAM,iCAAiC,CAAC;AAEjG,OAAO,MAAM,MAAM,qBAAqB,CAAC;AA6DzC,iEAAiE;AACjE,MAAM,MAAM,GAA2B,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC/F,6BAAK,SAAS,EAAE,MAAM,CAAC,eAAe;IACrC,6BAAK,SAAS,EAAE,MAAM,CAAC,aAAa;QAClC,WAAW,CAAC,CAAC,CAAC,CACd,oBAAC,OAAO,IACP,KAAK,EAAE,WAAW,CAAC,YAAY,EAC/B,QAAQ,EAAE,CAAC,WAAW,CAAC,YAAY,EACnC,GAAG,EAAE,WAAW,CAAC,EAAE,EACnB,SAAS,EAAE,WAAW,CAAC,gBAAgB;YAEvC,oBAAC,UAAU,IACV,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,IAAI,EAAC,QAAQ,EACb,eAAe,EAAC,aAAa,EAC7B,SAAS,EAAC,OAAO,GAChB,CACO,CACV,CAAC,CAAC,CAAC,IAAI;QACR,6BAAK,SAAS,EAAE,MAAM,CAAC,aAAa;YACnC,oBAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,IAC9B,QAAQ,CACH;YACP,oBAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,EAAC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC1D,SAAS;gBACT,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,qDAAe,CAAC,CAAC,CAAC,IAAI;gBAC1C,IAAI,CACC,CACF,CACD;IACN,6BAAK,SAAS,EAAE,MAAM,CAAC,cAAc,IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CACjF,oBAAC,OAAO,IACP,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,YAAY,EACvB,GAAG,EAAE,EAAE,EACP,SAAS,EAAE,gBAAgB;QAE3B,oBAAC,UAAU,IACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,IAAI,EAAC,QAAQ,EACb,eAAe,EAAC,aAAa,EAC7B,SAAS,EAAC,OAAO,GAChB,CACO,CACV,CAAC,CACG,CACD,CACN,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SPDX-FileCopyrightText: 2024 Zextras <https://www.zextras.com>
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: AGPL-3.0-only
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
.headerContainer {
|
|
8
|
+
display: flex;
|
|
9
|
+
justify-content: space-between;
|
|
10
|
+
padding: 1rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.leftContainer {
|
|
14
|
+
display: flex;
|
|
15
|
+
justify-content: flex-start;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: 0.5rem;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.rightContainer {
|
|
21
|
+
display: flex;
|
|
22
|
+
justify-content: flex-end;
|
|
23
|
+
align-items: center;
|
|
24
|
+
gap: 0.5rem;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.upperCase {
|
|
28
|
+
text-transform: uppercase;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.infoContainer {
|
|
32
|
+
width: fit-content;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.infoContainer div {
|
|
36
|
+
line-height: 1.5;
|
|
37
|
+
}
|
|
@@ -1,50 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/** Left Action for the preview */
|
|
6
|
-
closeAction?: MakeOptional<HeaderAction, 'onClick'>;
|
|
7
|
-
/**
|
|
8
|
-
* HTML node where to insert the Portal's children.
|
|
9
|
-
* The default value is 'window.top.document'.
|
|
10
|
-
* */
|
|
11
|
-
container?: Element;
|
|
12
|
-
/** Flag to disable the Portal implementation */
|
|
13
|
-
disablePortal?: boolean;
|
|
14
|
-
/** Flag to show or hide Portal's content */
|
|
15
|
-
show: boolean;
|
|
16
|
-
/** preview img source */
|
|
2
|
+
import { type PreviewNavigatorProps } from './PreviewNavigator.js';
|
|
3
|
+
export interface ImagePreviewProps extends Omit<PreviewNavigatorProps, 'onOverlayClick'> {
|
|
4
|
+
/** Preview img source */
|
|
17
5
|
src: string | File | Blob;
|
|
18
|
-
/**
|
|
19
|
-
onClose: (e: React.SyntheticEvent | KeyboardEvent) => void;
|
|
20
|
-
/** Alternative text for image */
|
|
6
|
+
/** Alternative text for the image */
|
|
21
7
|
alt?: string;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
onPreviousPreview?: (e: React.SyntheticEvent | KeyboardEvent) => void;
|
|
26
|
-
};
|
|
27
|
-
declare const ImagePreview: React.ForwardRefExoticComponent<Partial<Omit<HeaderProps, "closeAction">> & {
|
|
28
|
-
/** Left Action for the preview */
|
|
29
|
-
closeAction?: MakeOptional<HeaderAction, "onClick"> | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* HTML node where to insert the Portal's children.
|
|
32
|
-
* The default value is 'window.top.document'.
|
|
33
|
-
* */
|
|
34
|
-
container?: Element | undefined;
|
|
35
|
-
/** Flag to disable the Portal implementation */
|
|
36
|
-
disablePortal?: boolean | undefined;
|
|
37
|
-
/** Flag to show or hide Portal's content */
|
|
38
|
-
show: boolean;
|
|
39
|
-
/** preview img source */
|
|
40
|
-
src: string | File | Blob;
|
|
41
|
-
/** Callback to hide the preview */
|
|
42
|
-
onClose: (e: React.SyntheticEvent | KeyboardEvent) => void;
|
|
43
|
-
/** Alternative text for image */
|
|
44
|
-
alt?: string | undefined;
|
|
45
|
-
/** Callback */
|
|
46
|
-
onNextPreview?: ((e: React.SyntheticEvent | KeyboardEvent) => void) | undefined;
|
|
47
|
-
/** Callback */
|
|
48
|
-
onPreviousPreview?: ((e: React.SyntheticEvent | KeyboardEvent) => void) | undefined;
|
|
49
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
50
|
-
export { ImagePreview, ImagePreviewProps };
|
|
8
|
+
}
|
|
9
|
+
/** Main component for rendering the preview of an image */
|
|
10
|
+
export declare const ImagePreview: React.ForwardRefExoticComponent<ImagePreviewProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,80 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
-
return cooked;
|
|
5
|
-
};
|
|
6
|
-
var __assign = (this && this.__assign) || function () {
|
|
7
|
-
__assign = Object.assign || function(t) {
|
|
8
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
-
s = arguments[i];
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
-
t[p] = s[p];
|
|
12
|
-
}
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
15
|
-
return __assign.apply(this, arguments);
|
|
16
|
-
};
|
|
17
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
-
}
|
|
23
|
-
Object.defineProperty(o, k2, desc);
|
|
24
|
-
}) : (function(o, m, k, k2) {
|
|
25
|
-
if (k2 === undefined) k2 = k;
|
|
26
|
-
o[k2] = m[k];
|
|
27
|
-
}));
|
|
28
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
-
}) : function(o, v) {
|
|
31
|
-
o["default"] = v;
|
|
32
|
-
});
|
|
33
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
-
};
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.ImagePreview = void 0;
|
|
45
1
|
/*
|
|
46
2
|
* SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>
|
|
47
3
|
*
|
|
48
4
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
49
5
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
var MiddleContainer = (0, styled_components_1.default)(carbonio_design_system_1.Container)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tflex-grow: 1;\n"], ["\n\tflex-grow: 1;\n"])));
|
|
59
|
-
var Image = styled_components_1.default.img(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\tmax-height: 100%;\n\tmax-width: 100%;\n\tmin-height: 0;\n\tmin-width: 0;\n\talign-self: center;\n\tfilter: drop-shadow(0px 5px 14px rgba(0, 0, 0, 0.35));\n\tborder-radius: 0.25rem;\n"], ["\n\tmax-height: 100%;\n\tmax-width: 100%;\n\tmin-height: 0;\n\tmin-width: 0;\n\talign-self: center;\n\tfilter: drop-shadow(0px 5px 14px rgba(0, 0, 0, 0.35));\n\tborder-radius: 0.25rem;\n"])));
|
|
60
|
-
var PreviewContainer = styled_components_1.default.div.attrs({
|
|
61
|
-
$paddingVertical: '2rem',
|
|
62
|
-
$paddingHorizontal: '1rem',
|
|
63
|
-
$gap: '0.5rem'
|
|
64
|
-
})(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n\tdisplay: flex;\n\tmax-width: 100%;\n\tmax-height: calc(100vh - ", " * 2);\n\tflex-direction: column;\n\tgap: ", ";\n\tjustify-content: center;\n\talign-items: center;\n\toverflow: hidden;\n\tpadding: ", ";\n\toutline: none;\n\tflex-grow: 1;\n"], ["\n\tdisplay: flex;\n\tmax-width: 100%;\n\tmax-height: calc(100vh - ", " * 2);\n\tflex-direction: column;\n\tgap: ", ";\n\tjustify-content: center;\n\talign-items: center;\n\toverflow: hidden;\n\tpadding: ", ";\n\toutline: none;\n\tflex-grow: 1;\n"])), function (_a) {
|
|
65
|
-
var $paddingVertical = _a.$paddingVertical;
|
|
66
|
-
return $paddingVertical;
|
|
67
|
-
}, function (_a) {
|
|
68
|
-
var $gap = _a.$gap;
|
|
69
|
-
return $gap;
|
|
70
|
-
}, function (_a) {
|
|
71
|
-
var $paddingVertical = _a.$paddingVertical, $paddingHorizontal = _a.$paddingHorizontal;
|
|
72
|
-
return "".concat($paddingVertical, " ").concat($paddingHorizontal);
|
|
73
|
-
});
|
|
74
|
-
var ImagePreview = react_1.default.forwardRef(function PreviewFn(_a, ref) {
|
|
75
|
-
var src = _a.src, show = _a.show, container = _a.container, disablePortal = _a.disablePortal, _b = _a.extension, extension = _b === void 0 ? '' : _b, _c = _a.filename, filename = _c === void 0 ? '' : _c, _d = _a.size, size = _d === void 0 ? '' : _d, _e = _a.actions, actions = _e === void 0 ? [] : _e, closeAction = _a.closeAction, onClose = _a.onClose, alt = _a.alt, onNextPreview = _a.onNextPreview, onPreviousPreview = _a.onPreviousPreview;
|
|
76
|
-
var _f = (0, react_1.useState)(undefined), computedSrc = _f[0], setComputedSrc = _f[1];
|
|
77
|
-
(0, react_1.useEffect)(function () {
|
|
6
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
7
|
+
import { useCombinedRefs } from '@zextras/carbonio-design-system';
|
|
8
|
+
import styles from './ImagePreview.module.css';
|
|
9
|
+
import { PreviewNavigator } from './PreviewNavigator.js';
|
|
10
|
+
/** Main component for rendering the preview of an image */
|
|
11
|
+
export const ImagePreview = React.forwardRef(function PreviewFn({ src, show, container, disablePortal, extension = '', filename = '', size = '', actions = [], closeAction, onClose, alt, onNextPreview, onPreviousPreview }, ref) {
|
|
12
|
+
const [computedSrc, setComputedSrc] = useState(undefined);
|
|
13
|
+
useEffect(() => {
|
|
78
14
|
if (typeof src === 'string') {
|
|
79
15
|
setComputedSrc(src);
|
|
80
16
|
}
|
|
@@ -82,15 +18,9 @@ var ImagePreview = react_1.default.forwardRef(function PreviewFn(_a, ref) {
|
|
|
82
18
|
setComputedSrc(URL.createObjectURL(src));
|
|
83
19
|
}
|
|
84
20
|
}, [src, setComputedSrc]);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (closeAction) {
|
|
89
|
-
return __assign({ onClick: onClose }, closeAction);
|
|
90
|
-
}
|
|
91
|
-
return closeAction;
|
|
92
|
-
}, [closeAction, onClose]);
|
|
93
|
-
var eventListener = (0, react_1.useCallback)(function (event) {
|
|
21
|
+
const previewRef = useCombinedRefs(ref);
|
|
22
|
+
const imageRef = useRef(null);
|
|
23
|
+
const eventListener = useCallback((event) => {
|
|
94
24
|
if (event.key === 'Escape') {
|
|
95
25
|
onClose(event);
|
|
96
26
|
}
|
|
@@ -101,15 +31,15 @@ var ImagePreview = react_1.default.forwardRef(function PreviewFn(_a, ref) {
|
|
|
101
31
|
onPreviousPreview(event);
|
|
102
32
|
}
|
|
103
33
|
}, [onClose, onNextPreview, onPreviousPreview]);
|
|
104
|
-
|
|
34
|
+
useEffect(() => {
|
|
105
35
|
if (show) {
|
|
106
36
|
document.addEventListener('keydown', eventListener);
|
|
107
37
|
}
|
|
108
|
-
return
|
|
38
|
+
return () => {
|
|
109
39
|
document.removeEventListener('keydown', eventListener);
|
|
110
40
|
};
|
|
111
41
|
}, [eventListener, show]);
|
|
112
|
-
|
|
42
|
+
const onOverlayClick = useCallback((event) => {
|
|
113
43
|
// TODO: stop propagation or not?
|
|
114
44
|
event.stopPropagation();
|
|
115
45
|
previewRef.current &&
|
|
@@ -118,17 +48,8 @@ var ImagePreview = react_1.default.forwardRef(function PreviewFn(_a, ref) {
|
|
|
118
48
|
!previewRef.current.contains(event.target)) &&
|
|
119
49
|
onClose(event);
|
|
120
50
|
}, [onClose, previewRef]);
|
|
121
|
-
return (
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
react_1.default.createElement(ExternalContainer, null,
|
|
125
|
-
react_1.default.createElement(Header_1.default, { actions: actions, filename: filename, extension: extension, size: size, closeAction: $closeAction }),
|
|
126
|
-
react_1.default.createElement(MiddleContainer, { orientation: "horizontal", crossAlignment: "unset", minHeight: 0 },
|
|
127
|
-
onPreviousPreview && (react_1.default.createElement(StyledComponents_1.AbsoluteLeftIconButton, { icon: "ArrowBackOutline", size: "medium", backgroundColor: "gray0", iconColor: "gray6", borderRadius: "round", onClick: onPreviousPreview })),
|
|
128
|
-
react_1.default.createElement(PreviewContainer, { ref: previewRef },
|
|
129
|
-
react_1.default.createElement(Image, { alt: alt !== null && alt !== void 0 ? alt : filename, src: computedSrc, onError: function (error) { return console.error('TODO handle error', error); }, ref: imageRef })),
|
|
130
|
-
onNextPreview && (react_1.default.createElement(StyledComponents_1.AbsoluteRightIconButton, { icon: "ArrowForwardOutline", size: "medium", backgroundColor: "gray0", iconColor: "gray6", borderRadius: "round", onClick: onNextPreview }))))))));
|
|
51
|
+
return (React.createElement(PreviewNavigator, { onPreviousPreview: onPreviousPreview, onNextPreview: onNextPreview, container: container, disablePortal: disablePortal, extension: extension, show: show, filename: filename, actions: actions, size: size, onOverlayClick: onOverlayClick, closeAction: closeAction, onClose: onClose },
|
|
52
|
+
React.createElement("div", { ref: previewRef, className: styles.previewContainer },
|
|
53
|
+
React.createElement("img", { alt: alt !== null && alt !== void 0 ? alt : filename, src: computedSrc, onError: (error) => console.error('TODO handle error', error), ref: imageRef, className: styles.image }))));
|
|
131
54
|
});
|
|
132
|
-
exports.ImagePreview = ImagePreview;
|
|
133
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
|
|
134
55
|
//# sourceMappingURL=ImagePreview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePreview.js","sourceRoot":"","sources":["../../src/preview/ImagePreview.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ImagePreview.js","sourceRoot":"","sources":["../../src/preview/ImagePreview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SPDX-FileCopyrightText: 2024 Zextras <https://www.zextras.com>
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: AGPL-3.0-only
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
.image {
|
|
8
|
+
max-height: 100%;
|
|
9
|
+
max-width: 100%;
|
|
10
|
+
min-height: 0;
|
|
11
|
+
min-width: 0;
|
|
12
|
+
align-self: center;
|
|
13
|
+
filter: drop-shadow(0px 5px 14px rgba(0, 0, 0, 0.35));
|
|
14
|
+
border-radius: 0.25rem;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.previewContainer {
|
|
18
|
+
display: flex;
|
|
19
|
+
max-width: 100%;
|
|
20
|
+
max-height: calc(100vh - 2rem * 2);
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
gap: 0.5rem;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
align-items: center;
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
padding: 2rem 1rem;
|
|
27
|
+
outline: none;
|
|
28
|
+
flex-grow: 1;
|
|
29
|
+
}
|