@arcblock/ux 3.0.33 → 3.0.35

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.
@@ -21,6 +21,7 @@ export type AvatarProps = {
21
21
  shape?: "" | "rectangle" | "square" | "hexagon" | "circle";
22
22
  blockiesPadding?: true | false;
23
23
  responsive?: false | true;
24
+ useProxyFallback?: boolean;
24
25
  } & Omit<import('../Img').ImgProps, "size" | "src">;
25
26
  export { Avatar as AvatarProps };
26
27
  /**
@@ -34,6 +35,7 @@ export { Avatar as AvatarProps };
34
35
  * shape?: '' | 'rectangle' | 'square' | 'hexagon' | 'circle';
35
36
  * blockiesPadding?: true | false;
36
37
  * responsive?: false | true;
38
+ * useProxyFallback?: boolean;
37
39
  * } & Omit<import('../Img').ImgProps, 'size' | 'src'>} AvatarProps
38
40
  */
39
41
  /**
@@ -51,6 +53,7 @@ declare namespace Avatar {
51
53
  let shape: PropTypes.Requireable<string>;
52
54
  let blockiesPadding: PropTypes.Requireable<boolean>;
53
55
  let responsive: PropTypes.Requireable<boolean>;
56
+ let useProxyFallback: PropTypes.Requireable<boolean>;
54
57
  }
55
58
  export { propTypes_1 as propTypes };
56
59
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { useState as k, useMemo as P } from "react";
3
- import t from "prop-types";
2
+ import { useState as I, useMemo as P } from "react";
3
+ import a from "prop-types";
4
4
  import { ErrorBoundary as z } from "react-error-boundary";
5
5
  import { Shape as D } from "@arcblock/did-motif";
6
6
  import { Box as u } from "@mui/material";
@@ -13,12 +13,12 @@ import { DID_PREFIX as f } from "../Util/constant.js";
13
13
  function d({ ...s }) {
14
14
  const r = Object.assign({}, s);
15
15
  n(r.did) && (r.did = ""), n(r.size) && (r.size = 36), n(r.variant) && (r.variant = "default"), n(r.animation) && (r.animation = !1), n(r.shape) && (r.shape = ""), n(r.blockiesPadding) && (r.blockiesPadding = !0), n(r.responsive) && (r.responsive = !1);
16
- const [c, h] = k(!1), g = E(r, d, []), { did: i = "", size: e, src: p, variant: b, animation: v, shape: x, blockiesPadding: y, responsive: w, ...a } = g, l = P(() => R(i) ? T.createIcon({
16
+ const [l, h] = I(!1), g = E(r, d, []), { did: i = "", size: e, src: p, variant: b, animation: v, shape: x, blockiesPadding: y, responsive: k, ...t } = g, c = P(() => R(i) ? T.createIcon({
17
17
  seed: i.replace(f, "").toLowerCase(),
18
18
  size: 8,
19
19
  scale: 16
20
20
  }).toDataURL() : null, [i]);
21
- if (p && !c)
21
+ if (p && !l)
22
22
  return /* @__PURE__ */ o(
23
23
  m,
24
24
  {
@@ -26,8 +26,9 @@ function d({ ...s }) {
26
26
  src: p,
27
27
  alt: i,
28
28
  onError: () => h(!0),
29
- ...a,
30
- className: `avatar-img--${b} ${a?.className || ""}`,
29
+ ...t,
30
+ className: `avatar-img--${b} ${t?.className || ""}`,
31
+ useProxyFallback: !0,
31
32
  sx: {
32
33
  "& .avatar-img--rounded": {
33
34
  borderRadius: "4px",
@@ -37,17 +38,17 @@ function d({ ...s }) {
37
38
  borderRadius: "100%",
38
39
  overflow: "hidden"
39
40
  },
40
- ...a.sx
41
+ ...t.sx
41
42
  }
42
43
  }
43
44
  );
44
- if (l) {
45
+ if (c) {
45
46
  if (y) {
46
- const I = e > 24 ? 4 : 2;
47
+ const w = e > 24 ? 4 : 2;
47
48
  return /* @__PURE__ */ o(
48
49
  u,
49
50
  {
50
- ...a,
51
+ ...t,
51
52
  sx: {
52
53
  display: "flex",
53
54
  alignItems: "center",
@@ -63,13 +64,13 @@ function d({ ...s }) {
63
64
  borderRadius: `${Math.min(10, Math.floor(0.1 * e + 2))}px`,
64
65
  background: "#ddd"
65
66
  },
66
- ...a.sx
67
+ ...t.sx
67
68
  },
68
- children: /* @__PURE__ */ o("div", { className: "blocky-icon-inner", children: /* @__PURE__ */ o(m, { width: e * 0.7 - I * 2, src: l, alt: i }) })
69
+ children: /* @__PURE__ */ o("div", { className: "blocky-icon-inner", children: /* @__PURE__ */ o(m, { width: e * 0.7 - w * 2, src: c, alt: i }) })
69
70
  }
70
71
  );
71
72
  }
72
- return /* @__PURE__ */ o(m, { ...a, width: e, src: l, alt: i, style: { marginRight: 4 } });
73
+ return /* @__PURE__ */ o(m, { ...t, width: e, src: c, alt: i, style: { marginRight: 4 } });
73
74
  }
74
75
  if (i)
75
76
  return /* @__PURE__ */ o(
@@ -79,25 +80,26 @@ function d({ ...s }) {
79
80
  size: e,
80
81
  animation: v,
81
82
  shape: D[(x || "").toUpperCase()],
82
- responsive: w,
83
- ...a
83
+ responsive: k,
84
+ ...t
84
85
  }
85
86
  );
86
87
  throw new Error(`Invalid DID: ${i}`);
87
88
  }
88
89
  d.propTypes = {
89
- did: t.string,
90
- size: t.number,
91
- variant: t.oneOf(["circle", "rounded", "default"]),
90
+ did: a.string,
91
+ size: a.number,
92
+ variant: a.oneOf(["circle", "rounded", "default"]),
92
93
  // animation 仅对 did motif 有效
93
- animation: t.bool,
94
+ animation: a.bool,
94
95
  // shape 仅对 did motif 有效, 明确指定 motif shape, 而非由 did role type 自动推断 shape
95
- shape: t.oneOf(["", "rectangle", "square", "hexagon", "circle"]),
96
- blockiesPadding: t.bool,
97
- responsive: t.bool
96
+ shape: a.oneOf(["", "rectangle", "square", "hexagon", "circle"]),
97
+ blockiesPadding: a.bool,
98
+ responsive: a.bool,
99
+ useProxyFallback: a.bool
98
100
  };
99
101
  function $(s) {
100
- const r = s.size || 36, c = { rounded: "4px", circle: "100%" }[s.variant] || 0;
102
+ const r = s.size || 36, l = { rounded: "4px", circle: "100%" }[s.variant] || 0;
101
103
  return /* @__PURE__ */ o(
102
104
  z,
103
105
  {
@@ -108,7 +110,7 @@ function $(s) {
108
110
  width: r,
109
111
  height: r,
110
112
  bgcolor: "grey.300",
111
- borderRadius: c
113
+ borderRadius: l
112
114
  }
113
115
  }
114
116
  ),
@@ -1,21 +1,12 @@
1
- import { jsxs as a, jsx as o } from "react/jsx-runtime";
2
- import { Box as r, Typography as n } from "@mui/material";
1
+ import { jsxs as r, jsx as t } from "react/jsx-runtime";
2
+ import { Box as e, Typography as l } from "@mui/material";
3
3
  import i from "../../Img/index.js";
4
- import { BLOCKLET_SERVICE_PATH_PREFIX as s } from "../../Util/constant.js";
5
- const l = (e) => {
6
- if (!e) return "";
7
- try {
8
- return new URL(e).protocol !== "https:" ? (console.warn("Image URL must use HTTPS protocol:", e), "") : `${s}/proxy?url=${e}`;
9
- } catch (t) {
10
- return console.warn("Invalid image URL format:", e, t), "";
11
- }
12
- };
13
- function g({
14
- requestAppInfo: e,
15
- currentAppInfo: t
4
+ function m({
5
+ requestAppInfo: a,
6
+ currentAppInfo: o
16
7
  }) {
17
- return /* @__PURE__ */ a(
18
- r,
8
+ return /* @__PURE__ */ r(
9
+ e,
19
10
  {
20
11
  sx: {
21
12
  textAlign: "center",
@@ -25,8 +16,8 @@ function g({
25
16
  gap: 2
26
17
  },
27
18
  children: [
28
- /* @__PURE__ */ a(
29
- r,
19
+ /* @__PURE__ */ r(
20
+ e,
30
21
  {
31
22
  sx: {
32
23
  display: "flex",
@@ -34,18 +25,9 @@ function g({
34
25
  justifyContent: "center"
35
26
  },
36
27
  children: [
37
- /* @__PURE__ */ o(
38
- i,
39
- {
40
- src: t.appLogo,
41
- alt: "Server",
42
- width: 48,
43
- height: 48,
44
- fallback: l(t.appLogo)
45
- }
46
- ),
47
- /* @__PURE__ */ a(
48
- r,
28
+ /* @__PURE__ */ t(i, { src: o.appLogo, alt: "Server", width: 48, height: 48, useProxyFallback: !0 }),
29
+ /* @__PURE__ */ r(
30
+ e,
49
31
  {
50
32
  sx: {
51
33
  mx: 2,
@@ -60,27 +42,18 @@ function g({
60
42
  }
61
43
  },
62
44
  children: [
63
- /* @__PURE__ */ o(r, { className: "dot" }),
64
- /* @__PURE__ */ o(r, { className: "dot" }),
65
- /* @__PURE__ */ o(r, { className: "dot" })
45
+ /* @__PURE__ */ t(e, { className: "dot" }),
46
+ /* @__PURE__ */ t(e, { className: "dot" }),
47
+ /* @__PURE__ */ t(e, { className: "dot" })
66
48
  ]
67
49
  }
68
50
  ),
69
- /* @__PURE__ */ o(
70
- i,
71
- {
72
- src: e.appLogo,
73
- alt: e.appName,
74
- width: 48,
75
- height: 48,
76
- fallback: l(e.appLogo)
77
- }
78
- )
51
+ /* @__PURE__ */ t(i, { src: a.appLogo, alt: a.appName, width: 48, height: 48, useProxyFallback: !0 })
79
52
  ]
80
53
  }
81
54
  ),
82
- /* @__PURE__ */ a(
83
- n,
55
+ /* @__PURE__ */ r(
56
+ l,
84
57
  {
85
58
  sx: {
86
59
  mb: 1,
@@ -89,7 +62,7 @@ function g({
89
62
  children: [
90
63
  "Authorize",
91
64
  " ",
92
- /* @__PURE__ */ o(r, { component: "span", sx: { color: "primary.main" }, children: e.appName })
65
+ /* @__PURE__ */ t(e, { component: "span", sx: { color: "primary.main" }, children: a.appName })
93
66
  ]
94
67
  }
95
68
  )
@@ -98,5 +71,5 @@ function g({
98
71
  );
99
72
  }
100
73
  export {
101
- g as default
74
+ m as default
102
75
  };
@@ -0,0 +1,7 @@
1
+ type LogoSize = number | string;
2
+ export default function DIDWalletLogo({ width, height, ...rest }: {
3
+ width?: LogoSize;
4
+ height?: LogoSize;
5
+ [key: string]: any;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,12 @@
1
+ import { jsx as L } from "react/jsx-runtime";
2
+ import { Box as N } from "@mui/material";
3
+ function i({
4
+ width: M = "100%",
5
+ height: I = "100%",
6
+ ...j
7
+ }) {
8
+ return /* @__PURE__ */ L(N, { component: "img", width: M, height: I, alt: "did-wallet-logo", ...j, src: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fY2xpcDApIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI2IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQwX2xpbmVhcikiLz48ZyBmaWx0ZXI9InVybCgjcHJlZml4X19maWx0ZXIwX2kpIj48cGF0aCBkPSJNMy41MiA3LjM2QTIuNTYgMi41NiAwIDAxNi4wOCA0LjhoMTkuODRhMi41NiAyLjU2IDAgMDEyLjU2IDIuNTZ2MTIuMTZhMi41NiAyLjU2IDAgMDEtMi41NiAyLjU2SDYuMDhhMi41NiAyLjU2IDAgMDEtMi41Ni0yLjU2VjcuMzZ6IiBmaWxsPSIjOUZDQkZGIi8+PC9nPjxnIGZpbHRlcj0idXJsKCNwcmVmaXhfX2ZpbHRlcjFfZCkiPjxwYXRoIGQ9Ik0yLjU2IDkuMjhhMi41NiAyLjU2IDAgMDEyLjU2LTIuNTZoMjEuNzZhMi41NiAyLjU2IDAgMDEyLjU2IDIuNTZ2MTMuNmEyLjU2IDIuNTYgMCAwMS0yLjU2IDIuNTZINS4xMmEyLjU2IDIuNTYgMCAwMS0yLjU2LTIuNTZWOS4yOHoiIGZpbGw9InVybCgjcHJlZml4X19wYWludDFfbGluZWFyKSIvPjwvZz48ZyBmaWx0ZXI9InVybCgjcHJlZml4X19maWx0ZXIyX2QpIj48cGF0aCBkPSJNMCAyMi4zMmwzMi02LjE2VjMySDB2LTkuNjh6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQyX2xpbmVhcikiLz48L2c+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjUzNiA5LjI0OGg4LjI4OGMuNDA4IDAgLjc0LjMuNzQuNjcydjQuNjRjMCAuMzcxLS4zMzIuNjcyLS43NC42NzJINS41MzZjLS40MDggMC0uNzQtLjMtLjc0LS42NzJ2LS4wNGEuMTU4LjE1OCAwIDEwLS4zMTYgMHYuMDRjMCAuNTMuNDczLjk2IDEuMDU2Ljk2aDguMjg4Yy41ODMgMCAxLjA1Ni0uNDMgMS4wNTYtLjk2VjkuOTJjMC0uNTMtLjQ3My0uOTYtMS4wNTYtLjk2SDUuNTM2Yy0uNTgzIDAtMS4wNTYuNDMtMS4wNTYuOTZ2LjA0YS4xNTguMTU4IDAgMDAuMzE3IDB2LS4wNGMwLS4zNzEuMzMtLjY3Mi43MzktLjY3MnptLTEuMDIzIDQuNjM4YS4xMjcuMTI3IDAgMDAuMDg3LjAzNGgxLjI2N2MuNDcyIDAgLjgzLS4xMDcgMS4wNzYtLjMyMi4yNS0uMjE3LjM4MS0uNTQ4LjM5Ny0uOTkzYTExLjI4MSAxMS4yODEgMCAwMDAtLjczNGMtLjAxMi0uNDI2LS4xNDgtLjc1MS0uNDA2LS45NzUtLjI1OC0uMjI0LS42MjItLjMzNi0xLjA5LS4zMzZINC42YS4xMjcuMTI3IDAgMDAtLjA4Ny4wMzQuMTE3LjExNyAwIDAwLS4wMzMuMDg2djMuMTJjMCAuMDMyLjAxMS4wNi4wMzMuMDg2em0xLjc5NC0uODA2Yy0uMDk5LjEtLjI1My4xNDktLjQ2NC4xNDloLS41MDJWMTEuMjVoLjQ3OGMuMjEgMCAuMzY5LjA1MS40NzQuMTU0LjEwOC4xMDIuMTY2LjI2LjE3Mi40NzUuMDA2LjA5LjAxLjIwOC4wMS4zNTVzLS4wMDQuMjY3LS4wMS4zNmMtLjAwNi4yMjEtLjA1OS4zODMtLjE1OC40ODV6bTEuNjMuODA2YS4xMjcuMTI3IDAgMDAuMDg3LjAzNGguNjRhLjExNi4xMTYgMCAwMC4wODctLjAzNC4xMS4xMSAwIDAwLjAzOC0uMDg2di0zLjEyYS4xMS4xMSAwIDAwLS4wMzgtLjA4Ni4xMTYuMTE2IDAgMDAtLjA4Ni0uMDM0aC0uNjQxYS4xMjcuMTI3IDAgMDAtLjA4Ny4wMzQuMTE3LjExNyAwIDAwLS4wMzMuMDg2djMuMTJjMCAuMDMyLjAxMS4wNi4wMzMuMDg2em0xLjYzNy4wMzRhLjEyNy4xMjcgMCAwMS0uMDg2LS4wMzQuMTI4LjEyOCAwIDAxLS4wMzMtLjA4NnYtMy4xMmMwLS4wMzUuMDEtLjA2NC4wMzMtLjA4NmEuMTI3LjEyNyAwIDAxLjA4Ni0uMDM0aDEuMjQ0Yy40NjkgMCAuODMyLjExMiAxLjA5LjMzNi4yNTkuMjI0LjM5NC41NDkuNDA3Ljk3NGExMS4yNDQgMTEuMjQ0IDAgMDEwIC43MzVjLS4wMTYuNDQ1LS4xNDguNzc2LS4zOTcuOTkzLS4yNDUuMjE1LS42MDQuMzIyLTEuMDc2LjMyMkg5LjU3NHptMS4yNDQtLjY5MWMuMjEgMCAuMzY1LS4wNS40NjQtLjE0OS4wOTktLjEwMi4xNTItLjI2NC4xNTgtLjQ4NWE1LjUyIDUuNTIgMCAwMC4wMS0uMzZjMC0uMTQ3LS4wMDQtLjI2NS0uMDEtLjM1NS0uMDA2LS4yMTQtLjA2NC0uMzczLS4xNzItLjQ3NS0uMTA2LS4xMDMtLjI2My0uMTU0LS40NzQtLjE1NGgtLjQ3OHYxLjk3OGguNTAyem0yLjQ2OC0xLjM4MmEuMjg4LjI4OCAwIDAxLS4yODgtLjI4Ni4yODguMjg4IDAgMDEuNTc2IDBjMCAuMTU4LS4xMy4yODYtLjI4OC4yODZ6bTAgMS40OTVhLjI4OC4yODggMCAwMS0uMjg4LS4yODYuMjg4LjI4OCAwIDAxLjU3NiAwYzAgLjE1OC0uMTMuMjg3LS4yODguMjg3eiIgZmlsbD0iIzQ1OThGQSIvPjwvZz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQwX2xpbmVhciIgeDE9IjE2IiB5MT0iMCIgeDI9IjE2IiB5Mj0iMzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNEY5REY2Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMEE3OUY4Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQxX2xpbmVhciIgeDE9IjE2IiB5MT0iNi43MiIgeDI9IjE2IiB5Mj0iMjUuNDQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjZmZmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRUNFRkZGIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQyX2xpbmVhciIgeDE9IjE2IiB5MT0iMTkuMiIgeDI9IjE4LjQ4IiB5Mj0iMzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii4wMDciIHN0b3AtY29sb3I9IiM3N0IyRjYiLz48c3RvcCBvZmZzZXQ9Ii4wNTUiIHN0b3AtY29sb3I9IiM0RjlERjYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0NTk4RkEiLz48L2xpbmVhckdyYWRpZW50PjxmaWx0ZXIgaWQ9InByZWZpeF9fZmlsdGVyMF9pIiB4PSIzLjUyIiB5PSIxLjgiIHdpZHRoPSIyNC45NiIgaGVpZ2h0PSIyMC4yOCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+PGZlQmxlbmQgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+PGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPjxmZU9mZnNldCBkeT0iLTMiLz48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIi8+PGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMC4yIDAiLz48ZmVCbGVuZCBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3ciLz48L2ZpbHRlcj48ZmlsdGVyIGlkPSJwcmVmaXhfX2ZpbHRlcjFfZCIgeD0iLTEuNDQiIHk9IjEuNzIiIHdpZHRoPSIzNC44OCIgaGVpZ2h0PSIyNi43MiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+PGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPjxmZU9mZnNldCBkeT0iLTEiLz48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIi8+PGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAuMjIwNzY3IDAgMCAwIDAgMC40NzA4MDMgMCAwIDAgMCAwLjcwMTYwNSAwIDAgMCAwLjE4IDAiLz48ZmVCbGVuZCBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3ciLz48ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz48L2ZpbHRlcj48ZmlsdGVyIGlkPSJwcmVmaXhfX2ZpbHRlcjJfZCIgeD0iLTUiIHk9IjExLjE2IiB3aWR0aD0iNDIiIGhlaWdodD0iMjUuODQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMCIgcmVzdWx0PSJoYXJkQWxwaGEiLz48ZmVPZmZzZXQvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIuNSIvPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwLjE0MzgyIDAgMCAwIDAgMC4yMDUwNjUgMCAwIDAgMCAwLjUyMjYzNCAwIDAgMCAwLjI1IDAiLz48ZmVCbGVuZCBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3ciLz48ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz48L2ZpbHRlcj48Y2xpcFBhdGggaWQ9InByZWZpeF9fY2xpcDAiPjxyZWN0IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgcng9IjYiIGZpbGw9IiNmZmYiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=" });
9
+ }
10
+ export {
11
+ i as default
12
+ };
@@ -0,0 +1,7 @@
1
+ type LogoSize = number | string;
2
+ export default function GithubLogo({ width, height, ...props }: {
3
+ width?: LogoSize;
4
+ height?: LogoSize;
5
+ [key: string]: any;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,11 @@
1
+ import { jsx as c } from "react/jsx-runtime";
2
+ function e({
3
+ width: m = 24,
4
+ height: t = 24,
5
+ ...o
6
+ }) {
7
+ return /* @__PURE__ */ c("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 256 250", width: m, height: t, ...o, children: /* @__PURE__ */ c("path", { d: "M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46c6.397 1.185 8.746-2.777 8.746-6.158c0-3.052-.12-13.135-.174-23.83c-35.61 7.742-43.124-15.103-43.124-15.103c-5.823-14.795-14.213-18.73-14.213-18.73c-11.613-7.944.876-7.78.876-7.78c12.853.902 19.621 13.19 19.621 13.19c11.417 19.568 29.945 13.911 37.249 10.64c1.149-8.272 4.466-13.92 8.127-17.116c-28.431-3.236-58.318-14.212-58.318-63.258c0-13.975 5-25.394 13.188-34.358c-1.329-3.224-5.71-16.242 1.24-33.874c0 0 10.749-3.44 35.21 13.121c10.21-2.836 21.16-4.258 32.038-4.307c10.878.049 21.837 1.47 32.066 4.307c24.431-16.56 35.165-13.12 35.165-13.12c6.967 17.63 2.584 30.65 1.255 33.873c8.207 8.964 13.173 20.383 13.173 34.358c0 49.163-29.944 59.988-58.447 63.157c4.591 3.972 8.682 11.762 8.682 23.704c0 17.126-.148 30.91-.148 35.126c0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002C256 57.307 198.691 0 128.001 0m-80.06 182.34c-.282.636-1.283.827-2.194.39c-.929-.417-1.45-1.284-1.15-1.922c.276-.655 1.279-.838 2.205-.399c.93.418 1.46 1.293 1.139 1.931m6.296 5.618c-.61.566-1.804.303-2.614-.591c-.837-.892-.994-2.086-.375-2.66c.63-.566 1.787-.301 2.626.591c.838.903 1 2.088.363 2.66m4.32 7.188c-.785.545-2.067.034-2.86-1.104c-.784-1.138-.784-2.503.017-3.05c.795-.547 2.058-.055 2.861 1.075c.782 1.157.782 2.522-.019 3.08m7.304 8.325c-.701.774-2.196.566-3.29-.49c-1.119-1.032-1.43-2.496-.726-3.27c.71-.776 2.213-.558 3.315.49c1.11 1.03 1.45 2.505.701 3.27m9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033c-1.448-.439-2.395-1.613-2.103-2.626c.301-1.01 1.747-1.484 3.207-1.028c1.446.436 2.396 1.602 2.095 2.622m10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95c-1.53.034-2.769-.82-2.786-1.86c0-1.065 1.202-1.932 2.733-1.958c1.522-.03 2.768.818 2.768 1.868m10.555-.405c.182 1.03-.875 2.088-2.387 2.37c-1.485.271-2.861-.365-3.05-1.386c-.184-1.056.893-2.114 2.376-2.387c1.514-.263 2.868.356 3.061 1.403" }) });
8
+ }
9
+ export {
10
+ e as default
11
+ };
@@ -0,0 +1,7 @@
1
+ import { BoxProps } from '@mui/material';
2
+ import { LOGIN_PROVIDER } from '../Util/constant';
3
+ declare function ProviderIcon({ provider, ...rest }: {
4
+ provider?: (typeof LOGIN_PROVIDER)[keyof typeof LOGIN_PROVIDER] | 'wallet-web';
5
+ } & BoxProps): import("react/jsx-runtime").JSX.Element | null;
6
+ declare const _default: import('react').MemoExoticComponent<typeof ProviderIcon>;
7
+ export default _default;
@@ -0,0 +1,52 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { memo as e } from "react";
3
+ import c from "@iconify-icons/material-symbols/mail-outline-rounded";
4
+ import f from "@iconify-icons/logos/apple";
5
+ import p from "@iconify-icons/logos/google-icon";
6
+ import h from "@iconify-icons/logos/auth0-icon";
7
+ import a from "@iconify-icons/material-symbols/passkey-rounded";
8
+ import { Icon as u } from "@iconify/react";
9
+ import { Box as n } from "@mui/material";
10
+ import { LOGIN_PROVIDER as o } from "../Util/constant.js";
11
+ import { mergeSx as m } from "../Util/style.js";
12
+ import I from "./icons/did-wallet-logo.js";
13
+ import d from "./icons/github-logo.js";
14
+ function L({
15
+ provider: l = "wallet",
16
+ ...r
17
+ }) {
18
+ if (["wallet", "wallet-web"].includes(l))
19
+ return /* @__PURE__ */ t(I, { ...r });
20
+ if (l === o.GITHUB)
21
+ return /* @__PURE__ */ t(n, { component: "span", ...r, sx: m({ display: "inline-block" }, r.sx), children: /* @__PURE__ */ t(d, { width: "100%", height: "100%", fill: "currentColor" }) });
22
+ const i = {
23
+ [o.AUTH0]: h,
24
+ [o.EMAIL]: c,
25
+ [o.APPLE]: f,
26
+ [o.GOOGLE]: p,
27
+ [o.PASSKEY]: a,
28
+ [o.TWITTER]: {
29
+ body: '<path fill="currentColor" d="M149.079 108.399L242.33 0h-22.098l-80.97 94.12L74.59 0H0l97.796 142.328L0 256h22.1l85.507-99.395L175.905 256h74.59L149.073 108.399zM118.81 143.58l-9.909-14.172l-78.84-112.773h33.943l63.625 91.011l9.909 14.173l82.705 118.3H186.3l-67.49-96.533z"/>',
30
+ width: 251,
31
+ height: 251
32
+ }
33
+ };
34
+ return i[l] ? /* @__PURE__ */ t(
35
+ n,
36
+ {
37
+ component: u,
38
+ icon: i[l],
39
+ fill: "currentColor",
40
+ ...r,
41
+ sx: m(
42
+ { width: "100%", height: "100%" },
43
+ l === o.TWITTER ? { scale: "0.8" } : {},
44
+ r.sx
45
+ )
46
+ }
47
+ ) : null;
48
+ }
49
+ const M = e(L);
50
+ export {
51
+ M as default
52
+ };
@@ -19,6 +19,13 @@ export type ImgExProps = {
19
19
  lazy?: boolean | undefined;
20
20
  placeholder?: string | undefined;
21
21
  fallback?: string | undefined;
22
+ /**
23
+ * - 是否使用代理 fallback, 用于解决 CSP 的问题
24
+ */
25
+ /**
26
+ * - 是否使用代理 fallback, 用于解决 CSP 的问题
27
+ */
28
+ useProxyFallback?: boolean | undefined;
22
29
  className?: string | undefined;
23
30
  onError?: Function | undefined;
24
31
  onSuccess?: Function | undefined;
@@ -29,7 +36,7 @@ export type ImgProps = ImgExProps & import('@mui/material').BoxProps;
29
36
  * @param {ImgProps} props
30
37
  * @returns {React.ReactComponentElement}
31
38
  */
32
- declare function Img({ lazy, width, height, repeat, ratio, alt, size, position, src, placeholder, fallback, style, className, onError, onSuccess, ...rest }: ImgProps): import('react').ReactComponentElement<any, Pick<any, string | number | symbol>>;
39
+ declare function Img({ lazy, width, height, repeat, ratio, alt, size, position, src, useProxyFallback, placeholder, fallback, style, className, onError, onSuccess, ...rest }: ImgProps): import('react').ReactComponentElement<any, Pick<any, string | number | symbol>>;
33
40
  declare namespace Img {
34
41
  namespace propTypes {
35
42
  let src: PropTypes.Validator<string>;
@@ -47,5 +54,6 @@ declare namespace Img {
47
54
  let className: PropTypes.Requireable<string>;
48
55
  let onError: PropTypes.Requireable<(...args: any[]) => any>;
49
56
  let onSuccess: PropTypes.Requireable<(...args: any[]) => any>;
57
+ let useProxyFallback: PropTypes.Requireable<boolean>;
50
58
  }
51
59
  }
package/lib/Img/index.js CHANGED
@@ -1,91 +1,101 @@
1
- import { jsx as i, jsxs as X } from "react/jsx-runtime";
2
- import { useState as h, useMemo as b, useEffect as x } from "react";
1
+ import { jsx as s, jsxs as F } from "react/jsx-runtime";
2
+ import { useState as R, useMemo as d, useEffect as w } from "react";
3
3
  import e from "prop-types";
4
- import { useInView as _ } from "react-intersection-observer";
5
- import q from "@iconify-icons/material-symbols/warning-rounded";
6
- import B from "@iconify-icons/material-symbols/image-rounded";
7
- import { Icon as y } from "@iconify/react";
8
- import { Box as C } from "@mui/material";
9
- import S from "lodash/noop";
10
- import { mergeSx as D } from "../Util/style.js";
11
- const M = "Img", N = {
12
- root: `${M}-root`
4
+ import { useInView as V } from "react-intersection-observer";
5
+ import W from "@iconify-icons/material-symbols/warning-rounded";
6
+ import X from "@iconify-icons/material-symbols/image-rounded";
7
+ import { Icon as k } from "@iconify/react";
8
+ import { Box as B } from "@mui/material";
9
+ import $ from "lodash/noop";
10
+ import { mergeSx as q } from "../Util/style.js";
11
+ import { BLOCKLET_SERVICE_PATH_PREFIX as A } from "../Util/constant.js";
12
+ const D = (r) => {
13
+ if (!r) return "";
14
+ try {
15
+ return new URL(r).protocol !== "https:" ? (console.warn("Image URL must use HTTPS protocol:", r), "") : `${A}/proxy?url=${encodeURIComponent(r)}`;
16
+ } catch (t) {
17
+ return console.warn("Invalid image URL format:", r, t), "";
18
+ }
19
+ }, K = "Img", v = {
20
+ root: `${K}-root`
13
21
  };
14
- function O({
15
- lazy: v = !0,
16
- width: a = null,
17
- height: g = null,
18
- repeat: w = "no-repeat",
19
- ratio: $ = 1,
20
- alt: k = null,
21
- size: u = "cover",
22
- position: d = "top center",
23
- src: s,
24
- placeholder: l = null,
25
- fallback: t = null,
26
- style: R = null,
27
- className: E = "",
28
- onError: j = S,
29
- onSuccess: z = S,
30
- ...p
22
+ function M({
23
+ lazy: r = !0,
24
+ width: t = null,
25
+ height: f = null,
26
+ repeat: E = "no-repeat",
27
+ ratio: N = 1,
28
+ alt: P = null,
29
+ size: p = "cover",
30
+ position: I = "top center",
31
+ src: n,
32
+ useProxyFallback: b = !1,
33
+ // 是否使用代理 fallback, 用于解决 CSP 的问题
34
+ placeholder: c = null,
35
+ fallback: m = null,
36
+ style: T = null,
37
+ className: j = "",
38
+ onError: h = $,
39
+ onSuccess: L = $,
40
+ ...y
31
41
  }) {
32
- const [P, f] = v ? _({ threshold: 0, triggerOnce: !0 }) : [null, !0], [o, m] = h("init"), [n, I] = h(!1), c = b(() => {
42
+ const [U, x] = r ? V({ threshold: 0, triggerOnce: !0 }) : [null, !0], [o, g] = R("init"), [l, S] = R(!1), a = d(() => m || (b && n ? D(n) : m), [n, b, m]), u = d(() => {
33
43
  switch (o) {
34
44
  case "init":
35
45
  case "loading":
36
- return l;
46
+ return c;
37
47
  case "error":
38
- return n ? null : t;
48
+ return l ? null : a;
39
49
  case "loaded":
40
- return s;
50
+ return n;
41
51
  default:
42
52
  return null;
43
53
  }
44
- }, [l, t, s, o, n]), T = a && g ? 100 * g / a : $ * 100, W = b(
54
+ }, [c, a, n, o, l]), _ = t && f ? 100 * f / t : N * 100, C = d(
45
55
  () => ({
46
- backgroundImage: c ? `url(${c})` : "",
47
- backgroundPosition: d,
48
- backgroundSize: u,
49
- backgroundRepeat: w,
50
- paddingTop: `${T}%`
56
+ backgroundImage: u ? `url(${u})` : "",
57
+ backgroundPosition: I,
58
+ backgroundSize: p,
59
+ backgroundRepeat: E,
60
+ paddingTop: `${_}%`
51
61
  }),
52
62
  // eslint-disable-next-line react-hooks/exhaustive-deps
53
- [c, d, u, o]
54
- ), F = {
55
- ...R,
63
+ [u, I, p, o]
64
+ ), H = {
65
+ ...T,
56
66
  display: "inline-block",
57
- width: a ? `${a}px` : "100%"
67
+ width: t ? `${t}px` : "100%"
58
68
  };
59
- function H() {
60
- const r = new Image();
61
- r.src = s, m("loading"), I(!1), r.onload = () => {
62
- m("loaded"), z();
63
- }, r.onerror = (V) => {
64
- m("error"), j(V);
69
+ function O() {
70
+ const i = new Image();
71
+ i.src = n, g("loading"), S(!1), i.onload = () => {
72
+ g("loaded"), L();
73
+ }, i.onerror = () => {
74
+ g("error");
65
75
  };
66
76
  }
67
- return x(() => {
68
- f && H();
69
- }, [f]), x(() => {
70
- if (o === "error" && t && !n) {
71
- const r = new Image();
72
- r.src = t, r.onload = () => {
73
- }, r.onerror = () => {
74
- I(!0);
77
+ return w(() => {
78
+ x && O();
79
+ }, [x]), w(() => {
80
+ if (o === "error" && a && !l) {
81
+ const i = new Image();
82
+ i.src = a, i.onload = () => {
83
+ }, i.onerror = (z) => {
84
+ S(!0), o === "error" && h(z);
75
85
  };
76
86
  }
77
- }, [o, t, n]), // paddingTop 要求元素本身的宽度为 100%,所以只能加一个外层元素去限制宽度
78
- /* @__PURE__ */ i(
79
- C,
87
+ }, [o, a, l, h]), // paddingTop 要求元素本身的宽度为 100%,所以只能加一个外层元素去限制宽度
88
+ /* @__PURE__ */ s(
89
+ B,
80
90
  {
81
91
  "data-id": "2",
82
- ref: P,
83
- style: F,
92
+ ref: U,
93
+ style: H,
84
94
  className: "arcblock_ux_img-wrapper",
85
- ...p,
86
- sx: D(
95
+ ...y,
96
+ sx: q(
87
97
  {
88
- [`& .${N.root}`]: {
98
+ [`& .${v.root}`]: {
89
99
  position: "relative",
90
100
  overflow: "hidden",
91
101
  "& .image--state, & .image--img": {
@@ -117,17 +127,17 @@ function O({
117
127
  }
118
128
  }
119
129
  },
120
- p.sx
130
+ y.sx
121
131
  ),
122
- children: /* @__PURE__ */ X("div", { className: `image ${E} ${N.root}`, style: W, children: [
123
- (n || !t && o === "error") && /* @__PURE__ */ i("div", { className: "image--state", title: "Image load error", children: /* @__PURE__ */ i(y, { icon: q, className: "image--icon" }) }),
124
- !l && o === "loading" && /* @__PURE__ */ i("div", { className: "image--state", title: "loading image", children: /* @__PURE__ */ i(y, { icon: B, className: "image--icon" }) }),
125
- o === "loaded" && /* @__PURE__ */ i("img", { className: "image--img", src: s, alt: k })
132
+ children: /* @__PURE__ */ F("div", { className: `image ${j} ${v.root}`, style: C, children: [
133
+ (l || !a && o === "error") && /* @__PURE__ */ s("div", { className: "image--state", title: "Image load error", children: /* @__PURE__ */ s(k, { icon: W, className: "image--icon" }) }),
134
+ !c && o === "loading" && /* @__PURE__ */ s("div", { className: "image--state", title: "loading image", children: /* @__PURE__ */ s(k, { icon: X, className: "image--icon" }) }),
135
+ o === "loaded" && /* @__PURE__ */ s("img", { className: "image--img", src: n, alt: P })
126
136
  ] })
127
137
  }
128
138
  );
129
139
  }
130
- O.propTypes = {
140
+ M.propTypes = {
131
141
  src: e.string.isRequired,
132
142
  alt: e.string,
133
143
  size: e.string,
@@ -142,8 +152,9 @@ O.propTypes = {
142
152
  fallback: e.string,
143
153
  className: e.string,
144
154
  onError: e.func,
145
- onSuccess: e.func
155
+ onSuccess: e.func,
156
+ useProxyFallback: e.bool
146
157
  };
147
158
  export {
148
- O as default
159
+ M as default
149
160
  };