@canmingir/link 1.2.38 → 1.2.39

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canmingir/link",
3
- "version": "1.2.38",
3
+ "version": "1.2.39",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -3,36 +3,56 @@ import Link from "@mui/material/Link";
3
3
  import { RouterLink } from "../../routes/components";
4
4
  import config from "../../config/config";
5
5
 
6
- import React, { useEffect, useState } from "react";
6
+ import React, { useEffect, useRef, useState } from "react";
7
7
 
8
- const Logo = ({ disabledLink = false, sx, maxSize = 99 }) => {
8
+ const resolvedDimensions = {};
9
+
10
+ const Logo = ({ disabledLink = false, sx, maxSize = 65, isLogin = false }) => {
9
11
  const { icon } = config().template.login;
10
- const [dimensions, setDimensions] = useState({
11
- width: maxSize,
12
- height: maxSize,
13
- });
12
+ const key = `${icon}`;
13
+
14
+ const [dimensions, setDimensions] = useState(
15
+ resolvedDimensions[key] || { width: maxSize, height: maxSize }
16
+ );
14
17
 
15
18
  useEffect(() => {
16
- if (icon) {
17
- const img = new Image();
18
- img.onload = () => {
19
- const { naturalWidth, naturalHeight } = img;
20
-
21
- if (naturalWidth > maxSize || naturalHeight > maxSize) {
22
- setDimensions({
23
- width: 40,
24
- height: 40,
25
- });
19
+ if (!icon || resolvedDimensions[key]) return;
20
+
21
+ const img = new Image();
22
+ img.onload = () => {
23
+ const { naturalWidth, naturalHeight } = img;
24
+ const isSquare = naturalWidth === naturalHeight;
25
+ let newDimensions;
26
+
27
+ if (naturalWidth > maxSize || naturalHeight > maxSize) {
28
+ if (isSquare) {
29
+ newDimensions = {
30
+ width: isLogin ? maxSize : 40,
31
+ height: isLogin ? maxSize : 40,
32
+ };
26
33
  } else {
27
- setDimensions({
28
- width: naturalWidth,
29
- height: naturalHeight,
30
- });
34
+ const aspectRatio = naturalWidth / naturalHeight;
35
+ if (naturalWidth >= naturalHeight) {
36
+ newDimensions = {
37
+ width: maxSize,
38
+ height: Math.round(maxSize / aspectRatio),
39
+ };
40
+ } else {
41
+ newDimensions = {
42
+ width: Math.round(maxSize * aspectRatio),
43
+ height: maxSize,
44
+ };
45
+ }
31
46
  }
32
- };
33
- img.src = icon;
34
- }
35
- }, [icon, maxSize]);
47
+ } else {
48
+ newDimensions = { width: naturalWidth, height: naturalHeight };
49
+ }
50
+
51
+ resolvedDimensions[key] = newDimensions;
52
+ setDimensions(newDimensions);
53
+ };
54
+ img.src = icon;
55
+ }, [icon, maxSize, key]);
36
56
 
37
57
  const logo = (
38
58
  <Box
@@ -47,9 +67,7 @@ const Logo = ({ disabledLink = false, sx, maxSize = 99 }) => {
47
67
  />
48
68
  );
49
69
 
50
- if (disabledLink) {
51
- return logo;
52
- }
70
+ if (disabledLink) return logo;
53
71
 
54
72
  return (
55
73
  <Link component={RouterLink} href="/" sx={{ display: "contents" }}>
@@ -104,7 +104,7 @@ export default function NavVertical({ openNav, onCloseNav }) {
104
104
  mt: 3,
105
105
  }}
106
106
  >
107
- <Logo sx={{ ml: 4, mb: 1 }} />
107
+ <Logo sx={{ ml: 4 }} />
108
108
  <Typography
109
109
  sx={{
110
110
  ml: 1,
@@ -130,8 +130,9 @@ export default function NavVertical({ openNav, onCloseNav }) {
130
130
  marginBottom: lgUp ? 3 : 0,
131
131
  position: lgUp ? "static" : "fixed",
132
132
  bottom: lgUp ? "auto" : 66,
133
- width: "100%"
134
- }}>
133
+ width: "100%",
134
+ }}
135
+ >
135
136
  {actionButtons &&
136
137
  actionButtons?.map((Action, index) => (
137
138
  <Box key={index} component={Action}></Box>
@@ -190,7 +191,7 @@ export default function NavVertical({ openNav, onCloseNav }) {
190
191
  sx: {
191
192
  width: NAV.W_VERTICAL,
192
193
  },
193
- }
194
+ },
194
195
  }}
195
196
  >
196
197
  {renderContent}
@@ -46,11 +46,10 @@ export default function AuthModernLayout() {
46
46
  }}
47
47
  >
48
48
  <Logo
49
+ isLogin={true}
49
50
  maxSize={140}
50
51
  sx={{
51
52
  mb: 2,
52
- width: 72,
53
- height: 72,
54
53
  alignSelf: "center",
55
54
  }}
56
55
  />
@@ -241,7 +241,7 @@ const FlowViewport = ({
241
241
  ref={containerRef}
242
242
  onMouseDown={handleViewportMouseDown}
243
243
  sx={{
244
- width: "100vw",
244
+ width: "100%",
245
245
  height: "100vh",
246
246
  overflow: "hidden",
247
247
  bgcolor: "none",