@cuemath/leap 3.1.12-as6 → 3.1.12-as7

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,51 @@
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";
1
+ import { jsxs as D, jsx as y } from "react/jsx-runtime";
2
+ import { memo as S, useState as d, useRef as g, useCallback as f, useMemo as x, useEffect as w } from "react";
3
+ import I from "./modal.js";
4
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)
5
+ import { lockScroll as h, unlockScroll as R } from "./modal-helpers.js";
6
+ const T = 500, $ = S(({ children: p, modals: M, isUserAuthenticated: l }) => {
7
+ const [o, u] = d(null), [m, C] = d(void 0), [r, i] = d(!1), t = g(void 0), v = f(
8
+ (e, n, E) => {
9
+ const c = M.find((P) => P.name === e);
10
+ if (!c)
11
11
  throw new Error(`Modal with name "${e}" not found`);
12
- if (i.isPrivate && !r)
12
+ if (c.isPrivate && !l)
13
13
  throw new Error(
14
14
  `Access violation: Modal "${e}" is private and user is not authenticated`
15
15
  );
16
- u.current = C, l(!1), d(i), p(s), h();
16
+ t.current = E, i(!1), u(c), C(n), h();
17
17
  },
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(
18
+ [l, M]
19
+ ), s = f(() => {
20
+ i(!0), R(), setTimeout(() => {
21
+ u(null), i(!1);
22
+ }, T);
23
+ }, []), k = x(
25
24
  () => ({
26
25
  modal: o,
27
- modalParams: f,
28
- openModal: M,
29
- closeModal: n,
30
- isClosing: t
26
+ modalParams: m,
27
+ openModal: v,
28
+ closeModal: s,
29
+ isClosing: r
31
30
  }),
32
- [o, f, M, n, t]
33
- );
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());
31
+ [o, m, v, s, r]
32
+ ), a = f(() => {
33
+ var e, n;
34
+ (o == null ? void 0 : o.isDismissable) !== !1 && !r && (console.log("onModalDismiss "), s(), t.current && ((n = (e = t.current).onCloseModal) == null || n.call(e), t.current.onCloseModal = void 0));
35
+ }, [o, s, r]);
36
+ return w(() => {
37
+ !l && (o != null && o.isPrivate) && s();
38
+ }, [l, o, s]), w(() => {
39
+ const e = (n) => {
40
+ n.key === "Escape" && (console.log("onModalDismiss ESC key pressed"), a());
39
41
  };
40
42
  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 })
43
+ }, [a]), /* @__PURE__ */ D(b.Provider, { value: k, children: [
44
+ p,
45
+ o && /* @__PURE__ */ y(I, { modal: o, isClosing: r, onClose: a })
44
46
  ] });
45
- }), A = T;
47
+ }), K = $;
46
48
  export {
47
- A as default
49
+ K as default
48
50
  };
49
51
  //# 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, 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;"}
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 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 const onModalDismiss = useCallback(() => {\n if (modal?.isDismissable !== false && !isClosing) {\n console.log('onModalDismiss ');\n closeModal();\n if (callbackRefs.current) {\n callbackRefs.current.onCloseModal?.();\n callbackRefs.current.onCloseModal = undefined; // Clear callback reference\n }\n }\n }, [modal, closeModal, isClosing]);\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') {\n console.log('onModalDismiss ESC key pressed');\n onModalDismiss();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [onModalDismiss]);\n\n return (\n <ModalContext.Provider value={modalContent}>\n {children}\n {modal && <Modal modal={modal} isClosing={isClosing} onClose={onModalDismiss} />}\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","modalContent","useMemo","onModalDismiss","_b","_a","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,KACb,WAAW,MAAM;AACf,MAAAjB,EAAS,IAAI,GACbK,EAAa,EAAK;AAAA,OACjBZ,CAAqB;AAAA,EAC1B,GAAG,CAAE,CAAA,GAECyB,IAAeC;AAAA,IACnB,OAAO;AAAA,MACL,OAAApB;AAAA,MACA,aAAAG;AAAA,MACA,WAAAM;AAAA,MACA,YAAAQ;AAAA,MACA,WAAAZ;AAAA,IAAA;AAAA,IAEF,CAACL,GAAOG,GAAaM,GAAWQ,GAAYZ,CAAS;AAAA,EAAA,GAGjDgB,IAAiBX,EAAY,MAAM;;AACvC,KAAIV,KAAA,gBAAAA,EAAO,mBAAkB,MAAS,CAACK,MACrC,QAAQ,IAAI,iBAAiB,GAClBY,KACPV,EAAa,aACfe,KAAAC,IAAAhB,EAAa,SAAQ,iBAArB,QAAAe,EAAA,KAAAC,IACAhB,EAAa,QAAQ,eAAe;AAAA,EAGvC,GAAA,CAACP,GAAOiB,GAAYZ,CAAS,CAAC;AAEjC,SAAAmB,EAAU,MAAM;AACV,IAAA,CAACzB,MAAuBC,KAAA,QAAAA,EAAO,cAEtBiB;EAEZ,GAAA,CAAClB,GAAqBC,GAAOiB,CAAU,CAAC,GAG3CO,EAAU,MAAM;AACR,UAAAC,IAAgB,CAACC,MAAqB;AACtC,MAAAA,EAAE,QAAQ,aACZ,QAAQ,IAAI,iCAAiC,GAC9BL;IACjB;AAGK,kBAAA,iBAAiB,WAAWI,CAAa,GAEzC,MAAM,OAAO,oBAAoB,WAAWA,CAAa;AAAA,EAAA,GAC/D,CAACJ,CAAc,CAAC,GAGhB,gBAAAM,EAAAC,EAAa,UAAb,EAAsB,OAAOT,GAC3B,UAAA;AAAA,IAAAtB;AAAA,IACAG,KAAU,gBAAA6B,EAAAC,GAAA,EAAM,OAAA9B,GAAc,WAAAK,GAAsB,SAASgB,GAAgB;AAAA,EAChF,EAAA,CAAA;AAEJ,CAAC,GAEDU,IAAepC;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.1.12-as6",
3
+ "version": "3.1.12-as7",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"