@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.
Files changed (30) hide show
  1. package/dist/components/Badge/Badge.d.ts +4 -7
  2. package/dist/components/Badge/Badge.js +11 -14
  3. package/dist/components/DatePicker/DatePicker.d.ts +57 -0
  4. package/dist/components/DatePicker/DatePicker.js +6 -3
  5. package/dist/components/index.d.ts +0 -1
  6. package/dist/hooks/useDropzone/useDropzone.js +21 -16
  7. package/dist/hooks/useEdificeIcons/useEdificeIcons.d.ts +0 -1
  8. package/dist/hooks/useEdificeIcons/useEdificeIcons.js +0 -5
  9. package/dist/index.js +154 -156
  10. package/dist/utilities/mime-types/index.d.ts +1 -0
  11. package/dist/utilities/mime-types/mime-types-utils.d.ts +1 -0
  12. package/dist/utilities/mime-types/mime-types-utils.js +4 -0
  13. package/package.json +6 -7
  14. package/dist/components/MediaViewer/MediaViewer.d.ts +0 -17
  15. package/dist/components/MediaViewer/MediaViewer.js +0 -36
  16. package/dist/components/MediaViewer/MediaWrapper.d.ts +0 -7
  17. package/dist/components/MediaViewer/MediaWrapper.js +0 -72
  18. package/dist/components/MediaViewer/PdfViewer.d.ts +0 -4
  19. package/dist/components/MediaViewer/PdfViewer.js +0 -26
  20. package/dist/components/MediaViewer/ToolbarViewer.d.ts +0 -7
  21. package/dist/components/MediaViewer/ToolbarViewer.js +0 -41
  22. package/dist/components/MediaViewer/ToolbarZoom.d.ts +0 -4
  23. package/dist/components/MediaViewer/ToolbarZoom.js +0 -19
  24. package/dist/components/MediaViewer/index.d.ts +0 -2
  25. package/dist/components/SmartEllipsis/SmartEllipsis.d.ts +0 -5
  26. package/dist/components/SmartEllipsis/SmartEllipsis.js +0 -21
  27. package/dist/components/SmartEllipsis/index.d.ts +0 -2
  28. package/dist/hooks/useZoom/index.d.ts +0 -1
  29. package/dist/hooks/useZoom/useZoom.d.ts +0 -7
  30. package/dist/hooks/useZoom/useZoom.js +0 -14
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { IWebApp, UserProfile } from '@edifice.io/client';
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
- * Beta Badge has a fixed text 'BÊTA' unless children is provided.
33
- * If app is provided, the color of the Beta Badge is derived from the application colors.
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
- app?: IWebApp;
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
- getIconClass,
16
- getBackgroundLightIconClass,
17
- getBorderIconClass
18
- } = useEdificeIcons();
19
- let badgeColorClassName = "";
20
- if (variant.type === "beta" && variant.app) {
21
- const colorAppClassName = getIconClass(variant.app), backgroundLightAppClassName = getBackgroundLightIconClass(variant.app), borderAppClassName = getBorderIconClass(variant.app);
22
- badgeColorClassName = `${colorAppClassName} ${backgroundLightAppClassName} ${borderAppClassName}`;
23
- }
24
- console.log(badgeColorClassName);
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
@@ -29,7 +29,6 @@ export * from './List';
29
29
  export * from './Loading';
30
30
  export * from './LoadingScreen';
31
31
  export * from './Logo';
32
- export * from './MediaViewer';
33
32
  export * from './Menu';
34
33
  export * from './Modal';
35
34
  export * from './Popover';
@@ -1,5 +1,5 @@
1
1
  import { useState, useRef } from "react";
2
- import heic2any from "heic2any";
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) => Promise.all(files2.map(async (file) => {
36
- if (file.type === "image/heic" || file.type === "image/heif")
37
- try {
38
- const converted = await heic2any({
39
- blob: file,
40
- toType: "image/jpeg"
41
- });
42
- return new File([converted], file.name.replace(/\.(heic|heif)$/i, ".jpeg"), {
43
- type: "image/jpeg"
44
- });
45
- } catch (error) {
46
- return console.error(`Failed to convert HEIC image: ${file.name}`, error), file;
47
- }
48
- return file;
49
- })), cleanFiles = () => {
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/MediaViewer/MediaViewer.js";
34
- import { default as default35 } from "./components/Modal/Modal.js";
35
- import { default as default36 } from "./components/PreventPropagation/PreventPropagation.js";
36
- import { default as default37 } from "./components/Radio/Radio.js";
37
- import { default as default38 } from "./components/RadioCard/RadioCard.js";
38
- import { default as default39 } from "./components/SearchBar/SearchBar.js";
39
- import { default as default40 } from "./components/SegmentedControl/SegmentedControl.js";
40
- import { default as default41 } from "./components/Select/Select.js";
41
- import { default as default42 } from "./components/Skeleton/ButtonSkeleton.js";
42
- import { default as default43 } from "./components/Skeleton/TextSkeleton.js";
43
- import { default as default44 } from "./components/StackedGroup/StackedGroup.js";
44
- import { default as default45 } from "./components/Stepper/Stepper.js";
45
- import { default as default46 } from "./components/Switch/Switch.js";
46
- import { default as default47 } from "./components/Table/components/Table.js";
47
- import { default as default48 } from "./components/TextArea/TextArea.js";
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 default50 } from "./components/Tree/components/SortableTree.js";
51
- import { default as default51 } from "./components/Tree/components/Tree.js";
52
- import { default as default52 } from "./components/TreeView/TreeView.js";
53
- import { default as default53 } from "./components/VisuallyHidden/VisuallyHidden.js";
54
- import { default as default54 } from "./hooks/useBookmark/useBookmark.js";
55
- import { default as default55 } from "./hooks/useBreakpoint/useBreakpoint.js";
56
- import { default as default56 } from "./hooks/useBrowserInfo/useBrowserInfo.js";
57
- import { default as default57 } from "./hooks/useCantoo/useCantoo.js";
58
- import { default as default58 } from "./hooks/useClickOutside/useClickOutside.js";
59
- import { default as default59 } from "./hooks/useConversation/useConversation.js";
60
- import { default as default60 } from "./hooks/useDate/useDate.js";
61
- import { default as default61 } from "./hooks/useDebounce/useDebounce.js";
62
- import { default as default62 } from "./hooks/useDirectory/useDirectory.js";
63
- import { default as default63 } from "./hooks/useDropdown/useDropdown.js";
64
- import { default as default64 } from "./hooks/useDropzone/useDropzone.js";
65
- import { default as default65 } from "./hooks/useEdificeIcons/useEdificeIcons.js";
66
- import { default as default66 } from "./hooks/useHasWorkflow/useHasWorkflow.js";
67
- import { default as default67 } from "./hooks/useHover/useHover.js";
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 default68 } from "./hooks/useImage/useImage.js";
70
- import { default as default69 } from "./hooks/useInfiniteScroll/useInfiniteScroll.js";
71
- import { default as default70 } from "./hooks/useIsAdml/useIsAdml.js";
72
- import { default as default71 } from "./hooks/useIsAdmc/useIsAdmc.js";
73
- import { default as default72 } from "./hooks/useIsAdmlcOrAdmc/useIsAdmlcOrAdmc.js";
74
- import { default as default73 } from "./hooks/useKeyPress/useKeyPress.js";
75
- import { default as default74 } from "./hooks/useLibraryUrl/useLibraryUrl.js";
76
- import { default as default75 } from "./hooks/useMediaLibrary/useMediaLibrary.js";
77
- import { default as default76 } from "./hooks/useScrollToTop/useScrollToTop.js";
78
- import { default as default77 } from "./hooks/useTitle/useTitle.js";
79
- import { default as default78 } from "./hooks/useToast/useToast.js";
80
- import { default as default79 } from "./hooks/useToggle/useToggle.js";
81
- import { default as default80 } from "./hooks/useTrapFocus/useTrapFocus.js";
82
- import { default as default81 } from "./hooks/useTrashedResource/useTrashedResource.js";
83
- import { default as default82 } from "./hooks/useUpload/useUpload.js";
84
- import { default as default83 } from "./hooks/useUploadFiles/useUploadFiles.js";
85
- import { default as default84 } from "./hooks/useUser/useUser.js";
86
- import { default as default85 } from "./hooks/useWorkspaceFile/useWorkspaceFile.js";
87
- import { default as default86 } from "./hooks/useWorkspaceFolders/useWorkspaceFolders.js";
88
- import { WORKSPACE_SHARED_FOLDER_ID, WORKSPACE_USER_FOLDER_ID, default as default87 } from "./hooks/useWorkspaceFolders/useWorkspaceFoldersTree.js";
89
- import { default as default88 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
90
- import { default as default89 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
91
- import { default as default90 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
92
- import { default as default91 } from "./modules/modals/ConfirmModal/ConfirmModal.js";
93
- import { default as default92 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
94
- import { default as default93 } from "./modules/modals/PublishModal/PublishModal.js";
95
- import { default as default94 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
96
- import { default as default95 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
97
- import { default as default96 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
98
- import { default as default97 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
99
- import { default as default98 } from "./modules/modals/ShareModal/ShareModal.js";
100
- import { default as default99 } from "./modules/modals/ShareModal/ShareResources.js";
101
- import { default as default100 } from "./modules/multimedia/AudioRecorder/AudioRecorder.js";
102
- import { default as default101 } from "./modules/multimedia/Embed/Embed.js";
103
- import { default as default102 } from "./modules/multimedia/ImageEditor/components/ImageEditor.js";
104
- import { default as default103 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
105
- import { default as default104 } from "./modules/multimedia/FileCard/FileCard.js";
106
- import { default as default105 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
107
- import { default as default106 } from "./modules/multimedia/UploadFiles/UploadFiles.js";
108
- import { default as default107 } from "./modules/multimedia/UploadCard/UploadCard.js";
109
- import { default as default108 } from "./modules/multimedia/VideoEmbed/VideoEmbed.js";
110
- import { default as default109 } from "./modules/multimedia/VideoRecorder/VideoRecorder.js";
111
- import { default as default110 } from "./modules/multimedia/Workspace/Workspace.js";
112
- import { default as default111 } from "./modules/multimedia/WorkspaceFolders/WorkspaceFolders.js";
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
- default100 as AudioRecorder,
151
+ default99 as AudioRecorder,
153
152
  default7 as Avatar,
154
153
  default8 as AvatarGroup,
155
154
  default9 as Badge,
156
- default94 as BlogPublic,
155
+ default93 as BlogPublic,
157
156
  default10 as Breadcrumb,
158
157
  default11 as Button,
159
- default42 as ButtonSkeleton,
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
- default91 as ConfirmModal,
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
- default101 as Embed,
177
+ default100 as Embed,
179
178
  default23 as EmptyScreen,
180
179
  ExternalLinker,
181
- default104 as FileCard,
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
- default102 as ImageEditor,
190
- default103 as ImagePicker,
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
- default105 as MediaLibrary,
200
- default34 as MediaViewer,
198
+ default104 as MediaLibrary,
201
199
  Menu,
202
200
  MockedProvider,
203
- default35 as Modal,
204
- default92 as OnboardingModal,
201
+ default34 as Modal,
202
+ default91 as OnboardingModal,
205
203
  Popover,
206
204
  PopoverBody,
207
205
  PopoverFooter,
208
206
  PopoverHeader,
209
- default36 as PreventPropagation,
210
- default93 as PublishModal,
211
- default37 as Radio,
212
- default38 as RadioCard,
207
+ default35 as PreventPropagation,
208
+ default92 as PublishModal,
209
+ default36 as Radio,
210
+ default37 as RadioCard,
213
211
  ResourceModal,
214
- default39 as SearchBar,
212
+ default38 as SearchBar,
215
213
  default13 as SearchButton,
216
- default40 as SegmentedControl,
217
- default41 as Select,
218
- default96 as ShareBlog,
219
- default98 as ShareModal,
220
- default99 as ShareResources,
221
- default50 as SortableTree,
222
- default44 as StackedGroup,
223
- default45 as Stepper,
224
- default46 as Switch,
225
- default47 as Table,
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
- default48 as TextArea,
228
- default43 as TextSkeleton,
225
+ default47 as TextArea,
226
+ default42 as TextSkeleton,
229
227
  Toolbar,
230
- default49 as Tooltip,
231
- default51 as Tree,
228
+ default48 as Tooltip,
229
+ default50 as Tree,
232
230
  TreeNode,
233
231
  TreeNodeFolderWrapper,
234
- default52 as TreeView,
232
+ default51 as TreeView,
235
233
  Upload,
236
- default107 as UploadCard,
237
- default106 as UploadFiles,
238
- default108 as VideoEmbed,
239
- default109 as VideoRecorder,
240
- default53 as VisuallyHidden,
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
- default110 as Workspace,
244
- default111 as WorkspaceFolders,
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
- default54 as useBookmark,
274
- default55 as useBreakpoint,
275
- default56 as useBrowserInfo,
276
- default57 as useCantoo,
271
+ default53 as useBookmark,
272
+ default54 as useBreakpoint,
273
+ default55 as useBrowserInfo,
274
+ default56 as useCantoo,
277
275
  useCheckable,
278
- default58 as useClickOutside,
279
- default59 as useConversation,
280
- default60 as useDate,
281
- default61 as useDebounce,
282
- default62 as useDirectory,
283
- default63 as useDropdown,
284
- default64 as useDropzone,
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
- default65 as useEdificeIcons,
285
+ default64 as useEdificeIcons,
288
286
  useEdificeTheme,
289
- default66 as useHasWorkflow,
290
- default67 as useHover,
287
+ default65 as useHasWorkflow,
288
+ default66 as useHover,
291
289
  useHttpErrorToast,
292
- default68 as useImage,
293
- default69 as useInfiniteScroll,
294
- default71 as useIsAdmc,
295
- default70 as useIsAdml,
296
- default72 as useIsAdmlcOrAdmc,
297
- default73 as useKeyPress,
298
- default74 as useLibraryUrl,
299
- default75 as useMediaLibrary,
300
- default76 as useScrollToTop,
301
- default97 as useShareMutation,
302
- default77 as useTitle,
303
- default78 as useToast,
304
- default79 as useToggle,
305
- default80 as useTrapFocus,
306
- default81 as useTrashedResource,
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
- default95 as useUpdateMutation,
310
- default82 as useUpload,
311
- default83 as useUploadFiles,
312
- default84 as useUser,
313
- default85 as useWorkspaceFile,
314
- default86 as useWorkspaceFolders,
315
- default87 as useWorkspaceFoldersTree,
316
- default88 as useWorkspaceSearch,
317
- default89 as useXitiTrackPageLoad,
318
- default90 as useZendeskGuide,
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[];
@@ -0,0 +1,4 @@
1
+ const HEIC_MIME_TYPES = ["image/heic", "image/heif"];
2
+ export {
3
+ HEIC_MIME_TYPES
4
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edifice.io/react",
3
- "version": "2.5.5-develop-pedago.20260115154750",
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
- "react-pdf": "10.2.0",
138
- "@edifice.io/bootstrap": "2.5.5-develop-pedago.20260115154750",
139
- "@edifice.io/tiptap-extensions": "2.5.5-develop-pedago.20260115154750",
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-pedago.20260115154750",
172
- "@edifice.io/config": "2.5.5-develop-pedago.20260115154750"
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,4 +0,0 @@
1
- export default function PdfViewer({ mediaUrl, scale, }: {
2
- mediaUrl: string;
3
- scale?: number;
4
- }): import("react/jsx-runtime").JSX.Element;
@@ -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,7 +0,0 @@
1
- export default function ToolbarViewer({ onClose, mediaName, mediaUrl, nbMedia, currentIndex, }: {
2
- onClose: () => void;
3
- mediaName: string;
4
- nbMedia?: number;
5
- mediaUrl?: string;
6
- currentIndex: number;
7
- }): import("react/jsx-runtime").JSX.Element;
@@ -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,4 +0,0 @@
1
- export default function ToolbarZoom({ zoomIn, zoomOut, }: {
2
- zoomIn: () => void;
3
- zoomOut: () => void;
4
- }): import("react/jsx-runtime").JSX.Element;
@@ -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,2 +0,0 @@
1
- export * from './MediaViewer';
2
- export { default as MediaViewer } from './MediaViewer';
@@ -1,5 +0,0 @@
1
- interface SmartEllipsisProps {
2
- text: string;
3
- }
4
- export default function SmartEllipsis({ text }: SmartEllipsisProps): import("react/jsx-runtime").JSX.Element;
5
- export {};
@@ -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,2 +0,0 @@
1
- export * from './SmartEllipsis';
2
- export { default as SmartEllipsis } from './SmartEllipsis';
@@ -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
- };