From 15501aa7a7cb9a51e08cc629b59d1d166a9ecf4a Mon Sep 17 00:00:00 2001 From: Stipe Varnica Date: Mon, 22 Apr 2024 09:38:34 +0200 Subject: [PATCH] First commit --- TEMPEST/tempest-devel | 1 + index.html | 224 + index.js | 85 + node_modules/.package-lock.json | 40 + node_modules/@popperjs/core/LICENSE.md | 20 + node_modules/@popperjs/core/README.md | 376 + node_modules/@popperjs/core/dist/cjs/enums.js | 65 + .../@popperjs/core/dist/cjs/enums.js.flow | 3 + .../@popperjs/core/dist/cjs/enums.js.map | 1 + .../@popperjs/core/dist/cjs/popper-base.js | 939 ++ .../core/dist/cjs/popper-base.js.flow | 3 + .../core/dist/cjs/popper-base.js.map | 1 + .../@popperjs/core/dist/cjs/popper-lite.js | 1260 ++ .../core/dist/cjs/popper-lite.js.flow | 3 + .../core/dist/cjs/popper-lite.js.map | 1 + .../@popperjs/core/dist/cjs/popper.js | 1819 +++ .../@popperjs/core/dist/cjs/popper.js.flow | 3 + .../@popperjs/core/dist/cjs/popper.js.map | 1 + .../@popperjs/core/dist/esm/createPopper.js | 199 + .../core/dist/esm/dom-utils/contains.js | 23 + .../esm/dom-utils/getBoundingClientRect.js | 41 + .../dist/esm/dom-utils/getClippingRect.js | 70 + .../dist/esm/dom-utils/getCompositeRect.js | 58 + .../dist/esm/dom-utils/getComputedStyle.js | 4 + .../dist/esm/dom-utils/getDocumentElement.js | 6 + .../dist/esm/dom-utils/getDocumentRect.js | 29 + .../esm/dom-utils/getHTMLElementScroll.js | 6 + .../core/dist/esm/dom-utils/getLayoutRect.js | 25 + .../core/dist/esm/dom-utils/getNodeName.js | 3 + .../core/dist/esm/dom-utils/getNodeScroll.js | 11 + .../dist/esm/dom-utils/getOffsetParent.js | 69 + .../core/dist/esm/dom-utils/getParentNode.js | 19 + .../dist/esm/dom-utils/getScrollParent.js | 16 + .../dist/esm/dom-utils/getViewportRect.js | 31 + .../core/dist/esm/dom-utils/getWindow.js | 12 + .../dist/esm/dom-utils/getWindowScroll.js | 10 + .../dist/esm/dom-utils/getWindowScrollBarX.js | 13 + .../core/dist/esm/dom-utils/instanceOf.js | 23 + .../dist/esm/dom-utils/isLayoutViewport.js | 4 + .../core/dist/esm/dom-utils/isScrollParent.js | 10 + .../core/dist/esm/dom-utils/isTableElement.js | 4 + .../dist/esm/dom-utils/listScrollParents.js | 26 + node_modules/@popperjs/core/dist/esm/enums.js | 31 + node_modules/@popperjs/core/dist/esm/index.js | 8 + .../core/dist/esm/modifiers/applyStyles.js | 84 + .../core/dist/esm/modifiers/arrow.js | 90 + .../core/dist/esm/modifiers/computeStyles.js | 169 + .../core/dist/esm/modifiers/eventListeners.js | 49 + .../@popperjs/core/dist/esm/modifiers/flip.js | 147 + .../@popperjs/core/dist/esm/modifiers/hide.js | 61 + .../core/dist/esm/modifiers/index.js | 9 + .../core/dist/esm/modifiers/offset.js | 54 + .../core/dist/esm/modifiers/popperOffsets.js | 25 + .../dist/esm/modifiers/preventOverflow.js | 142 + .../@popperjs/core/dist/esm/popper-base.js | 3 + .../@popperjs/core/dist/esm/popper-lite.js | 11 + .../@popperjs/core/dist/esm/popper.js | 20 + node_modules/@popperjs/core/dist/esm/types.js | 0 .../dist/esm/utils/computeAutoPlacement.js | 43 + .../core/dist/esm/utils/computeOffsets.js | 70 + .../@popperjs/core/dist/esm/utils/debounce.js | 15 + .../core/dist/esm/utils/detectOverflow.js | 65 + .../core/dist/esm/utils/expandToHashMap.js | 6 + .../core/dist/esm/utils/getAltAxis.js | 3 + .../core/dist/esm/utils/getAltLen.js | 3 + .../core/dist/esm/utils/getBasePlacement.js | 4 + .../core/dist/esm/utils/getFreshSideObject.js | 8 + .../esm/utils/getMainAxisFromPlacement.js | 3 + .../dist/esm/utils/getOppositePlacement.js | 11 + .../utils/getOppositeVariationPlacement.js | 9 + .../core/dist/esm/utils/getVariation.js | 3 + .../@popperjs/core/dist/esm/utils/math.js | 3 + .../core/dist/esm/utils/mergeByName.js | 14 + .../core/dist/esm/utils/mergePaddingObject.js | 4 + .../core/dist/esm/utils/orderModifiers.js | 44 + .../core/dist/esm/utils/rectToClientRect.js | 8 + .../@popperjs/core/dist/esm/utils/uniqueBy.js | 11 + .../core/dist/esm/utils/userAgent.js | 11 + .../@popperjs/core/dist/esm/utils/within.js | 8 + node_modules/@popperjs/core/dist/umd/enums.js | 71 + .../@popperjs/core/dist/umd/enums.js.map | 1 + .../@popperjs/core/dist/umd/enums.min.js | 6 + .../@popperjs/core/dist/umd/enums.min.js.flow | 3 + .../@popperjs/core/dist/umd/enums.min.js.map | 1 + .../@popperjs/core/dist/umd/popper-base.js | 945 ++ .../core/dist/umd/popper-base.js.map | 1 + .../core/dist/umd/popper-base.min.js | 6 + .../core/dist/umd/popper-base.min.js.flow | 3 + .../core/dist/umd/popper-base.min.js.map | 1 + .../@popperjs/core/dist/umd/popper-lite.js | 1266 ++ .../core/dist/umd/popper-lite.js.map | 1 + .../core/dist/umd/popper-lite.min.js | 6 + .../core/dist/umd/popper-lite.min.js.flow | 3 + .../core/dist/umd/popper-lite.min.js.map | 1 + .../@popperjs/core/dist/umd/popper.js | 1825 +++ .../@popperjs/core/dist/umd/popper.js.map | 1 + .../@popperjs/core/dist/umd/popper.min.js | 6 + .../core/dist/umd/popper.min.js.flow | 3 + .../@popperjs/core/dist/umd/popper.min.js.map | 1 + node_modules/@popperjs/core/index.d.ts | 1 + .../@popperjs/core/lib/createPopper.d.ts | 9 + .../@popperjs/core/lib/createPopper.js | 199 + .../@popperjs/core/lib/createPopper.js.flow | 218 + .../core/lib/dom-utils/contains.d.ts | 1 + .../@popperjs/core/lib/dom-utils/contains.js | 23 + .../core/lib/dom-utils/contains.js.flow | 25 + .../lib/dom-utils/getBoundingClientRect.d.ts | 2 + .../lib/dom-utils/getBoundingClientRect.js | 41 + .../dom-utils/getBoundingClientRect.js.flow | 52 + .../core/lib/dom-utils/getClippingRect.d.ts | 3 + .../core/lib/dom-utils/getClippingRect.js | 70 + .../lib/dom-utils/getClippingRect.js.flow | 106 + .../core/lib/dom-utils/getCompositeRect.d.ts | 2 + .../core/lib/dom-utils/getCompositeRect.js | 58 + .../lib/dom-utils/getCompositeRect.js.flow | 64 + .../core/lib/dom-utils/getComputedStyle.d.ts | 1 + .../core/lib/dom-utils/getComputedStyle.js | 4 + .../lib/dom-utils/getComputedStyle.js.flow | 8 + .../lib/dom-utils/getDocumentElement.d.ts | 2 + .../core/lib/dom-utils/getDocumentElement.js | 6 + .../lib/dom-utils/getDocumentElement.js.flow | 15 + .../core/lib/dom-utils/getDocumentRect.d.ts | 2 + .../core/lib/dom-utils/getDocumentRect.js | 29 + .../lib/dom-utils/getDocumentRect.js.flow | 37 + .../lib/dom-utils/getHTMLElementScroll.d.ts | 4 + .../lib/dom-utils/getHTMLElementScroll.js | 6 + .../dom-utils/getHTMLElementScroll.js.flow | 8 + .../core/lib/dom-utils/getLayoutRect.d.ts | 2 + .../core/lib/dom-utils/getLayoutRect.js | 25 + .../core/lib/dom-utils/getLayoutRect.js.flow | 29 + .../core/lib/dom-utils/getNodeName.d.ts | 2 + .../core/lib/dom-utils/getNodeName.js | 3 + .../core/lib/dom-utils/getNodeName.js.flow | 6 + .../core/lib/dom-utils/getNodeScroll.d.ts | 5 + .../core/lib/dom-utils/getNodeScroll.js | 11 + .../core/lib/dom-utils/getNodeScroll.js.flow | 14 + .../core/lib/dom-utils/getOffsetParent.d.ts | 1 + .../core/lib/dom-utils/getOffsetParent.js | 69 + .../lib/dom-utils/getOffsetParent.js.flow | 93 + .../core/lib/dom-utils/getParentNode.d.ts | 1 + .../core/lib/dom-utils/getParentNode.js | 19 + .../core/lib/dom-utils/getParentNode.js.flow | 21 + .../core/lib/dom-utils/getScrollParent.d.ts | 1 + .../core/lib/dom-utils/getScrollParent.js | 16 + .../lib/dom-utils/getScrollParent.js.flow | 18 + .../core/lib/dom-utils/getViewportRect.d.ts | 7 + .../core/lib/dom-utils/getViewportRect.js | 31 + .../lib/dom-utils/getViewportRect.js.flow | 39 + .../core/lib/dom-utils/getWindow.d.ts | 1 + .../@popperjs/core/lib/dom-utils/getWindow.js | 12 + .../core/lib/dom-utils/getWindow.js.flow | 16 + .../core/lib/dom-utils/getWindowScroll.d.ts | 5 + .../core/lib/dom-utils/getWindowScroll.js | 10 + .../lib/dom-utils/getWindowScroll.js.flow | 14 + .../lib/dom-utils/getWindowScrollBarX.d.ts | 1 + .../core/lib/dom-utils/getWindowScrollBarX.js | 13 + .../lib/dom-utils/getWindowScrollBarX.js.flow | 18 + .../core/lib/dom-utils/instanceOf.d.ts | 4 + .../core/lib/dom-utils/instanceOf.js | 23 + .../core/lib/dom-utils/instanceOf.js.flow | 29 + .../core/lib/dom-utils/isLayoutViewport.d.ts | 1 + .../core/lib/dom-utils/isLayoutViewport.js | 4 + .../lib/dom-utils/isLayoutViewport.js.flow | 6 + .../core/lib/dom-utils/isScrollParent.d.ts | 1 + .../core/lib/dom-utils/isScrollParent.js | 10 + .../core/lib/dom-utils/isScrollParent.js.flow | 8 + .../core/lib/dom-utils/isTableElement.d.ts | 1 + .../core/lib/dom-utils/isTableElement.js | 4 + .../core/lib/dom-utils/isTableElement.js.flow | 6 + .../core/lib/dom-utils/listScrollParents.d.ts | 2 + .../core/lib/dom-utils/listScrollParents.js | 26 + .../lib/dom-utils/listScrollParents.js.flow | 33 + node_modules/@popperjs/core/lib/enums.d.ts | 34 + node_modules/@popperjs/core/lib/enums.js | 31 + node_modules/@popperjs/core/lib/enums.js.flow | 91 + node_modules/@popperjs/core/lib/index.d.ts | 6 + node_modules/@popperjs/core/lib/index.js | 8 + node_modules/@popperjs/core/lib/index.js.flow | 13 + .../core/lib/modifiers/applyStyles.d.ts | 4 + .../core/lib/modifiers/applyStyles.js | 84 + .../core/lib/modifiers/applyStyles.js.flow | 98 + .../@popperjs/core/lib/modifiers/arrow.d.ts | 13 + .../@popperjs/core/lib/modifiers/arrow.js | 90 + .../core/lib/modifiers/arrow.js.flow | 120 + .../core/lib/modifiers/computeStyles.d.ts | 38 + .../core/lib/modifiers/computeStyles.js | 169 + .../core/lib/modifiers/computeStyles.js.flow | 233 + .../core/lib/modifiers/eventListeners.d.ts | 8 + .../core/lib/modifiers/eventListeners.js | 49 + .../core/lib/modifiers/eventListeners.js.flow | 54 + .../@popperjs/core/lib/modifiers/flip.d.ts | 16 + .../@popperjs/core/lib/modifiers/flip.js | 147 + .../@popperjs/core/lib/modifiers/flip.js.flow | 177 + .../@popperjs/core/lib/modifiers/hide.d.ts | 4 + .../@popperjs/core/lib/modifiers/hide.js | 61 + .../@popperjs/core/lib/modifiers/hide.js.flow | 76 + .../@popperjs/core/lib/modifiers/index.d.ts | 9 + .../@popperjs/core/lib/modifiers/index.js | 9 + .../core/lib/modifiers/index.js.flow | 10 + .../@popperjs/core/lib/modifiers/offset.d.ts | 18 + .../@popperjs/core/lib/modifiers/offset.js | 54 + .../core/lib/modifiers/offset.js.flow | 71 + .../core/lib/modifiers/popperOffsets.d.ts | 4 + .../core/lib/modifiers/popperOffsets.js | 25 + .../core/lib/modifiers/popperOffsets.js.flow | 26 + .../core/lib/modifiers/preventOverflow.d.ts | 30 + .../core/lib/modifiers/preventOverflow.js | 142 + .../lib/modifiers/preventOverflow.js.flow | 220 + .../@popperjs/core/lib/popper-base.d.ts | 3 + .../@popperjs/core/lib/popper-base.js | 3 + .../@popperjs/core/lib/popper-base.js.flow | 7 + .../@popperjs/core/lib/popper-lite.d.ts | 5 + .../@popperjs/core/lib/popper-lite.js | 11 + .../@popperjs/core/lib/popper-lite.js.flow | 21 + node_modules/@popperjs/core/lib/popper.d.ts | 7 + node_modules/@popperjs/core/lib/popper.js | 20 + .../@popperjs/core/lib/popper.js.flow | 35 + node_modules/@popperjs/core/lib/types.d.ts | 167 + node_modules/@popperjs/core/lib/types.js | 0 node_modules/@popperjs/core/lib/types.js.flow | 199 + .../core/lib/utils/computeAutoPlacement.d.ts | 12 + .../core/lib/utils/computeAutoPlacement.js | 43 + .../lib/utils/computeAutoPlacement.js.flow | 73 + .../core/lib/utils/computeOffsets.d.ts | 8 + .../core/lib/utils/computeOffsets.js | 70 + .../core/lib/utils/computeOffsets.js.flow | 82 + .../@popperjs/core/lib/utils/debounce.d.ts | 1 + .../@popperjs/core/lib/utils/debounce.js | 15 + .../@popperjs/core/lib/utils/debounce.js.flow | 17 + .../core/lib/utils/detectOverflow.d.ts | 12 + .../core/lib/utils/detectOverflow.js | 65 + .../core/lib/utils/detectOverflow.js.flow | 112 + .../core/lib/utils/expandToHashMap.d.ts | 3 + .../core/lib/utils/expandToHashMap.js | 6 + .../core/lib/utils/expandToHashMap.js.flow | 11 + .../@popperjs/core/lib/utils/getAltAxis.d.ts | 1 + .../@popperjs/core/lib/utils/getAltAxis.js | 3 + .../core/lib/utils/getAltAxis.js.flow | 5 + .../@popperjs/core/lib/utils/getAltLen.d.ts | 1 + .../@popperjs/core/lib/utils/getAltLen.js | 3 + .../core/lib/utils/getAltLen.js.flow | 5 + .../core/lib/utils/getBasePlacement.d.ts | 2 + .../core/lib/utils/getBasePlacement.js | 4 + .../core/lib/utils/getBasePlacement.js.flow | 8 + .../core/lib/utils/getFreshSideObject.d.ts | 2 + .../core/lib/utils/getFreshSideObject.js | 8 + .../core/lib/utils/getFreshSideObject.js.flow | 11 + .../lib/utils/getMainAxisFromPlacement.d.ts | 2 + .../lib/utils/getMainAxisFromPlacement.js | 3 + .../utils/getMainAxisFromPlacement.js.flow | 8 + .../core/lib/utils/getOppositePlacement.d.ts | 2 + .../core/lib/utils/getOppositePlacement.js | 11 + .../lib/utils/getOppositePlacement.js.flow | 11 + .../utils/getOppositeVariationPlacement.d.ts | 2 + .../utils/getOppositeVariationPlacement.js | 9 + .../getOppositeVariationPlacement.js.flow | 10 + .../core/lib/utils/getVariation.d.ts | 2 + .../@popperjs/core/lib/utils/getVariation.js | 3 + .../core/lib/utils/getVariation.js.flow | 6 + .../@popperjs/core/lib/utils/math.d.ts | 3 + node_modules/@popperjs/core/lib/utils/math.js | 3 + .../@popperjs/core/lib/utils/math.js.flow | 4 + .../@popperjs/core/lib/utils/mergeByName.d.ts | 2 + .../@popperjs/core/lib/utils/mergeByName.js | 14 + .../core/lib/utils/mergeByName.js.flow | 22 + .../core/lib/utils/mergePaddingObject.d.ts | 2 + .../core/lib/utils/mergePaddingObject.js | 4 + .../core/lib/utils/mergePaddingObject.js.flow | 12 + .../core/lib/utils/orderModifiers.d.ts | 2 + .../core/lib/utils/orderModifiers.js | 44 + .../core/lib/utils/orderModifiers.js.flow | 59 + .../core/lib/utils/rectToClientRect.d.ts | 2 + .../core/lib/utils/rectToClientRect.js | 8 + .../core/lib/utils/rectToClientRect.js.flow | 12 + .../@popperjs/core/lib/utils/uniqueBy.d.ts | 1 + .../@popperjs/core/lib/utils/uniqueBy.js | 11 + .../@popperjs/core/lib/utils/uniqueBy.js.flow | 14 + .../@popperjs/core/lib/utils/userAgent.d.ts | 1 + .../@popperjs/core/lib/utils/userAgent.js | 11 + .../core/lib/utils/userAgent.js.flow | 20 + .../@popperjs/core/lib/utils/within.d.ts | 2 + .../@popperjs/core/lib/utils/within.js | 8 + .../@popperjs/core/lib/utils/within.js.flow | 11 + node_modules/@popperjs/core/package.json | 119 + node_modules/bootstrap/LICENSE | 21 + node_modules/bootstrap/README.md | 246 + .../bootstrap/dist/css/bootstrap-grid.css | 4085 ++++++ .../bootstrap/dist/css/bootstrap-grid.css.map | 1 + .../bootstrap/dist/css/bootstrap-grid.min.css | 6 + .../dist/css/bootstrap-grid.min.css.map | 1 + .../bootstrap/dist/css/bootstrap-grid.rtl.css | 4084 ++++++ .../dist/css/bootstrap-grid.rtl.css.map | 1 + .../dist/css/bootstrap-grid.rtl.min.css | 6 + .../dist/css/bootstrap-grid.rtl.min.css.map | 1 + .../bootstrap/dist/css/bootstrap-reboot.css | 597 + .../dist/css/bootstrap-reboot.css.map | 1 + .../dist/css/bootstrap-reboot.min.css | 6 + .../dist/css/bootstrap-reboot.min.css.map | 1 + .../dist/css/bootstrap-reboot.rtl.css | 594 + .../dist/css/bootstrap-reboot.rtl.css.map | 1 + .../dist/css/bootstrap-reboot.rtl.min.css | 6 + .../dist/css/bootstrap-reboot.rtl.min.css.map | 1 + .../dist/css/bootstrap-utilities.css | 5402 +++++++ .../dist/css/bootstrap-utilities.css.map | 1 + .../dist/css/bootstrap-utilities.min.css | 6 + .../dist/css/bootstrap-utilities.min.css.map | 1 + .../dist/css/bootstrap-utilities.rtl.css | 5393 +++++++ .../dist/css/bootstrap-utilities.rtl.css.map | 1 + .../dist/css/bootstrap-utilities.rtl.min.css | 6 + .../css/bootstrap-utilities.rtl.min.css.map | 1 + node_modules/bootstrap/dist/css/bootstrap.css | 12059 ++++++++++++++++ .../bootstrap/dist/css/bootstrap.css.map | 1 + .../bootstrap/dist/css/bootstrap.min.css | 8 + .../bootstrap/dist/css/bootstrap.min.css.map | 1 + .../bootstrap/dist/css/bootstrap.rtl.css | 12030 +++++++++++++++ .../bootstrap/dist/css/bootstrap.rtl.css.map | 1 + .../bootstrap/dist/css/bootstrap.rtl.min.css | 6 + .../dist/css/bootstrap.rtl.min.css.map | 1 + .../bootstrap/dist/js/bootstrap.bundle.js | 6314 ++++++++ .../bootstrap/dist/js/bootstrap.bundle.js.map | 1 + .../bootstrap/dist/js/bootstrap.bundle.min.js | 7 + .../dist/js/bootstrap.bundle.min.js.map | 1 + .../bootstrap/dist/js/bootstrap.esm.js | 4447 ++++++ .../bootstrap/dist/js/bootstrap.esm.js.map | 1 + .../bootstrap/dist/js/bootstrap.esm.min.js | 7 + .../dist/js/bootstrap.esm.min.js.map | 1 + node_modules/bootstrap/dist/js/bootstrap.js | 4494 ++++++ .../bootstrap/dist/js/bootstrap.js.map | 1 + .../bootstrap/dist/js/bootstrap.min.js | 7 + .../bootstrap/dist/js/bootstrap.min.js.map | 1 + node_modules/bootstrap/js/dist/alert.js | 90 + node_modules/bootstrap/js/dist/alert.js.map | 1 + .../bootstrap/js/dist/base-component.js | 84 + .../bootstrap/js/dist/base-component.js.map | 1 + node_modules/bootstrap/js/dist/button.js | 79 + node_modules/bootstrap/js/dist/button.js.map | 1 + node_modules/bootstrap/js/dist/carousel.js | 388 + .../bootstrap/js/dist/carousel.js.map | 1 + node_modules/bootstrap/js/dist/collapse.js | 249 + .../bootstrap/js/dist/collapse.js.map | 1 + node_modules/bootstrap/js/dist/dom/data.js | 63 + .../bootstrap/js/dist/dom/data.js.map | 1 + .../bootstrap/js/dist/dom/event-handler.js | 237 + .../js/dist/dom/event-handler.js.map | 1 + .../bootstrap/js/dist/dom/manipulator.js | 72 + .../bootstrap/js/dist/dom/manipulator.js.map | 1 + .../bootstrap/js/dist/dom/selector-engine.js | 104 + .../js/dist/dom/selector-engine.js.map | 1 + node_modules/bootstrap/js/dist/dropdown.js | 402 + .../bootstrap/js/dist/dropdown.js.map | 1 + node_modules/bootstrap/js/dist/modal.js | 320 + node_modules/bootstrap/js/dist/modal.js.map | 1 + node_modules/bootstrap/js/dist/offcanvas.js | 246 + .../bootstrap/js/dist/offcanvas.js.map | 1 + node_modules/bootstrap/js/dist/popover.js | 96 + node_modules/bootstrap/js/dist/popover.js.map | 1 + node_modules/bootstrap/js/dist/scrollspy.js | 275 + .../bootstrap/js/dist/scrollspy.js.map | 1 + node_modules/bootstrap/js/dist/tab.js | 285 + node_modules/bootstrap/js/dist/tab.js.map | 1 + node_modules/bootstrap/js/dist/toast.js | 199 + node_modules/bootstrap/js/dist/toast.js.map | 1 + node_modules/bootstrap/js/dist/tooltip.js | 546 + node_modules/bootstrap/js/dist/tooltip.js.map | 1 + .../bootstrap/js/dist/util/backdrop.js | 139 + .../bootstrap/js/dist/util/backdrop.js.map | 1 + .../js/dist/util/component-functions.js | 42 + .../js/dist/util/component-functions.js.map | 1 + node_modules/bootstrap/js/dist/util/config.js | 68 + .../bootstrap/js/dist/util/config.js.map | 1 + .../bootstrap/js/dist/util/focustrap.js | 113 + .../bootstrap/js/dist/util/focustrap.js.map | 1 + node_modules/bootstrap/js/dist/util/index.js | 281 + .../bootstrap/js/dist/util/index.js.map | 1 + .../bootstrap/js/dist/util/sanitizer.js | 114 + .../bootstrap/js/dist/util/sanitizer.js.map | 1 + .../bootstrap/js/dist/util/scrollbar.js | 113 + .../bootstrap/js/dist/util/scrollbar.js.map | 1 + node_modules/bootstrap/js/dist/util/swipe.js | 135 + .../bootstrap/js/dist/util/swipe.js.map | 1 + .../js/dist/util/template-factory.js | 151 + .../js/dist/util/template-factory.js.map | 1 + node_modules/bootstrap/js/index.esm.js | 19 + node_modules/bootstrap/js/index.umd.js | 34 + node_modules/bootstrap/js/src/alert.js | 87 + .../bootstrap/js/src/base-component.js | 85 + node_modules/bootstrap/js/src/button.js | 72 + node_modules/bootstrap/js/src/carousel.js | 474 + node_modules/bootstrap/js/src/collapse.js | 297 + node_modules/bootstrap/js/src/dom/data.js | 55 + .../bootstrap/js/src/dom/event-handler.js | 317 + .../bootstrap/js/src/dom/manipulator.js | 71 + .../bootstrap/js/src/dom/selector-engine.js | 126 + node_modules/bootstrap/js/src/dropdown.js | 455 + node_modules/bootstrap/js/src/modal.js | 378 + node_modules/bootstrap/js/src/offcanvas.js | 282 + node_modules/bootstrap/js/src/popover.js | 97 + node_modules/bootstrap/js/src/scrollspy.js | 296 + node_modules/bootstrap/js/src/tab.js | 315 + node_modules/bootstrap/js/src/toast.js | 225 + node_modules/bootstrap/js/src/tooltip.js | 633 + .../bootstrap/js/src/util/backdrop.js | 151 + .../js/src/util/component-functions.js | 35 + node_modules/bootstrap/js/src/util/config.js | 65 + .../bootstrap/js/src/util/focustrap.js | 115 + node_modules/bootstrap/js/src/util/index.js | 306 + .../bootstrap/js/src/util/sanitizer.js | 117 + .../bootstrap/js/src/util/scrollbar.js | 114 + node_modules/bootstrap/js/src/util/swipe.js | 146 + .../bootstrap/js/src/util/template-factory.js | 160 + node_modules/bootstrap/package.json | 184 + node_modules/bootstrap/scss/_accordion.scss | 158 + node_modules/bootstrap/scss/_alert.scss | 68 + node_modules/bootstrap/scss/_badge.scss | 38 + node_modules/bootstrap/scss/_breadcrumb.scss | 40 + .../bootstrap/scss/_button-group.scss | 142 + node_modules/bootstrap/scss/_buttons.scss | 216 + node_modules/bootstrap/scss/_card.scss | 239 + node_modules/bootstrap/scss/_carousel.scss | 236 + node_modules/bootstrap/scss/_close.scss | 63 + node_modules/bootstrap/scss/_containers.scss | 41 + node_modules/bootstrap/scss/_dropdown.scss | 250 + node_modules/bootstrap/scss/_forms.scss | 9 + node_modules/bootstrap/scss/_functions.scss | 302 + node_modules/bootstrap/scss/_grid.scss | 39 + node_modules/bootstrap/scss/_helpers.scss | 12 + node_modules/bootstrap/scss/_images.scss | 42 + node_modules/bootstrap/scss/_list-group.scss | 197 + node_modules/bootstrap/scss/_maps.scss | 174 + node_modules/bootstrap/scss/_mixins.scss | 42 + node_modules/bootstrap/scss/_modal.scss | 236 + node_modules/bootstrap/scss/_nav.scss | 197 + node_modules/bootstrap/scss/_navbar.scss | 289 + node_modules/bootstrap/scss/_offcanvas.scss | 143 + node_modules/bootstrap/scss/_pagination.scss | 109 + .../bootstrap/scss/_placeholders.scss | 51 + node_modules/bootstrap/scss/_popover.scss | 196 + node_modules/bootstrap/scss/_progress.scss | 68 + node_modules/bootstrap/scss/_reboot.scss | 611 + node_modules/bootstrap/scss/_root.scss | 187 + node_modules/bootstrap/scss/_spinners.scss | 85 + node_modules/bootstrap/scss/_tables.scss | 171 + node_modules/bootstrap/scss/_toasts.scss | 73 + node_modules/bootstrap/scss/_tooltip.scss | 119 + node_modules/bootstrap/scss/_transitions.scss | 27 + node_modules/bootstrap/scss/_type.scss | 106 + node_modules/bootstrap/scss/_utilities.scss | 806 ++ .../bootstrap/scss/_variables-dark.scss | 87 + node_modules/bootstrap/scss/_variables.scss | 1751 +++ .../bootstrap/scss/bootstrap-grid.scss | 62 + .../bootstrap/scss/bootstrap-reboot.scss | 10 + .../bootstrap/scss/bootstrap-utilities.scss | 19 + node_modules/bootstrap/scss/bootstrap.scss | 51 + .../scss/forms/_floating-labels.scss | 95 + .../bootstrap/scss/forms/_form-check.scss | 189 + .../bootstrap/scss/forms/_form-control.scss | 214 + .../bootstrap/scss/forms/_form-range.scss | 91 + .../bootstrap/scss/forms/_form-select.scss | 80 + .../bootstrap/scss/forms/_form-text.scss | 11 + .../bootstrap/scss/forms/_input-group.scss | 132 + .../bootstrap/scss/forms/_labels.scss | 36 + .../bootstrap/scss/forms/_validation.scss | 12 + .../bootstrap/scss/helpers/_clearfix.scss | 3 + .../bootstrap/scss/helpers/_color-bg.scss | 7 + .../scss/helpers/_colored-links.scss | 30 + .../bootstrap/scss/helpers/_focus-ring.scss | 5 + .../bootstrap/scss/helpers/_icon-link.scss | 25 + .../bootstrap/scss/helpers/_position.scss | 36 + .../bootstrap/scss/helpers/_ratio.scss | 26 + .../bootstrap/scss/helpers/_stacks.scss | 15 + .../scss/helpers/_stretched-link.scss | 15 + .../scss/helpers/_text-truncation.scss | 7 + .../scss/helpers/_visually-hidden.scss | 8 + node_modules/bootstrap/scss/helpers/_vr.scss | 8 + .../bootstrap/scss/mixins/_alert.scss | 18 + .../bootstrap/scss/mixins/_backdrop.scss | 14 + .../bootstrap/scss/mixins/_banner.scss | 7 + .../bootstrap/scss/mixins/_border-radius.scss | 78 + .../bootstrap/scss/mixins/_box-shadow.scss | 18 + .../bootstrap/scss/mixins/_breakpoints.scss | 127 + .../bootstrap/scss/mixins/_buttons.scss | 70 + .../bootstrap/scss/mixins/_caret.scss | 69 + .../bootstrap/scss/mixins/_clearfix.scss | 9 + .../bootstrap/scss/mixins/_color-mode.scss | 21 + .../bootstrap/scss/mixins/_color-scheme.scss | 7 + .../bootstrap/scss/mixins/_container.scss | 11 + .../bootstrap/scss/mixins/_deprecate.scss | 10 + .../bootstrap/scss/mixins/_forms.scss | 163 + .../bootstrap/scss/mixins/_gradients.scss | 47 + node_modules/bootstrap/scss/mixins/_grid.scss | 151 + .../bootstrap/scss/mixins/_image.scss | 16 + .../bootstrap/scss/mixins/_list-group.scss | 26 + .../bootstrap/scss/mixins/_lists.scss | 7 + .../bootstrap/scss/mixins/_pagination.scss | 10 + .../bootstrap/scss/mixins/_reset-text.scss | 17 + .../bootstrap/scss/mixins/_resize.scss | 6 + .../scss/mixins/_table-variants.scss | 24 + .../bootstrap/scss/mixins/_text-truncate.scss | 8 + .../bootstrap/scss/mixins/_transition.scss | 26 + .../bootstrap/scss/mixins/_utilities.scss | 97 + .../scss/mixins/_visually-hidden.scss | 33 + .../bootstrap/scss/utilities/_api.scss | 47 + node_modules/bootstrap/scss/vendor/_rfs.scss | 348 + node_modules/toastify-js/.gitattributes | 17 + node_modules/toastify-js/.prettierrc | 9 + node_modules/toastify-js/.travis.yml | 12 + node_modules/toastify-js/CHANGELOG.md | 133 + node_modules/toastify-js/LICENSE | 21 + node_modules/toastify-js/README.md | 439 + node_modules/toastify-js/example/pattern.png | Bin 0 -> 21967 bytes node_modules/toastify-js/example/script.css | 95 + node_modules/toastify-js/example/script.js | 72 + node_modules/toastify-js/index.html | 59 + node_modules/toastify-js/package.json | 22 + node_modules/toastify-js/src/toastify-es.js | 466 + node_modules/toastify-js/src/toastify.css | 85 + node_modules/toastify-js/src/toastify.js | 445 + package-lock.json | 46 + package.json | 6 + 519 files changed, 99083 insertions(+) create mode 160000 TEMPEST/tempest-devel create mode 100644 index.html create mode 100644 index.js create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/@popperjs/core/LICENSE.md create mode 100644 node_modules/@popperjs/core/README.md create mode 100644 node_modules/@popperjs/core/dist/cjs/enums.js create mode 100644 node_modules/@popperjs/core/dist/cjs/enums.js.flow create mode 100644 node_modules/@popperjs/core/dist/cjs/enums.js.map create mode 100644 node_modules/@popperjs/core/dist/cjs/popper-base.js create mode 100644 node_modules/@popperjs/core/dist/cjs/popper-base.js.flow create mode 100644 node_modules/@popperjs/core/dist/cjs/popper-base.js.map create mode 100644 node_modules/@popperjs/core/dist/cjs/popper-lite.js create mode 100644 node_modules/@popperjs/core/dist/cjs/popper-lite.js.flow create mode 100644 node_modules/@popperjs/core/dist/cjs/popper-lite.js.map create mode 100644 node_modules/@popperjs/core/dist/cjs/popper.js create mode 100644 node_modules/@popperjs/core/dist/cjs/popper.js.flow create mode 100644 node_modules/@popperjs/core/dist/cjs/popper.js.map create mode 100644 node_modules/@popperjs/core/dist/esm/createPopper.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/contains.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getBoundingClientRect.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getClippingRect.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getCompositeRect.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getComputedStyle.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getDocumentElement.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getDocumentRect.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getHTMLElementScroll.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getLayoutRect.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getNodeName.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getNodeScroll.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getOffsetParent.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getParentNode.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getScrollParent.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getViewportRect.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getWindow.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getWindowScroll.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/getWindowScrollBarX.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/instanceOf.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/isLayoutViewport.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/isScrollParent.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/isTableElement.js create mode 100644 node_modules/@popperjs/core/dist/esm/dom-utils/listScrollParents.js create mode 100644 node_modules/@popperjs/core/dist/esm/enums.js create mode 100644 node_modules/@popperjs/core/dist/esm/index.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/applyStyles.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/arrow.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/computeStyles.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/eventListeners.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/flip.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/hide.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/index.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/offset.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/popperOffsets.js create mode 100644 node_modules/@popperjs/core/dist/esm/modifiers/preventOverflow.js create mode 100644 node_modules/@popperjs/core/dist/esm/popper-base.js create mode 100644 node_modules/@popperjs/core/dist/esm/popper-lite.js create mode 100644 node_modules/@popperjs/core/dist/esm/popper.js create mode 100644 node_modules/@popperjs/core/dist/esm/types.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/computeAutoPlacement.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/computeOffsets.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/debounce.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/detectOverflow.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/expandToHashMap.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getAltAxis.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getAltLen.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getBasePlacement.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getFreshSideObject.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getMainAxisFromPlacement.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getOppositePlacement.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getOppositeVariationPlacement.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/getVariation.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/math.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/mergeByName.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/mergePaddingObject.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/orderModifiers.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/rectToClientRect.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/uniqueBy.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/userAgent.js create mode 100644 node_modules/@popperjs/core/dist/esm/utils/within.js create mode 100644 node_modules/@popperjs/core/dist/umd/enums.js create mode 100644 node_modules/@popperjs/core/dist/umd/enums.js.map create mode 100644 node_modules/@popperjs/core/dist/umd/enums.min.js create mode 100644 node_modules/@popperjs/core/dist/umd/enums.min.js.flow create mode 100644 node_modules/@popperjs/core/dist/umd/enums.min.js.map create mode 100644 node_modules/@popperjs/core/dist/umd/popper-base.js create mode 100644 node_modules/@popperjs/core/dist/umd/popper-base.js.map create mode 100644 node_modules/@popperjs/core/dist/umd/popper-base.min.js create mode 100644 node_modules/@popperjs/core/dist/umd/popper-base.min.js.flow create mode 100644 node_modules/@popperjs/core/dist/umd/popper-base.min.js.map create mode 100644 node_modules/@popperjs/core/dist/umd/popper-lite.js create mode 100644 node_modules/@popperjs/core/dist/umd/popper-lite.js.map create mode 100644 node_modules/@popperjs/core/dist/umd/popper-lite.min.js create mode 100644 node_modules/@popperjs/core/dist/umd/popper-lite.min.js.flow create mode 100644 node_modules/@popperjs/core/dist/umd/popper-lite.min.js.map create mode 100644 node_modules/@popperjs/core/dist/umd/popper.js create mode 100644 node_modules/@popperjs/core/dist/umd/popper.js.map create mode 100644 node_modules/@popperjs/core/dist/umd/popper.min.js create mode 100644 node_modules/@popperjs/core/dist/umd/popper.min.js.flow create mode 100644 node_modules/@popperjs/core/dist/umd/popper.min.js.map create mode 100644 node_modules/@popperjs/core/index.d.ts create mode 100644 node_modules/@popperjs/core/lib/createPopper.d.ts create mode 100644 node_modules/@popperjs/core/lib/createPopper.js create mode 100644 node_modules/@popperjs/core/lib/createPopper.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/contains.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/contains.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/contains.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getClippingRect.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getNodeName.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getNodeName.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getNodeName.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getParentNode.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getParentNode.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getParentNode.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getScrollParent.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getViewportRect.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindow.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindow.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindow.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/instanceOf.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/instanceOf.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/instanceOf.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isScrollParent.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isTableElement.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isTableElement.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/isTableElement.js.flow create mode 100644 node_modules/@popperjs/core/lib/dom-utils/listScrollParents.d.ts create mode 100644 node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js create mode 100644 node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js.flow create mode 100644 node_modules/@popperjs/core/lib/enums.d.ts create mode 100644 node_modules/@popperjs/core/lib/enums.js create mode 100644 node_modules/@popperjs/core/lib/enums.js.flow create mode 100644 node_modules/@popperjs/core/lib/index.d.ts create mode 100644 node_modules/@popperjs/core/lib/index.js create mode 100644 node_modules/@popperjs/core/lib/index.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/applyStyles.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/applyStyles.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/applyStyles.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/arrow.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/arrow.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/arrow.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/computeStyles.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/computeStyles.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/computeStyles.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/eventListeners.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/eventListeners.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/eventListeners.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/flip.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/flip.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/flip.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/hide.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/hide.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/hide.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/index.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/index.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/index.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/offset.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/offset.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/offset.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/popperOffsets.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/popperOffsets.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/popperOffsets.js.flow create mode 100644 node_modules/@popperjs/core/lib/modifiers/preventOverflow.d.ts create mode 100644 node_modules/@popperjs/core/lib/modifiers/preventOverflow.js create mode 100644 node_modules/@popperjs/core/lib/modifiers/preventOverflow.js.flow create mode 100644 node_modules/@popperjs/core/lib/popper-base.d.ts create mode 100644 node_modules/@popperjs/core/lib/popper-base.js create mode 100644 node_modules/@popperjs/core/lib/popper-base.js.flow create mode 100644 node_modules/@popperjs/core/lib/popper-lite.d.ts create mode 100644 node_modules/@popperjs/core/lib/popper-lite.js create mode 100644 node_modules/@popperjs/core/lib/popper-lite.js.flow create mode 100644 node_modules/@popperjs/core/lib/popper.d.ts create mode 100644 node_modules/@popperjs/core/lib/popper.js create mode 100644 node_modules/@popperjs/core/lib/popper.js.flow create mode 100644 node_modules/@popperjs/core/lib/types.d.ts create mode 100644 node_modules/@popperjs/core/lib/types.js create mode 100644 node_modules/@popperjs/core/lib/types.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/computeAutoPlacement.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js create mode 100644 node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/computeOffsets.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/computeOffsets.js create mode 100644 node_modules/@popperjs/core/lib/utils/computeOffsets.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/debounce.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/debounce.js create mode 100644 node_modules/@popperjs/core/lib/utils/debounce.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/detectOverflow.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/detectOverflow.js create mode 100644 node_modules/@popperjs/core/lib/utils/detectOverflow.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/expandToHashMap.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/expandToHashMap.js create mode 100644 node_modules/@popperjs/core/lib/utils/expandToHashMap.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getAltAxis.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getAltAxis.js create mode 100644 node_modules/@popperjs/core/lib/utils/getAltAxis.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getAltLen.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getAltLen.js create mode 100644 node_modules/@popperjs/core/lib/utils/getAltLen.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getBasePlacement.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getBasePlacement.js create mode 100644 node_modules/@popperjs/core/lib/utils/getBasePlacement.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getFreshSideObject.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getFreshSideObject.js create mode 100644 node_modules/@popperjs/core/lib/utils/getFreshSideObject.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js create mode 100644 node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getOppositePlacement.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getOppositePlacement.js create mode 100644 node_modules/@popperjs/core/lib/utils/getOppositePlacement.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js create mode 100644 node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/getVariation.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/getVariation.js create mode 100644 node_modules/@popperjs/core/lib/utils/getVariation.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/math.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/math.js create mode 100644 node_modules/@popperjs/core/lib/utils/math.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/mergeByName.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/mergeByName.js create mode 100644 node_modules/@popperjs/core/lib/utils/mergeByName.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/mergePaddingObject.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/mergePaddingObject.js create mode 100644 node_modules/@popperjs/core/lib/utils/mergePaddingObject.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/orderModifiers.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/orderModifiers.js create mode 100644 node_modules/@popperjs/core/lib/utils/orderModifiers.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/rectToClientRect.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/rectToClientRect.js create mode 100644 node_modules/@popperjs/core/lib/utils/rectToClientRect.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/uniqueBy.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/uniqueBy.js create mode 100644 node_modules/@popperjs/core/lib/utils/uniqueBy.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/userAgent.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/userAgent.js create mode 100644 node_modules/@popperjs/core/lib/utils/userAgent.js.flow create mode 100644 node_modules/@popperjs/core/lib/utils/within.d.ts create mode 100644 node_modules/@popperjs/core/lib/utils/within.js create mode 100644 node_modules/@popperjs/core/lib/utils/within.js.flow create mode 100644 node_modules/@popperjs/core/package.json create mode 100644 node_modules/bootstrap/LICENSE create mode 100644 node_modules/bootstrap/README.md create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.min.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.rtl.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.rtl.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.rtl.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.min.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.min.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap.min.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap.rtl.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap.rtl.css.map create mode 100644 node_modules/bootstrap/dist/css/bootstrap.rtl.min.css create mode 100644 node_modules/bootstrap/dist/css/bootstrap.rtl.min.css.map create mode 100644 node_modules/bootstrap/dist/js/bootstrap.bundle.js create mode 100644 node_modules/bootstrap/dist/js/bootstrap.bundle.js.map create mode 100644 node_modules/bootstrap/dist/js/bootstrap.bundle.min.js create mode 100644 node_modules/bootstrap/dist/js/bootstrap.bundle.min.js.map create mode 100644 node_modules/bootstrap/dist/js/bootstrap.esm.js create mode 100644 node_modules/bootstrap/dist/js/bootstrap.esm.js.map create mode 100644 node_modules/bootstrap/dist/js/bootstrap.esm.min.js create mode 100644 node_modules/bootstrap/dist/js/bootstrap.esm.min.js.map create mode 100644 node_modules/bootstrap/dist/js/bootstrap.js create mode 100644 node_modules/bootstrap/dist/js/bootstrap.js.map create mode 100644 node_modules/bootstrap/dist/js/bootstrap.min.js create mode 100644 node_modules/bootstrap/dist/js/bootstrap.min.js.map create mode 100644 node_modules/bootstrap/js/dist/alert.js create mode 100644 node_modules/bootstrap/js/dist/alert.js.map create mode 100644 node_modules/bootstrap/js/dist/base-component.js create mode 100644 node_modules/bootstrap/js/dist/base-component.js.map create mode 100644 node_modules/bootstrap/js/dist/button.js create mode 100644 node_modules/bootstrap/js/dist/button.js.map create mode 100644 node_modules/bootstrap/js/dist/carousel.js create mode 100644 node_modules/bootstrap/js/dist/carousel.js.map create mode 100644 node_modules/bootstrap/js/dist/collapse.js create mode 100644 node_modules/bootstrap/js/dist/collapse.js.map create mode 100644 node_modules/bootstrap/js/dist/dom/data.js create mode 100644 node_modules/bootstrap/js/dist/dom/data.js.map create mode 100644 node_modules/bootstrap/js/dist/dom/event-handler.js create mode 100644 node_modules/bootstrap/js/dist/dom/event-handler.js.map create mode 100644 node_modules/bootstrap/js/dist/dom/manipulator.js create mode 100644 node_modules/bootstrap/js/dist/dom/manipulator.js.map create mode 100644 node_modules/bootstrap/js/dist/dom/selector-engine.js create mode 100644 node_modules/bootstrap/js/dist/dom/selector-engine.js.map create mode 100644 node_modules/bootstrap/js/dist/dropdown.js create mode 100644 node_modules/bootstrap/js/dist/dropdown.js.map create mode 100644 node_modules/bootstrap/js/dist/modal.js create mode 100644 node_modules/bootstrap/js/dist/modal.js.map create mode 100644 node_modules/bootstrap/js/dist/offcanvas.js create mode 100644 node_modules/bootstrap/js/dist/offcanvas.js.map create mode 100644 node_modules/bootstrap/js/dist/popover.js create mode 100644 node_modules/bootstrap/js/dist/popover.js.map create mode 100644 node_modules/bootstrap/js/dist/scrollspy.js create mode 100644 node_modules/bootstrap/js/dist/scrollspy.js.map create mode 100644 node_modules/bootstrap/js/dist/tab.js create mode 100644 node_modules/bootstrap/js/dist/tab.js.map create mode 100644 node_modules/bootstrap/js/dist/toast.js create mode 100644 node_modules/bootstrap/js/dist/toast.js.map create mode 100644 node_modules/bootstrap/js/dist/tooltip.js create mode 100644 node_modules/bootstrap/js/dist/tooltip.js.map create mode 100644 node_modules/bootstrap/js/dist/util/backdrop.js create mode 100644 node_modules/bootstrap/js/dist/util/backdrop.js.map create mode 100644 node_modules/bootstrap/js/dist/util/component-functions.js create mode 100644 node_modules/bootstrap/js/dist/util/component-functions.js.map create mode 100644 node_modules/bootstrap/js/dist/util/config.js create mode 100644 node_modules/bootstrap/js/dist/util/config.js.map create mode 100644 node_modules/bootstrap/js/dist/util/focustrap.js create mode 100644 node_modules/bootstrap/js/dist/util/focustrap.js.map create mode 100644 node_modules/bootstrap/js/dist/util/index.js create mode 100644 node_modules/bootstrap/js/dist/util/index.js.map create mode 100644 node_modules/bootstrap/js/dist/util/sanitizer.js create mode 100644 node_modules/bootstrap/js/dist/util/sanitizer.js.map create mode 100644 node_modules/bootstrap/js/dist/util/scrollbar.js create mode 100644 node_modules/bootstrap/js/dist/util/scrollbar.js.map create mode 100644 node_modules/bootstrap/js/dist/util/swipe.js create mode 100644 node_modules/bootstrap/js/dist/util/swipe.js.map create mode 100644 node_modules/bootstrap/js/dist/util/template-factory.js create mode 100644 node_modules/bootstrap/js/dist/util/template-factory.js.map create mode 100644 node_modules/bootstrap/js/index.esm.js create mode 100644 node_modules/bootstrap/js/index.umd.js create mode 100644 node_modules/bootstrap/js/src/alert.js create mode 100644 node_modules/bootstrap/js/src/base-component.js create mode 100644 node_modules/bootstrap/js/src/button.js create mode 100644 node_modules/bootstrap/js/src/carousel.js create mode 100644 node_modules/bootstrap/js/src/collapse.js create mode 100644 node_modules/bootstrap/js/src/dom/data.js create mode 100644 node_modules/bootstrap/js/src/dom/event-handler.js create mode 100644 node_modules/bootstrap/js/src/dom/manipulator.js create mode 100644 node_modules/bootstrap/js/src/dom/selector-engine.js create mode 100644 node_modules/bootstrap/js/src/dropdown.js create mode 100644 node_modules/bootstrap/js/src/modal.js create mode 100644 node_modules/bootstrap/js/src/offcanvas.js create mode 100644 node_modules/bootstrap/js/src/popover.js create mode 100644 node_modules/bootstrap/js/src/scrollspy.js create mode 100644 node_modules/bootstrap/js/src/tab.js create mode 100644 node_modules/bootstrap/js/src/toast.js create mode 100644 node_modules/bootstrap/js/src/tooltip.js create mode 100644 node_modules/bootstrap/js/src/util/backdrop.js create mode 100644 node_modules/bootstrap/js/src/util/component-functions.js create mode 100644 node_modules/bootstrap/js/src/util/config.js create mode 100644 node_modules/bootstrap/js/src/util/focustrap.js create mode 100644 node_modules/bootstrap/js/src/util/index.js create mode 100644 node_modules/bootstrap/js/src/util/sanitizer.js create mode 100644 node_modules/bootstrap/js/src/util/scrollbar.js create mode 100644 node_modules/bootstrap/js/src/util/swipe.js create mode 100644 node_modules/bootstrap/js/src/util/template-factory.js create mode 100644 node_modules/bootstrap/package.json create mode 100644 node_modules/bootstrap/scss/_accordion.scss create mode 100644 node_modules/bootstrap/scss/_alert.scss create mode 100644 node_modules/bootstrap/scss/_badge.scss create mode 100644 node_modules/bootstrap/scss/_breadcrumb.scss create mode 100644 node_modules/bootstrap/scss/_button-group.scss create mode 100644 node_modules/bootstrap/scss/_buttons.scss create mode 100644 node_modules/bootstrap/scss/_card.scss create mode 100644 node_modules/bootstrap/scss/_carousel.scss create mode 100644 node_modules/bootstrap/scss/_close.scss create mode 100644 node_modules/bootstrap/scss/_containers.scss create mode 100644 node_modules/bootstrap/scss/_dropdown.scss create mode 100644 node_modules/bootstrap/scss/_forms.scss create mode 100644 node_modules/bootstrap/scss/_functions.scss create mode 100644 node_modules/bootstrap/scss/_grid.scss create mode 100644 node_modules/bootstrap/scss/_helpers.scss create mode 100644 node_modules/bootstrap/scss/_images.scss create mode 100644 node_modules/bootstrap/scss/_list-group.scss create mode 100644 node_modules/bootstrap/scss/_maps.scss create mode 100644 node_modules/bootstrap/scss/_mixins.scss create mode 100644 node_modules/bootstrap/scss/_modal.scss create mode 100644 node_modules/bootstrap/scss/_nav.scss create mode 100644 node_modules/bootstrap/scss/_navbar.scss create mode 100644 node_modules/bootstrap/scss/_offcanvas.scss create mode 100644 node_modules/bootstrap/scss/_pagination.scss create mode 100644 node_modules/bootstrap/scss/_placeholders.scss create mode 100644 node_modules/bootstrap/scss/_popover.scss create mode 100644 node_modules/bootstrap/scss/_progress.scss create mode 100644 node_modules/bootstrap/scss/_reboot.scss create mode 100644 node_modules/bootstrap/scss/_root.scss create mode 100644 node_modules/bootstrap/scss/_spinners.scss create mode 100644 node_modules/bootstrap/scss/_tables.scss create mode 100644 node_modules/bootstrap/scss/_toasts.scss create mode 100644 node_modules/bootstrap/scss/_tooltip.scss create mode 100644 node_modules/bootstrap/scss/_transitions.scss create mode 100644 node_modules/bootstrap/scss/_type.scss create mode 100644 node_modules/bootstrap/scss/_utilities.scss create mode 100644 node_modules/bootstrap/scss/_variables-dark.scss create mode 100644 node_modules/bootstrap/scss/_variables.scss create mode 100644 node_modules/bootstrap/scss/bootstrap-grid.scss create mode 100644 node_modules/bootstrap/scss/bootstrap-reboot.scss create mode 100644 node_modules/bootstrap/scss/bootstrap-utilities.scss create mode 100644 node_modules/bootstrap/scss/bootstrap.scss create mode 100644 node_modules/bootstrap/scss/forms/_floating-labels.scss create mode 100644 node_modules/bootstrap/scss/forms/_form-check.scss create mode 100644 node_modules/bootstrap/scss/forms/_form-control.scss create mode 100644 node_modules/bootstrap/scss/forms/_form-range.scss create mode 100644 node_modules/bootstrap/scss/forms/_form-select.scss create mode 100644 node_modules/bootstrap/scss/forms/_form-text.scss create mode 100644 node_modules/bootstrap/scss/forms/_input-group.scss create mode 100644 node_modules/bootstrap/scss/forms/_labels.scss create mode 100644 node_modules/bootstrap/scss/forms/_validation.scss create mode 100644 node_modules/bootstrap/scss/helpers/_clearfix.scss create mode 100644 node_modules/bootstrap/scss/helpers/_color-bg.scss create mode 100644 node_modules/bootstrap/scss/helpers/_colored-links.scss create mode 100644 node_modules/bootstrap/scss/helpers/_focus-ring.scss create mode 100644 node_modules/bootstrap/scss/helpers/_icon-link.scss create mode 100644 node_modules/bootstrap/scss/helpers/_position.scss create mode 100644 node_modules/bootstrap/scss/helpers/_ratio.scss create mode 100644 node_modules/bootstrap/scss/helpers/_stacks.scss create mode 100644 node_modules/bootstrap/scss/helpers/_stretched-link.scss create mode 100644 node_modules/bootstrap/scss/helpers/_text-truncation.scss create mode 100644 node_modules/bootstrap/scss/helpers/_visually-hidden.scss create mode 100644 node_modules/bootstrap/scss/helpers/_vr.scss create mode 100644 node_modules/bootstrap/scss/mixins/_alert.scss create mode 100644 node_modules/bootstrap/scss/mixins/_backdrop.scss create mode 100644 node_modules/bootstrap/scss/mixins/_banner.scss create mode 100644 node_modules/bootstrap/scss/mixins/_border-radius.scss create mode 100644 node_modules/bootstrap/scss/mixins/_box-shadow.scss create mode 100644 node_modules/bootstrap/scss/mixins/_breakpoints.scss create mode 100644 node_modules/bootstrap/scss/mixins/_buttons.scss create mode 100644 node_modules/bootstrap/scss/mixins/_caret.scss create mode 100644 node_modules/bootstrap/scss/mixins/_clearfix.scss create mode 100644 node_modules/bootstrap/scss/mixins/_color-mode.scss create mode 100644 node_modules/bootstrap/scss/mixins/_color-scheme.scss create mode 100644 node_modules/bootstrap/scss/mixins/_container.scss create mode 100644 node_modules/bootstrap/scss/mixins/_deprecate.scss create mode 100644 node_modules/bootstrap/scss/mixins/_forms.scss create mode 100644 node_modules/bootstrap/scss/mixins/_gradients.scss create mode 100644 node_modules/bootstrap/scss/mixins/_grid.scss create mode 100644 node_modules/bootstrap/scss/mixins/_image.scss create mode 100644 node_modules/bootstrap/scss/mixins/_list-group.scss create mode 100644 node_modules/bootstrap/scss/mixins/_lists.scss create mode 100644 node_modules/bootstrap/scss/mixins/_pagination.scss create mode 100644 node_modules/bootstrap/scss/mixins/_reset-text.scss create mode 100644 node_modules/bootstrap/scss/mixins/_resize.scss create mode 100644 node_modules/bootstrap/scss/mixins/_table-variants.scss create mode 100644 node_modules/bootstrap/scss/mixins/_text-truncate.scss create mode 100644 node_modules/bootstrap/scss/mixins/_transition.scss create mode 100644 node_modules/bootstrap/scss/mixins/_utilities.scss create mode 100644 node_modules/bootstrap/scss/mixins/_visually-hidden.scss create mode 100644 node_modules/bootstrap/scss/utilities/_api.scss create mode 100644 node_modules/bootstrap/scss/vendor/_rfs.scss create mode 100644 node_modules/toastify-js/.gitattributes create mode 100644 node_modules/toastify-js/.prettierrc create mode 100644 node_modules/toastify-js/.travis.yml create mode 100644 node_modules/toastify-js/CHANGELOG.md create mode 100644 node_modules/toastify-js/LICENSE create mode 100644 node_modules/toastify-js/README.md create mode 100644 node_modules/toastify-js/example/pattern.png create mode 100644 node_modules/toastify-js/example/script.css create mode 100644 node_modules/toastify-js/example/script.js create mode 100644 node_modules/toastify-js/index.html create mode 100644 node_modules/toastify-js/package.json create mode 100644 node_modules/toastify-js/src/toastify-es.js create mode 100644 node_modules/toastify-js/src/toastify.css create mode 100644 node_modules/toastify-js/src/toastify.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/TEMPEST/tempest-devel b/TEMPEST/tempest-devel new file mode 160000 index 0000000..8da3234 --- /dev/null +++ b/TEMPEST/tempest-devel @@ -0,0 +1 @@ +Subproject commit 8da32343531799e827816124932063a28e9c885b diff --git a/index.html b/index.html new file mode 100644 index 0000000..9e86c49 --- /dev/null +++ b/index.html @@ -0,0 +1,224 @@ + + + + + + Internship + + + + + + +
+
+
+ +
+ +
+
+

Input 2

+ +
+
+ +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+
+
+ +
+ + +
+ +
+
+
+
+ + + + + diff --git a/index.js b/index.js new file mode 100644 index 0000000..bfe0cc2 --- /dev/null +++ b/index.js @@ -0,0 +1,85 @@ +var outputs = []; +var simulator = []; +var graph = []; +function run() { + var input1 = document.getElementById("firstInput").value; + var input2 = document.getElementById("secondInput").value; + + if (!input1 || !input2) { + Toastify({ + text: "Input field cannot be empty!", + duration: 3000, + close: true, + gravity: "top", + }).showToast(); + } else { + outputFunction(input1, input2); + simulatorFunction(input1, input2); + graphFunction(input1, input2); + + updateTextarea(getActiveTabContent()); + + var input1 = (document.getElementById("firstInput").value = ""); + var input2 = (document.getElementById("secondInput").value = ""); + + // Query for only the checked checkboxes and put the result in an array + + //Printing values one by one + // let checked = document.querySelectorAll("input[type='checkbox']:checked"); + // console.clear(); + // checked.forEach(function (cb) { + // console.log(cb.value); + // }); + + //Saving values in array + let checked = document.querySelectorAll("input[type='checkbox']:checked"); + console.clear(); + let checkedValues = Array.from(checked).map((cb) => cb.value); + console.log(checkedValues); + } +} + +//Functions +function simulatorFunction(input1, input2) { + var result = input1 + input2; + simulator.push(result); +} + +function outputFunction(input1, input2) { + var result = input1 + " " + input2; + outputs.push(result); +} +function graphFunction(input1, input2) { + var result = input1 + "-" + input2; + graph.push(result); +} + +function getActiveTabContent() { + var activeTabId = document.querySelector(".rightNav.active").id; + switch (activeTabId) { + case "output": + return outputs; + case "simulator": + return simulator; + case "graph": + return graph; + default: + return []; + } +} + +function updateTextarea(data) { + scrollableOutput.innerHTML = data.join("\r\n"); +} + +// Add click event listeners to tab links +document.querySelectorAll(".rightNav").forEach((navLink) => { + navLink.addEventListener("click", function (event) { + event.preventDefault(); + document.querySelectorAll(".rightNav").forEach((navLink) => { + navLink.classList.remove("active"); + }); + this.classList.add("active"); + updateTextarea(getActiveTabContent()); + }); +}); diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..49393a0 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,40 @@ +{ + "name": "Internship", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/toastify-js": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", + "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==" + } + } +} diff --git a/node_modules/@popperjs/core/LICENSE.md b/node_modules/@popperjs/core/LICENSE.md new file mode 100644 index 0000000..0370c45 --- /dev/null +++ b/node_modules/@popperjs/core/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Federico Zivolo + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@popperjs/core/README.md b/node_modules/@popperjs/core/README.md new file mode 100644 index 0000000..53be7b9 --- /dev/null +++ b/node_modules/@popperjs/core/README.md @@ -0,0 +1,376 @@ + +

+ Popper +

+ +
+

Tooltip & Popover Positioning Engine

+
+ +

+ + npm version + + + npm downloads per month (popper.js + @popperjs/core) + + + Rolling Versions + +

+ +
+ + +**Positioning tooltips and popovers is difficult. Popper is here to help!** + +Given an element, such as a button, and a tooltip element describing it, Popper +will automatically put the tooltip in the right place near the button. + +It will position _any_ UI element that "pops out" from the flow of your document +and floats near a target element. The most common example is a tooltip, but it +also includes popovers, drop-downs, and more. All of these can be generically +described as a "popper" element. + +## Demo + +[![Popper visualized](https://i.imgur.com/F7qWsmV.jpg)](https://popper.js.org) + +## Docs + +- [v2.x (latest)](https://popper.js.org/docs/v2/) +- [v1.x](https://popper.js.org/docs/v1/) + +We've created a +[Migration Guide](https://popper.js.org/docs/v2/migration-guide/) to help you +migrate from Popper 1 to Popper 2. + +To contribute to the Popper website and documentation, please visit the +[dedicated repository](https://github.com/popperjs/website). + +## Why not use pure CSS? + +- **Clipping and overflow issues**: Pure CSS poppers will not be prevented from + overflowing clipping boundaries, such as the viewport. It will get partially + cut off or overflows if it's near the edge since there is no dynamic + positioning logic. When using Popper, your popper will always be positioned in + the right place without needing manual adjustments. +- **No flipping**: CSS poppers will not flip to a different placement to fit + better in view if necessary. While you can manually adjust for the main axis + overflow, this feature cannot be achieved via CSS alone. Popper automatically + flips the tooltip to make it fit in view as best as possible for the user. +- **No virtual positioning**: CSS poppers cannot follow the mouse cursor or be + used as a context menu. Popper allows you to position your tooltip relative to + any coordinates you desire. +- **Slower development cycle**: When pure CSS is used to position popper + elements, the lack of dynamic positioning means they must be carefully placed + to consider overflow on all screen sizes. In reusable component libraries, + this means a developer can't just add the component anywhere on the page, + because these issues need to be considered and adjusted for every time. With + Popper, you can place your elements anywhere and they will be positioned + correctly, without needing to consider different screen sizes, layouts, etc. + This massively speeds up development time because this work is automatically + offloaded to Popper. +- **Lack of extensibility**: CSS poppers cannot be easily extended to fit any + arbitrary use case you may need to adjust for. Popper is built with + extensibility in mind. + +## Why Popper? + +With the CSS drawbacks out of the way, we now move on to Popper in the +JavaScript space itself. + +Naive JavaScript tooltip implementations usually have the following problems: + +- **Scrolling containers**: They don't ensure the tooltip stays with the + reference element while scrolling when inside any number of scrolling + containers. +- **DOM context**: They often require the tooltip move outside of its original + DOM context because they don't handle `offsetParent` contexts. +- **Compatibility**: Popper handles an incredible number of edge cases regarding + different browsers and environments (mobile viewports, RTL, scrollbars enabled + or disabled, etc.). Popper is a popular and well-maintained library, so you + can be confident positioning will work for your users on any device. +- **Configurability**: They often lack advanced configurability to suit any + possible use case. +- **Size**: They are usually relatively large in size, or require an ancient + jQuery dependency. +- **Performance**: They often have runtime performance issues and update the + tooltip position too slowly. + +**Popper solves all of these key problems in an elegant, performant manner.** It +is a lightweight ~3 kB library that aims to provide a reliable and extensible +positioning engine you can use to ensure all your popper elements are positioned +in the right place. + +When you start writing your own popper implementation, you'll quickly run into +all of the problems mentioned above. These widgets are incredibly common in our +UIs; we've done the hard work figuring this out so you don't need to spend hours +fixing and handling numerous edge cases that we already ran into while building +the library! + +Popper is used in popular libraries like Bootstrap, Foundation, Material UI, and +more. It's likely you've already used popper elements on the web positioned by +Popper at some point in the past few years. + +Since we write UIs using powerful abstraction libraries such as React or Angular +nowadays, you'll also be glad to know Popper can fully integrate with them and +be a good citizen together with your other components. Check out `react-popper` +for the official Popper wrapper for React. + +## Installation + +### 1. Package Manager + +```bash +# With npm +npm i @popperjs/core + +# With Yarn +yarn add @popperjs/core +``` + +### 2. CDN + +```html + + + + + +``` + +### 3. Direct Download? + +Managing dependencies by "directly downloading" them and placing them into your +source code is not recommended for a variety of reasons, including missing out +on feat/fix updates easily. Please use a versioning management system like a CDN +or npm/Yarn. + +## Usage + +The most straightforward way to get started is to import Popper from the `unpkg` +CDN, which includes all of its features. You can call the `Popper.createPopper` +constructor to create new popper instances. + +Here is a complete example: + +```html + +Popper example + + + + + + + + +``` + +Visit the [tutorial](https://popper.js.org/docs/v2/tutorial/) for an example of +how to build your own tooltip from scratch using Popper. + +### Module bundlers + +You can import the `createPopper` constructor from the fully-featured file: + +```js +import { createPopper } from '@popperjs/core'; + +const button = document.querySelector('#button'); +const tooltip = document.querySelector('#tooltip'); + +// Pass the button, the tooltip, and some options, and Popper will do the +// magic positioning for you: +createPopper(button, tooltip, { + placement: 'right', +}); +``` + +All the modifiers listed in the docs menu will be enabled and "just work", so +you don't need to think about setting Popper up. The size of Popper including +all of its features is about 5 kB minzipped, but it may grow a bit in the +future. + +#### Popper Lite (tree-shaking) + +If bundle size is important, you'll want to take advantage of tree-shaking. The +library is built in a modular way to allow to import only the parts you really +need. + +```js +import { createPopperLite as createPopper } from '@popperjs/core'; +``` + +The Lite version includes the most necessary modifiers that will compute the +offsets of the popper, compute and add the positioning styles, and add event +listeners. This is close in bundle size to pure CSS tooltip libraries, and +behaves somewhat similarly. + +However, this does not include the features that makes Popper truly useful. + +The two most useful modifiers not included in Lite are `preventOverflow` and +`flip`: + +```js +import { + createPopperLite as createPopper, + preventOverflow, + flip, +} from '@popperjs/core'; + +const button = document.querySelector('#button'); +const tooltip = document.querySelector('#tooltip'); + +createPopper(button, tooltip, { + modifiers: [preventOverflow, flip], +}); +``` + +As you make more poppers, you may be finding yourself needing other modifiers +provided by the library. + +See [tree-shaking](https://popper.js.org/docs/v2/performance/#tree-shaking) for more +information. + +## Distribution targets + +Popper is distributed in 3 different versions, in 3 different file formats. + +The 3 file formats are: + +- `esm` (works with `import` syntax — **recommended**) +- `umd` (works with ` +``` + +> Files are delivered via the CDN service provided by [jsdeliver](https://www.jsdelivr.com/) + +## Documentation + +```javascript +Toastify({ + text: "This is a toast", + duration: 3000, + destination: "https://github.com/apvarun/toastify-js", + newWindow: true, + close: true, + gravity: "top", // `top` or `bottom` + position: "left", // `left`, `center` or `right` + stopOnFocus: true, // Prevents dismissing of toast on hover + style: { + background: "linear-gradient(to right, #00b09b, #96c93d)", + }, + onClick: function(){} // Callback after click +}).showToast(); +``` + +> Toast messages will be centered on devices with screen width less than 360px. + +* See the [changelog](https://github.com/apvarun/toastify-js/blob/master/CHANGELOG.md) + +### Add own custom classes + +If you want to use custom classes on the toast for customizing (like info or warning for example), you can do that as follows: + +```javascript +Toastify({ + text: "This is a toast", + className: "info", + style: { + background: "linear-gradient(to right, #00b09b, #96c93d)", + } +}).showToast(); +``` + +Multiple classes also can be assigned as a string, with spaces between class names. + +### Add some offset + +If you want to add offset to the toast, you can do that as follows: + +```javascript +Toastify({ + text: "This is a toast with offset", + offset: { + x: 50, // horizontal axis - can be a number or a string indicating unity. eg: '2em' + y: 10 // vertical axis - can be a number or a string indicating unity. eg: '2em' + }, +}).showToast(); +``` + +Toast will be pushed 50px from right in x axis and 10px from top in y axis. + +**Note:** + +If `position` is equals to `left`, it will be pushed from left. +If `gravity` is equals to `bottom`, it will be pushed from bottom. + +## API + +| Option Key | type | Usage | Defaults | +|-----------------|----------------------|----------------------------------------------------------------------------|-------------| +| text | string | Message to be displayed in the toast | "Hi there!" | +| node | ELEMENT_NODE | Provide a node to be mounted inside the toast. `node` takes higher precedence over `text` | | +| duration | number | Duration for which the toast should be displayed.
-1 for permanent toast | 3000 | +| selector | string \| ELEMENT_NODE | ShadowRoot | CSS Selector or Element Node on which the toast should be added | body | +| destination | URL string | URL to which the browser should be navigated on click of the toast | | +| newWindow | boolean | Decides whether the `destination` should be opened in a new window or not | false | +| close | boolean | To show the close icon or not | false | +| gravity | "top" or "bottom" | To show the toast from top or bottom | "top" | +| position | "left" or "right" | To show the toast on left or right | "right" | +| backgroundColor | CSS background value | To be deprecated, use `style.background` option instead. Sets the background color of the toast | | +| avatar | URL string | Image/icon to be shown before text | | +| className | string | Ability to provide custom class name for further customization | | +| stopOnFocus | boolean | To stop timer when hovered over the toast (Only if duration is set) | true | +| callback | Function | Invoked when the toast is dismissed | | +| onClick | Function | Invoked when the toast is clicked | | +| offset | Object | Ability to add some offset to axis | | +| escapeMarkup | boolean | Toggle the default behavior of escaping HTML markup | true | +| style | object | Use the HTML DOM Style properties to add any style directly to toast | | +| ariaLive | string | Announce the toast to screen readers, see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions for options | "polite" | +| oldestFirst | boolean | Set the order in which toasts are stacked in page | true | + +> Deprecated properties: `backgroundColor` - use `style.background` option instead + +## Browsers support + +| ![][ie]
IE / Edge | ![][firefox]
Firefox | ![][chrome]
Chrome | ![][safari]
Safari | ![][opera]
Opera | +| ---------------------- | ------------------------- | ----------------------- | ----------------------- | --------------------- | +| IE10, IE11, Edge | last 10 versions | last 10 versions | last 10 versions | last 10 versions | + +## Contributors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + AStoker +
+ AStoker +
+
+ + caiomoura1994 +
+ caiomoura1994 +
+
+ + rndevfx +
+ rndevfx +
+
+ + 1ess +
+ 1ess +
+
+ + d4rn0k +
+ d4rn0k +
+
+ + danielkaiser80 +
+ danielkaiser80 +
+
+ + skjnldsv +
+ skjnldsv +
+
+ + chasedeanda +
+ chasedeanda +
+
+ + chrisgraham +
+ chrisgraham +
+
+ + Wachiwi +
+ Wachiwi +
+
+ + FeixuRuins +
+ FeixuRuins +
+
+ + gavinhungry +
+ gavinhungry +
+
+ + haydster7 +
+ haydster7 +
+
+ + joaquinwojcik +
+ joaquinwojcik +
+
+ + juliushaertl +
+ juliushaertl +
+
+ + mort3za +
+ mort3za +
+
+ + Sandip124 +
+ Sandip124 +
+
+ + Tadaz +
+ Tadaz +
+
+ + t12ung +
+ t12ung +
+
+ + victorfeijo +
+ victorfeijo +
+
+ + fiatjaf +
+ fiatjaf +
+
+ + prousseau-korem +
+ prousseau-korem +
+
+ + + + +## License + +MIT © [Varun A P](https://github.com/apvarun) + +Buy Me A Coffee + +[ie]: https://raw.githubusercontent.com/godban/browsers-support-badges/master/src/images/edge.png +[firefox]: https://raw.githubusercontent.com/godban/browsers-support-badges/master/src/images/firefox.png +[chrome]: https://raw.githubusercontent.com/godban/browsers-support-badges/master/src/images/chrome.png +[safari]: https://raw.githubusercontent.com/godban/browsers-support-badges/master/src/images/safari.png +[opera]: https://raw.githubusercontent.com/godban/browsers-support-badges/master/src/images/opera.png + diff --git a/node_modules/toastify-js/example/pattern.png b/node_modules/toastify-js/example/pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..310e8868d9d510f0aad29b0ff9081d42d13bf8b0 GIT binary patch literal 21967 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 + + + + + + + Toastify JS - Pure JavaScript Toast Notificaton Library + + + + + + + + +
+
+

Toastify JS

+
+

Better notification messages

+
+ Try + Docs + Tweet +
+
+

Usage

+ +

Toastify({

+

text: "This is a toast",

+

duration: 3000

+

}).showToast();

+
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/node_modules/toastify-js/package.json b/node_modules/toastify-js/package.json new file mode 100644 index 0000000..52dcf26 --- /dev/null +++ b/node_modules/toastify-js/package.json @@ -0,0 +1,22 @@ +{ + "name": "toastify-js", + "version": "1.12.0", + "description": "Toastify is a lightweight, vanilla JS toast notification library.", + "main": "./src/toastify.js", + "repository": { + "type": "git", + "url": "git+https://github.com/apvarun/toastify-js.git" + }, + "keywords": [ + "toastify", + "javascript", + "notifications", + "toast" + ], + "author": "Varun A P", + "license": "MIT", + "bugs": { + "url": "https://github.com/apvarun/toastify-js/issues" + }, + "homepage": "https://github.com/apvarun/toastify-js#readme" +} diff --git a/node_modules/toastify-js/src/toastify-es.js b/node_modules/toastify-js/src/toastify-es.js new file mode 100644 index 0000000..784cf59 --- /dev/null +++ b/node_modules/toastify-js/src/toastify-es.js @@ -0,0 +1,466 @@ +/*! + * Toastify js 1.12.0 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ + +/** + * Options used for Toastify + * @typedef {Object} ToastifyConfigurationObject + * @property {string} text - Message to be displayed in the toast + * @property {Element} node - Provide a node to be mounted inside the toast. node takes higher precedence over text + * @property {number} duration - Duration for which the toast should be displayed. -1 for permanent toast + * @property {string|Element} selector - CSS ID Selector on which the toast should be added + * @property {url} destination - URL to which the browser should be navigated on click of the toast + * @property {boolean} newWindow - Decides whether the destination should be opened in a new window or not + * @property {boolean} close - To show the close icon or not + * @property {string} gravity - To show the toast from top or bottom + * @property {string} position - To show the toast on left or right + * @property {string} backgroundColor - Deprecated: Sets the background color of the toast + * @property {url} avatar - Image/icon to be shown before text + * @property {string} className - Ability to provide custom class name for further customization + * @property {boolean} stopOnFocus - To stop timer when hovered over the toast (Only if duration is set) + * @property {Function} callback - Invoked when the toast is dismissed + * @property {Function} onClick - Invoked when the toast is clicked + * @property {Object} offset - Ability to add some offset to axis + * @property {boolean} escapeMarkup - Toggle the default behavior of escaping HTML markup + * @property {string} ariaLive - Use the HTML DOM style property to add styles to toast + * @property {Object} style - Use the HTML DOM style property to add styles to toast + */ + + +class Toastify { + + defaults = { + oldestFirst: true, + text: "Toastify is awesome!", + node: undefined, + duration: 3000, + selector: undefined, + callback: function() {}, + destination: undefined, + newWindow: false, + close: false, + gravity: "toastify-top", + positionLeft: false, + position: "", + backgroundColor: "", + avatar: "", + className: "", + stopOnFocus: true, + onClick: function() {}, + offset: { x: 0, y: 0 }, + escapeMarkup: true, + ariaLive: "polite", + style: { background: "" }, + }; + + constructor(options) { + /** + * The version of Toastify + * @type {string} + * @public + */ + this.version = "1.12.0"; + + /** + * The configuration object to configure Toastify + * @type {ToastifyConfigurationObject} + * @public + */ + this.options = {}; + + /** + * The element that is the Toast + * @type {Element} + * @public + */ + this.toastElement = null; + + /** + * The root element that contains all the toasts + * @type {Element} + * @private + */ + this._rootElement = document.body; + + this._init(options); + } + + /** + * Display the toast + * @public + */ + showToast() { + // Creating the DOM object for the toast + this.toastElement = this._buildToast(); + + // Getting the root element to with the toast needs to be added + if (typeof this.options.selector === "string") { + this._rootElement = document.getElementById(this.options.selector); + } else if (this.options.selector instanceof HTMLElement || this.options.selector instanceof ShadowRoot) { + this._rootElement = this.options.selector; + } else { + this._rootElement = document.body; + } + + // Validating if root element is present in DOM + if (!this._rootElement) { + throw "Root element is not defined"; + } + + // Adding the DOM element + this._rootElement.insertBefore(this.toastElement, this._rootElement.firstChild); + + // Repositioning the toasts in case multiple toasts are present + this._reposition(); + + if (this.options.duration > 0) { + this.toastElement.timeOutValue = window.setTimeout( + () => { + // Remove the toast from DOM + this._removeElement(this.toastElement); + }, + this.options.duration + ); // Binding `this` for function invocation + } + + // Supporting function chaining + return this; + } + + /** + * Hide the toast + * @public + */ + hideToast() { + if (this.toastElement.timeOutValue) { + clearTimeout(this.toastElement.timeOutValue); + } + this._removeElement(this.toastElement); + } + + /** + * Init the Toastify class + * @param {ToastifyConfigurationObject} options - The configuration object to configure Toastify + * @param {string} [options.text=Hi there!] - Message to be displayed in the toast + * @param {Element} [options.node] - Provide a node to be mounted inside the toast. node takes higher precedence over text + * @param {number} [options.duration=3000] - Duration for which the toast should be displayed. -1 for permanent toast + * @param {string} [options.selector] - CSS Selector on which the toast should be added + * @param {url} [options.destination] - URL to which the browser should be navigated on click of the toast + * @param {boolean} [options.newWindow=false] - Decides whether the destination should be opened in a new window or not + * @param {boolean} [options.close=false] - To show the close icon or not + * @param {string} [options.gravity=toastify-top] - To show the toast from top or bottom + * @param {string} [options.position=right] - To show the toast on left or right + * @param {string} [options.backgroundColor] - Sets the background color of the toast (To be deprecated) + * @param {url} [options.avatar] - Image/icon to be shown before text + * @param {string} [options.className] - Ability to provide custom class name for further customization + * @param {boolean} [options.stopOnFocus] - To stop timer when hovered over the toast (Only if duration is set) + * @param {Function} [options.callback] - Invoked when the toast is dismissed + * @param {Function} [options.onClick] - Invoked when the toast is clicked + * @param {Object} [options.offset] - Ability to add some offset to axis + * @param {boolean} [options.escapeMarkup=true] - Toggle the default behavior of escaping HTML markup + * @param {string} [options.ariaLive] - Announce the toast to screen readers + * @param {Object} [options.style] - Use the HTML DOM style property to add styles to toast + * @private + */ + _init(options) { + + // Setting defaults + this.options = Object.assign(this.defaults, options); + + if (this.options.backgroundColor) { + // This is being deprecated in favor of using the style HTML DOM property + console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.'); + } + + this.toastElement = null; + + this.options.gravity = options.gravity === "bottom" ? "toastify-bottom" : "toastify-top"; // toast position - top or bottom + this.options.stopOnFocus = options.stopOnFocus === undefined ? true : options.stopOnFocus; // stop timeout on focus + if(options.backgroundColor) { + this.options.style.background = options.backgroundColor; + } + } + + /** + * Build the Toastify element + * @returns {Element} + * @private + */ + _buildToast() { + // Validating if the options are defined + if (!this.options) { + throw "Toastify is not initialized"; + } + + // Creating the DOM object + let divElement = document.createElement("div"); + divElement.className = `toastify on ${this.options.className}`; + + // Positioning toast to left or right or center (default right) + divElement.className += ` toastify-${this.options.position}`; + + // Assigning gravity of element + divElement.className += ` ${this.options.gravity}`; + + // Loop through our style object and apply styles to divElement + for (const property in this.options.style) { + divElement.style[property] = this.options.style[property]; + } + + // Announce the toast to screen readers + if (this.options.ariaLive) { + divElement.setAttribute('aria-live', this.options.ariaLive) + } + + // Adding the toast message/node + if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) { + // If we have a valid node, we insert it + divElement.appendChild(this.options.node) + } else { + if (this.options.escapeMarkup) { + divElement.innerText = this.options.text; + } else { + divElement.innerHTML = this.options.text; + } + + if (this.options.avatar !== "") { + let avatarElement = document.createElement("img"); + avatarElement.src = this.options.avatar; + + avatarElement.className = "toastify-avatar"; + + if (this.options.position == "left") { + // Adding close icon on the left of content + divElement.appendChild(avatarElement); + } else { + // Adding close icon on the right of content + divElement.insertAdjacentElement("afterbegin", avatarElement); + } + } + } + + // Adding a close icon to the toast + if (this.options.close === true) { + // Create a span for close element + let closeElement = document.createElement("button"); + closeElement.type = "button"; + closeElement.setAttribute("aria-label", "Close"); + closeElement.className = "toast-close"; + closeElement.innerHTML = "✖"; + + // Triggering the removal of toast from DOM on close click + closeElement.addEventListener( + "click", + (event) => { + event.stopPropagation(); + this._removeElement(this.toastElement); + window.clearTimeout(this.toastElement.timeOutValue); + } + ); + + //Calculating screen width + const width = window.innerWidth > 0 ? window.innerWidth : screen.width; + + // Adding the close icon to the toast element + // Display on the right if screen width is less than or equal to 360px + if ((this.options.position == "left") && width > 360) { + // Adding close icon on the left of content + divElement.insertAdjacentElement("afterbegin", closeElement); + } else { + // Adding close icon on the right of content + divElement.appendChild(closeElement); + } + } + + // Clear timeout while toast is focused + if (this.options.stopOnFocus && this.options.duration > 0) { + // stop countdown + divElement.addEventListener( + "mouseover", + (event) => { + window.clearTimeout(divElement.timeOutValue); + } + ) + // add back the timeout + divElement.addEventListener( + "mouseleave", + () => { + divElement.timeOutValue = window.setTimeout( + () => { + // Remove the toast from DOM + this._removeElement(divElement); + }, + this.options.duration + ) + } + ) + } + + // Adding an on-click destination path + if (typeof this.options.destination !== "undefined") { + divElement.addEventListener( + "click", + (event) => { + event.stopPropagation(); + if (this.options.newWindow === true) { + window.open(this.options.destination, "_blank"); + } else { + window.location = this.options.destination; + } + } + ); + } + + if (typeof this.options.onClick === "function" && typeof this.options.destination === "undefined") { + divElement.addEventListener( + "click", + (event) => { + event.stopPropagation(); + this.options.onClick(); + } + ); + } + + // Adding offset + if (typeof this.options.offset === "object") { + + const x = this._getAxisOffsetAValue("x", this.options); + const y = this._getAxisOffsetAValue("y", this.options); + + const xOffset = this.options.position == "left" ? x : `-${x}`; + const yOffset = this.options.gravity == "toastify-top" ? y : `-${y}`; + + divElement.style.transform = `translate(${xOffset},${yOffset})`; + + } + + // Returning the generated element + return divElement; + } + + /** + * Remove the toast from the DOM + * @param {Element} toastElement + */ + _removeElement(toastElement) { + // Hiding the element + toastElement.className = toastElement.className.replace(" on", ""); + + // Removing the element from DOM after transition end + window.setTimeout( + () => { + // remove options node if any + if (this.options.node && this.options.node.parentNode) { + this.options.node.parentNode.removeChild(this.options.node); + } + + // Remove the element from the DOM, only when the parent node was not removed before. + if (toastElement.parentNode) { + toastElement.parentNode.removeChild(toastElement); + } + + // Calling the callback function + this.options.callback.call(toastElement); + + // Repositioning the toasts again + this._reposition(); + }, + 400 + ); // Binding `this` for function invocation + } + + /** + * Position the toast on the DOM + * @private + */ + _reposition() { + + // Top margins with gravity + let topLeftOffsetSize = { + top: 15, + bottom: 15, + }; + let topRightOffsetSize = { + top: 15, + bottom: 15, + }; + let offsetSize = { + top: 15, + bottom: 15, + }; + + // Get all toast messages that have been added to the container (selector) + let allToasts = this._rootElement.querySelectorAll(".toastify"); + + let classUsed; + + // Modifying the position of each toast element + for (let i = 0; i < allToasts.length; i++) { + // Getting the applied gravity + if (allToasts[i].classList.contains("toastify-top") === true) { + classUsed = "toastify-top"; + } else { + classUsed = "toastify-bottom"; + } + + let height = allToasts[i].offsetHeight; + classUsed = classUsed.substr(9, classUsed.length - 1) + // Spacing between toasts + let offset = 15; + + let width = window.innerWidth > 0 ? window.innerWidth : screen.width; + + // Show toast in center if screen with less than or equal to 360px + if (width <= 360) { + // Setting the position + allToasts[i].style[classUsed] = `${offsetSize[classUsed]}px`; + + offsetSize[classUsed] += height + offset; + } else { + if (allToasts[i].classList.contains("toastify-left") === true) { + // Setting the position + allToasts[i].style[classUsed] = `${topLeftOffsetSize[classUsed]}px`; + + topLeftOffsetSize[classUsed] += height + offset; + } else { + // Setting the position + allToasts[i].style[classUsed] = `${topRightOffsetSize[classUsed]}px`; + + topRightOffsetSize[classUsed] += height + offset; + } + } + } + } + + /** + * Helper function to get offset + * @param {string} axis - 'x' or 'y' + * @param {ToastifyConfigurationObject} options - The options object containing the offset object + */ + _getAxisOffsetAValue(axis, options) { + + if (options.offset[axis]) { + if (isNaN(options.offset[axis])) { + return options.offset[axis]; + } else { + return `${options.offset[axis]}px`; + } + } + + return '0px'; + + } + + } + + + // Returning the Toastify function to be assigned to the window object/module + function StartToastifyInstance(options) { + return new Toastify(options); + } + + export default StartToastifyInstance; diff --git a/node_modules/toastify-js/src/toastify.css b/node_modules/toastify-js/src/toastify.css new file mode 100644 index 0000000..ccd65c8 --- /dev/null +++ b/node_modules/toastify-js/src/toastify.css @@ -0,0 +1,85 @@ +/*! + * Toastify js 1.12.0 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ + +.toastify { + padding: 12px 20px; + color: #ffffff; + display: inline-block; + box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(77, 96, 232, 0.3); + background: -webkit-linear-gradient(315deg, #73a5ff, #5477f5); + background: linear-gradient(135deg, #73a5ff, #5477f5); + position: fixed; + opacity: 0; + transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1); + border-radius: 2px; + cursor: pointer; + text-decoration: none; + max-width: calc(50% - 20px); + z-index: 2147483647; +} + +.toastify.on { + opacity: 1; +} + +.toast-close { + background: transparent; + border: 0; + color: white; + cursor: pointer; + font-family: inherit; + font-size: 1em; + opacity: 0.4; + padding: 0 5px; +} + +.toastify-right { + right: 15px; +} + +.toastify-left { + left: 15px; +} + +.toastify-top { + top: -150px; +} + +.toastify-bottom { + bottom: -150px; +} + +.toastify-rounded { + border-radius: 25px; +} + +.toastify-avatar { + width: 1.5em; + height: 1.5em; + margin: -7px 5px; + border-radius: 2px; +} + +.toastify-center { + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + max-width: fit-content; + max-width: -moz-fit-content; +} + +@media only screen and (max-width: 360px) { + .toastify-right, .toastify-left { + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + max-width: fit-content; + } +} diff --git a/node_modules/toastify-js/src/toastify.js b/node_modules/toastify-js/src/toastify.js new file mode 100644 index 0000000..5d9659c --- /dev/null +++ b/node_modules/toastify-js/src/toastify.js @@ -0,0 +1,445 @@ +/*! + * Toastify js 1.12.0 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ +(function(root, factory) { + if (typeof module === "object" && module.exports) { + module.exports = factory(); + } else { + root.Toastify = factory(); + } +})(this, function(global) { + // Object initialization + var Toastify = function(options) { + // Returning a new init object + return new Toastify.lib.init(options); + }, + // Library version + version = "1.12.0"; + + // Set the default global options + Toastify.defaults = { + oldestFirst: true, + text: "Toastify is awesome!", + node: undefined, + duration: 3000, + selector: undefined, + callback: function () { + }, + destination: undefined, + newWindow: false, + close: false, + gravity: "toastify-top", + positionLeft: false, + position: '', + backgroundColor: '', + avatar: "", + className: "", + stopOnFocus: true, + onClick: function () { + }, + offset: {x: 0, y: 0}, + escapeMarkup: true, + ariaLive: 'polite', + style: {background: ''} + }; + + // Defining the prototype of the object + Toastify.lib = Toastify.prototype = { + toastify: version, + + constructor: Toastify, + + // Initializing the object with required parameters + init: function(options) { + // Verifying and validating the input object + if (!options) { + options = {}; + } + + // Creating the options object + this.options = {}; + + this.toastElement = null; + + // Validating the options + this.options.text = options.text || Toastify.defaults.text; // Display message + this.options.node = options.node || Toastify.defaults.node; // Display content as node + this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration + this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector + this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display + this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination + this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window + this.options.close = options.close || Toastify.defaults.close; // Show toast close icon + this.options.gravity = options.gravity === "bottom" ? "toastify-bottom" : Toastify.defaults.gravity; // toast position - top or bottom + this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right + this.options.position = options.position || Toastify.defaults.position; // toast position - left or right + this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color + this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path + this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast + this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus + this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click + this.options.offset = options.offset || Toastify.defaults.offset; // toast offset + this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup; + this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive; + this.options.style = options.style || Toastify.defaults.style; + if(options.backgroundColor) { + this.options.style.background = options.backgroundColor; + } + + // Returning the current object for chaining functions + return this; + }, + + // Building the DOM element + buildToast: function() { + // Validating if the options are defined + if (!this.options) { + throw "Toastify is not initialized"; + } + + // Creating the DOM object + var divElement = document.createElement("div"); + divElement.className = "toastify on " + this.options.className; + + // Positioning toast to left or right or center + if (!!this.options.position) { + divElement.className += " toastify-" + this.options.position; + } else { + // To be depreciated in further versions + if (this.options.positionLeft === true) { + divElement.className += " toastify-left"; + console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.') + } else { + // Default position + divElement.className += " toastify-right"; + } + } + + // Assigning gravity of element + divElement.className += " " + this.options.gravity; + + if (this.options.backgroundColor) { + // This is being deprecated in favor of using the style HTML DOM property + console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.'); + } + + // Loop through our style object and apply styles to divElement + for (var property in this.options.style) { + divElement.style[property] = this.options.style[property]; + } + + // Announce the toast to screen readers + if (this.options.ariaLive) { + divElement.setAttribute('aria-live', this.options.ariaLive) + } + + // Adding the toast message/node + if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) { + // If we have a valid node, we insert it + divElement.appendChild(this.options.node) + } else { + if (this.options.escapeMarkup) { + divElement.innerText = this.options.text; + } else { + divElement.innerHTML = this.options.text; + } + + if (this.options.avatar !== "") { + var avatarElement = document.createElement("img"); + avatarElement.src = this.options.avatar; + + avatarElement.className = "toastify-avatar"; + + if (this.options.position == "left" || this.options.positionLeft === true) { + // Adding close icon on the left of content + divElement.appendChild(avatarElement); + } else { + // Adding close icon on the right of content + divElement.insertAdjacentElement("afterbegin", avatarElement); + } + } + } + + // Adding a close icon to the toast + if (this.options.close === true) { + // Create a span for close element + var closeElement = document.createElement("button"); + closeElement.type = "button"; + closeElement.setAttribute("aria-label", "Close"); + closeElement.className = "toast-close"; + closeElement.innerHTML = "✖"; + + // Triggering the removal of toast from DOM on close click + closeElement.addEventListener( + "click", + function(event) { + event.stopPropagation(); + this.removeElement(this.toastElement); + window.clearTimeout(this.toastElement.timeOutValue); + }.bind(this) + ); + + //Calculating screen width + var width = window.innerWidth > 0 ? window.innerWidth : screen.width; + + // Adding the close icon to the toast element + // Display on the right if screen width is less than or equal to 360px + if ((this.options.position == "left" || this.options.positionLeft === true) && width > 360) { + // Adding close icon on the left of content + divElement.insertAdjacentElement("afterbegin", closeElement); + } else { + // Adding close icon on the right of content + divElement.appendChild(closeElement); + } + } + + // Clear timeout while toast is focused + if (this.options.stopOnFocus && this.options.duration > 0) { + var self = this; + // stop countdown + divElement.addEventListener( + "mouseover", + function(event) { + window.clearTimeout(divElement.timeOutValue); + } + ) + // add back the timeout + divElement.addEventListener( + "mouseleave", + function() { + divElement.timeOutValue = window.setTimeout( + function() { + // Remove the toast from DOM + self.removeElement(divElement); + }, + self.options.duration + ) + } + ) + } + + // Adding an on-click destination path + if (typeof this.options.destination !== "undefined") { + divElement.addEventListener( + "click", + function(event) { + event.stopPropagation(); + if (this.options.newWindow === true) { + window.open(this.options.destination, "_blank"); + } else { + window.location = this.options.destination; + } + }.bind(this) + ); + } + + if (typeof this.options.onClick === "function" && typeof this.options.destination === "undefined") { + divElement.addEventListener( + "click", + function(event) { + event.stopPropagation(); + this.options.onClick(); + }.bind(this) + ); + } + + // Adding offset + if(typeof this.options.offset === "object") { + + var x = getAxisOffsetAValue("x", this.options); + var y = getAxisOffsetAValue("y", this.options); + + var xOffset = this.options.position == "left" ? x : "-" + x; + var yOffset = this.options.gravity == "toastify-top" ? y : "-" + y; + + divElement.style.transform = "translate(" + xOffset + "," + yOffset + ")"; + + } + + // Returning the generated element + return divElement; + }, + + // Displaying the toast + showToast: function() { + // Creating the DOM object for the toast + this.toastElement = this.buildToast(); + + // Getting the root element to with the toast needs to be added + var rootElement; + if (typeof this.options.selector === "string") { + rootElement = document.getElementById(this.options.selector); + } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) { + rootElement = this.options.selector; + } else { + rootElement = document.body; + } + + // Validating if root element is present in DOM + if (!rootElement) { + throw "Root element is not defined"; + } + + // Adding the DOM element + var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild; + rootElement.insertBefore(this.toastElement, elementToInsert); + + // Repositioning the toasts in case multiple toasts are present + Toastify.reposition(); + + if (this.options.duration > 0) { + this.toastElement.timeOutValue = window.setTimeout( + function() { + // Remove the toast from DOM + this.removeElement(this.toastElement); + }.bind(this), + this.options.duration + ); // Binding `this` for function invocation + } + + // Supporting function chaining + return this; + }, + + hideToast: function() { + if (this.toastElement.timeOutValue) { + clearTimeout(this.toastElement.timeOutValue); + } + this.removeElement(this.toastElement); + }, + + // Removing the element from the DOM + removeElement: function(toastElement) { + // Hiding the element + // toastElement.classList.remove("on"); + toastElement.className = toastElement.className.replace(" on", ""); + + // Removing the element from DOM after transition end + window.setTimeout( + function() { + // remove options node if any + if (this.options.node && this.options.node.parentNode) { + this.options.node.parentNode.removeChild(this.options.node); + } + + // Remove the element from the DOM, only when the parent node was not removed before. + if (toastElement.parentNode) { + toastElement.parentNode.removeChild(toastElement); + } + + // Calling the callback function + this.options.callback.call(toastElement); + + // Repositioning the toasts again + Toastify.reposition(); + }.bind(this), + 400 + ); // Binding `this` for function invocation + }, + }; + + // Positioning the toasts on the DOM + Toastify.reposition = function() { + + // Top margins with gravity + var topLeftOffsetSize = { + top: 15, + bottom: 15, + }; + var topRightOffsetSize = { + top: 15, + bottom: 15, + }; + var offsetSize = { + top: 15, + bottom: 15, + }; + + // Get all toast messages on the DOM + var allToasts = document.getElementsByClassName("toastify"); + + var classUsed; + + // Modifying the position of each toast element + for (var i = 0; i < allToasts.length; i++) { + // Getting the applied gravity + if (containsClass(allToasts[i], "toastify-top") === true) { + classUsed = "toastify-top"; + } else { + classUsed = "toastify-bottom"; + } + + var height = allToasts[i].offsetHeight; + classUsed = classUsed.substr(9, classUsed.length-1) + // Spacing between toasts + var offset = 15; + + var width = window.innerWidth > 0 ? window.innerWidth : screen.width; + + // Show toast in center if screen with less than or equal to 360px + if (width <= 360) { + // Setting the position + allToasts[i].style[classUsed] = offsetSize[classUsed] + "px"; + + offsetSize[classUsed] += height + offset; + } else { + if (containsClass(allToasts[i], "toastify-left") === true) { + // Setting the position + allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + "px"; + + topLeftOffsetSize[classUsed] += height + offset; + } else { + // Setting the position + allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + "px"; + + topRightOffsetSize[classUsed] += height + offset; + } + } + } + + // Supporting function chaining + return this; + }; + + // Helper function to get offset. + function getAxisOffsetAValue(axis, options) { + + if(options.offset[axis]) { + if(isNaN(options.offset[axis])) { + return options.offset[axis]; + } + else { + return options.offset[axis] + 'px'; + } + } + + return '0px'; + + } + + function containsClass(elem, yourClass) { + if (!elem || typeof yourClass !== "string") { + return false; + } else if ( + elem.className && + elem.className + .trim() + .split(/\s+/gi) + .indexOf(yourClass) > -1 + ) { + return true; + } else { + return false; + } + } + + // Setting up the prototype for the init object + Toastify.lib.init.prototype = Toastify.lib; + + // Returning the Toastify function to be assigned to the window object/module + return Toastify; +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..022c911 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,46 @@ +{ + "name": "Internship", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "bootstrap": "^5.3.3", + "toastify-js": "^1.12.0" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/toastify-js": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", + "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..17f938a --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "bootstrap": "^5.3.3", + "toastify-js": "^1.12.0" + } +}