@edifice.io/react 2.5.5-develop.20251222161838 → 2.5.5-develop.20260112150307
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 +12 -1
- package/dist/components/Badge/Badge.js +15 -2
- package/dist/hooks/useDropzone/useDropzone.d.ts +2 -2
- package/dist/hooks/useDropzone/useDropzone.js +20 -5
- package/dist/index.js +14 -8
- package/dist/modules/multimedia/MediaLibrary/index.d.ts +2 -0
- package/dist/modules/multimedia/MediaLibrary/innertabs/Upload.js +1 -1
- package/dist/modules/multimedia/index.d.ts +1 -0
- package/dist/multimedia.js +14 -8
- package/package.json +7 -6
|
@@ -26,7 +26,17 @@ export type ChipBadgeVariant = {
|
|
|
26
26
|
export type LinkBadgeVariant = {
|
|
27
27
|
type: 'link';
|
|
28
28
|
};
|
|
29
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Badge variant : beta.
|
|
31
|
+
* Beta Badge is used to indicate that a feature is in beta phase.
|
|
32
|
+
* The color prop allows to customize the badge color to match the app color.
|
|
33
|
+
* Defaults to black if not provided.
|
|
34
|
+
*/
|
|
35
|
+
export type BetaBadgeVariant = {
|
|
36
|
+
type: 'beta';
|
|
37
|
+
color?: string;
|
|
38
|
+
};
|
|
39
|
+
export type BadgeVariants = NotificationBadgeVariant | ContentBadgeVariant | ProfileBadgeVariant | ChipBadgeVariant | LinkBadgeVariant | BetaBadgeVariant;
|
|
30
40
|
export interface BadgeProps extends React.ComponentPropsWithRef<'span'> {
|
|
31
41
|
/**
|
|
32
42
|
* Badge variant : notification, link or profile (Teacher|Student|Relative|Personnel)
|
|
@@ -35,6 +45,7 @@ export interface BadgeProps extends React.ComponentPropsWithRef<'span'> {
|
|
|
35
45
|
variant?: BadgeVariants;
|
|
36
46
|
/**
|
|
37
47
|
* Text or icon (or whatever) to render as children elements.
|
|
48
|
+
* Defaults to 'BÊTA' for beta variant.
|
|
38
49
|
*/
|
|
39
50
|
children?: ReactNode;
|
|
40
51
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
const Badge = /* @__PURE__ */ forwardRef(({
|
|
@@ -11,7 +11,20 @@ const Badge = /* @__PURE__ */ forwardRef(({
|
|
|
11
11
|
...restProps
|
|
12
12
|
}, ref) => {
|
|
13
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__ */
|
|
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: [
|
|
24
|
+
variant.type === "chip" && /* @__PURE__ */ jsx("div", { className: "d-flex fw-800 align-items-center", children }),
|
|
25
|
+
variant.type === "beta" && (children ?? "BÊTA"),
|
|
26
|
+
variant.type !== "chip" && variant.type !== "beta" && children
|
|
27
|
+
] });
|
|
15
28
|
});
|
|
16
29
|
export {
|
|
17
30
|
Badge as default
|
|
@@ -17,7 +17,7 @@ declare const useDropzone: (props?: {
|
|
|
17
17
|
/** Callback to attach to your drop zone (any HTMLElement). */
|
|
18
18
|
handleDragLeave: <T extends HTMLElement>(event: React.DragEvent<T>) => void;
|
|
19
19
|
/** Callback to attach to your drop zone (any HTMLElement). */
|
|
20
|
-
handleDrop: <T extends HTMLElement>(event: React.DragEvent<T>) => void
|
|
20
|
+
handleDrop: <T extends HTMLElement>(event: React.DragEvent<T>) => Promise<void>;
|
|
21
21
|
/** Replace a file in the `files` list. */
|
|
22
22
|
replaceFileAt: (index: number, file: File) => void;
|
|
23
23
|
/** Remove a file from the `files` list. */
|
|
@@ -25,7 +25,7 @@ declare const useDropzone: (props?: {
|
|
|
25
25
|
/** Add a file to the `files` list. */
|
|
26
26
|
addFile: (file: File) => void;
|
|
27
27
|
/** Add many files to the `files` list. */
|
|
28
|
-
addFiles: (files: File[]) => void
|
|
28
|
+
addFiles: (files: File[]) => Promise<void>;
|
|
29
29
|
/** Empty the `files` list. */
|
|
30
30
|
cleanFiles: () => void;
|
|
31
31
|
/** Callback to attach to your `input[type=file]` HTMLElement. */
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useState, useRef } from "react";
|
|
2
|
+
import heic2any from "heic2any";
|
|
2
3
|
const useDropzone = (props) => {
|
|
3
4
|
const [dragging, setDragging] = useState(!1), [files, setFiles] = useState([]), inputRef = useRef(null), addFile = (file) => {
|
|
4
5
|
addFiles([file]);
|
|
@@ -23,15 +24,29 @@ const useDropzone = (props) => {
|
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
26
|
return filteredFiles;
|
|
26
|
-
}, addFiles = (files2) => {
|
|
27
|
-
let filesToAdd = files2.sort((a, b) => b.lastModified - a.lastModified).map((file) => (
|
|
27
|
+
}, addFiles = async (files2) => {
|
|
28
|
+
let filesToAdd = (await convertHEICImages(files2)).sort((a, b) => b.lastModified - a.lastModified).map((file) => (
|
|
28
29
|
// #WB-3377: Remove special characters from the file name. (it can cause issues with vertx which replace it or remove it)
|
|
29
30
|
new File([file], file.name.replace(/[!:,;="']/g, ""), {
|
|
30
31
|
type: file.type
|
|
31
32
|
})
|
|
32
33
|
));
|
|
33
34
|
filesToAdd.reverse(), props != null && props.forceFilters ? (filesToAdd = applyInputFiltersOn(filesToAdd), filesToAdd && filesToAdd.length && setFiles((prevFiles) => [...prevFiles, ...filesToAdd])) : setFiles((prevFiles) => [...prevFiles, ...files2]);
|
|
34
|
-
},
|
|
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
50
|
setFiles([]);
|
|
36
51
|
}, handleOnChange = (event) => {
|
|
37
52
|
const files2 = event.target.files;
|
|
@@ -53,11 +68,11 @@ const useDropzone = (props) => {
|
|
|
53
68
|
/** Callback to attach to your drop zone (any HTMLElement). */
|
|
54
69
|
handleDragLeave,
|
|
55
70
|
/** Callback to attach to your drop zone (any HTMLElement). */
|
|
56
|
-
handleDrop: (event) => {
|
|
71
|
+
handleDrop: async (event) => {
|
|
57
72
|
var _a;
|
|
58
73
|
handleDragLeave(event);
|
|
59
74
|
const files2 = (_a = event.dataTransfer) == null ? void 0 : _a.files;
|
|
60
|
-
files2 && (addFiles([...files2]), inputRef != null && inputRef.current && (inputRef.current.files = files2));
|
|
75
|
+
files2 && (await addFiles([...files2]), inputRef != null && inputRef.current && (inputRef.current.files = files2));
|
|
61
76
|
},
|
|
62
77
|
/** Replace a file in the `files` list. */
|
|
63
78
|
replaceFileAt,
|
package/dist/index.js
CHANGED
|
@@ -102,10 +102,12 @@ import { default as default100 } from "./modules/multimedia/ImageEditor/componen
|
|
|
102
102
|
import { default as default101 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
|
|
103
103
|
import { default as default102 } from "./modules/multimedia/FileCard/FileCard.js";
|
|
104
104
|
import { default as default103 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
|
|
105
|
-
import { default as default104 } from "./modules/multimedia/
|
|
106
|
-
import { default as default105 } from "./modules/multimedia/
|
|
107
|
-
import { default as default106 } from "./modules/multimedia/
|
|
108
|
-
import { default as default107 } from "./modules/multimedia/
|
|
105
|
+
import { default as default104 } from "./modules/multimedia/UploadFiles/UploadFiles.js";
|
|
106
|
+
import { default as default105 } from "./modules/multimedia/UploadCard/UploadCard.js";
|
|
107
|
+
import { default as default106 } from "./modules/multimedia/VideoEmbed/VideoEmbed.js";
|
|
108
|
+
import { default as default107 } from "./modules/multimedia/VideoRecorder/VideoRecorder.js";
|
|
109
|
+
import { default as default108 } from "./modules/multimedia/Workspace/Workspace.js";
|
|
110
|
+
import { default as default109 } from "./modules/multimedia/WorkspaceFolders/WorkspaceFolders.js";
|
|
109
111
|
import { AccessiblePalette, DefaultPalette } from "./components/ColorPicker/ColorPalette.js";
|
|
110
112
|
import { DropzoneContext, useDropzoneContext } from "./components/Dropzone/DropzoneContext.js";
|
|
111
113
|
import { Column, Grid } from "./components/Grid/Grid.js";
|
|
@@ -124,6 +126,7 @@ import { useCheckable } from "./hooks/useCheckable/useCheckable.js";
|
|
|
124
126
|
import { ResourceModal } from "./modules/modals/ResourceModal/ResourceModal.js";
|
|
125
127
|
import { ExternalLinker } from "./modules/multimedia/Linker/ExternalLinker/ExternalLinker.js";
|
|
126
128
|
import { InternalLinker } from "./modules/multimedia/Linker/InternalLinker/InternalLinker.js";
|
|
129
|
+
import { Upload } from "./modules/multimedia/MediaLibrary/innertabs/Upload.js";
|
|
127
130
|
import { AntProvider } from "./providers/AntThemeProvider/AntProvider.js";
|
|
128
131
|
import { EdificeClientProvider } from "./providers/EdificeClientProvider/EdificeClientProvider.js";
|
|
129
132
|
import { EdificeClientContext } from "./providers/EdificeClientProvider/EdificeClientProvider.context.js";
|
|
@@ -225,13 +228,16 @@ export {
|
|
|
225
228
|
TreeNode,
|
|
226
229
|
TreeNodeFolderWrapper,
|
|
227
230
|
default50 as TreeView,
|
|
228
|
-
|
|
229
|
-
default105 as
|
|
231
|
+
Upload,
|
|
232
|
+
default105 as UploadCard,
|
|
233
|
+
default104 as UploadFiles,
|
|
234
|
+
default106 as VideoEmbed,
|
|
235
|
+
default107 as VideoRecorder,
|
|
230
236
|
default51 as VisuallyHidden,
|
|
231
237
|
WORKSPACE_SHARED_FOLDER_ID,
|
|
232
238
|
WORKSPACE_USER_FOLDER_ID,
|
|
233
|
-
|
|
234
|
-
|
|
239
|
+
default108 as Workspace,
|
|
240
|
+
default109 as WorkspaceFolders,
|
|
235
241
|
addNode,
|
|
236
242
|
arrayUnique,
|
|
237
243
|
buildTree,
|
|
@@ -14,7 +14,7 @@ const acceptedTypes = (type) => {
|
|
|
14
14
|
acceptedTypes2.push("video/*");
|
|
15
15
|
break;
|
|
16
16
|
case "image":
|
|
17
|
-
acceptedTypes2.push("image/png"), acceptedTypes2.push("image/jpeg"), acceptedTypes2.push("image/webp"), acceptedTypes2.push("image/gif"), acceptedTypes2.push("image/avif");
|
|
17
|
+
acceptedTypes2.push("image/png"), acceptedTypes2.push("image/jpeg"), acceptedTypes2.push("image/webp"), acceptedTypes2.push("image/gif"), acceptedTypes2.push("image/avif"), acceptedTypes2.push("image/heic");
|
|
18
18
|
break;
|
|
19
19
|
}
|
|
20
20
|
return acceptedTypes2;
|
package/dist/multimedia.js
CHANGED
|
@@ -4,12 +4,15 @@ import { default as default4 } from "./modules/multimedia/ImageEditor/components
|
|
|
4
4
|
import { default as default5 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
|
|
5
5
|
import { default as default6 } from "./modules/multimedia/FileCard/FileCard.js";
|
|
6
6
|
import { default as default7 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
|
|
7
|
-
import { default as default8 } from "./modules/multimedia/
|
|
8
|
-
import { default as default9 } from "./modules/multimedia/
|
|
9
|
-
import { default as default10 } from "./modules/multimedia/
|
|
10
|
-
import { default as default11 } from "./modules/multimedia/
|
|
7
|
+
import { default as default8 } from "./modules/multimedia/UploadFiles/UploadFiles.js";
|
|
8
|
+
import { default as default9 } from "./modules/multimedia/UploadCard/UploadCard.js";
|
|
9
|
+
import { default as default10 } from "./modules/multimedia/VideoEmbed/VideoEmbed.js";
|
|
10
|
+
import { default as default11 } from "./modules/multimedia/VideoRecorder/VideoRecorder.js";
|
|
11
|
+
import { default as default12 } from "./modules/multimedia/Workspace/Workspace.js";
|
|
12
|
+
import { default as default13 } from "./modules/multimedia/WorkspaceFolders/WorkspaceFolders.js";
|
|
11
13
|
import { ExternalLinker } from "./modules/multimedia/Linker/ExternalLinker/ExternalLinker.js";
|
|
12
14
|
import { InternalLinker } from "./modules/multimedia/Linker/InternalLinker/InternalLinker.js";
|
|
15
|
+
import { Upload } from "./modules/multimedia/MediaLibrary/innertabs/Upload.js";
|
|
13
16
|
export {
|
|
14
17
|
default2 as AudioRecorder,
|
|
15
18
|
default3 as Embed,
|
|
@@ -19,8 +22,11 @@ export {
|
|
|
19
22
|
default5 as ImagePicker,
|
|
20
23
|
InternalLinker,
|
|
21
24
|
default7 as MediaLibrary,
|
|
22
|
-
|
|
23
|
-
default9 as
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
Upload,
|
|
26
|
+
default9 as UploadCard,
|
|
27
|
+
default8 as UploadFiles,
|
|
28
|
+
default10 as VideoEmbed,
|
|
29
|
+
default11 as VideoRecorder,
|
|
30
|
+
default12 as Workspace,
|
|
31
|
+
default13 as WorkspaceFolders
|
|
26
32
|
};
|
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.20260112150307",
|
|
4
4
|
"description": "Edifice React Library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -123,6 +123,7 @@
|
|
|
123
123
|
"clsx": "^2.1.1",
|
|
124
124
|
"dayjs": "1.11.10",
|
|
125
125
|
"emoji-picker-react": "4.5.2",
|
|
126
|
+
"heic2any": "0.0.4",
|
|
126
127
|
"html-react-parser": "4.2.1",
|
|
127
128
|
"ohash": "1.1.3",
|
|
128
129
|
"pako": "2.1.0",
|
|
@@ -133,9 +134,9 @@
|
|
|
133
134
|
"react-slugify": "^3.0.3",
|
|
134
135
|
"swiper": "^10.1.0",
|
|
135
136
|
"ua-parser-js": "^1.0.36",
|
|
136
|
-
"@edifice.io/bootstrap": "2.5.5-develop.
|
|
137
|
-
"@edifice.io/tiptap-extensions": "2.5.5-develop.
|
|
138
|
-
"@edifice.io/utilities": "2.5.5-develop.
|
|
137
|
+
"@edifice.io/bootstrap": "2.5.5-develop.20260112150307",
|
|
138
|
+
"@edifice.io/tiptap-extensions": "2.5.5-develop.20260112150307",
|
|
139
|
+
"@edifice.io/utilities": "2.5.5-develop.20260112150307"
|
|
139
140
|
},
|
|
140
141
|
"devDependencies": {
|
|
141
142
|
"@babel/plugin-transform-react-pure-annotations": "^7.23.3",
|
|
@@ -166,8 +167,8 @@
|
|
|
166
167
|
"vite": "^5.4.11",
|
|
167
168
|
"vite-plugin-dts": "^4.1.0",
|
|
168
169
|
"vite-tsconfig-paths": "^5.0.1",
|
|
169
|
-
"@edifice.io/client": "2.5.5-develop.
|
|
170
|
-
"@edifice.io/config": "2.5.5-develop.
|
|
170
|
+
"@edifice.io/client": "2.5.5-develop.20260112150307",
|
|
171
|
+
"@edifice.io/config": "2.5.5-develop.20260112150307"
|
|
171
172
|
},
|
|
172
173
|
"peerDependencies": {
|
|
173
174
|
"@react-spring/web": "^9.7.5",
|