@flozy/editor 9.9.2 → 9.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,10 @@
1
- import React from "react";
2
- import { Box, Card, CardMedia, CardContent, Typography } from "@mui/material";
1
+ import React, { useEffect, useState } from "react";
2
+ import Box from "@mui/material/Box";
3
+ import Card from "@mui/material/Card";
4
+ import CardMedia from "@mui/material/CardMedia";
5
+ import CardContent from "@mui/material/CardContent";
6
+ import Typography from "@mui/material/Typography";
7
+ import Skeleton from "@mui/material/Skeleton";
3
8
  import Icon from "../../common/Icon";
4
9
  import { useEditorContext } from "../../hooks/useMouseMove";
5
10
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -15,13 +20,26 @@ const SearchAttachment = props => {
15
20
  metadata
16
21
  } = customProps;
17
22
  const {
18
- title,
19
- type
23
+ type,
24
+ id
20
25
  } = element;
21
26
  const {
22
27
  theme
23
28
  } = useEditorContext();
29
+ const [title, setTitle] = useState("");
30
+ const [showSkeleton, setShowSkeleton] = useState(false);
24
31
  const label = Boolean(title?.trim()) ? title : 'Untitled';
32
+ useEffect(() => {
33
+ const fetchTitle = async id => {
34
+ setShowSkeleton(true);
35
+ const title = await customProps?.services('getDocTitle', id);
36
+ setTitle(title?.data);
37
+ setShowSkeleton(false);
38
+ };
39
+ if (id) {
40
+ fetchTitle(id);
41
+ }
42
+ }, []);
25
43
  const handleClick = () => {
26
44
  if (metadata && metadata?.actionHandler) {
27
45
  metadata?.actionHandler(type, element);
@@ -38,15 +56,15 @@ const SearchAttachment = props => {
38
56
  children: /*#__PURE__*/_jsxs(Card, {
39
57
  sx: {
40
58
  display: "flex",
41
- justifyContent: "flex-start",
42
- alignItems: "flex-end",
59
+ justifyContent: showSkeleton ? "center" : "flex-start",
60
+ alignItems: showSkeleton ? "center" : "flex-end",
43
61
  width: "fit-content",
44
62
  maxWidth: '250px',
45
63
  padding: "0px 10px",
46
64
  boxShadow: "none",
47
65
  border: `1px solid ${theme?.palette?.primary?.slashBrainBorder} !important`,
48
66
  borderRadius: "7px !important",
49
- background: `${theme?.palette?.containers?.slashBrainCardBg} !important`,
67
+ background: showSkeleton ? `${theme?.palette?.editor?.menuOptionHoverBackground} !important` : `${theme?.palette?.containers?.slashBrainCardBg} !important`,
50
68
  cursor: 'pointer',
51
69
  margin: '4px 0px',
52
70
  lineHeight: 1.43,
@@ -76,7 +94,12 @@ const SearchAttachment = props => {
76
94
  width: "unset !important"
77
95
  }
78
96
  },
79
- children: /*#__PURE__*/_jsx(Icon, {
97
+ children: showSkeleton ? /*#__PURE__*/_jsx(Skeleton, {
98
+ variant: "circular",
99
+ width: 14,
100
+ height: 14,
101
+ animation: "wave"
102
+ }) : /*#__PURE__*/_jsx(Icon, {
80
103
  icon: "docsIcon"
81
104
  })
82
105
  }), /*#__PURE__*/_jsx(CardContent, {
@@ -94,7 +117,15 @@ const SearchAttachment = props => {
94
117
  width: "unset !important"
95
118
  }
96
119
  },
97
- children: /*#__PURE__*/_jsxs(Typography, {
120
+ children: showSkeleton ? /*#__PURE__*/_jsx(Skeleton, {
121
+ variant: "text",
122
+ width: 140,
123
+ height: 20,
124
+ animation: "wave",
125
+ sx: {
126
+ borderRadius: "4px"
127
+ }
128
+ }) : /*#__PURE__*/_jsxs(Typography, {
98
129
  sx: {
99
130
  fontWeight: "500",
100
131
  background: theme?.palette?.text?.slashBrainText,
@@ -30,6 +30,7 @@ const SearchButton = /*#__PURE__*/forwardRef((props, ref) => {
30
30
  const [skip, setSkip] = useState(0);
31
31
  const [search, setSearch] = useState("");
32
32
  const [isLoading, setIsLoading] = useState(false);
33
+ const [total, setTotal] = useState(0);
33
34
  const [debouncedSearch] = useDebounce(search, 300);
34
35
  const limit = 20;
35
36
  const observer = useRef();
@@ -63,24 +64,24 @@ const SearchButton = /*#__PURE__*/forwardRef((props, ref) => {
63
64
  }
64
65
  };
65
66
  useEffect(() => {
66
- getDocs({
67
- debouncedSearch,
68
- skip,
69
- limit,
70
- current_doc_id: currentId
71
- });
67
+ getDocs();
72
68
  }, [skip, debouncedSearch]);
73
69
  const getDocs = async () => {
70
+ if (isLoading) return;
71
+ if (total > 0 && mapData?.length >= total) return;
74
72
  setIsLoading(true);
75
73
  try {
76
74
  if (otherProps?.services) {
77
75
  const result = await otherProps?.services("getDocs", {
78
76
  skip,
79
77
  limit,
80
- search,
78
+ search: debouncedSearch,
81
79
  current_doc_id: currentId
82
80
  });
83
- setMapData(prev => skip === 0 ? result.data : [...prev, ...result.data]);
81
+ const docs = result?.data?.docs || [];
82
+ const totalCount = result?.data?.total || 0;
83
+ setMapData(prev => skip === 0 ? docs : [...prev, ...docs]);
84
+ setTotal(totalCount);
84
85
  }
85
86
  } catch (error) {
86
87
  console.error("Error fetching documents:", error);
@@ -259,7 +259,7 @@ const SearchAndDocList = ({
259
259
  xs: 12,
260
260
  children: /*#__PURE__*/_jsx(Typography, {
261
261
  sx: {
262
- display: mapData?.length === 0 ? 'flex' : 'none',
262
+ display: mapData?.length === 0 && !isLoading ? 'flex' : 'none',
263
263
  alignItems: "center",
264
264
  justifyContent: "center",
265
265
  color: theme?.palette?.text?.secondary,
@@ -269,15 +269,17 @@ const SearchAndDocList = ({
269
269
  },
270
270
  children: "No docs"
271
271
  })
272
- }), isLoading && /*#__PURE__*/_jsx(Grid, {
272
+ }), /*#__PURE__*/_jsx(Grid, {
273
273
  item: true,
274
+ xs: 12,
274
275
  sx: {
275
- display: "flex",
276
+ display: isLoading ? 'flex' : 'none',
277
+ alignItems: "center",
276
278
  justifyContent: "center",
277
- alignItems: 'center',
278
- minHeight: '400px',
279
- padding: '0px 16px 8px',
280
- position: 'absolute'
279
+ color: theme?.palette?.text?.secondary,
280
+ fontSize: '12px',
281
+ padding: '20px',
282
+ fontWeight: 700
281
283
  },
282
284
  children: /*#__PURE__*/_jsx(CircularProgress, {})
283
285
  })]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "9.9.2",
3
+ "version": "9.9.4",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"