@ichaingo/with-login 1.4.31 → 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,CAiHzC;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,133 +1,137 @@
1
1
  'use client';
2
- import { jsx as d, jsxs as x, Fragment as j } from "react/jsx-runtime";
3
- import { useState as h, useEffect as w, useCallback as f } from "react";
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
4
  import { createPortal as k } from "react-dom";
5
- import { useLocale as R } from "next-intl";
6
- import { twMerge as L } from "tailwind-merge";
7
- import { useTheme as B } from "@ichaingo/next-themes";
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 g(e) {
9
+ function h(o) {
10
10
  for (var r = 1; r < arguments.length; r++) {
11
11
  var t = arguments[r];
12
- for (var a in t)
13
- e[a] = t[a];
12
+ for (var i in t)
13
+ o[i] = t[i];
14
14
  }
15
- return e;
15
+ return o;
16
16
  }
17
- var O = {
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, r) {
29
- function t(o, c, n) {
28
+ function y(o, r) {
29
+ function t(n, s, e) {
30
30
  if (!(typeof document > "u")) {
31
- n = g({}, r, 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 i in n)
34
- n[i] && (s += "; " + i, n[i] !== !0 && (s += "=" + n[i].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 i = c[s].split("="), u = i.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(i[0]);
44
- if (n[l] = e.read(u, 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
54
  set: t,
55
- get: a,
56
- remove: function(o, c) {
55
+ get: i,
56
+ remove: function(n, s) {
57
57
  t(
58
- o,
58
+ n,
59
59
  "",
60
- g({}, c, {
60
+ h({}, s, {
61
61
  expires: -1
62
62
  })
63
63
  );
64
64
  },
65
- withAttributes: function(o) {
66
- return C(this.converter, g({}, 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(g({}, 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
73
  attributes: { value: Object.freeze(r) },
74
- converter: { value: Object.freeze(e) }
74
+ converter: { value: Object.freeze(o) }
75
75
  }
76
76
  );
77
77
  }
78
- var z = C(O, { path: "/" });
79
- const b = () => !!z.get("id_token");
80
- function A() {
81
- const [e, r] = h(!1), [t, a] = h(!1), [o, c] = h(!1), n = R(), { resolvedTheme: s } = B();
82
- w(() => {
83
- a(!0);
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(() => {
84
+ t(!1);
85
+ }, []), I = u((f) => {
86
+ t(f), f && e(!1);
84
87
  }, []);
85
- const i = t && s ? s : "light", u = `${process.env.NEXT_PUBLIC_AUTH_URL}/${n}/login?mode=dialog&theme=${i}`, l = f(() => {
86
- r(!0), c(!1);
87
- }, []), m = f(() => {
88
- r(!1);
89
- }, []), y = f((p) => {
90
- r(p), p && c(!1);
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
- w(() => {
93
- e && t && c(!1);
94
- }, [s, e, t]);
95
- const v = f(() => {
96
- c(!0);
97
- }, []), U = f(
98
- ({ children: p, ...T }) => /* @__PURE__ */ d("div", { onClick: l, style: { cursor: "pointer" }, ...T, children: p }),
99
- [l]
100
- ), I = f(() => e ? k(
101
- /* @__PURE__ */ x(
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: L(
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__ */ d(
113
+ /* @__PURE__ */ p(
110
114
  "div",
111
115
  {
112
- className: L(
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__ */ d(
122
+ /* @__PURE__ */ p(
119
123
  "iframe",
120
124
  {
121
- src: u,
122
- className: L(
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-${i}`
134
+ `login-iframe-${d}`
131
135
  )
132
136
  ]
133
137
  }
@@ -135,36 +139,36 @@ function A() {
135
139
  document.body
136
140
  ) : null, [
137
141
  m,
138
- i,
139
- v,
140
- o,
141
- e,
142
- u
142
+ d,
143
+ L,
144
+ s,
145
+ r,
146
+ l
143
147
  ]);
144
148
  return {
145
- isOpen: e,
146
- openLogin: l,
149
+ isOpen: r,
150
+ openLogin: g,
147
151
  closeLogin: m,
148
- setLoginOpen: y,
149
- loginUrl: u,
150
- currentTheme: i,
151
- iframeLoaded: o,
152
- handleIframeLoad: v,
153
- mounted: t,
154
- Trigger: U,
155
- LoginModal: I
152
+ setLoginOpen: I,
153
+ loginUrl: l,
154
+ currentTheme: d,
155
+ iframeLoaded: s,
156
+ handleIframeLoad: L,
157
+ mounted: i,
158
+ Trigger: T,
159
+ LoginModal: j
156
160
  };
157
161
  }
158
- function P({ children: e, ...r }) {
159
- const { Trigger: t, LoginModal: a } = A();
160
- return /* @__PURE__ */ x(j, { children: [
161
- e && /* @__PURE__ */ d(t, { ...r, children: e }),
162
- /* @__PURE__ */ d(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, {})
163
167
  ] });
164
168
  }
165
169
  export {
166
- P as WithLogin,
167
- P as default,
168
- b as isLogin,
169
- A as useLogin
170
+ b as WithLogin,
171
+ b as default,
172
+ S as isLogin,
173
+ z as useLogin
170
174
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ichaingo/with-login",
3
- "version": "1.4.31",
3
+ "version": "1.4.32",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",