@ichaingo/with-login 1.4.28 → 1.4.30
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/index.d.ts +29 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +174 -69
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,32 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export declare const isLogin: () => boolean;
|
|
3
|
+
export interface UseLoginResult {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
openLogin: () => void;
|
|
6
|
+
closeLogin: () => void;
|
|
7
|
+
setLoginOpen: (open: boolean) => void;
|
|
8
|
+
loginUrl: string;
|
|
9
|
+
currentTheme: string;
|
|
10
|
+
iframeLoaded: boolean;
|
|
11
|
+
handleIframeLoad: () => void;
|
|
12
|
+
mounted: boolean;
|
|
13
|
+
Trigger: React.FC<React.HTMLAttributes<HTMLDivElement>>;
|
|
14
|
+
LoginModal: React.FC;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 登录逻辑 + UI 全都在这个 hook 里面
|
|
18
|
+
* - 返回 Trigger:包裹触发登录的元素
|
|
19
|
+
* - 返回 LoginModal:实际渲染登录弹窗(使用 createPortal)
|
|
20
|
+
*/
|
|
21
|
+
export declare function useLogin(): UseLoginResult;
|
|
1
22
|
interface WithLoginProps extends React.PropsWithChildren, React.HTMLAttributes<any> {
|
|
2
|
-
children
|
|
3
|
-
onClick: () => void;
|
|
23
|
+
children?: React.ReactNode;
|
|
4
24
|
}
|
|
5
|
-
|
|
6
|
-
|
|
25
|
+
/**
|
|
26
|
+
* 一个简单封装:
|
|
27
|
+
* - children 作为触发区域
|
|
28
|
+
* - 内部自动渲染 LoginModal
|
|
29
|
+
*/
|
|
30
|
+
export declare function WithLogin({ children, ...rest }: WithLoginProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export default WithLogin;
|
|
7
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAOhE,eAAO,MAAM,OAAO,eAEnB,CAAC;AAEF,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;IACxD,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,cAAc,CA2HzC;AAED,UAAU,cACR,SAAQ,KAAK,CAAC,iBAAiB,EAC7B,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,2CAS9D;AAED,eAAe,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,76 +1,181 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import {
|
|
3
|
-
import { useState as
|
|
4
|
-
import { createPortal as
|
|
5
|
-
import { useLocale as
|
|
6
|
-
import { twMerge as
|
|
7
|
-
import { useTheme as
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
import { jsx as u, jsxs as w, Fragment as T } from "react/jsx-runtime";
|
|
3
|
+
import { useState as x, useEffect as L, useCallback as f } from "react";
|
|
4
|
+
import { createPortal as j } from "react-dom";
|
|
5
|
+
import { useLocale as R } from "next-intl";
|
|
6
|
+
import { twMerge as m } from "tailwind-merge";
|
|
7
|
+
import { useTheme as b } from "@ichaingo/next-themes";
|
|
8
|
+
/*! js-cookie v3.0.5 | MIT */
|
|
9
|
+
function h(e) {
|
|
10
|
+
for (var t = 1; t < arguments.length; t++) {
|
|
11
|
+
var i = arguments[t];
|
|
12
|
+
for (var a in i)
|
|
13
|
+
e[a] = i[a];
|
|
14
|
+
}
|
|
15
|
+
return e;
|
|
16
|
+
}
|
|
17
|
+
var z = {
|
|
18
|
+
read: function(e) {
|
|
19
|
+
return e[0] === '"' && (e = e.slice(1, -1)), e.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
|
|
20
|
+
},
|
|
21
|
+
write: function(e) {
|
|
22
|
+
return encodeURIComponent(e).replace(
|
|
23
|
+
/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
|
|
24
|
+
decodeURIComponent
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
function C(e, t) {
|
|
29
|
+
function i(o, c, n) {
|
|
30
|
+
if (!(typeof document > "u")) {
|
|
31
|
+
n = h({}, t, n), typeof n.expires == "number" && (n.expires = new Date(Date.now() + n.expires * 864e5)), n.expires && (n.expires = n.expires.toUTCString()), o = encodeURIComponent(o).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
|
|
32
|
+
var s = "";
|
|
33
|
+
for (var r in n)
|
|
34
|
+
n[r] && (s += "; " + r, n[r] !== !0 && (s += "=" + n[r].split(";")[0]));
|
|
35
|
+
return document.cookie = o + "=" + e.write(c, o) + s;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function a(o) {
|
|
39
|
+
if (!(typeof document > "u" || arguments.length && !o)) {
|
|
40
|
+
for (var c = document.cookie ? document.cookie.split("; ") : [], n = {}, s = 0; s < c.length; s++) {
|
|
41
|
+
var r = c[s].split("="), d = r.slice(1).join("=");
|
|
42
|
+
try {
|
|
43
|
+
var l = decodeURIComponent(r[0]);
|
|
44
|
+
if (n[l] = e.read(d, l), o === l)
|
|
45
|
+
break;
|
|
46
|
+
} catch {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return o ? n[o] : n;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return Object.create(
|
|
53
|
+
{
|
|
54
|
+
set: i,
|
|
55
|
+
get: a,
|
|
56
|
+
remove: function(o, c) {
|
|
57
|
+
i(
|
|
58
|
+
o,
|
|
59
|
+
"",
|
|
60
|
+
h({}, c, {
|
|
61
|
+
expires: -1
|
|
62
|
+
})
|
|
63
|
+
);
|
|
64
|
+
},
|
|
65
|
+
withAttributes: function(o) {
|
|
66
|
+
return C(this.converter, h({}, this.attributes, o));
|
|
67
|
+
},
|
|
68
|
+
withConverter: function(o) {
|
|
69
|
+
return C(h({}, this.converter, o), this.attributes);
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
attributes: { value: Object.freeze(t) },
|
|
74
|
+
converter: { value: Object.freeze(e) }
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
var B = C(z, { path: "/" });
|
|
79
|
+
const $ = () => !!B.get("id_token");
|
|
80
|
+
function O() {
|
|
81
|
+
const [e, t] = x(!1), [i, a] = x(!1), [o, c] = x(!1), n = R(), { resolvedTheme: s } = b();
|
|
82
|
+
L(() => {
|
|
83
|
+
a(!0);
|
|
12
84
|
}, []);
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
85
|
+
const r = i && s ? s : "light", d = `${process.env.NEXT_PUBLIC_AUTH_URL}/${n}/login?mode=dialog&theme=${r}`, l = f(() => {
|
|
86
|
+
t(!0), c(!1);
|
|
87
|
+
}, []), p = f(() => {
|
|
88
|
+
t(!1);
|
|
89
|
+
}, []), y = f((g) => {
|
|
90
|
+
t(g), g && c(!1);
|
|
91
|
+
}, []);
|
|
92
|
+
L(() => {
|
|
93
|
+
e && i && c(!1);
|
|
94
|
+
}, [s, e, i]);
|
|
95
|
+
const v = f(() => {
|
|
96
|
+
c(!0);
|
|
97
|
+
}, []), U = f(
|
|
98
|
+
({ children: g, ...k }) => /* @__PURE__ */ u("div", { onClick: l, style: { cursor: "pointer" }, ...k, children: g }),
|
|
99
|
+
[l]
|
|
100
|
+
), I = f(() => e ? j(
|
|
101
|
+
/* @__PURE__ */ w(
|
|
102
|
+
"div",
|
|
103
|
+
{
|
|
104
|
+
className: m(
|
|
105
|
+
"fixed w-0 h-9 bg-[rgba(0,0,0,0.7)] z-1000",
|
|
106
|
+
e && "top-0 left-0 w-full h-full"
|
|
107
|
+
),
|
|
108
|
+
children: [
|
|
109
|
+
/* @__PURE__ */ u(
|
|
110
|
+
"div",
|
|
111
|
+
{
|
|
112
|
+
className: m(
|
|
113
|
+
"absolute inset-0 transition-opacity duration-300",
|
|
114
|
+
o ? "opacity-0 pointer-events-none" : "opacity-100 z-30"
|
|
115
|
+
)
|
|
116
|
+
}
|
|
31
117
|
),
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
118
|
+
/* @__PURE__ */ u(
|
|
119
|
+
"iframe",
|
|
120
|
+
{
|
|
121
|
+
src: d,
|
|
122
|
+
className: m(
|
|
123
|
+
"w-full h-full border-none relative z-10 transition-opacity duration-300",
|
|
124
|
+
o ? "opacity-100" : "opacity-0"
|
|
125
|
+
),
|
|
126
|
+
title: "Login",
|
|
127
|
+
onLoad: v,
|
|
128
|
+
sandbox: "allow-scripts allow-forms allow-same-origin"
|
|
129
|
+
},
|
|
130
|
+
`login-iframe-${r}`
|
|
131
|
+
),
|
|
132
|
+
/* @__PURE__ */ u(
|
|
133
|
+
"button",
|
|
134
|
+
{
|
|
135
|
+
onClick: p,
|
|
136
|
+
className: m(
|
|
137
|
+
"absolute top-2 right-2 bg-transparent border-none text-2xl cursor-pointer z-20",
|
|
138
|
+
r === "dark" ? "text-white" : "text-gray-800"
|
|
139
|
+
),
|
|
140
|
+
children: "×"
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
),
|
|
146
|
+
document.body
|
|
147
|
+
) : null, [
|
|
148
|
+
p,
|
|
149
|
+
r,
|
|
150
|
+
v,
|
|
151
|
+
o,
|
|
152
|
+
e,
|
|
153
|
+
d
|
|
154
|
+
]);
|
|
155
|
+
return {
|
|
156
|
+
isOpen: e,
|
|
157
|
+
openLogin: l,
|
|
158
|
+
closeLogin: p,
|
|
159
|
+
setLoginOpen: y,
|
|
160
|
+
loginUrl: d,
|
|
161
|
+
currentTheme: r,
|
|
162
|
+
iframeLoaded: o,
|
|
163
|
+
handleIframeLoad: v,
|
|
164
|
+
mounted: i,
|
|
165
|
+
Trigger: U,
|
|
166
|
+
LoginModal: I
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function N({ children: e, ...t }) {
|
|
170
|
+
const { Trigger: i, LoginModal: a } = O();
|
|
171
|
+
return /* @__PURE__ */ w(T, { children: [
|
|
172
|
+
e && /* @__PURE__ */ u(i, { ...t, children: e }),
|
|
173
|
+
/* @__PURE__ */ u(a, {})
|
|
72
174
|
] });
|
|
73
175
|
}
|
|
74
176
|
export {
|
|
75
|
-
|
|
177
|
+
N as WithLogin,
|
|
178
|
+
N as default,
|
|
179
|
+
$ as isLogin,
|
|
180
|
+
O as useLogin
|
|
76
181
|
};
|