@ichaingo/with-login 1.4.30 → 1.4.32

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