@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 2.2 kB
Source Map (JSON)
{"version":3,"file":"ModalStack.cjs","names":["getDefaultZIndex"],"sources":["../../../src/components/Modal/ModalStack.tsx"],"sourcesContent":["import { createContext, useState } from 'react';\nimport { getDefaultZIndex } from '../../core';\n\ninterface ModalStackContext {\n stack: string[];\n addModal: (id: string, zIndex: number | string) => void;\n removeModal: (id: string) => void;\n getZIndex: (id: string) => string;\n currentId: string;\n maxZIndex: string | number;\n}\n\nexport const ModalStackContext = createContext<ModalStackContext | null>(null);\n\nexport interface ModalStackProps {\n children: React.ReactNode;\n}\n\nexport function ModalStack({ children }: ModalStackProps) {\n const [stack, setStack] = useState<string[]>([]);\n const [maxZIndex, setMaxZIndex] = useState<number | string>(getDefaultZIndex('modal'));\n\n return (\n <ModalStackContext\n value={{\n stack,\n addModal: (id, zIndex) => {\n setStack((current) => [...new Set([...current, id])]);\n setMaxZIndex((current) =>\n typeof zIndex === 'number' && typeof current === 'number'\n ? Math.max(current, zIndex)\n : current\n );\n },\n removeModal: (id) => setStack((current) => current.filter((currentId) => currentId !== id)),\n getZIndex: (id) => `calc(${maxZIndex} + ${stack.indexOf(id)} + 1)`,\n currentId: stack[stack.length - 1],\n maxZIndex,\n }}\n >\n {children}\n </ModalStackContext>\n );\n}\n\nModalStack.displayName = '@mantine/core/ModalStack';\n"],"mappings":";;;;;;AAYA,MAAa,qBAAA,GAAA,MAAA,eAA4D,KAAK;AAM9E,SAAgB,WAAW,EAAE,YAA6B;CACxD,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAA+B,EAAE,CAAC;CAChD,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAA0CA,4BAAAA,iBAAiB,QAAQ,CAAC;AAEtF,QACE,iBAAA,GAAA,kBAAA,KAAC,mBAAD;EACE,OAAO;GACL;GACA,WAAW,IAAI,WAAW;AACxB,cAAU,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AACrD,kBAAc,YACZ,OAAO,WAAW,YAAY,OAAO,YAAY,WAC7C,KAAK,IAAI,SAAS,OAAO,GACzB,QACL;;GAEH,cAAc,OAAO,UAAU,YAAY,QAAQ,QAAQ,cAAc,cAAc,GAAG,CAAC;GAC3F,YAAY,OAAO,QAAQ,UAAU,KAAK,MAAM,QAAQ,GAAG,CAAC;GAC5D,WAAW,MAAM,MAAM,SAAS;GAChC;GACD;EAEA;EACiB,CAAA;;AAIxB,WAAW,cAAc"}