@edifice.io/react 2.5.5-develop-pedago.20260115154750 → 2.5.5-develop-b2school.20260116084726
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/components/Badge/Badge.d.ts +4 -7
- package/dist/components/Badge/Badge.js +11 -14
- package/dist/components/DatePicker/DatePicker.d.ts +57 -0
- package/dist/components/DatePicker/DatePicker.js +6 -3
- package/dist/components/index.d.ts +0 -1
- package/dist/hooks/useDropzone/useDropzone.js +21 -16
- package/dist/hooks/useEdificeIcons/useEdificeIcons.d.ts +0 -1
- package/dist/hooks/useEdificeIcons/useEdificeIcons.js +0 -5
- package/dist/index.js +154 -156
- package/dist/utilities/mime-types/index.d.ts +1 -0
- package/dist/utilities/mime-types/mime-types-utils.d.ts +1 -0
- package/dist/utilities/mime-types/mime-types-utils.js +4 -0
- package/package.json +6 -7
- package/dist/components/MediaViewer/MediaViewer.d.ts +0 -17
- package/dist/components/MediaViewer/MediaViewer.js +0 -36
- package/dist/components/MediaViewer/MediaWrapper.d.ts +0 -7
- package/dist/components/MediaViewer/MediaWrapper.js +0 -72
- package/dist/components/MediaViewer/PdfViewer.d.ts +0 -4
- package/dist/components/MediaViewer/PdfViewer.js +0 -26
- package/dist/components/MediaViewer/ToolbarViewer.d.ts +0 -7
- package/dist/components/MediaViewer/ToolbarViewer.js +0 -41
- package/dist/components/MediaViewer/ToolbarZoom.d.ts +0 -4
- package/dist/components/MediaViewer/ToolbarZoom.js +0 -19
- package/dist/components/MediaViewer/index.d.ts +0 -2
- package/dist/components/SmartEllipsis/SmartEllipsis.d.ts +0 -5
- package/dist/components/SmartEllipsis/SmartEllipsis.js +0 -21
- package/dist/components/SmartEllipsis/index.d.ts +0 -2
- package/dist/hooks/useZoom/index.d.ts +0 -1
- package/dist/hooks/useZoom/useZoom.d.ts +0 -7
- package/dist/hooks/useZoom/useZoom.js +0 -14
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { UserProfile } from '@edifice.io/client';
|
|
3
3
|
export type BadgeRef = HTMLSpanElement;
|
|
4
4
|
/** Badge variant : notification */
|
|
5
5
|
export type NotificationBadgeVariant = {
|
|
@@ -29,15 +29,12 @@ export type LinkBadgeVariant = {
|
|
|
29
29
|
/**
|
|
30
30
|
* Badge variant : beta.
|
|
31
31
|
* Beta Badge is used to indicate that a feature is in beta phase.
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* Example:
|
|
35
|
-
* <Badge variant={{ type: 'beta', app: myApp }} />
|
|
36
|
-
* where myApp is of type IWebApp.
|
|
32
|
+
* The color prop allows to customize the badge color to match the app color.
|
|
33
|
+
* Defaults to black if not provided.
|
|
37
34
|
*/
|
|
38
35
|
export type BetaBadgeVariant = {
|
|
39
36
|
type: 'beta';
|
|
40
|
-
|
|
37
|
+
color?: string;
|
|
41
38
|
};
|
|
42
39
|
export type BadgeVariants = NotificationBadgeVariant | ContentBadgeVariant | ProfileBadgeVariant | ChipBadgeVariant | LinkBadgeVariant | BetaBadgeVariant;
|
|
43
40
|
export interface BadgeProps extends React.ComponentPropsWithRef<'span'> {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import clsx from "clsx";
|
|
4
|
-
import useEdificeIcons from "../../hooks/useEdificeIcons/useEdificeIcons.js";
|
|
5
4
|
const Badge = /* @__PURE__ */ forwardRef(({
|
|
6
5
|
className,
|
|
7
6
|
variant = {
|
|
@@ -11,19 +10,17 @@ const Badge = /* @__PURE__ */ forwardRef(({
|
|
|
11
10
|
children,
|
|
12
11
|
...restProps
|
|
13
12
|
}, ref) => {
|
|
14
|
-
const {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const classes = clsx("badge rounded-pill", (variant.type === "content" || variant.type === "user") && "background" in variant ? "bg-gray-200" : (variant.type === "content" || variant.type === "user") && !("background" in variant) ? "border border-0" : "", variant.type === "content" && `text-${variant.level}`, variant.type === "notification" && `badge-notification bg-${variant.level} text-light border border-0`, variant.type === "user" && `badge-profile-${variant.profile.toLowerCase()}`, variant.type === "link" && "badge-link border border-0", variant.type === "chip" && "bg-gray-200", variant.type === "beta" && badgeColorClassName, className);
|
|
26
|
-
return /* @__PURE__ */ jsxs("span", { ref, className: classes, ...restProps, children: [
|
|
13
|
+
const classes = clsx("badge rounded-pill", (variant.type === "content" || variant.type === "user") && "background" in variant ? "bg-gray-200" : (variant.type === "content" || variant.type === "user") && !("background" in variant) ? "border border-0" : "", variant.type === "content" && `text-${variant.level}`, variant.type === "notification" && `badge-notification bg-${variant.level} text-light border border-0`, variant.type === "user" && `badge-profile-${variant.profile.toLowerCase()}`, variant.type === "link" && "badge-link border border-0", variant.type === "chip" && "bg-gray-200", className);
|
|
14
|
+
return /* @__PURE__ */ jsxs("span", { ref, className: classes, style: (() => {
|
|
15
|
+
if (variant.type !== "beta") return;
|
|
16
|
+
const color = variant.color ?? "#000000";
|
|
17
|
+
return {
|
|
18
|
+
borderColor: color,
|
|
19
|
+
color,
|
|
20
|
+
backgroundColor: `${color}10`
|
|
21
|
+
// the 2 last hexadecimal numbers are for opacity
|
|
22
|
+
};
|
|
23
|
+
})(), ...restProps, children: [
|
|
27
24
|
variant.type === "chip" && /* @__PURE__ */ jsx("div", { className: "d-flex fw-800 align-items-center", children }),
|
|
28
25
|
variant.type === "beta" && (children ?? "BÊTA"),
|
|
29
26
|
variant.type !== "chip" && variant.type !== "beta" && children
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DatePicker component props
|
|
3
|
+
*
|
|
4
|
+
* Minimal interface that only exposes what is necessary.
|
|
5
|
+
* Ant Design implementation is hidden and no Ant Design-specific props are exposed.
|
|
6
|
+
* Standard HTML div attributes are supported (passed through to the underlying DOM element).
|
|
7
|
+
*/
|
|
8
|
+
export interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange' | 'value' | 'defaultValue'> {
|
|
9
|
+
/**
|
|
10
|
+
* Selected date values
|
|
11
|
+
* @default today's date is setted by ant design if no value is provided
|
|
12
|
+
*/
|
|
13
|
+
value?: Date;
|
|
14
|
+
/**
|
|
15
|
+
* Callback called when date changes
|
|
16
|
+
*/
|
|
17
|
+
onChange?: (date?: Date) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Date format to display in the picker
|
|
20
|
+
* @default 'DD / MM / YYYY'
|
|
21
|
+
*/
|
|
22
|
+
dateFormat?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Minimum selectable date
|
|
25
|
+
*/
|
|
26
|
+
minDate?: Date;
|
|
27
|
+
/**
|
|
28
|
+
* Maximum selectable date
|
|
29
|
+
*/
|
|
30
|
+
maxDate?: Date;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Type for DatePicker ref
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* DatePicker component
|
|
37
|
+
*
|
|
38
|
+
* Date picker component for selecting a date.
|
|
39
|
+
*
|
|
40
|
+
* **Note:** This component uses Ant Design's DatePicker component internally.
|
|
41
|
+
* Only the props defined in DatePickerProps are allowed to prevent
|
|
42
|
+
* dependency on Ant Design-specific features. To replace the implementation,
|
|
43
|
+
* modify the component body below.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* <DatePicker
|
|
48
|
+
* value={date}
|
|
49
|
+
* onChange={(date) => setDate(date)}
|
|
50
|
+
* dateFormat="YYYY-MM-DD"
|
|
51
|
+
* minDate={new Date(today.setDate(today.getDate() - 2))}
|
|
52
|
+
* maxDate={new Date(today.setDate(today.getDate() + 3))}
|
|
53
|
+
* />
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
declare const DatePicker: import('react').ForwardRefExoticComponent<DatePickerProps & import('react').RefAttributes<HTMLElement>>;
|
|
57
|
+
export default DatePicker;
|
|
@@ -16,7 +16,8 @@ const DatePicker = /* @__PURE__ */ forwardRef(({
|
|
|
16
16
|
onChange,
|
|
17
17
|
dateFormat = "DD / MM / YYYY",
|
|
18
18
|
minDate,
|
|
19
|
-
maxDate
|
|
19
|
+
maxDate,
|
|
20
|
+
...htmlProps
|
|
20
21
|
}, ref) => {
|
|
21
22
|
const handleChange = (date) => {
|
|
22
23
|
onChange == null || onChange(date ? date.toDate() : void 0);
|
|
@@ -26,9 +27,11 @@ const DatePicker = /* @__PURE__ */ forwardRef(({
|
|
|
26
27
|
format: dateFormat,
|
|
27
28
|
minDate: minDate ? dayjs(minDate) : void 0,
|
|
28
29
|
maxDate: maxDate ? dayjs(maxDate) : void 0,
|
|
29
|
-
ref
|
|
30
|
+
ref,
|
|
31
|
+
// Cast necessary because AntDatePicker expects a specific type, but our API exposes only HTMLElement to avoid dependency on Ant Design-specific features.
|
|
32
|
+
...htmlProps
|
|
30
33
|
};
|
|
31
|
-
return /* @__PURE__ */ jsx(DatePicker$1, { ...antProps });
|
|
34
|
+
return /* @__PURE__ */ jsx(DatePicker$1, { ...antProps, getPopupContainer: (triggerNode) => triggerNode.parentElement || document.body });
|
|
32
35
|
});
|
|
33
36
|
export {
|
|
34
37
|
DatePicker as default
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState, useRef } from "react";
|
|
2
|
-
import
|
|
2
|
+
import { HEIC_MIME_TYPES } from "../../utilities/mime-types/mime-types-utils.js";
|
|
3
3
|
const useDropzone = (props) => {
|
|
4
4
|
const [dragging, setDragging] = useState(!1), [files, setFiles] = useState([]), inputRef = useRef(null), addFile = (file) => {
|
|
5
5
|
addFiles([file]);
|
|
@@ -32,21 +32,26 @@ const useDropzone = (props) => {
|
|
|
32
32
|
})
|
|
33
33
|
));
|
|
34
34
|
filesToAdd.reverse(), props != null && props.forceFilters ? (filesToAdd = applyInputFiltersOn(filesToAdd), filesToAdd && filesToAdd.length && setFiles((prevFiles) => [...prevFiles, ...filesToAdd])) : setFiles((prevFiles) => [...prevFiles, ...files2]);
|
|
35
|
-
}, convertHEICImages = async (files2) =>
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
35
|
+
}, convertHEICImages = async (files2) => {
|
|
36
|
+
if (files2 === null || files2.length === 0)
|
|
37
|
+
return [];
|
|
38
|
+
let heic2any;
|
|
39
|
+
return files2.some((file) => HEIC_MIME_TYPES.includes(file.type)) && (heic2any = (await import("heic2any")).default), Promise.all(files2.map(async (file) => {
|
|
40
|
+
if (HEIC_MIME_TYPES.includes(file.type) && heic2any)
|
|
41
|
+
try {
|
|
42
|
+
const converted = await heic2any({
|
|
43
|
+
blob: file,
|
|
44
|
+
toType: "image/jpeg"
|
|
45
|
+
});
|
|
46
|
+
return new File([converted], file.name.replace(/\.(heic|heif)$/i, ".jpeg"), {
|
|
47
|
+
type: "image/jpeg"
|
|
48
|
+
});
|
|
49
|
+
} catch (error) {
|
|
50
|
+
return console.error(`Failed to convert HEIC image: ${file.name}`, error), file;
|
|
51
|
+
}
|
|
52
|
+
return file;
|
|
53
|
+
}));
|
|
54
|
+
}, cleanFiles = () => {
|
|
50
55
|
setFiles([]);
|
|
51
56
|
}, handleOnChange = (event) => {
|
|
52
57
|
const files2 = event.target.files;
|
|
@@ -3,7 +3,6 @@ export default function useEdificeIcons(): {
|
|
|
3
3
|
getIconClass: (app: IWebApp | string) => string;
|
|
4
4
|
getBackgroundIconClass: (app: IWebApp | string) => string;
|
|
5
5
|
getBackgroundLightIconClass: (app: IWebApp | string) => string;
|
|
6
|
-
getBorderIconClass: (app: IWebApp | string) => string;
|
|
7
6
|
getIconCode: (app: IWebApp | string | undefined) => string;
|
|
8
7
|
getWidgetIconClass: (widget: IWidget) => string;
|
|
9
8
|
isIconUrl: (icon: string) => string | boolean;
|
|
@@ -78,10 +78,6 @@ function useEdificeIcons() {
|
|
|
78
78
|
const appCode = getIconCode(app);
|
|
79
79
|
return appCode ? `bg-light-${appCode}` : "bg-light-placeholder";
|
|
80
80
|
}
|
|
81
|
-
function getBorderIconClass(app) {
|
|
82
|
-
const appCode = getIconCode(app);
|
|
83
|
-
return appCode ? `border-app-${appCode}` : "border-app-placeholder";
|
|
84
|
-
}
|
|
85
81
|
function getWidgetIconClass(widget) {
|
|
86
82
|
return iconOfWidget[widget.platformConf.name];
|
|
87
83
|
}
|
|
@@ -89,7 +85,6 @@ function useEdificeIcons() {
|
|
|
89
85
|
getIconClass,
|
|
90
86
|
getBackgroundIconClass,
|
|
91
87
|
getBackgroundLightIconClass,
|
|
92
|
-
getBorderIconClass,
|
|
93
88
|
getIconCode,
|
|
94
89
|
getWidgetIconClass,
|
|
95
90
|
isIconUrl
|
package/dist/index.js
CHANGED
|
@@ -30,86 +30,85 @@ import { default as default30 } from "./components/Label/Label.js";
|
|
|
30
30
|
import { default as default31 } from "./components/Loading/Loading.js";
|
|
31
31
|
import { default as default32 } from "./components/LoadingScreen/LoadingScreen.js";
|
|
32
32
|
import { default as default33 } from "./components/Logo/Logo.js";
|
|
33
|
-
import { default as default34 } from "./components/
|
|
34
|
-
import { default as default35 } from "./components/
|
|
35
|
-
import { default as default36 } from "./components/
|
|
36
|
-
import { default as default37 } from "./components/
|
|
37
|
-
import { default as default38 } from "./components/
|
|
38
|
-
import { default as default39 } from "./components/
|
|
39
|
-
import { default as default40 } from "./components/
|
|
40
|
-
import { default as default41 } from "./components/
|
|
41
|
-
import { default as default42 } from "./components/Skeleton/
|
|
42
|
-
import { default as default43 } from "./components/
|
|
43
|
-
import { default as default44 } from "./components/
|
|
44
|
-
import { default as default45 } from "./components/
|
|
45
|
-
import { default as default46 } from "./components/
|
|
46
|
-
import { default as default47 } from "./components/
|
|
47
|
-
import { default as default48 } from "./components/
|
|
48
|
-
import { default as default49 } from "./components/Tooltip/Tooltip.js";
|
|
33
|
+
import { default as default34 } from "./components/Modal/Modal.js";
|
|
34
|
+
import { default as default35 } from "./components/PreventPropagation/PreventPropagation.js";
|
|
35
|
+
import { default as default36 } from "./components/Radio/Radio.js";
|
|
36
|
+
import { default as default37 } from "./components/RadioCard/RadioCard.js";
|
|
37
|
+
import { default as default38 } from "./components/SearchBar/SearchBar.js";
|
|
38
|
+
import { default as default39 } from "./components/SegmentedControl/SegmentedControl.js";
|
|
39
|
+
import { default as default40 } from "./components/Select/Select.js";
|
|
40
|
+
import { default as default41 } from "./components/Skeleton/ButtonSkeleton.js";
|
|
41
|
+
import { default as default42 } from "./components/Skeleton/TextSkeleton.js";
|
|
42
|
+
import { default as default43 } from "./components/StackedGroup/StackedGroup.js";
|
|
43
|
+
import { default as default44 } from "./components/Stepper/Stepper.js";
|
|
44
|
+
import { default as default45 } from "./components/Switch/Switch.js";
|
|
45
|
+
import { default as default46 } from "./components/Table/components/Table.js";
|
|
46
|
+
import { default as default47 } from "./components/TextArea/TextArea.js";
|
|
47
|
+
import { default as default48 } from "./components/Tooltip/Tooltip.js";
|
|
49
48
|
import { DndTree } from "./components/Tree/components/DndTree.js";
|
|
50
|
-
import { default as
|
|
51
|
-
import { default as
|
|
52
|
-
import { default as
|
|
53
|
-
import { default as
|
|
54
|
-
import { default as
|
|
55
|
-
import { default as
|
|
56
|
-
import { default as
|
|
57
|
-
import { default as
|
|
58
|
-
import { default as
|
|
59
|
-
import { default as
|
|
60
|
-
import { default as
|
|
61
|
-
import { default as
|
|
62
|
-
import { default as
|
|
63
|
-
import { default as
|
|
64
|
-
import { default as
|
|
65
|
-
import { default as
|
|
66
|
-
import { default as
|
|
67
|
-
import { default as
|
|
49
|
+
import { default as default49 } from "./components/Tree/components/SortableTree.js";
|
|
50
|
+
import { default as default50 } from "./components/Tree/components/Tree.js";
|
|
51
|
+
import { default as default51 } from "./components/TreeView/TreeView.js";
|
|
52
|
+
import { default as default52 } from "./components/VisuallyHidden/VisuallyHidden.js";
|
|
53
|
+
import { default as default53 } from "./hooks/useBookmark/useBookmark.js";
|
|
54
|
+
import { default as default54 } from "./hooks/useBreakpoint/useBreakpoint.js";
|
|
55
|
+
import { default as default55 } from "./hooks/useBrowserInfo/useBrowserInfo.js";
|
|
56
|
+
import { default as default56 } from "./hooks/useCantoo/useCantoo.js";
|
|
57
|
+
import { default as default57 } from "./hooks/useClickOutside/useClickOutside.js";
|
|
58
|
+
import { default as default58 } from "./hooks/useConversation/useConversation.js";
|
|
59
|
+
import { default as default59 } from "./hooks/useDate/useDate.js";
|
|
60
|
+
import { default as default60 } from "./hooks/useDebounce/useDebounce.js";
|
|
61
|
+
import { default as default61 } from "./hooks/useDirectory/useDirectory.js";
|
|
62
|
+
import { default as default62 } from "./hooks/useDropdown/useDropdown.js";
|
|
63
|
+
import { default as default63 } from "./hooks/useDropzone/useDropzone.js";
|
|
64
|
+
import { default as default64 } from "./hooks/useEdificeIcons/useEdificeIcons.js";
|
|
65
|
+
import { default as default65 } from "./hooks/useHasWorkflow/useHasWorkflow.js";
|
|
66
|
+
import { default as default66 } from "./hooks/useHover/useHover.js";
|
|
68
67
|
import { useHttpErrorToast } from "./hooks/useHttpErrorToast/useHttpErrorToast.js";
|
|
69
|
-
import { default as
|
|
70
|
-
import { default as
|
|
71
|
-
import { default as
|
|
72
|
-
import { default as
|
|
73
|
-
import { default as
|
|
74
|
-
import { default as
|
|
75
|
-
import { default as
|
|
76
|
-
import { default as
|
|
77
|
-
import { default as
|
|
78
|
-
import { default as
|
|
79
|
-
import { default as
|
|
80
|
-
import { default as
|
|
81
|
-
import { default as
|
|
82
|
-
import { default as
|
|
83
|
-
import { default as
|
|
84
|
-
import { default as
|
|
85
|
-
import { default as
|
|
86
|
-
import { default as
|
|
87
|
-
import { default as
|
|
88
|
-
import { WORKSPACE_SHARED_FOLDER_ID, WORKSPACE_USER_FOLDER_ID, default as
|
|
89
|
-
import { default as
|
|
90
|
-
import { default as
|
|
91
|
-
import { default as
|
|
92
|
-
import { default as
|
|
93
|
-
import { default as
|
|
94
|
-
import { default as
|
|
95
|
-
import { default as
|
|
96
|
-
import { default as
|
|
97
|
-
import { default as
|
|
98
|
-
import { default as
|
|
99
|
-
import { default as
|
|
100
|
-
import { default as
|
|
101
|
-
import { default as
|
|
102
|
-
import { default as
|
|
103
|
-
import { default as
|
|
104
|
-
import { default as
|
|
105
|
-
import { default as
|
|
106
|
-
import { default as
|
|
107
|
-
import { default as
|
|
108
|
-
import { default as
|
|
109
|
-
import { default as
|
|
110
|
-
import { default as
|
|
111
|
-
import { default as
|
|
112
|
-
import { default as
|
|
68
|
+
import { default as default67 } from "./hooks/useImage/useImage.js";
|
|
69
|
+
import { default as default68 } from "./hooks/useInfiniteScroll/useInfiniteScroll.js";
|
|
70
|
+
import { default as default69 } from "./hooks/useIsAdml/useIsAdml.js";
|
|
71
|
+
import { default as default70 } from "./hooks/useIsAdmc/useIsAdmc.js";
|
|
72
|
+
import { default as default71 } from "./hooks/useIsAdmlcOrAdmc/useIsAdmlcOrAdmc.js";
|
|
73
|
+
import { default as default72 } from "./hooks/useKeyPress/useKeyPress.js";
|
|
74
|
+
import { default as default73 } from "./hooks/useLibraryUrl/useLibraryUrl.js";
|
|
75
|
+
import { default as default74 } from "./hooks/useMediaLibrary/useMediaLibrary.js";
|
|
76
|
+
import { default as default75 } from "./hooks/useScrollToTop/useScrollToTop.js";
|
|
77
|
+
import { default as default76 } from "./hooks/useTitle/useTitle.js";
|
|
78
|
+
import { default as default77 } from "./hooks/useToast/useToast.js";
|
|
79
|
+
import { default as default78 } from "./hooks/useToggle/useToggle.js";
|
|
80
|
+
import { default as default79 } from "./hooks/useTrapFocus/useTrapFocus.js";
|
|
81
|
+
import { default as default80 } from "./hooks/useTrashedResource/useTrashedResource.js";
|
|
82
|
+
import { default as default81 } from "./hooks/useUpload/useUpload.js";
|
|
83
|
+
import { default as default82 } from "./hooks/useUploadFiles/useUploadFiles.js";
|
|
84
|
+
import { default as default83 } from "./hooks/useUser/useUser.js";
|
|
85
|
+
import { default as default84 } from "./hooks/useWorkspaceFile/useWorkspaceFile.js";
|
|
86
|
+
import { default as default85 } from "./hooks/useWorkspaceFolders/useWorkspaceFolders.js";
|
|
87
|
+
import { WORKSPACE_SHARED_FOLDER_ID, WORKSPACE_USER_FOLDER_ID, default as default86 } from "./hooks/useWorkspaceFolders/useWorkspaceFoldersTree.js";
|
|
88
|
+
import { default as default87 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
|
|
89
|
+
import { default as default88 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
|
|
90
|
+
import { default as default89 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
|
|
91
|
+
import { default as default90 } from "./modules/modals/ConfirmModal/ConfirmModal.js";
|
|
92
|
+
import { default as default91 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
|
|
93
|
+
import { default as default92 } from "./modules/modals/PublishModal/PublishModal.js";
|
|
94
|
+
import { default as default93 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
|
|
95
|
+
import { default as default94 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
|
|
96
|
+
import { default as default95 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
|
|
97
|
+
import { default as default96 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
|
|
98
|
+
import { default as default97 } from "./modules/modals/ShareModal/ShareModal.js";
|
|
99
|
+
import { default as default98 } from "./modules/modals/ShareModal/ShareResources.js";
|
|
100
|
+
import { default as default99 } from "./modules/multimedia/AudioRecorder/AudioRecorder.js";
|
|
101
|
+
import { default as default100 } from "./modules/multimedia/Embed/Embed.js";
|
|
102
|
+
import { default as default101 } from "./modules/multimedia/ImageEditor/components/ImageEditor.js";
|
|
103
|
+
import { default as default102 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
|
|
104
|
+
import { default as default103 } from "./modules/multimedia/FileCard/FileCard.js";
|
|
105
|
+
import { default as default104 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
|
|
106
|
+
import { default as default105 } from "./modules/multimedia/UploadFiles/UploadFiles.js";
|
|
107
|
+
import { default as default106 } from "./modules/multimedia/UploadCard/UploadCard.js";
|
|
108
|
+
import { default as default107 } from "./modules/multimedia/VideoEmbed/VideoEmbed.js";
|
|
109
|
+
import { default as default108 } from "./modules/multimedia/VideoRecorder/VideoRecorder.js";
|
|
110
|
+
import { default as default109 } from "./modules/multimedia/Workspace/Workspace.js";
|
|
111
|
+
import { default as default110 } from "./modules/multimedia/WorkspaceFolders/WorkspaceFolders.js";
|
|
113
112
|
import { AccessiblePalette, DefaultPalette } from "./components/ColorPicker/ColorPalette.js";
|
|
114
113
|
import { DropzoneContext, useDropzoneContext } from "./components/Dropzone/DropzoneContext.js";
|
|
115
114
|
import { Column, Grid } from "./components/Grid/Grid.js";
|
|
@@ -149,21 +148,21 @@ export {
|
|
|
149
148
|
default4 as AppHeader,
|
|
150
149
|
default5 as AppIcon,
|
|
151
150
|
default6 as Attachment,
|
|
152
|
-
|
|
151
|
+
default99 as AudioRecorder,
|
|
153
152
|
default7 as Avatar,
|
|
154
153
|
default8 as AvatarGroup,
|
|
155
154
|
default9 as Badge,
|
|
156
|
-
|
|
155
|
+
default93 as BlogPublic,
|
|
157
156
|
default10 as Breadcrumb,
|
|
158
157
|
default11 as Button,
|
|
159
|
-
|
|
158
|
+
default41 as ButtonSkeleton,
|
|
160
159
|
default14 as Card,
|
|
161
160
|
default15 as Checkbox,
|
|
162
161
|
default16 as ColorPicker,
|
|
163
162
|
default17 as ColorPickerItem,
|
|
164
163
|
Column,
|
|
165
164
|
default18 as Combobox,
|
|
166
|
-
|
|
165
|
+
default90 as ConfirmModal,
|
|
167
166
|
default19 as DatePicker,
|
|
168
167
|
DefaultPalette,
|
|
169
168
|
default20 as Divider,
|
|
@@ -175,10 +174,10 @@ export {
|
|
|
175
174
|
EdificeClientProvider,
|
|
176
175
|
EdificeThemeContext,
|
|
177
176
|
EdificeThemeProvider,
|
|
178
|
-
|
|
177
|
+
default100 as Embed,
|
|
179
178
|
default23 as EmptyScreen,
|
|
180
179
|
ExternalLinker,
|
|
181
|
-
|
|
180
|
+
default103 as FileCard,
|
|
182
181
|
default24 as Flex,
|
|
183
182
|
default26 as FormControl,
|
|
184
183
|
default25 as FormText,
|
|
@@ -186,8 +185,8 @@ export {
|
|
|
186
185
|
default27 as Heading,
|
|
187
186
|
default12 as IconButton,
|
|
188
187
|
default28 as Image,
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
default101 as ImageEditor,
|
|
189
|
+
default102 as ImagePicker,
|
|
191
190
|
default29 as Input,
|
|
192
191
|
InternalLinker,
|
|
193
192
|
default30 as Label,
|
|
@@ -196,52 +195,51 @@ export {
|
|
|
196
195
|
default31 as Loading,
|
|
197
196
|
default32 as LoadingScreen,
|
|
198
197
|
default33 as Logo,
|
|
199
|
-
|
|
200
|
-
default34 as MediaViewer,
|
|
198
|
+
default104 as MediaLibrary,
|
|
201
199
|
Menu,
|
|
202
200
|
MockedProvider,
|
|
203
|
-
|
|
204
|
-
|
|
201
|
+
default34 as Modal,
|
|
202
|
+
default91 as OnboardingModal,
|
|
205
203
|
Popover,
|
|
206
204
|
PopoverBody,
|
|
207
205
|
PopoverFooter,
|
|
208
206
|
PopoverHeader,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
207
|
+
default35 as PreventPropagation,
|
|
208
|
+
default92 as PublishModal,
|
|
209
|
+
default36 as Radio,
|
|
210
|
+
default37 as RadioCard,
|
|
213
211
|
ResourceModal,
|
|
214
|
-
|
|
212
|
+
default38 as SearchBar,
|
|
215
213
|
default13 as SearchButton,
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
214
|
+
default39 as SegmentedControl,
|
|
215
|
+
default40 as Select,
|
|
216
|
+
default95 as ShareBlog,
|
|
217
|
+
default97 as ShareModal,
|
|
218
|
+
default98 as ShareResources,
|
|
219
|
+
default49 as SortableTree,
|
|
220
|
+
default43 as StackedGroup,
|
|
221
|
+
default44 as Stepper,
|
|
222
|
+
default45 as Switch,
|
|
223
|
+
default46 as Table,
|
|
226
224
|
Tabs,
|
|
227
|
-
|
|
228
|
-
|
|
225
|
+
default47 as TextArea,
|
|
226
|
+
default42 as TextSkeleton,
|
|
229
227
|
Toolbar,
|
|
230
|
-
|
|
231
|
-
|
|
228
|
+
default48 as Tooltip,
|
|
229
|
+
default50 as Tree,
|
|
232
230
|
TreeNode,
|
|
233
231
|
TreeNodeFolderWrapper,
|
|
234
|
-
|
|
232
|
+
default51 as TreeView,
|
|
235
233
|
Upload,
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
234
|
+
default106 as UploadCard,
|
|
235
|
+
default105 as UploadFiles,
|
|
236
|
+
default107 as VideoEmbed,
|
|
237
|
+
default108 as VideoRecorder,
|
|
238
|
+
default52 as VisuallyHidden,
|
|
241
239
|
WORKSPACE_SHARED_FOLDER_ID,
|
|
242
240
|
WORKSPACE_USER_FOLDER_ID,
|
|
243
|
-
|
|
244
|
-
|
|
241
|
+
default109 as Workspace,
|
|
242
|
+
default110 as WorkspaceFolders,
|
|
245
243
|
addNode,
|
|
246
244
|
arrayUnique,
|
|
247
245
|
buildTree,
|
|
@@ -270,51 +268,51 @@ export {
|
|
|
270
268
|
setRef,
|
|
271
269
|
updateNode,
|
|
272
270
|
updateParentIds,
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
271
|
+
default53 as useBookmark,
|
|
272
|
+
default54 as useBreakpoint,
|
|
273
|
+
default55 as useBrowserInfo,
|
|
274
|
+
default56 as useCantoo,
|
|
277
275
|
useCheckable,
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
276
|
+
default57 as useClickOutside,
|
|
277
|
+
default58 as useConversation,
|
|
278
|
+
default59 as useDate,
|
|
279
|
+
default60 as useDebounce,
|
|
280
|
+
default61 as useDirectory,
|
|
281
|
+
default62 as useDropdown,
|
|
282
|
+
default63 as useDropzone,
|
|
285
283
|
useDropzoneContext,
|
|
286
284
|
useEdificeClient,
|
|
287
|
-
|
|
285
|
+
default64 as useEdificeIcons,
|
|
288
286
|
useEdificeTheme,
|
|
289
|
-
|
|
290
|
-
|
|
287
|
+
default65 as useHasWorkflow,
|
|
288
|
+
default66 as useHover,
|
|
291
289
|
useHttpErrorToast,
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
290
|
+
default67 as useImage,
|
|
291
|
+
default68 as useInfiniteScroll,
|
|
292
|
+
default70 as useIsAdmc,
|
|
293
|
+
default69 as useIsAdml,
|
|
294
|
+
default71 as useIsAdmlcOrAdmc,
|
|
295
|
+
default72 as useKeyPress,
|
|
296
|
+
default73 as useLibraryUrl,
|
|
297
|
+
default74 as useMediaLibrary,
|
|
298
|
+
default75 as useScrollToTop,
|
|
299
|
+
default96 as useShareMutation,
|
|
300
|
+
default76 as useTitle,
|
|
301
|
+
default77 as useToast,
|
|
302
|
+
default78 as useToggle,
|
|
303
|
+
default79 as useTrapFocus,
|
|
304
|
+
default80 as useTrashedResource,
|
|
307
305
|
useTreeSortable,
|
|
308
306
|
useTreeView,
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
307
|
+
default94 as useUpdateMutation,
|
|
308
|
+
default81 as useUpload,
|
|
309
|
+
default82 as useUploadFiles,
|
|
310
|
+
default83 as useUser,
|
|
311
|
+
default84 as useWorkspaceFile,
|
|
312
|
+
default85 as useWorkspaceFolders,
|
|
313
|
+
default86 as useWorkspaceFoldersTree,
|
|
314
|
+
default87 as useWorkspaceSearch,
|
|
315
|
+
default88 as useXitiTrackPageLoad,
|
|
316
|
+
default89 as useZendeskGuide,
|
|
319
317
|
wrapTreeNode
|
|
320
318
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './mime-types-utils';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const HEIC_MIME_TYPES: string[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edifice.io/react",
|
|
3
|
-
"version": "2.5.5-develop-
|
|
3
|
+
"version": "2.5.5-develop-b2school.20260116084726",
|
|
4
4
|
"description": "Edifice React Library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -134,10 +134,9 @@
|
|
|
134
134
|
"react-slugify": "^3.0.3",
|
|
135
135
|
"swiper": "^10.1.0",
|
|
136
136
|
"ua-parser-js": "^1.0.36",
|
|
137
|
-
"
|
|
138
|
-
"@edifice.io/
|
|
139
|
-
"@edifice.io/
|
|
140
|
-
"@edifice.io/utilities": "2.5.5-develop-pedago.20260115154750"
|
|
137
|
+
"@edifice.io/bootstrap": "2.5.5-develop-b2school.20260116084726",
|
|
138
|
+
"@edifice.io/tiptap-extensions": "2.5.5-develop-b2school.20260116084726",
|
|
139
|
+
"@edifice.io/utilities": "2.5.5-develop-b2school.20260116084726"
|
|
141
140
|
},
|
|
142
141
|
"devDependencies": {
|
|
143
142
|
"@babel/plugin-transform-react-pure-annotations": "^7.23.3",
|
|
@@ -168,8 +167,8 @@
|
|
|
168
167
|
"vite": "^5.4.11",
|
|
169
168
|
"vite-plugin-dts": "^4.1.0",
|
|
170
169
|
"vite-tsconfig-paths": "^5.0.1",
|
|
171
|
-
"@edifice.io/client": "2.5.5-develop-
|
|
172
|
-
"@edifice.io/config": "2.5.5-develop-
|
|
170
|
+
"@edifice.io/client": "2.5.5-develop-b2school.20260116084726",
|
|
171
|
+
"@edifice.io/config": "2.5.5-develop-b2school.20260116084726"
|
|
173
172
|
},
|
|
174
173
|
"peerDependencies": {
|
|
175
174
|
"@react-spring/web": "^9.7.5",
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { MediaLibraryType } from 'src/modules/multimedia';
|
|
2
|
-
export interface MediaProps {
|
|
3
|
-
name: string;
|
|
4
|
-
url: string;
|
|
5
|
-
type: MediaLibraryType;
|
|
6
|
-
mimeType?: string;
|
|
7
|
-
}
|
|
8
|
-
interface MediaViewerProps {
|
|
9
|
-
onClose: () => void;
|
|
10
|
-
media: MediaProps[];
|
|
11
|
-
indexMedia?: number;
|
|
12
|
-
}
|
|
13
|
-
declare const MediaViewer: {
|
|
14
|
-
({ onClose, media, indexMedia }: MediaViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
displayName: string;
|
|
16
|
-
};
|
|
17
|
-
export default MediaViewer;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Carousel } from "antd";
|
|
3
|
-
import ToolbarZoom from "./ToolbarZoom.js";
|
|
4
|
-
import useZoom from "../../hooks/useZoom/useZoom.js";
|
|
5
|
-
import ToolbarViewer from "./ToolbarViewer.js";
|
|
6
|
-
import { useState, useEffect } from "react";
|
|
7
|
-
import { MediaWrapper } from "./MediaWrapper.js";
|
|
8
|
-
import Flex from "../Flex/Flex.js";
|
|
9
|
-
const MediaViewer = ({
|
|
10
|
-
onClose,
|
|
11
|
-
media,
|
|
12
|
-
indexMedia = 0
|
|
13
|
-
}) => {
|
|
14
|
-
const {
|
|
15
|
-
zoomIn,
|
|
16
|
-
zoomOut,
|
|
17
|
-
setScale,
|
|
18
|
-
scale
|
|
19
|
-
} = useZoom(1), [currentIndex, setCurrentIndex] = useState(indexMedia);
|
|
20
|
-
return useEffect(() => {
|
|
21
|
-
setCurrentIndex(indexMedia);
|
|
22
|
-
}, [indexMedia]), /* @__PURE__ */ jsxs("div", { className: "media-viewer", children: [
|
|
23
|
-
/* @__PURE__ */ jsx(ToolbarViewer, { onClose, mediaUrl: media[currentIndex].url, mediaName: media[currentIndex].name, nbMedia: media.length, currentIndex }),
|
|
24
|
-
/* @__PURE__ */ jsx(Flex, { className: "media-viewer-inner-overlay", onClick: onClose, children: /* @__PURE__ */ jsxs("div", { className: "media-viewer-inner", onClick: (e) => e.stopPropagation(), children: [
|
|
25
|
-
/* @__PURE__ */ jsx(Carousel, { initialSlide: indexMedia, dots: !1, arrows: !0, draggable: !0, infinite: !1, afterChange: (current) => {
|
|
26
|
-
setCurrentIndex(current);
|
|
27
|
-
}, beforeChange: () => {
|
|
28
|
-
setScale(1);
|
|
29
|
-
}, children: media.map((item, index) => /* @__PURE__ */ jsx("div", { className: "viewer-slide", children: /* @__PURE__ */ jsx(MediaWrapper, { mediaUrl: item.url, mediaType: item.type, mimeType: item.mimeType, scale: index === currentIndex ? scale : 1 }) }, index)) }),
|
|
30
|
-
/* @__PURE__ */ jsx(ToolbarZoom, { zoomIn, zoomOut })
|
|
31
|
-
] }) })
|
|
32
|
-
] });
|
|
33
|
-
};
|
|
34
|
-
export {
|
|
35
|
-
MediaViewer as default
|
|
36
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MediaLibraryType } from 'src/modules/multimedia';
|
|
2
|
-
export declare const MediaWrapper: ({ mediaUrl, mediaType, mimeType, scale, }: {
|
|
3
|
-
mediaUrl: string;
|
|
4
|
-
mediaType: MediaLibraryType;
|
|
5
|
-
mimeType?: string;
|
|
6
|
-
scale?: number;
|
|
7
|
-
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import SvgIconTextPage from "../../modules/icons/components/IconTextPage.js";
|
|
3
|
-
import SvgIconLink from "../../modules/icons/components/IconLink.js";
|
|
4
|
-
import SvgIconHeadphone from "../../modules/icons/components/IconHeadphone.js";
|
|
5
|
-
import SvgIconDownload from "../../modules/icons/components/IconDownload.js";
|
|
6
|
-
import SvgIconExternalLink from "../../modules/icons/components/IconExternalLink.js";
|
|
7
|
-
import { useTranslation } from "react-i18next";
|
|
8
|
-
import PdfViewer from "./PdfViewer.js";
|
|
9
|
-
import Flex from "../Flex/Flex.js";
|
|
10
|
-
import Button from "../Button/Button.js";
|
|
11
|
-
import Image from "../Image/Image.js";
|
|
12
|
-
const MediaWrapper = ({
|
|
13
|
-
mediaUrl,
|
|
14
|
-
mediaType,
|
|
15
|
-
mimeType,
|
|
16
|
-
scale
|
|
17
|
-
}) => {
|
|
18
|
-
const {
|
|
19
|
-
t
|
|
20
|
-
} = useTranslation(), imageMediaStyle = {
|
|
21
|
-
flex: "none",
|
|
22
|
-
height: "100%",
|
|
23
|
-
transform: `scale(${scale})`,
|
|
24
|
-
maxHeight: "70vh"
|
|
25
|
-
}, audioStyle = {
|
|
26
|
-
width: "100%",
|
|
27
|
-
maxWidth: "500px"
|
|
28
|
-
}, videoMediaStyle = {
|
|
29
|
-
height: "100%",
|
|
30
|
-
objectFit: "cover",
|
|
31
|
-
transform: `scale(${scale})`
|
|
32
|
-
}, iframeMediaStyle = {
|
|
33
|
-
width: "100%",
|
|
34
|
-
height: "600px",
|
|
35
|
-
maxWidth: "900px",
|
|
36
|
-
transform: `scale(${scale})`
|
|
37
|
-
};
|
|
38
|
-
switch (mediaType) {
|
|
39
|
-
case "image":
|
|
40
|
-
return /* @__PURE__ */ jsx(Image, { className: "rounded-2", src: mediaUrl, alt: mediaType, width: "100%", objectFit: "contain", style: imageMediaStyle });
|
|
41
|
-
case "audio":
|
|
42
|
-
return /* @__PURE__ */ jsxs(Flex, { direction: "column", align: "center", style: {
|
|
43
|
-
height: "200px"
|
|
44
|
-
}, children: [
|
|
45
|
-
/* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", className: "bg-gray-300 h-100 w-100 rounded-2 mb-8", style: {
|
|
46
|
-
maxWidth: "500px"
|
|
47
|
-
}, children: /* @__PURE__ */ jsx(SvgIconHeadphone, { width: 40, height: 40, color: "#B0B0B0" }) }),
|
|
48
|
-
/* @__PURE__ */ jsx("audio", { src: mediaUrl, className: "media-audio", controls: !0, style: audioStyle })
|
|
49
|
-
] });
|
|
50
|
-
case "video":
|
|
51
|
-
return /* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", children: /* @__PURE__ */ jsx("video", { src: mediaUrl, controls: !0, className: "media-video", style: videoMediaStyle }) });
|
|
52
|
-
case "embedder":
|
|
53
|
-
return /* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", children: /* @__PURE__ */ jsx("iframe", { title: "Embedded media content", src: mediaUrl, className: "media-video", style: iframeMediaStyle }) });
|
|
54
|
-
case "hyperlink":
|
|
55
|
-
case "attachment":
|
|
56
|
-
return mimeType && mimeType === "application/pdf" ? /* @__PURE__ */ jsx(PdfViewer, { mediaUrl, scale }) : /* @__PURE__ */ jsxs(Flex, { direction: "column", align: "center", children: [
|
|
57
|
-
/* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", className: "bg-gray-300 w-100 rounded-2 mb-8", style: {
|
|
58
|
-
maxWidth: "500px",
|
|
59
|
-
height: "200px"
|
|
60
|
-
}, children: mediaType === "hyperlink" ? /* @__PURE__ */ jsx(SvgIconLink, { width: 40, height: 40, color: "#B0B0B0" }) : /* @__PURE__ */ jsx(SvgIconTextPage, { width: 40, height: 40, color: "#B0B0B0" }) }),
|
|
61
|
-
/* @__PURE__ */ jsx("a", { className: "w-100 d-flex justify-content-center", href: mediaUrl, download: mediaType !== "hyperlink", target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx(Button, { className: "w-100", style: {
|
|
62
|
-
height: "40px",
|
|
63
|
-
maxWidth: "500px"
|
|
64
|
-
}, leftIcon: mediaType === "hyperlink" ? /* @__PURE__ */ jsx(SvgIconExternalLink, {}) : /* @__PURE__ */ jsx(SvgIconDownload, {}), color: "tertiary", children: t(mediaType === "hyperlink" ? "mediaWrapper.attachment.open" : "mediaWrapper.attachment.download") }) })
|
|
65
|
-
] });
|
|
66
|
-
default:
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
export {
|
|
71
|
-
MediaWrapper
|
|
72
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useRef } from "react";
|
|
3
|
-
import { Document, Page } from "react-pdf";
|
|
4
|
-
import LoadingScreen from "../LoadingScreen/LoadingScreen.js";
|
|
5
|
-
function PdfViewer({
|
|
6
|
-
mediaUrl,
|
|
7
|
-
scale
|
|
8
|
-
}) {
|
|
9
|
-
const [numPages, setNumPages] = useState(null), pagesRef = useRef([]), onDocumentLoadSuccess = ({
|
|
10
|
-
numPages: numPages2
|
|
11
|
-
}) => {
|
|
12
|
-
setNumPages(numPages2);
|
|
13
|
-
};
|
|
14
|
-
return /* @__PURE__ */ jsx("div", { style: {
|
|
15
|
-
width: `calc(600px * ${scale})`,
|
|
16
|
-
height: "calc(100vh - 52px)",
|
|
17
|
-
overflowY: "auto",
|
|
18
|
-
marginTop: "20px"
|
|
19
|
-
}, children: /* @__PURE__ */ jsx(Document, { file: mediaUrl, onLoadSuccess: onDocumentLoadSuccess, loading: /* @__PURE__ */ jsx(LoadingScreen, {}), children: Array.from(new Array(numPages), (_, index) => /* @__PURE__ */ jsx("div", { ref: (el) => pagesRef.current[index] = el, style: {
|
|
20
|
-
marginBottom: 32,
|
|
21
|
-
transformOrigin: "top center"
|
|
22
|
-
}, children: /* @__PURE__ */ jsx(Page, { className: "pdf-page", pageNumber: index + 1, renderTextLayer: !1, renderAnnotationLayer: !1, width: 600 * (scale ?? 1), loading: /* @__PURE__ */ jsx(LoadingScreen, {}) }) }, index)) }) });
|
|
23
|
-
}
|
|
24
|
-
export {
|
|
25
|
-
PdfViewer as default
|
|
26
|
-
};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect } from "react";
|
|
3
|
-
import SvgIconClose from "../../modules/icons/components/IconClose.js";
|
|
4
|
-
import SvgIconDownload from "../../modules/icons/components/IconDownload.js";
|
|
5
|
-
import SvgIconExternalLink from "../../modules/icons/components/IconExternalLink.js";
|
|
6
|
-
import Flex from "../Flex/Flex.js";
|
|
7
|
-
import IconButton from "../Button/IconButton.js";
|
|
8
|
-
import SmartEllipsis from "../SmartEllipsis/SmartEllipsis.js";
|
|
9
|
-
function ToolbarViewer({
|
|
10
|
-
onClose,
|
|
11
|
-
mediaName,
|
|
12
|
-
mediaUrl,
|
|
13
|
-
nbMedia,
|
|
14
|
-
currentIndex
|
|
15
|
-
}) {
|
|
16
|
-
return useEffect(() => {
|
|
17
|
-
const handleKeyDown = (e) => {
|
|
18
|
-
e.key === "Escape" && onClose();
|
|
19
|
-
};
|
|
20
|
-
return window.addEventListener("keydown", handleKeyDown), () => {
|
|
21
|
-
window.removeEventListener("keydown", handleKeyDown);
|
|
22
|
-
};
|
|
23
|
-
}, [onClose]), /* @__PURE__ */ jsxs(Flex, { className: "media-viewer-toolbar p-8", align: "center", children: [
|
|
24
|
-
/* @__PURE__ */ jsxs(Flex, { gap: "8", align: "center", style: {
|
|
25
|
-
minWidth: "50%"
|
|
26
|
-
}, children: [
|
|
27
|
-
/* @__PURE__ */ jsx(IconButton, { icon: /* @__PURE__ */ jsx(SvgIconClose, { color: "#fff" }), onClick: onClose, variant: "ghost" }),
|
|
28
|
-
/* @__PURE__ */ jsx(SmartEllipsis, { text: mediaName })
|
|
29
|
-
] }),
|
|
30
|
-
/* @__PURE__ */ jsxs(Flex, { gap: "8", align: "center", justify: "between", className: "w-100", children: [
|
|
31
|
-
nbMedia ? /* @__PURE__ */ jsx("p", { children: `${currentIndex + 1}/${nbMedia} ` }) : /* @__PURE__ */ jsx("p", { children: `${currentIndex + 1}` }),
|
|
32
|
-
mediaUrl && /* @__PURE__ */ jsxs(Flex, { className: "ms-8", gap: "8", align: "center", children: [
|
|
33
|
-
/* @__PURE__ */ jsx("a", { href: mediaUrl, download: !0, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx(IconButton, { icon: /* @__PURE__ */ jsx(SvgIconDownload, { color: "#fff" }), variant: "ghost" }) }),
|
|
34
|
-
/* @__PURE__ */ jsx("a", { href: mediaUrl, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx(IconButton, { icon: /* @__PURE__ */ jsx(SvgIconExternalLink, { color: "#fff" }), variant: "ghost" }) })
|
|
35
|
-
] })
|
|
36
|
-
] })
|
|
37
|
-
] });
|
|
38
|
-
}
|
|
39
|
-
export {
|
|
40
|
-
ToolbarViewer as default
|
|
41
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import SvgIconMinus from "../../modules/icons/components/IconMinus.js";
|
|
3
|
-
import SvgIconPlus from "../../modules/icons/components/IconPlus.js";
|
|
4
|
-
import SvgIconZoomIn from "../../modules/icons/components/IconZoomIn.js";
|
|
5
|
-
import Flex from "../Flex/Flex.js";
|
|
6
|
-
import IconButton from "../Button/IconButton.js";
|
|
7
|
-
function ToolbarZoom({
|
|
8
|
-
zoomIn,
|
|
9
|
-
zoomOut
|
|
10
|
-
}) {
|
|
11
|
-
return /* @__PURE__ */ jsx(Flex, { justify: "center", className: "media-viewer-toolbar-zoom-container", children: /* @__PURE__ */ jsxs(Flex, { gap: "4", className: "p-12 media-viewer-toolbar-zoom", align: "center", children: [
|
|
12
|
-
/* @__PURE__ */ jsx(IconButton, { variant: "ghost", icon: /* @__PURE__ */ jsx(SvgIconMinus, { color: "#fff" }), onClick: zoomOut }),
|
|
13
|
-
/* @__PURE__ */ jsx(SvgIconZoomIn, { color: "#fff", className: "m-4" }),
|
|
14
|
-
/* @__PURE__ */ jsx(IconButton, { variant: "ghost", icon: /* @__PURE__ */ jsx(SvgIconPlus, { color: "#fff" }), onClick: zoomIn })
|
|
15
|
-
] }) });
|
|
16
|
-
}
|
|
17
|
-
export {
|
|
18
|
-
ToolbarZoom as default
|
|
19
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useRef, useState, useEffect } from "react";
|
|
3
|
-
function SmartEllipsis({
|
|
4
|
-
text
|
|
5
|
-
}) {
|
|
6
|
-
const ref = useRef(null), [displayText, setDisplayText] = useState(text), updateText = () => {
|
|
7
|
-
const el = ref.current;
|
|
8
|
-
if (el)
|
|
9
|
-
if (el.textContent = text, el.scrollWidth > el.clientWidth) {
|
|
10
|
-
let startText = text.slice(0, Math.ceil(text.length / 2)), endText = text.slice(Math.ceil(text.length / 2));
|
|
11
|
-
for (; startText.length > 1 && endText.length > 1 && el.scrollWidth > el.clientWidth; )
|
|
12
|
-
startText = startText.slice(0, -1), endText = endText.slice(1), el.textContent = `${startText}…${endText}`;
|
|
13
|
-
setDisplayText(el.textContent);
|
|
14
|
-
} else
|
|
15
|
-
setDisplayText(text);
|
|
16
|
-
};
|
|
17
|
-
return useEffect(() => (updateText(), window.addEventListener("resize", updateText), () => window.removeEventListener("resize", updateText)), [text]), /* @__PURE__ */ jsx("span", { ref, className: "smart-ellipsis", children: displayText });
|
|
18
|
-
}
|
|
19
|
-
export {
|
|
20
|
-
SmartEllipsis as default
|
|
21
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as useZoom } from './useZoom';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export default function useZoom(initialScale?: number, maxScale?: number, minScale?: number, step?: number): {
|
|
2
|
-
scale: number;
|
|
3
|
-
zoomIn: () => void;
|
|
4
|
-
zoomOut: () => void;
|
|
5
|
-
resetZoom: () => void;
|
|
6
|
-
setScale: import('react').Dispatch<import('react').SetStateAction<number>>;
|
|
7
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { useState } from "react";
|
|
2
|
-
function useZoom(initialScale = 1, maxScale = 2, minScale = 0.5, step = 0.5) {
|
|
3
|
-
const [scale, setScale] = useState(initialScale);
|
|
4
|
-
return {
|
|
5
|
-
scale,
|
|
6
|
-
zoomIn: () => setScale((prev) => Math.min(prev + step, maxScale)),
|
|
7
|
-
zoomOut: () => setScale((prev) => Math.max(prev - step, minScale)),
|
|
8
|
-
resetZoom: () => setScale(initialScale),
|
|
9
|
-
setScale
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
export {
|
|
13
|
-
useZoom as default
|
|
14
|
-
};
|