@ichaingo/with-login 1.4.54 → 1.4.55

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
@@ -20,6 +20,7 @@ export interface UseLoginResult {
20
20
  mounted: boolean;
21
21
  Trigger: React.FC<React.HTMLAttributes<HTMLDivElement>>;
22
22
  LoginModal: React.FC;
23
+ Prefetch: React.FC;
23
24
  }
24
25
  interface UseLoginProps {
25
26
  loginSuccessCallback?: () => Promise<void>;
@@ -30,7 +31,7 @@ interface UseLoginProps {
30
31
  * - 返回 LoginModal:实际渲染登录弹窗(使用 createPortal)
31
32
  */
32
33
  export declare function useLogin({ loginSuccessCallback }: UseLoginProps): UseLoginResult;
33
- interface WithLoginProps extends React.PropsWithChildren, React.HTMLAttributes<any> {
34
+ interface WithLoginProps extends React.PropsWithChildren, React.HTMLAttributes<HTMLElement> {
34
35
  children?: React.ReactNode;
35
36
  onClick?: () => void;
36
37
  }
@@ -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;AACF,oBAAY,gBAAgB;IAC1B,iBAAiB,oBAAoB;IACrC,aAAa,iBAAiB;CAC/B;AACD,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AACD,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAE,IAAI,CAAC,EAAE,aAAa,KAAM,IAAI,CAAC;IAC5C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,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;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAC,oBAA8C,EAAC,EAAE,aAAa,GAAG,cAAc,CAiIxG;AAED,UAAU,cACR,SAAQ,KAAK,CAAC,iBAAiB,EAC7B,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,2CAWvE;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;AACF,oBAAY,gBAAgB;IAC1B,iBAAiB,oBAAoB;IACrC,aAAa,iBAAiB;CAC/B;AACD,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AACD,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAE,IAAI,CAAC,EAAE,aAAa,KAAM,IAAI,CAAC;IAC5C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,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;IACrB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;CACpB;AACD,UAAU,aAAa;IACrB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAC,oBAA8C,EAAC,EAAE,aAAa,GAAG,cAAc,CAoJxG;AAED,UAAU,cACR,SAAQ,KAAK,CAAC,iBAAiB,EAC7B,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,2CAYvE;AAED,eAAe,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,40 +1,51 @@
1
1
  'use client';
2
- import { jsx as l, jsxs as y, Fragment as T } from "react/jsx-runtime";
3
- import { useState as m, useCallback as i, useEffect as U } from "react";
4
- import { createPortal as b } from "react-dom";
5
- import { useLocale as M } from "next-intl";
2
+ import { jsx as s, jsxs as I, Fragment as C } from "react/jsx-runtime";
3
+ import { useState as d, useCallback as i, useEffect as w } from "react";
4
+ import { createPortal as E } from "react-dom";
5
+ import { useLocale as G } from "next-intl";
6
6
  import { twMerge as _ } from "tailwind-merge";
7
- import { useTheme as O } from "@ichaingo/next-themes";
8
- import x from "js-cookie";
9
- const k = () => !!x.get("id_token");
10
- var C = /* @__PURE__ */ ((e) => (e.CLOSE_LOGIN_MODAL = "closeLoginModal", e.LOGIN_SUCCESS = "loginSuccess", e))(C || {}), G = /* @__PURE__ */ ((e) => (e.LOGIN = "login", e.REGISTER = "register", e))(G || {});
11
- function P({ loginSuccessCallback: e = () => Promise.resolve() }) {
12
- const [o, a] = m(!1), [r, f] = m(!1), [c, d] = m(!1), [g, E] = m(null), L = M(), { resolvedTheme: p } = O(), s = r && p ? p : "light", h = i((t) => {
13
- const n = window.location.href, w = `${process.env.NEXT_PUBLIC_AUTH_URL}/${L}/login?mode=dialog&theme=${s}&redirect_uri=${n}`, S = `${process.env.NEXT_PUBLIC_AUTH_URL}/${L}/register?mode=dialog&theme=${s}&redirect_uri=${n}`;
14
- a(!0), d(!1), E(t === "register" ? S : w);
15
- }, [s, L]), u = i(() => {
16
- a(!1);
17
- }, []), I = i((t) => {
18
- a(t), t && d(!1);
7
+ import { useTheme as R } from "@ichaingo/next-themes";
8
+ import z from "js-cookie";
9
+ const J = () => !!z.get("id_token");
10
+ var A = /* @__PURE__ */ ((e) => (e.CLOSE_LOGIN_MODAL = "closeLoginModal", e.LOGIN_SUCCESS = "loginSuccess", e))(A || {}), B = /* @__PURE__ */ ((e) => (e.LOGIN = "login", e.REGISTER = "register", e))(B || {});
11
+ function j({ loginSuccessCallback: e = () => Promise.resolve() }) {
12
+ const [o, l] = d(!1), [t, m] = d(!1), [a, f] = d(!1), [g, P] = d(null), [x, $] = d(!1), y = G(), { resolvedTheme: p } = R(), N = window.location.href, c = t && p ? p : "light", n = `${process.env.NEXT_PUBLIC_AUTH_URL}/${y}/login?mode=dialog&theme=${c}&redirect_uri=${N}`, U = `${process.env.NEXT_PUBLIC_AUTH_URL}/${y}/register?mode=dialog&theme=${c}&redirect_uri=${N}`, L = i((r) => {
13
+ l(!0), f(!1), P(r === "register" ? U : n);
14
+ }, [n, U]), u = i(() => {
15
+ l(!1);
16
+ }, []), b = i((r) => {
17
+ l(r), r && f(!1);
19
18
  }, []);
20
- U(() => {
21
- o && r && d(!1);
22
- }, [p, o, r]), U(() => {
23
- f(!0);
24
- const t = (n) => {
25
- n.data.type === "closeLoginModal" && u(), n.data.type === "loginSuccess" && (u(), e && e());
19
+ w(() => {
20
+ o && t && f(!1);
21
+ }, [p, o, t]), w(() => {
22
+ m(!0);
23
+ const r = (v) => {
24
+ v.data.type === "closeLoginModal" && u(), v.data.type === "loginSuccess" && (u(), e && e());
26
25
  };
27
- return window.addEventListener("message", t), () => {
28
- window.removeEventListener("message", t);
26
+ return window.addEventListener("message", r), () => {
27
+ window.removeEventListener("message", r);
29
28
  };
30
- }, []);
31
- const v = i(() => {
32
- d(!0);
33
- }, []), $ = i(
34
- ({ children: t, onClick: n, ...w }) => /* @__PURE__ */ l("div", { onClick: () => h(), style: { cursor: "pointer" }, ...w, children: t }),
35
- [h]
36
- ), N = i(() => o ? b(
37
- /* @__PURE__ */ y(
29
+ }, [u, e]), w(() => {
30
+ t && n && $(!0);
31
+ }, [t, n]);
32
+ const h = i(() => {
33
+ f(!0);
34
+ }, []), S = i(
35
+ ({ children: r, onClick: v, ...O }) => /* @__PURE__ */ s("div", { onClick: () => L(), style: { cursor: "pointer" }, ...O, children: r }),
36
+ [L]
37
+ ), T = i(() => !x || !t || !n ? null : E(
38
+ /* @__PURE__ */ s("div", { className: "w-[1px] h-[1px] fixed left-0 bottom-0", children: /* @__PURE__ */ s(
39
+ "iframe",
40
+ {
41
+ src: n,
42
+ className: "w-[1px] h-[1px]",
43
+ title: "Login Prefetch"
44
+ }
45
+ ) }),
46
+ document.body
47
+ ), [x, t, n]), M = i(() => o ? E(
48
+ /* @__PURE__ */ I(
38
49
  "div",
39
50
  {
40
51
  className: _(
@@ -42,69 +53,70 @@ function P({ loginSuccessCallback: e = () => Promise.resolve() }) {
42
53
  o && "top-0 left-0 w-full h-full"
43
54
  ),
44
55
  children: [
45
- /* @__PURE__ */ l(
56
+ /* @__PURE__ */ s(
46
57
  "div",
47
58
  {
48
59
  className: _(
49
60
  "absolute inset-0 transition-opacity duration-300",
50
- c ? "opacity-0 pointer-events-none" : "opacity-100 z-1002"
61
+ a ? "opacity-0 pointer-events-none" : "opacity-100 z-1002"
51
62
  )
52
63
  }
53
64
  ),
54
- /* @__PURE__ */ l(
65
+ /* @__PURE__ */ s(
55
66
  "iframe",
56
67
  {
57
68
  src: g ?? "",
58
69
  className: _(
59
70
  "w-full h-full border-none relative z-10 transition-opacity duration-300",
60
- c ? "opacity-100" : "opacity-0"
71
+ a ? "opacity-100" : "opacity-0"
61
72
  ),
62
73
  title: "Login",
63
- onLoad: v,
74
+ onLoad: h,
64
75
  sandbox: "allow-scripts allow-forms allow-same-origin"
65
76
  },
66
- `login-iframe-${s}`
77
+ `login-iframe-${c}`
67
78
  )
68
79
  ]
69
80
  }
70
81
  ),
71
82
  document.body
72
83
  ) : null, [
73
- u,
74
- s,
75
- v,
76
84
  c,
85
+ h,
86
+ a,
77
87
  o,
78
88
  g
79
89
  ]);
80
90
  return {
81
91
  isOpen: o,
82
- openLogin: h,
92
+ openLogin: L,
83
93
  closeLogin: u,
84
- setLoginOpen: I,
94
+ setLoginOpen: b,
85
95
  url: g,
86
- currentTheme: s,
87
- iframeLoaded: c,
88
- handleIframeLoad: v,
89
- mounted: r,
90
- Trigger: $,
91
- LoginModal: N
96
+ currentTheme: c,
97
+ iframeLoaded: a,
98
+ handleIframeLoad: h,
99
+ mounted: t,
100
+ Trigger: S,
101
+ LoginModal: M,
102
+ Prefetch: T
92
103
  };
93
104
  }
94
- function D({ children: e, onClick: o, ...a }) {
95
- const { Trigger: r, LoginModal: f } = P({ loginSuccessCallback: async () => {
105
+ function K({ children: e, onClick: o, ...l }) {
106
+ const { Trigger: t, LoginModal: m, Prefetch: a } = j({ loginSuccessCallback: async () => {
96
107
  o == null || o();
97
108
  } });
98
- return /* @__PURE__ */ y(T, { children: [
99
- e && /* @__PURE__ */ l(r, { ...a, children: e }),
100
- /* @__PURE__ */ l(f, {})
109
+ return /* @__PURE__ */ I(C, { children: [
110
+ e && /* @__PURE__ */ s(t, { ...l, children: e }),
111
+ /* @__PURE__ */ s(m, {}),
112
+ /* @__PURE__ */ s(a, {})
101
113
  ] });
102
114
  }
103
115
  export {
104
- C as LoginMessageType,
105
- G as OpenLoginType,
106
- D as WithLogin,
107
- D as default,
108
- k as isLogin,
109
- P as useLogin
116
+ A as LoginMessageType,
117
+ B as OpenLoginType,
118
+ K as WithLogin,
119
+ K as default,
120
+ J as isLogin,
121
+ j as useLogin
110
122
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ichaingo/with-login",
3
- "version": "1.4.54",
3
+ "version": "1.4.55",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",