isVisible-8OcOPiZa.mjs.map 10 KB

1
  1. {"version":3,"file":"isVisible-8OcOPiZa.mjs","sources":["../../src/strings/modalComponent.ts","../../src/strings/offcanvasComponent.ts","../../src/strings/fixedTopClass.ts","../../src/strings/fixedBottomClass.ts","../../src/strings/stickyTopClass.ts","../../src/strings/positionStickyClass.ts","../../src/util/scrollbar.ts","../../src/util/backdrop.ts","../../src/util/isVisible.ts"],"sourcesContent":["/** @type {string} */\nconst modalComponent = \"Modal\";\nexport default modalComponent;\n","/** @type {string} */\nconst offcanvasComponent = \"Offcanvas\";\nexport default offcanvasComponent;\n","/**\n * Global namespace for components `fixed-top` class.\n */\nconst fixedTopClass = \"fixed-top\";\nexport default fixedTopClass;\n","/**\n * Global namespace for components `fixed-bottom` class.\n */\nconst fixedBottomClass = \"fixed-bottom\";\nexport default fixedBottomClass;\n","/**\n * Global namespace for components `sticky-top` class.\n */\nconst stickyTopClass = \"sticky-top\";\nexport default stickyTopClass;\n","/**\n * Global namespace for components `position-sticky` class.\n */\nconst positionStickyClass = \"position-sticky\";\nexport default positionStickyClass;\n","import {\n getDocumentBody,\n getDocumentElement,\n getElementsByClassName,\n getElementStyle,\n getWindow,\n hasClass,\n setElementStyle,\n} from \"@thednp/shorty\";\n\nimport fixedTopClass from \"../strings/fixedTopClass\";\nimport fixedBottomClass from \"../strings/fixedBottomClass\";\nimport stickyTopClass from \"../strings/stickyTopClass\";\nimport positionStickyClass from \"../strings/positionStickyClass\";\n\nconst getFixedItems = (parent?: ParentNode) => [\n ...getElementsByClassName<HTMLElement>(fixedTopClass, parent),\n ...getElementsByClassName<HTMLElement>(fixedBottomClass, parent),\n ...getElementsByClassName<HTMLElement>(stickyTopClass, parent),\n ...getElementsByClassName<HTMLElement>(positionStickyClass, parent),\n ...getElementsByClassName<HTMLElement>(\"is-fixed\", parent),\n];\n\n/**\n * Removes *padding* and *overflow* from the `<body>`\n * and all spacing from fixed items.\n *\n * @param element the target modal/offcanvas\n */\nexport const resetScrollbar = (element?: Element) => {\n const bd = getDocumentBody(element);\n setElementStyle(bd, {\n paddingRight: \"\",\n overflow: \"\",\n });\n\n const fixedItems = getFixedItems(bd);\n\n // istanbul ignore else @preserve\n if (fixedItems.length) {\n fixedItems.forEach((fixed) => {\n setElementStyle(fixed, {\n paddingRight: \"\",\n marginRight: \"\",\n });\n });\n }\n};\n\n/**\n * Returns the scrollbar width if the body does overflow\n * the window.\n *\n * @param element target element\n * @returns the scrollbar width value\n */\nexport const measureScrollbar = (element: Element) => {\n const { clientWidth } = getDocumentElement(element);\n const { innerWidth } = getWindow(element);\n return Math.abs(innerWidth - clientWidth);\n};\n\n/**\n * Sets the `<body>` and fixed items style when modal / offcanvas\n * is shown to the user.\n *\n * @param element the target modal/offcanvas\n * @param overflow body does overflow or not\n */\nexport const setScrollbar = (element: Element, overflow?: boolean) => {\n const bd = getDocumentBody(element);\n const bodyPad = parseInt(getElementStyle(bd, \"paddingRight\"), 10);\n const isOpen = getElementStyle(bd, \"overflow\") === \"hidden\";\n const sbWidth = isOpen && bodyPad\n ? /* istanbul ignore next */ 0\n : measureScrollbar(element);\n const fixedItems = getFixedItems(bd);\n\n // istanbul ignore if @preserve\n if (!overflow) return;\n\n setElementStyle(bd, {\n overflow: \"hidden\",\n paddingRight: `${bodyPad + sbWidth}px`,\n });\n\n // istanbul ignore if @preserve\n if (!fixedItems.length) return;\n\n fixedItems.forEach((fixed) => {\n const itemPadValue = getElementStyle(fixed, \"paddingRight\");\n fixed.style.paddingRight = `${parseInt(itemPadValue, 10) + sbWidth}px`;\n // istanbul ignore else @preserve\n if (\n [stickyTopClass, positionStickyClass].some((c) => hasClass(fixed, c))\n ) {\n const itemMValue = getElementStyle(fixed, \"marginRight\");\n fixed.style.marginRight = `${parseInt(itemMValue, 10) - sbWidth}px`;\n }\n });\n};\n","import {\n addClass,\n createElement,\n getDocument,\n getDocumentBody,\n hasClass,\n querySelector,\n reflow,\n removeClass,\n} from \"@thednp/shorty\";\n\nimport fadeClass from \"../strings/fadeClass\";\nimport showClass from \"../strings/showClass\";\nimport modalString from \"../strings/modalString\";\nimport offcanvasString from \"../strings/offcanvasString\";\nimport { resetScrollbar } from \"./scrollbar\";\nimport { appendPopup, removePopup } from \"./popupContainer\";\n\nconst backdropString = \"backdrop\";\nconst modalBackdropClass = `${modalString}-${backdropString}`;\nconst offcanvasBackdropClass = `${offcanvasString}-${backdropString}`;\nconst modalActiveSelector = `.${modalString}.${showClass}`;\nconst offcanvasActiveSelector = `.${offcanvasString}.${showClass}`;\n\n// any document would suffice\nconst overlay = createElement(\"div\") as HTMLElement;\n\n/**\n * Returns the current active modal / offcancas element.\n *\n * @param element the context element\n * @returns the requested element\n */\nconst getCurrentOpen = (element?: Element) => {\n return querySelector(\n `${modalActiveSelector},${offcanvasActiveSelector}`,\n getDocument(element),\n );\n};\n\n/**\n * Toogles from a Modal overlay to an Offcanvas, or vice-versa.\n *\n * @param isModal\n */\nconst toggleOverlayType = (isModal?: boolean) => {\n const targetClass = isModal ? modalBackdropClass : offcanvasBackdropClass;\n [modalBackdropClass, offcanvasBackdropClass].forEach((c) => {\n removeClass(overlay, c);\n });\n addClass(overlay, targetClass);\n};\n\n/**\n * Append the overlay to DOM.\n *\n * @param element\n * @param hasFade\n * @param isModal\n */\nconst appendOverlay = (\n element: Element,\n hasFade: boolean,\n isModal?: boolean,\n) => {\n toggleOverlayType(isModal);\n appendPopup(overlay, getDocumentBody(element));\n if (hasFade) addClass(overlay, fadeClass);\n};\n\n/**\n * Shows the overlay to the user.\n */\nconst showOverlay = () => {\n if (!hasClass(overlay, showClass)) {\n addClass(overlay, showClass);\n reflow(overlay);\n }\n};\n\n/**\n * Hides the overlay from the user.\n */\nconst hideOverlay = () => {\n removeClass(overlay, showClass);\n};\n\n/**\n * Removes the overlay from DOM.\n *\n * @param element\n */\nconst removeOverlay = (element?: Element): void => {\n if (!getCurrentOpen(element)) {\n removeClass(overlay, fadeClass);\n removePopup(overlay, getDocumentBody(element));\n resetScrollbar(element);\n }\n};\n\nexport {\n appendOverlay,\n getCurrentOpen,\n hideOverlay,\n modalActiveSelector,\n modalBackdropClass,\n offcanvasActiveSelector,\n offcanvasBackdropClass,\n overlay,\n removeOverlay,\n showOverlay,\n toggleOverlayType,\n};\n","import { getElementStyle, isHTMLElement } from \"@thednp/shorty\";\n\n/**\n * @param element target\n * @returns the check result\n */\nconst isVisible = (element: HTMLElement) => {\n return isHTMLElement(element) &&\n getElementStyle(element, \"visibility\") !== \"hidden\" &&\n element.offsetParent !== null;\n};\nexport default isVisible;\n"],"names":["modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","parent","getElementsByClassName","resetScrollbar","element","bd","getDocumentBody","setElementStyle","fixedItems","fixed","measureScrollbar","clientWidth","getDocumentElement","innerWidth","getWindow","setScrollbar","overflow","bodyPad","getElementStyle","sbWidth","itemPadValue","c","hasClass","itemMValue","backdropString","modalBackdropClass","modalString","offcanvasBackdropClass","offcanvasString","modalActiveSelector","showClass","offcanvasActiveSelector","overlay","createElement","getCurrentOpen","querySelector","getDocument","toggleOverlayType","isModal","targetClass","removeClass","addClass","appendOverlay","hasFade","appendPopup","fadeClass","showOverlay","reflow","hideOverlay","removeOverlay","removePopup","isVisible","isHTMLElement"],"mappings":"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"}