@ichaingo/with-login 1.4.54 → 1.4.56

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,CAqJxG;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,110 +1,123 @@
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";
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);
2
+ import { jsx as s, jsxs as y, Fragment as M } from "react/jsx-runtime";
3
+ import { useState as d, useCallback as n, useEffect as U } from "react";
4
+ import { createPortal as x } from "react-dom";
5
+ import { useLocale as O } from "next-intl";
6
+ import { twMerge as N } from "tailwind-merge";
7
+ import { useTheme as C } from "@ichaingo/next-themes";
8
+ import R from "js-cookie";
9
+ const k = () => !!R.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 G({ loginSuccessCallback: e = () => Promise.resolve() }) {
12
+ const [o, l] = d(!1), [t, g] = d(!1), [i, f] = d(!1), [L, E] = d(null), [$, I] = d(!1), u = O(), { resolvedTheme: p } = C(), h = window.location.href, a = t && p ? p : "light", v = n((r) => {
13
+ const c = `${process.env.NEXT_PUBLIC_AUTH_URL}/${u}/login?mode=dialog&theme=${a}&redirect_uri=${h}`, w = `${process.env.NEXT_PUBLIC_AUTH_URL}/${u}/register?mode=dialog&theme=${a}&redirect_uri=${h}`;
14
+ l(!0), f(!1), E(r === "register" ? w : c);
15
+ }, [a, u, h]), m = n(() => {
16
+ l(!1);
17
+ }, []), P = n((r) => {
18
+ l(r), r && f(!1);
19
19
  }, []);
20
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());
21
+ o && t && f(!1);
22
+ }, [p, o, t]), U(() => {
23
+ g(!0);
24
+ const r = (c) => {
25
+ c.data.type === "closeLoginModal" && m(), c.data.type === "loginSuccess" && (m(), e && e());
26
26
  };
27
- return window.addEventListener("message", t), () => {
28
- window.removeEventListener("message", t);
27
+ return window.addEventListener("message", r), () => {
28
+ window.removeEventListener("message", r);
29
29
  };
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(
30
+ }, [m, e]), U(() => {
31
+ t && I(!0);
32
+ }, [t]);
33
+ const _ = n(() => {
34
+ f(!0);
35
+ }, []), T = n(
36
+ ({ children: r, onClick: c, ...w }) => /* @__PURE__ */ s("div", { onClick: () => v(), style: { cursor: "pointer" }, ...w, children: r }),
37
+ [v]
38
+ ), b = n(() => !$ || !t ? null : x(
39
+ /* @__PURE__ */ s("div", { className: "w-[1px] h-[1px] fixed left-0 bottom-0", children: /* @__PURE__ */ s(
40
+ "iframe",
41
+ {
42
+ src: `${process.env.NEXT_PUBLIC_AUTH_URL}/${u}/login?mode=dialog`,
43
+ className: "w-[1px] h-[1px]",
44
+ title: "Login Prefetch"
45
+ }
46
+ ) }),
47
+ document.body
48
+ ), [$, t]), S = n(() => o ? x(
37
49
  /* @__PURE__ */ y(
38
50
  "div",
39
51
  {
40
- className: _(
52
+ className: N(
41
53
  "fixed w-0 h-9 bg-[rgba(0,0,0,0.7)] z-1002",
42
54
  o && "top-0 left-0 w-full h-full"
43
55
  ),
44
56
  children: [
45
- /* @__PURE__ */ l(
57
+ /* @__PURE__ */ s(
46
58
  "div",
47
59
  {
48
- className: _(
60
+ className: N(
49
61
  "absolute inset-0 transition-opacity duration-300",
50
- c ? "opacity-0 pointer-events-none" : "opacity-100 z-1002"
62
+ i ? "opacity-0 pointer-events-none" : "opacity-100 z-1002"
51
63
  )
52
64
  }
53
65
  ),
54
- /* @__PURE__ */ l(
66
+ /* @__PURE__ */ s(
55
67
  "iframe",
56
68
  {
57
- src: g ?? "",
58
- className: _(
69
+ src: L ?? "",
70
+ className: N(
59
71
  "w-full h-full border-none relative z-10 transition-opacity duration-300",
60
- c ? "opacity-100" : "opacity-0"
72
+ i ? "opacity-100" : "opacity-0"
61
73
  ),
62
74
  title: "Login",
63
- onLoad: v,
75
+ onLoad: _,
64
76
  sandbox: "allow-scripts allow-forms allow-same-origin"
65
77
  },
66
- `login-iframe-${s}`
78
+ `login-iframe-${a}`
67
79
  )
68
80
  ]
69
81
  }
70
82
  ),
71
83
  document.body
72
84
  ) : null, [
73
- u,
74
- s,
75
- v,
76
- c,
85
+ a,
86
+ _,
87
+ i,
77
88
  o,
78
- g
89
+ L
79
90
  ]);
80
91
  return {
81
92
  isOpen: o,
82
- openLogin: h,
83
- closeLogin: u,
84
- setLoginOpen: I,
85
- url: g,
86
- currentTheme: s,
87
- iframeLoaded: c,
88
- handleIframeLoad: v,
89
- mounted: r,
90
- Trigger: $,
91
- LoginModal: N
93
+ openLogin: v,
94
+ closeLogin: m,
95
+ setLoginOpen: P,
96
+ url: L,
97
+ currentTheme: a,
98
+ iframeLoaded: i,
99
+ handleIframeLoad: _,
100
+ mounted: t,
101
+ Trigger: T,
102
+ LoginModal: S,
103
+ Prefetch: b
92
104
  };
93
105
  }
94
- function D({ children: e, onClick: o, ...a }) {
95
- const { Trigger: r, LoginModal: f } = P({ loginSuccessCallback: async () => {
106
+ function q({ children: e, onClick: o, ...l }) {
107
+ const { Trigger: t, LoginModal: g, Prefetch: i } = G({ loginSuccessCallback: async () => {
96
108
  o == null || o();
97
109
  } });
98
- return /* @__PURE__ */ y(T, { children: [
99
- e && /* @__PURE__ */ l(r, { ...a, children: e }),
100
- /* @__PURE__ */ l(f, {})
110
+ return /* @__PURE__ */ y(M, { children: [
111
+ e && /* @__PURE__ */ s(t, { ...l, children: e }),
112
+ /* @__PURE__ */ s(g, {}),
113
+ /* @__PURE__ */ s(i, {})
101
114
  ] });
102
115
  }
103
116
  export {
104
- C as LoginMessageType,
105
- G as OpenLoginType,
106
- D as WithLogin,
107
- D as default,
117
+ A as LoginMessageType,
118
+ B as OpenLoginType,
119
+ q as WithLogin,
120
+ q as default,
108
121
  k as isLogin,
109
- P as useLogin
122
+ G as useLogin
110
123
  };
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.56",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",