@cuemath/leap 3.1.12-as4 → 3.1.12-as6

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.
@@ -1,49 +1,49 @@
1
- import { jsxs as x, jsx as y } from "react/jsx-runtime";
2
- import { memo as I, useState as l, useCallback as w, useMemo as S, useEffect as M } from "react";
3
- import h from "./modal.js";
4
- import D from "./modal-context.js";
5
- import { lockScroll as T, unlockScroll as $ } from "./modal-helpers.js";
6
- const g = 500, j = I(({ children: p, modals: f, isUserAuthenticated: t }) => {
7
- const [o, m] = l(null), [u, k] = l(void 0), [n, a] = l(!1), [i, P] = l(void 0), { onCloseModal: r } = i || {}, v = w(
8
- (s, c, E) => {
9
- const d = f.find((b) => b.name === s);
10
- if (!d)
11
- throw new Error(`Modal with name "${s}" not found`);
12
- if (d.isPrivate && !t)
1
+ import { jsxs as E, jsx as g } from "react/jsx-runtime";
2
+ import { memo as x, useState as a, useRef as y, useCallback as m, useMemo as I, useEffect as v } from "react";
3
+ import S from "./modal.js";
4
+ import b from "./modal-context.js";
5
+ import { lockScroll as h, unlockScroll as D } from "./modal-helpers.js";
6
+ const R = 500, T = x(({ children: w, modals: c, isUserAuthenticated: r }) => {
7
+ const [o, d] = a(null), [f, p] = a(void 0), [t, l] = a(!1), u = y(void 0), M = m(
8
+ (e, s, C) => {
9
+ const i = c.find((P) => P.name === e);
10
+ if (!i)
11
+ throw new Error(`Modal with name "${e}" not found`);
12
+ if (i.isPrivate && !r)
13
13
  throw new Error(
14
- `Access violation: Modal "${s}" is private and user is not authenticated`
14
+ `Access violation: Modal "${e}" is private and user is not authenticated`
15
15
  );
16
- P(E), a(!1), m(d), k(c), T();
16
+ u.current = C, l(!1), d(i), p(s), h();
17
17
  },
18
- [t, f]
19
- ), e = w(() => {
20
- a(!0), $(), r == null || r(), setTimeout(() => {
21
- m(null), a(!1);
22
- }, g);
23
- }, [r]), C = S(
18
+ [r, c]
19
+ ), n = m(() => {
20
+ var e, s;
21
+ l(!0), D(), (s = (e = u.current) == null ? void 0 : e.onCloseModal) == null || s.call(e), setTimeout(() => {
22
+ d(null), l(!1);
23
+ }, R);
24
+ }, []), k = I(
24
25
  () => ({
25
26
  modal: o,
26
- modalParams: u,
27
- openModal: v,
28
- closeModal: e,
29
- isClosing: n,
30
- callbacks: i
27
+ modalParams: f,
28
+ openModal: M,
29
+ closeModal: n,
30
+ isClosing: t
31
31
  }),
32
- [o, u, v, e, n, i]
32
+ [o, f, M, n, t]
33
33
  );
34
- return M(() => {
35
- !t && (o != null && o.isPrivate) && e();
36
- }, [t, o, e]), M(() => {
37
- const s = (c) => {
38
- c.key === "Escape" && (o == null ? void 0 : o.isDismissable) !== !1 && !n && e();
34
+ return v(() => {
35
+ !r && (o != null && o.isPrivate) && n();
36
+ }, [r, o, n]), v(() => {
37
+ const e = (s) => {
38
+ s.key === "Escape" && (o == null ? void 0 : o.isDismissable) !== !1 && !t && (console.log("closing eventlistener"), n());
39
39
  };
40
- return window.addEventListener("keydown", s), () => window.removeEventListener("keydown", s);
41
- }, [o, e, n]), /* @__PURE__ */ x(D.Provider, { value: C, children: [
42
- p,
43
- o && /* @__PURE__ */ y(h, { modal: o, isClosing: n, onClose: e })
40
+ return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
41
+ }, [o, n, t]), /* @__PURE__ */ E(b.Provider, { value: k, children: [
42
+ w,
43
+ o && /* @__PURE__ */ g(S, { modal: o, isClosing: t, onClose: n })
44
44
  ] });
45
- }), N = j;
45
+ }), A = T;
46
46
  export {
47
- N as default
47
+ A as default
48
48
  };
49
49
  //# sourceMappingURL=modal-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-provider.js","sources":["../../../../src/features/ui/modals/modal-provider.tsx"],"sourcesContent":["import type { IModal, IModalCallbacks, IModalContext, IModalProviderProps } from './modal-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport Modal from './modal';\nimport ModalContext from './modal-context';\nimport { lockScroll, unlockScroll } from './modal-helpers';\n\nconst ANIMATION_DURATION_MS = 500; // Match the animation duration in modal.tsx\n\n/**\n * Provider component that manages modal state and provides modal context to child components\n */\nconst ModalProvider: FC<IModalProviderProps> = memo(({ children, modals, isUserAuthenticated }) => {\n const [modal, setModal] = useState<IModal | null>(null);\n const [modalParams, setModalParams] = useState<Record<string, unknown> | undefined>(undefined);\n const [isClosing, setIsClosing] = useState(false);\n const [callbacks, setCallbacks] = useState<IModalCallbacks | undefined>(undefined);\n const { onCloseModal } = callbacks || {};\n /**\n * Opens a modal by name with optional parameters\n * Handles authentication check for private modals\n */\n const openModal = useCallback<IModalContext['openModal']>(\n (modalName, newModalParams, callback) => {\n const newModal = modals.find(m => m.name === modalName);\n\n if (!newModal) {\n throw new Error(`Modal with name \"${modalName}\" not found`);\n }\n\n if (newModal.isPrivate && !isUserAuthenticated) {\n throw new Error(\n `Access violation: Modal \"${modalName}\" is private and user is not authenticated`,\n );\n }\n\n setCallbacks(callback);\n setIsClosing(false);\n setModal(newModal);\n setModalParams(newModalParams as unknown as Record<string, unknown> | undefined);\n lockScroll(); // Lock scroll while preserving scrollbar width\n },\n [isUserAuthenticated, modals],\n );\n\n const closeModal = useCallback(() => {\n setIsClosing(true);\n // Wait for the animation to complete before removing the modal\n unlockScroll();\n onCloseModal?.();\n setTimeout(() => {\n setModal(null);\n setIsClosing(false);\n }, ANIMATION_DURATION_MS);\n }, [onCloseModal]);\n\n const modalContent = useMemo<IModalContext>(\n () => ({\n modal,\n modalParams,\n openModal,\n closeModal,\n isClosing,\n callbacks,\n }),\n [modal, modalParams, openModal, closeModal, isClosing, callbacks],\n );\n\n useEffect(() => {\n if (!isUserAuthenticated && modal?.isPrivate) {\n // If the modal is private and user is not authenticated, close it\n closeModal();\n }\n }, [isUserAuthenticated, modal, closeModal]);\n\n // Handle ESC key\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && modal?.isDismissable !== false && !isClosing) {\n closeModal();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [modal, closeModal, isClosing]);\n\n return (\n <ModalContext.Provider value={modalContent}>\n {children}\n {modal && <Modal modal={modal} isClosing={isClosing} onClose={closeModal} />}\n </ModalContext.Provider>\n );\n});\n\nexport default ModalProvider;\n"],"names":["ANIMATION_DURATION_MS","ModalProvider","memo","children","modals","isUserAuthenticated","modal","setModal","useState","modalParams","setModalParams","isClosing","setIsClosing","callbacks","setCallbacks","onCloseModal","openModal","useCallback","modalName","newModalParams","callback","newModal","m","lockScroll","closeModal","unlockScroll","modalContent","useMemo","useEffect","handleKeyDown","e","jsxs","ModalContext","jsx","Modal","ModalProvider$1"],"mappings":";;;;;AASA,MAAMA,IAAwB,KAKxBC,IAAyCC,EAAK,CAAC,EAAE,UAAAC,GAAU,QAAAC,GAAQ,qBAAAC,QAA0B;AACjG,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAwB,IAAI,GAChD,CAACC,GAAaC,CAAc,IAAIF,EAA8C,MAAS,GACvF,CAACG,GAAWC,CAAY,IAAIJ,EAAS,EAAK,GAC1C,CAACK,GAAWC,CAAY,IAAIN,EAAsC,MAAS,GAC3E,EAAE,cAAAO,EAAA,IAAiBF,KAAa,IAKhCG,IAAYC;AAAA,IAChB,CAACC,GAAWC,GAAgBC,MAAa;AACvC,YAAMC,IAAWjB,EAAO,KAAK,CAAKkB,MAAAA,EAAE,SAASJ,CAAS;AAEtD,UAAI,CAACG;AACH,cAAM,IAAI,MAAM,oBAAoBH,CAAS,aAAa;AAGxD,UAAAG,EAAS,aAAa,CAAChB;AACzB,cAAM,IAAI;AAAA,UACR,4BAA4Ba,CAAS;AAAA,QAAA;AAIzC,MAAAJ,EAAaM,CAAQ,GACrBR,EAAa,EAAK,GAClBL,EAASc,CAAQ,GACjBX,EAAeS,CAAgE,GACpEI;IACb;AAAA,IACA,CAAClB,GAAqBD,CAAM;AAAA,EAAA,GAGxBoB,IAAaP,EAAY,MAAM;AACnC,IAAAL,EAAa,EAAI,GAEJa,KACEV,KAAA,QAAAA,KACf,WAAW,MAAM;AACf,MAAAR,EAAS,IAAI,GACbK,EAAa,EAAK;AAAA,OACjBZ,CAAqB;AAAA,EAAA,GACvB,CAACe,CAAY,CAAC,GAEXW,IAAeC;AAAA,IACnB,OAAO;AAAA,MACL,OAAArB;AAAA,MACA,aAAAG;AAAA,MACA,WAAAO;AAAA,MACA,YAAAQ;AAAA,MACA,WAAAb;AAAA,MACA,WAAAE;AAAA,IAAA;AAAA,IAEF,CAACP,GAAOG,GAAaO,GAAWQ,GAAYb,GAAWE,CAAS;AAAA,EAAA;AAGlE,SAAAe,EAAU,MAAM;AACV,IAAA,CAACvB,MAAuBC,KAAA,QAAAA,EAAO,cAEtBkB;EAEZ,GAAA,CAACnB,GAAqBC,GAAOkB,CAAU,CAAC,GAG3CI,EAAU,MAAM;AACR,UAAAC,IAAgB,CAACC,MAAqB;AAC1C,MAAIA,EAAE,QAAQ,aAAYxB,KAAA,gBAAAA,EAAO,mBAAkB,MAAS,CAACK,KAChDa;IACb;AAGK,kBAAA,iBAAiB,WAAWK,CAAa,GAEzC,MAAM,OAAO,oBAAoB,WAAWA,CAAa;AAAA,EAC/D,GAAA,CAACvB,GAAOkB,GAAYb,CAAS,CAAC,GAG9B,gBAAAoB,EAAAC,EAAa,UAAb,EAAsB,OAAON,GAC3B,UAAA;AAAA,IAAAvB;AAAA,IACAG,KAAU,gBAAA2B,EAAAC,GAAA,EAAM,OAAA5B,GAAc,WAAAK,GAAsB,SAASa,GAAY;AAAA,EAC5E,EAAA,CAAA;AAEJ,CAAC,GAEDW,IAAelC;"}
1
+ {"version":3,"file":"modal-provider.js","sources":["../../../../src/features/ui/modals/modal-provider.tsx"],"sourcesContent":["import type { IModal, IModalCallbacks, IModalContext, IModalProviderProps } from './modal-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport Modal from './modal';\nimport ModalContext from './modal-context';\nimport { lockScroll, unlockScroll } from './modal-helpers';\n\nconst ANIMATION_DURATION_MS = 500; // Match the animation duration in modal.tsx\n\n/**\n * Provider component that manages modal state and provides modal context to child components\n */\nconst ModalProvider: FC<IModalProviderProps> = memo(({ children, modals, isUserAuthenticated }) => {\n const [modal, setModal] = useState<IModal | null>(null);\n const [modalParams, setModalParams] = useState<Record<string, unknown> | undefined>(undefined);\n const [isClosing, setIsClosing] = useState(false);\n const callbackRefs = useRef<IModalCallbacks | undefined>(undefined);\n /**\n * Opens a modal by name with optional parameters\n * Handles authentication check for private modals\n */\n const openModal = useCallback<IModalContext['openModal']>(\n (modalName, newModalParams, callback) => {\n const newModal = modals.find(m => m.name === modalName);\n\n if (!newModal) {\n throw new Error(`Modal with name \"${modalName}\" not found`);\n }\n\n if (newModal.isPrivate && !isUserAuthenticated) {\n throw new Error(\n `Access violation: Modal \"${modalName}\" is private and user is not authenticated`,\n );\n }\n\n callbackRefs.current = callback;\n setIsClosing(false);\n setModal(newModal);\n setModalParams(newModalParams as unknown as Record<string, unknown> | undefined);\n lockScroll(); // Lock scroll while preserving scrollbar width\n },\n [isUserAuthenticated, modals],\n );\n\n const closeModal = useCallback(() => {\n setIsClosing(true);\n // Wait for the animation to complete before removing the modal\n unlockScroll();\n callbackRefs.current?.onCloseModal?.();\n setTimeout(() => {\n setModal(null);\n setIsClosing(false);\n }, ANIMATION_DURATION_MS);\n }, []);\n\n const modalContent = useMemo<IModalContext>(\n () => ({\n modal,\n modalParams,\n openModal,\n closeModal,\n isClosing,\n }),\n [modal, modalParams, openModal, closeModal, isClosing],\n );\n\n useEffect(() => {\n if (!isUserAuthenticated && modal?.isPrivate) {\n // If the modal is private and user is not authenticated, close it\n closeModal();\n }\n }, [isUserAuthenticated, modal, closeModal]);\n\n // Handle ESC key\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && modal?.isDismissable !== false && !isClosing) {\n console.log('closing eventlistener');\n closeModal();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [modal, closeModal, isClosing]);\n\n return (\n <ModalContext.Provider value={modalContent}>\n {children}\n {modal && <Modal modal={modal} isClosing={isClosing} onClose={closeModal} />}\n </ModalContext.Provider>\n );\n});\n\nexport default ModalProvider;\n"],"names":["ANIMATION_DURATION_MS","ModalProvider","memo","children","modals","isUserAuthenticated","modal","setModal","useState","modalParams","setModalParams","isClosing","setIsClosing","callbackRefs","useRef","openModal","useCallback","modalName","newModalParams","callback","newModal","m","lockScroll","closeModal","unlockScroll","_b","_a","modalContent","useMemo","useEffect","handleKeyDown","e","jsxs","ModalContext","jsx","Modal","ModalProvider$1"],"mappings":";;;;;AASA,MAAMA,IAAwB,KAKxBC,IAAyCC,EAAK,CAAC,EAAE,UAAAC,GAAU,QAAAC,GAAQ,qBAAAC,QAA0B;AACjG,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAwB,IAAI,GAChD,CAACC,GAAaC,CAAc,IAAIF,EAA8C,MAAS,GACvF,CAACG,GAAWC,CAAY,IAAIJ,EAAS,EAAK,GAC1CK,IAAeC,EAAoC,MAAS,GAK5DC,IAAYC;AAAA,IAChB,CAACC,GAAWC,GAAgBC,MAAa;AACvC,YAAMC,IAAWhB,EAAO,KAAK,CAAKiB,MAAAA,EAAE,SAASJ,CAAS;AAEtD,UAAI,CAACG;AACH,cAAM,IAAI,MAAM,oBAAoBH,CAAS,aAAa;AAGxD,UAAAG,EAAS,aAAa,CAACf;AACzB,cAAM,IAAI;AAAA,UACR,4BAA4BY,CAAS;AAAA,QAAA;AAIzC,MAAAJ,EAAa,UAAUM,GACvBP,EAAa,EAAK,GAClBL,EAASa,CAAQ,GACjBV,EAAeQ,CAAgE,GACpEI;IACb;AAAA,IACA,CAACjB,GAAqBD,CAAM;AAAA,EAAA,GAGxBmB,IAAaP,EAAY,MAAM;;AACnC,IAAAJ,EAAa,EAAI,GAEJY,MACbC,KAAAC,IAAAb,EAAa,YAAb,gBAAAa,EAAsB,iBAAtB,QAAAD,EAAA,KAAAC,IACA,WAAW,MAAM;AACf,MAAAnB,EAAS,IAAI,GACbK,EAAa,EAAK;AAAA,OACjBZ,CAAqB;AAAA,EAC1B,GAAG,CAAE,CAAA,GAEC2B,IAAeC;AAAA,IACnB,OAAO;AAAA,MACL,OAAAtB;AAAA,MACA,aAAAG;AAAA,MACA,WAAAM;AAAA,MACA,YAAAQ;AAAA,MACA,WAAAZ;AAAA,IAAA;AAAA,IAEF,CAACL,GAAOG,GAAaM,GAAWQ,GAAYZ,CAAS;AAAA,EAAA;AAGvD,SAAAkB,EAAU,MAAM;AACV,IAAA,CAACxB,MAAuBC,KAAA,QAAAA,EAAO,cAEtBiB;EAEZ,GAAA,CAAClB,GAAqBC,GAAOiB,CAAU,CAAC,GAG3CM,EAAU,MAAM;AACR,UAAAC,IAAgB,CAACC,MAAqB;AAC1C,MAAIA,EAAE,QAAQ,aAAYzB,KAAA,gBAAAA,EAAO,mBAAkB,MAAS,CAACK,MAC3D,QAAQ,IAAI,uBAAuB,GACxBY;IACb;AAGK,kBAAA,iBAAiB,WAAWO,CAAa,GAEzC,MAAM,OAAO,oBAAoB,WAAWA,CAAa;AAAA,EAC/D,GAAA,CAACxB,GAAOiB,GAAYZ,CAAS,CAAC,GAG9B,gBAAAqB,EAAAC,EAAa,UAAb,EAAsB,OAAON,GAC3B,UAAA;AAAA,IAAAxB;AAAA,IACAG,KAAU,gBAAA4B,EAAAC,GAAA,EAAM,OAAA7B,GAAc,WAAAK,GAAsB,SAASY,GAAY;AAAA,EAC5E,EAAA,CAAA;AAEJ,CAAC,GAEDa,IAAenC;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.1.12-as4",
3
+ "version": "3.1.12-as6",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"