@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.
Files changed (116) hide show
  1. package/README.md +62 -0
  2. package/THIRDPARTIES +388 -0
  3. package/lib/constants/index.js +2 -5
  4. package/lib/constants/index.js.map +1 -1
  5. package/lib/index.d.ts +9 -6
  6. package/lib/index.js +11 -22
  7. package/lib/index.js.map +1 -1
  8. package/lib/preview/FocusWithin.d.ts +5 -0
  9. package/lib/preview/FocusWithin.js +26 -57
  10. package/lib/preview/FocusWithin.js.map +1 -1
  11. package/lib/preview/FocusWithin.module.css +13 -0
  12. package/lib/preview/Header.d.ts +37 -4
  13. package/lib/preview/Header.js +17 -38
  14. package/lib/preview/Header.js.map +1 -1
  15. package/lib/preview/Header.module.css +37 -0
  16. package/lib/preview/ImagePreview.d.ts +7 -47
  17. package/lib/preview/ImagePreview.js +17 -96
  18. package/lib/preview/ImagePreview.js.map +1 -1
  19. package/lib/preview/ImagePreview.module.css +29 -0
  20. package/lib/preview/Navigator.d.ts +1 -0
  21. package/lib/preview/Navigator.js +7 -21
  22. package/lib/preview/Navigator.js.map +1 -1
  23. package/lib/preview/Navigator.module.css +18 -0
  24. package/lib/preview/PageController.d.ts +8 -0
  25. package/lib/preview/PageController.js +29 -67
  26. package/lib/preview/PageController.js.map +1 -1
  27. package/lib/preview/PageController.module.css +19 -0
  28. package/lib/preview/PdfPreview.d.ts +21 -69
  29. package/lib/preview/PdfPreview.js +79 -161
  30. package/lib/preview/PdfPreview.js.map +1 -1
  31. package/lib/preview/PdfPreview.module.css +46 -0
  32. package/lib/preview/PreviewCriteriaAlternativeContent.d.ts +13 -1
  33. package/lib/preview/PreviewCriteriaAlternativeContent.js +22 -55
  34. package/lib/preview/PreviewCriteriaAlternativeContent.js.map +1 -1
  35. package/lib/preview/PreviewCriteriaAlternativeContent.module.css +15 -0
  36. package/lib/preview/PreviewManager.d.ts +38 -15
  37. package/lib/preview/PreviewManager.js +40 -74
  38. package/lib/preview/PreviewManager.js.map +1 -1
  39. package/lib/preview/PreviewNavigator.d.ts +42 -0
  40. package/lib/preview/PreviewNavigator.js +29 -0
  41. package/lib/preview/PreviewNavigator.js.map +1 -0
  42. package/lib/preview/PreviewNavigator.module.css +43 -0
  43. package/lib/preview/PreviewWrapper.d.ts +14 -8
  44. package/lib/preview/PreviewWrapper.js +12 -24
  45. package/lib/preview/PreviewWrapper.js.map +1 -1
  46. package/lib/preview/ZoomController.d.ts +1 -0
  47. package/lib/preview/ZoomController.js +11 -52
  48. package/lib/preview/ZoomController.js.map +1 -1
  49. package/lib/preview/ZoomController.module.css +18 -0
  50. package/lib/preview/usePageScrollController.js +18 -22
  51. package/lib/preview/usePageScrollController.js.map +1 -1
  52. package/lib/preview/useZoom.js +31 -39
  53. package/lib/preview/useZoom.js.map +1 -1
  54. package/lib/types/utils.d.ts +4 -0
  55. package/lib/types/utils.js +2 -0
  56. package/lib/types/utils.js.map +1 -0
  57. package/lib/utils/utils.js +5 -9
  58. package/lib/utils/utils.js.map +1 -1
  59. package/package.json +55 -44
  60. package/lib/preview/StyledComponents.d.ts +0 -2
  61. package/lib/preview/StyledComponents.js +0 -21
  62. package/lib/preview/StyledComponents.js.map +0 -1
  63. package/lib/utils/type-utils.d.ts +0 -3
  64. package/lib/utils/type-utils.js +0 -3
  65. package/lib/utils/type-utils.js.map +0 -1
  66. package/lib-esm/constants/index.d.ts +0 -2
  67. package/lib-esm/constants/index.js +0 -8
  68. package/lib-esm/constants/index.js.map +0 -1
  69. package/lib-esm/index.d.ts +0 -6
  70. package/lib-esm/index.js +0 -12
  71. package/lib-esm/index.js.map +0 -1
  72. package/lib-esm/preview/FocusWithin.d.ts +0 -7
  73. package/lib-esm/preview/FocusWithin.js +0 -57
  74. package/lib-esm/preview/FocusWithin.js.map +0 -1
  75. package/lib-esm/preview/Header.d.ts +0 -29
  76. package/lib-esm/preview/Header.js +0 -39
  77. package/lib-esm/preview/Header.js.map +0 -1
  78. package/lib-esm/preview/ImagePreview.d.ts +0 -50
  79. package/lib-esm/preview/ImagePreview.js +0 -105
  80. package/lib-esm/preview/ImagePreview.js.map +0 -1
  81. package/lib-esm/preview/Navigator.d.ts +0 -5
  82. package/lib-esm/preview/Navigator.js +0 -21
  83. package/lib-esm/preview/Navigator.js.map +0 -1
  84. package/lib-esm/preview/PageController.d.ts +0 -8
  85. package/lib-esm/preview/PageController.js +0 -82
  86. package/lib-esm/preview/PageController.js.map +0 -1
  87. package/lib-esm/preview/PdfPreview.d.ts +0 -89
  88. package/lib-esm/preview/PdfPreview.js +0 -280
  89. package/lib-esm/preview/PdfPreview.js.map +0 -1
  90. package/lib-esm/preview/PreviewCriteriaAlternativeContent.d.ts +0 -13
  91. package/lib-esm/preview/PreviewCriteriaAlternativeContent.js +0 -42
  92. package/lib-esm/preview/PreviewCriteriaAlternativeContent.js.map +0 -1
  93. package/lib-esm/preview/PreviewManager.d.ts +0 -19
  94. package/lib-esm/preview/PreviewManager.js +0 -108
  95. package/lib-esm/preview/PreviewManager.js.map +0 -1
  96. package/lib-esm/preview/PreviewWrapper.d.ts +0 -9
  97. package/lib-esm/preview/PreviewWrapper.js +0 -36
  98. package/lib-esm/preview/PreviewWrapper.js.map +0 -1
  99. package/lib-esm/preview/StyledComponents.d.ts +0 -2
  100. package/lib-esm/preview/StyledComponents.js +0 -15
  101. package/lib-esm/preview/StyledComponents.js.map +0 -1
  102. package/lib-esm/preview/ZoomController.d.ts +0 -17
  103. package/lib-esm/preview/ZoomController.js +0 -28
  104. package/lib-esm/preview/ZoomController.js.map +0 -1
  105. package/lib-esm/preview/usePageScrollController.d.ts +0 -4
  106. package/lib-esm/preview/usePageScrollController.js +0 -67
  107. package/lib-esm/preview/usePageScrollController.js.map +0 -1
  108. package/lib-esm/preview/useZoom.d.ts +0 -13
  109. package/lib-esm/preview/useZoom.js +0 -78
  110. package/lib-esm/preview/useZoom.js.map +0 -1
  111. package/lib-esm/utils/type-utils.d.ts +0 -3
  112. package/lib-esm/utils/type-utils.js +0 -2
  113. package/lib-esm/utils/type-utils.js.map +0 -1
  114. package/lib-esm/utils/utils.d.ts +0 -1
  115. package/lib-esm/utils/utils.js +0 -18
  116. 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
- var react_1 = __importStar(require("react"));
40
- var last_1 = __importDefault(require("lodash/last"));
41
- var styled_components_1 = __importDefault(require("styled-components"));
42
- var FocusContainer = styled_components_1.default.span(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\toutline: none;\n\t& > * {\n\t\toutline: none;\n\t}\n"], ["\n\toutline: none;\n\t& > * {\n\t\toutline: none;\n\t}\n"])));
43
- var FocusWithin = function (_a) {
44
- var children = _a.children, _b = _a.returnFocus, returnFocus = _b === void 0 ? true : _b;
45
- var contentRef = (0, react_1.useRef)(null);
46
- var startSentinelRef = (0, react_1.useRef)(null);
47
- var endSentinelRef = (0, react_1.useRef)(null);
48
- var onStartSentinelFocus = (0, react_1.useCallback)(function () {
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
- var node = (0, last_1.default)(contentRef.current.querySelectorAll('[tabindex]'));
20
+ const node = last(contentRef.current.querySelectorAll('[tabindex]'));
51
21
  node === null || node === void 0 ? void 0 : node.focus();
52
22
  }
53
23
  }, []);
54
- var onEndSentinelFocus = (0, react_1.useCallback)(function () {
24
+ const onEndSentinelFocus = useCallback(() => {
55
25
  if (contentRef.current) {
56
- var node = contentRef.current.querySelector('[tabindex]');
26
+ const node = contentRef.current.querySelector('[tabindex]');
57
27
  node === null || node === void 0 ? void 0 : node.focus();
58
28
  }
59
29
  }, []);
60
- (0, react_1.useEffect)(function () {
30
+ useEffect(() => {
61
31
  var _a, _b, _c, _d, _e;
62
- var documentElement = (_b = (_a = window.top) === null || _a === void 0 ? void 0 : _a.document) !== null && _b !== void 0 ? _b : document;
63
- var focusedElement = documentElement.activeElement;
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
- var startSentinelRefSave = startSentinelRef.current;
68
- var endSentinelRefSave = endSentinelRef.current;
69
- return function () {
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 (react_1.default.createElement(FocusContainer, null,
79
- react_1.default.createElement("span", { tabIndex: 0, ref: startSentinelRef }),
80
- react_1.default.createElement("div", { tabIndex: -1, ref: contentRef }, children),
81
- react_1.default.createElement("span", { tabIndex: 0, ref: endSentinelRef })));
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
- exports.default = FocusWithin;
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAAwD;AACxD;;;;GAIG;AACH,6CAA8D;AAE9D,qDAA+B;AAC/B,wEAAuC;AAEvC,IAAM,cAAc,GAAG,2BAAM,CAAC,IAAI,6HAAA,0DAKjC,IAAA,CAAC;AAOF,IAAM,WAAW,GAAG,UAAC,EAAqD;QAAnD,QAAQ,cAAA,EAAE,mBAAkB,EAAlB,WAAW,mBAAG,IAAI,KAAA;IAClD,IAAM,UAAU,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IACvD,IAAM,gBAAgB,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAC7D,IAAM,cAAc,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAE3D,IAAM,oBAAoB,GAAG,IAAA,mBAAW,EAAC;QACxC,IAAI,UAAU,CAAC,OAAO,EAAE;YACvB,IAAM,IAAI,GAAG,IAAA,cAAI,EAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAc,YAAY,CAAC,CAAC,CAAC;YAClF,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAC;SACd;IACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC;QACtC,IAAI,UAAU,CAAC,OAAO,EAAE;YACvB,IAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAc,YAAY,CAAC,CAAC;YACzE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAC;SACd;IACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC;;QACT,IAAM,eAAe,GAAG,MAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,QAAQ,mCAAI,QAAQ,CAAC;QACzD,IAAM,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,IAAM,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;QACtD,IAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC;QAElD,OAAO;YACN,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;gBAClC,cAAc,CAAC,KAAK,EAAE,CAAC;aACvB;QACF,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5D,OAAO,CACN,8BAAC,cAAc;QACd,wCAAM,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAI;QAC5C,uCAAK,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,IAChC,QAAQ,CACJ;QACN,wCAAM,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,GAAI,CAC1B,CACjB,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
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"}
@@ -0,0 +1,13 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2024 Zextras <https://www.zextras.com>
3
+ *
4
+ * SPDX-License-Identifier: AGPL-3.0-only
5
+ */
6
+
7
+ .focusContainer {
8
+ outline: none;
9
+ }
10
+
11
+ .focusContainer > * {
12
+ outline: none;
13
+ }
@@ -1,22 +1,54 @@
1
1
  import React from 'react';
2
- import { Tooltip } from '@zextras/carbonio-design-system';
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: string;
9
+ icon: keyof Theme['icons'];
10
10
  /** Label to show as tooltip for the action */
11
11
  tooltipLabel?: string;
12
- tooltipPlacement?: React.ComponentPropsWithRef<typeof Tooltip>['placement'];
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
- /** Actions for the preview */
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;
@@ -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
- var react_1 = __importDefault(require("react"));
16
- var carbonio_design_system_1 = require("@zextras/carbonio-design-system");
17
- var map_1 = __importDefault(require("lodash/map"));
18
- var styled_components_1 = __importDefault(require("styled-components"));
19
- var HeaderContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tpadding: 1rem;\n"], ["\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tpadding: 1rem;\n"])));
20
- var LeftContainer = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n\tgap: 0.5rem;\n"], ["\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n\tgap: 0.5rem;\n"])));
21
- var RightContainer = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tgap: 0.5rem;\n"], ["\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tgap: 0.5rem;\n"])));
22
- var InfoContainer = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\twidth: fit-content;\n\t& div {\n\t\tline-height: 1.5;\n\t}\n"], ["\n\twidth: fit-content;\n\t& div {\n\t\tline-height: 1.5;\n\t}\n"])));
23
- var UpperCaseText = (0, styled_components_1.default)(carbonio_design_system_1.Text)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n\ttext-transform: uppercase;\n"], ["\n\ttext-transform: uppercase;\n"])));
24
- var Header = function (_a) {
25
- var closeAction = _a.closeAction, actions = _a.actions, filename = _a.filename, extension = _a.extension, size = _a.size;
26
- return (react_1.default.createElement(HeaderContainer, null,
27
- react_1.default.createElement(LeftContainer, null,
28
- closeAction && (react_1.default.createElement(carbonio_design_system_1.Tooltip, { label: closeAction.tooltipLabel, disabled: !closeAction.tooltipLabel, key: closeAction.id, placement: closeAction.tooltipPlacement },
29
- react_1.default.createElement(carbonio_design_system_1.IconButton, { onClick: closeAction.onClick, icon: closeAction.icon, size: "medium", backgroundColor: "transparent", iconColor: "gray6" }))),
30
- react_1.default.createElement(InfoContainer, null,
31
- react_1.default.createElement(carbonio_design_system_1.Text, { size: "small", color: "gray6" }, filename),
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":";;;;;;;;;AAAA;;;;GAIG;AACH,gDAA0B;AAE1B,0EAA4E;AAC5E,mDAA6B;AAC7B,wEAAuC;AAEvC,IAAM,eAAe,GAAG,2BAAM,CAAC,GAAG,8IAAA,2EAIjC,IAAA,CAAC;AAEF,IAAM,aAAa,GAAG,2BAAM,CAAC,GAAG,iKAAA,8FAK/B,IAAA,CAAC;AAEF,IAAM,cAAc,GAAG,2BAAM,CAAC,GAAG,+JAAA,4FAKhC,IAAA,CAAC;AAEF,IAAM,aAAa,GAAG,2BAAM,CAAC,GAAG,qIAAA,kEAK/B,IAAA,CAAC;AAEF,IAAM,aAAa,GAAG,IAAA,2BAAM,EAAC,6BAAI,CAAC,qGAAA,kCAEjC,IAAA,CAAC;AA6BF,IAAM,MAAM,GAA2B,UAAC,EAAmD;QAAjD,WAAW,iBAAA,EAAE,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,IAAI,UAAA;IAAO,OAAA,CAC/F,8BAAC,eAAe;QACf,8BAAC,aAAa;YACZ,WAAW,IAAI,CACf,8BAAC,gCAAO,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;gBAEvC,8BAAC,mCAAU,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;YACD,8BAAC,aAAa;gBACb,8BAAC,6BAAI,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,IAC9B,QAAQ,CACH;gBACP,8BAAC,aAAa,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO;oBACvC,SAAS;oBACT,SAAS,IAAI,IAAI,IAAI,yEAAe;oBACpC,IAAI,CACU,CACD,CACD;QAChB,8BAAC,cAAc,QACb,IAAA,aAAG,EAAC,OAAO,EAAE,UAAC,EAA+D;gBAA7D,EAAE,QAAA,EAAE,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAA,EAAE,YAAY,kBAAA,EAAE,gBAAgB,sBAAA;YAAO,OAAA,CAClF,8BAAC,gCAAO,IACP,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,YAAY,EACvB,GAAG,EAAE,EAAE,EACP,SAAS,EAAE,gBAAgB;gBAE3B,8BAAC,mCAAU,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;QAhBkF,CAgBlF,CAAC,CACc,CACA,CAClB;AAlD+F,CAkD/F,CAAC;AAEF,kBAAe,MAAM,CAAC"}
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 { HeaderAction, HeaderProps } from './Header';
3
- import { type MakeOptional } from '../utils/type-utils';
4
- type ImagePreviewProps = Partial<Omit<HeaderProps, 'closeAction'>> & {
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
- /** Callback to hide the preview */
19
- onClose: (e: React.SyntheticEvent | KeyboardEvent) => void;
20
- /** Alternative text for image */
6
+ /** Alternative text for the image */
21
7
  alt?: string;
22
- /** Callback */
23
- onNextPreview?: (e: React.SyntheticEvent | KeyboardEvent) => void;
24
- /** Callback */
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
- var react_1 = __importStar(require("react"));
51
- var carbonio_design_system_1 = require("@zextras/carbonio-design-system");
52
- var styled_components_1 = __importDefault(require("styled-components"));
53
- var FocusWithin_1 = __importDefault(require("./FocusWithin"));
54
- var Header_1 = __importDefault(require("./Header"));
55
- var StyledComponents_1 = require("./StyledComponents");
56
- var Overlay = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\theight: 100vh;\n\tmax-height: 100vh;\n\twidth: 100%;\n\tmax-width: 100%;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tbackground-color: rgba(0, 0, 0, 0.8);\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tz-index: 1003;\n"], ["\n\theight: 100vh;\n\tmax-height: 100vh;\n\twidth: 100%;\n\tmax-width: 100%;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tbackground-color: rgba(0, 0, 0, 0.8);\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tz-index: 1003;\n"])));
57
- var ExternalContainer = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\theight: 100vh;\n\tmax-height: 100vh;\n\twidth: 100vw;\n\tmax-width: 100vw;\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n"], ["\n\theight: 100vh;\n\tmax-height: 100vh;\n\twidth: 100vw;\n\tmax-width: 100vw;\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n"])));
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
- var previewRef = (0, carbonio_design_system_1.useCombinedRefs)(ref);
86
- var imageRef = (0, react_1.useRef)(null);
87
- var $closeAction = (0, react_1.useMemo)(function () {
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
- (0, react_1.useEffect)(function () {
34
+ useEffect(() => {
105
35
  if (show) {
106
36
  document.addEventListener('keydown', eventListener);
107
37
  }
108
- return function () {
38
+ return () => {
109
39
  document.removeEventListener('keydown', eventListener);
110
40
  };
111
41
  }, [eventListener, show]);
112
- var onOverlayClick = (0, react_1.useCallback)(function (event) {
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 (react_1.default.createElement(carbonio_design_system_1.Portal, { show: show, disablePortal: disablePortal, container: container },
122
- react_1.default.createElement(Overlay, { onClick: onOverlayClick },
123
- react_1.default.createElement(FocusWithin_1.default, null,
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":"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"}
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
+ }
@@ -2,4 +2,5 @@ import React from 'react';
2
2
  export interface NavigatorProps {
3
3
  children: React.ReactElement | React.ReactElement[];
4
4
  }
5
+ /** Container for the current preview actions (zoom, page) */
5
6
  export declare const Navigator: ({ children }: NavigatorProps) => React.JSX.Element;