/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@coreui/icons-vue/dist/index.es.js": /*!*********************************************************!*\ !*** ./node_modules/@coreui/icons-vue/dist/index.es.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "CIcon": () => (/* binding */ CIcon), /* harmony export */ "default": () => (/* binding */ CIcon) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js"); const CIcon = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CIcon', props: { /** * Use `:icon="..."` instead of * * @deprecated since version 3.0 */ content: { type: [String, Array], default: undefined, required: false, }, /** * Use for replacing default CIcon component classes. Prop is overriding the 'size' prop. */ customClassName: { type: [String, Array, Object], default: undefined, required: false, }, /** * Name of the icon placed in React object or SVG content. */ icon: { type: [String, Array], default: undefined, required: false, }, /** * Use `icon="..."` instead of * * @deprecated since version 3.0 */ name: { type: String, default: undefined, required: false, }, /** * Size of the icon. Available sizes: 'sm', 'lg', 'xl', 'xxl', '3xl...9xl', 'custom', 'custom-size'. */ size: { type: String, default: undefined, required: false, validator: (value) => { return [ 'custom', 'custom-size', 'sm', 'lg', 'xl', 'xxl', '3xl', '4xl', '5xl', '6xl', '7xl', '8xl', '9xl', ].includes(value); }, }, /** * Title tag content. */ title: { type: String, default: undefined, required: false, }, /** * If defined component will be rendered using 'use' tag. */ use: { type: String, default: undefined, required: false, }, }, setup(props, { attrs }) { const icons = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('icons'); const _icon = props.icon || props.content || props.name; const toCamelCase = (str) => { return str .replace(/([-_][a-z0-9])/gi, ($1) => { return $1.toUpperCase(); }) .replace(/-/gi, ''); }; const iconName = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => _icon && typeof _icon === 'string' ? (_icon.includes('-') ? toCamelCase(_icon) : _icon) : ''); const titleCode = props.title ? `${props.title}` : 'undefined'; const code = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => Array.isArray(_icon) ? _icon : typeof _icon === 'string' && iconName.value && icons[iconName.value] ? icons[iconName.value] : 'undefined'); const iconCode = Array.isArray(code.value) ? code.value[1] || code.value[0] : code.value; const scale = Array.isArray(code.value) && code.value.length > 1 ? code.value[0] : '64 64'; const viewBox = attrs.viewBox || `0 0 ${scale}`; const size = () => { const addCustom = !props.size && (attrs.width || attrs.height); return props.size === 'custom' || addCustom ? 'custom-size' : props.size; }; const classNames = (() => { return [props.customClassName || ['icon', { [`icon-${size()}`]: size() }], attrs.class]; })(); return () => props.use ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('svg', { ...attrs, xmlns: 'http://www.w3.org/2000/svg', class: classNames, role: 'img', }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('use', { href: props.use })) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('svg', { ...attrs, xmlns: 'http://www.w3.org/2000/svg', class: classNames, viewBox: viewBox, innerHTML: `${titleCode}${iconCode}`, role: 'img', }); }, }); //# sourceMappingURL=index.es.js.map /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-account-logout.js": /*!******************************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-account-logout.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilAccountLogout": () => (/* binding */ cilAccountLogout) /* harmony export */ }); const cilAccountLogout = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-at.js": /*!******************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-at.js ***! \******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilAt": () => (/* binding */ cilAt) /* harmony export */ }); const cilAt = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-check-circle.js": /*!****************************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-check-circle.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilCheckCircle": () => (/* binding */ cilCheckCircle) /* harmony export */ }); const cilCheckCircle = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-chevron-right.js": /*!*****************************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-chevron-right.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilChevronRight": () => (/* binding */ cilChevronRight) /* harmony export */ }); const cilChevronRight = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-circle.js": /*!**********************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-circle.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilCircle": () => (/* binding */ cilCircle) /* harmony export */ }); const cilCircle = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-lock-locked.js": /*!***************************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-lock-locked.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilLockLocked": () => (/* binding */ cilLockLocked) /* harmony export */ }); const cilLockLocked = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-loop-circular.js": /*!*****************************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-loop-circular.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilLoopCircular": () => (/* binding */ cilLoopCircular) /* harmony export */ }); const cilLoopCircular = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-menu.js": /*!********************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-menu.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilMenu": () => (/* binding */ cilMenu) /* harmony export */ }); const cilMenu = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-money.js": /*!*********************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-money.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilMoney": () => (/* binding */ cilMoney) /* harmony export */ }); const cilMoney = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-notes.js": /*!*********************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-notes.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilNotes": () => (/* binding */ cilNotes) /* harmony export */ }); const cilNotes = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-pen.js": /*!*******************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-pen.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilPen": () => (/* binding */ cilPen) /* harmony export */ }); const cilPen = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-sitemap.js": /*!***********************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-sitemap.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilSitemap": () => (/* binding */ cilSitemap) /* harmony export */ }); const cilSitemap = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-transfer.js": /*!************************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-transfer.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilTransfer": () => (/* binding */ cilTransfer) /* harmony export */ }); const cilTransfer = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-user.js": /*!********************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-user.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilUser": () => (/* binding */ cilUser) /* harmony export */ }); const cilUser = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-wc.js": /*!******************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-wc.js ***! \******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilWc": () => (/* binding */ cilWc) /* harmony export */ }); const cilWc = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/icons/js/free/cil-x-circle.js": /*!************************************************************!*\ !*** ./node_modules/@coreui/icons/js/free/cil-x-circle.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "cilXCircle": () => (/* binding */ cilXCircle) /* harmony export */ }); const cilXCircle = ["512 512",""] /***/ }), /***/ "./node_modules/@coreui/vue/dist/index.es.js": /*!***************************************************!*\ !*** ./node_modules/@coreui/vue/dist/index.es.js ***! \***************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "CAccordion": () => (/* binding */ CAccordion), /* harmony export */ "CAccordionBody": () => (/* binding */ CAccordionBody), /* harmony export */ "CAccordionButton": () => (/* binding */ CAccordionButton), /* harmony export */ "CAccordionCollapse": () => (/* binding */ CAccordionCollapse), /* harmony export */ "CAccordionHeader": () => (/* binding */ CAccordionHeader), /* harmony export */ "CAccordionItem": () => (/* binding */ CAccordionItem), /* harmony export */ "CAccordionPlugin": () => (/* binding */ CAccordionPlugin), /* harmony export */ "CAlert": () => (/* binding */ CAlert), /* harmony export */ "CAlertHeading": () => (/* binding */ CAlertHeading), /* harmony export */ "CAlertLink": () => (/* binding */ CAlertLink), /* harmony export */ "CAlertPlugin": () => (/* binding */ CAlertPlugin), /* harmony export */ "CAvatar": () => (/* binding */ CAvatar), /* harmony export */ "CAvatarPlugin": () => (/* binding */ CAvatarPlugin), /* harmony export */ "CBackdrop": () => (/* binding */ CBackdrop), /* harmony export */ "CBackdropPlugin": () => (/* binding */ CBackdropPlugin), /* harmony export */ "CBadge": () => (/* binding */ CBadge), /* harmony export */ "CBadgePlugin": () => (/* binding */ CBadgePlugin), /* harmony export */ "CBreadcrumb": () => (/* binding */ CBreadcrumb), /* harmony export */ "CBreadcrumbItem": () => (/* binding */ CBreadcrumbItem), /* harmony export */ "CBreadcrumbPlugin": () => (/* binding */ CBreadcrumbPlugin), /* harmony export */ "CButton": () => (/* binding */ CButton), /* harmony export */ "CButtonGroup": () => (/* binding */ CButtonGroup), /* harmony export */ "CButtonGroupPlugin": () => (/* binding */ CButtonGroupPlugin), /* harmony export */ "CButtonPlugin": () => (/* binding */ CButtonPlugin), /* harmony export */ "CButtonToolbar": () => (/* binding */ CButtonToolbar), /* harmony export */ "CCLinkPlugin": () => (/* binding */ CCLinkPlugin), /* harmony export */ "CCallout": () => (/* binding */ CCallout), /* harmony export */ "CCalloutPlugin": () => (/* binding */ CCalloutPlugin), /* harmony export */ "CCard": () => (/* binding */ CCard), /* harmony export */ "CCardBody": () => (/* binding */ CCardBody), /* harmony export */ "CCardFooter": () => (/* binding */ CCardFooter), /* harmony export */ "CCardGroup": () => (/* binding */ CCardGroup), /* harmony export */ "CCardHeader": () => (/* binding */ CCardHeader), /* harmony export */ "CCardImage": () => (/* binding */ CCardImage), /* harmony export */ "CCardImageOverlay": () => (/* binding */ CCardImageOverlay), /* harmony export */ "CCardLink": () => (/* binding */ CCardLink), /* harmony export */ "CCardPlugin": () => (/* binding */ CCardPlugin), /* harmony export */ "CCardSubtitle": () => (/* binding */ CCardSubtitle), /* harmony export */ "CCardText": () => (/* binding */ CCardText), /* harmony export */ "CCardTitle": () => (/* binding */ CCardTitle), /* harmony export */ "CCarousel": () => (/* binding */ CCarousel), /* harmony export */ "CCarouselCaption": () => (/* binding */ CCarouselCaption), /* harmony export */ "CCarouselItem": () => (/* binding */ CCarouselItem), /* harmony export */ "CCarouselPlugin": () => (/* binding */ CCarouselPlugin), /* harmony export */ "CCloseButton": () => (/* binding */ CCloseButton), /* harmony export */ "CCloseButtonPlugin": () => (/* binding */ CCloseButtonPlugin), /* harmony export */ "CCol": () => (/* binding */ CCol), /* harmony export */ "CCollapse": () => (/* binding */ CCollapse), /* harmony export */ "CCollapsePlugin": () => (/* binding */ CCollapsePlugin), /* harmony export */ "CContainer": () => (/* binding */ CContainer), /* harmony export */ "CDropdown": () => (/* binding */ CDropdown), /* harmony export */ "CDropdownDivider": () => (/* binding */ CDropdownDivider), /* harmony export */ "CDropdownHeader": () => (/* binding */ CDropdownHeader), /* harmony export */ "CDropdownItem": () => (/* binding */ CDropdownItem), /* harmony export */ "CDropdownMenu": () => (/* binding */ CDropdownMenu), /* harmony export */ "CDropdownPlugin": () => (/* binding */ CDropdownPlugin), /* harmony export */ "CDropdownToggle": () => (/* binding */ CDropdownToggle), /* harmony export */ "CFooter": () => (/* binding */ CFooter), /* harmony export */ "CFooterPlugin": () => (/* binding */ CFooterPlugin), /* harmony export */ "CForm": () => (/* binding */ CForm), /* harmony export */ "CFormCheck": () => (/* binding */ CFormCheck), /* harmony export */ "CFormFeedback": () => (/* binding */ CFormFeedback), /* harmony export */ "CFormFloating": () => (/* binding */ CFormFloating), /* harmony export */ "CFormInput": () => (/* binding */ CFormInput), /* harmony export */ "CFormLabel": () => (/* binding */ CFormLabel), /* harmony export */ "CFormPlugin": () => (/* binding */ CFormPlugin), /* harmony export */ "CFormRange": () => (/* binding */ CFormRange), /* harmony export */ "CFormSelect": () => (/* binding */ CFormSelect), /* harmony export */ "CFormSwitch": () => (/* binding */ CFormSwitch), /* harmony export */ "CFormText": () => (/* binding */ CFormText), /* harmony export */ "CFormTextarea": () => (/* binding */ CFormTextarea), /* harmony export */ "CGridPlugin": () => (/* binding */ CGridPlugin), /* harmony export */ "CHeader": () => (/* binding */ CHeader), /* harmony export */ "CHeaderBrand": () => (/* binding */ CHeaderBrand), /* harmony export */ "CHeaderDivider": () => (/* binding */ CHeaderDivider), /* harmony export */ "CHeaderNav": () => (/* binding */ CHeaderNav), /* harmony export */ "CHeaderPlugin": () => (/* binding */ CHeaderPlugin), /* harmony export */ "CHeaderText": () => (/* binding */ CHeaderText), /* harmony export */ "CHeaderToggler": () => (/* binding */ CHeaderToggler), /* harmony export */ "CImage": () => (/* binding */ CImage), /* harmony export */ "CImagePlugin": () => (/* binding */ CImagePlugin), /* harmony export */ "CInputGroup": () => (/* binding */ CInputGroup), /* harmony export */ "CInputGroupText": () => (/* binding */ CInputGroupText), /* harmony export */ "CLink": () => (/* binding */ CLink), /* harmony export */ "CListGroup": () => (/* binding */ CListGroup), /* harmony export */ "CListGroupItem": () => (/* binding */ CListGroupItem), /* harmony export */ "CListGroupPlugin": () => (/* binding */ CListGroupPlugin), /* harmony export */ "CModal": () => (/* binding */ CModal), /* harmony export */ "CModalBody": () => (/* binding */ CModalBody), /* harmony export */ "CModalFooter": () => (/* binding */ CModalFooter), /* harmony export */ "CModalHeader": () => (/* binding */ CModalHeader), /* harmony export */ "CModalPlugin": () => (/* binding */ CModalPlugin), /* harmony export */ "CModalTitle": () => (/* binding */ CModalTitle), /* harmony export */ "CNav": () => (/* binding */ CNav), /* harmony export */ "CNavGroup": () => (/* binding */ CNavGroup), /* harmony export */ "CNavGroupItems": () => (/* binding */ CNavGroupItems), /* harmony export */ "CNavItem": () => (/* binding */ CNavItem), /* harmony export */ "CNavLink": () => (/* binding */ CNavLink), /* harmony export */ "CNavPlugin": () => (/* binding */ CNavPlugin), /* harmony export */ "CNavTitle": () => (/* binding */ CNavTitle), /* harmony export */ "CNavbar": () => (/* binding */ CNavbar), /* harmony export */ "CNavbarBrand": () => (/* binding */ CNavbarBrand), /* harmony export */ "CNavbarNav": () => (/* binding */ CNavbarNav), /* harmony export */ "CNavbarPlugin": () => (/* binding */ CNavbarPlugin), /* harmony export */ "CNavbarText": () => (/* binding */ CNavbarText), /* harmony export */ "CNavbarToggler": () => (/* binding */ CNavbarToggler), /* harmony export */ "COffcanvas": () => (/* binding */ COffcanvas), /* harmony export */ "COffcanvasBody": () => (/* binding */ COffcanvasBody), /* harmony export */ "COffcanvasHeader": () => (/* binding */ COffcanvasHeader), /* harmony export */ "COffcanvasPlugin": () => (/* binding */ COffcanvasPlugin), /* harmony export */ "COffcanvasTitle": () => (/* binding */ COffcanvasTitle), /* harmony export */ "CPagination": () => (/* binding */ CPagination), /* harmony export */ "CPaginationItem": () => (/* binding */ CPaginationItem), /* harmony export */ "CPaginationPlugin": () => (/* binding */ CPaginationPlugin), /* harmony export */ "CPlaceholder": () => (/* binding */ CPlaceholder), /* harmony export */ "CPlaceholderPlugin": () => (/* binding */ CPlaceholderPlugin), /* harmony export */ "CPopover": () => (/* binding */ CPopover), /* harmony export */ "CPopoverPlugin": () => (/* binding */ CPopoverPlugin), /* harmony export */ "CProgress": () => (/* binding */ CProgress), /* harmony export */ "CProgressBar": () => (/* binding */ CProgressBar), /* harmony export */ "CProgressPlugin": () => (/* binding */ CProgressPlugin), /* harmony export */ "CRow": () => (/* binding */ CRow), /* harmony export */ "CSidebar": () => (/* binding */ CSidebar), /* harmony export */ "CSidebarBrand": () => (/* binding */ CSidebarBrand), /* harmony export */ "CSidebarFooter": () => (/* binding */ CSidebarFooter), /* harmony export */ "CSidebarHeader": () => (/* binding */ CSidebarHeader), /* harmony export */ "CSidebarNav": () => (/* binding */ CSidebarNav), /* harmony export */ "CSidebarPlugin": () => (/* binding */ CSidebarPlugin), /* harmony export */ "CSidebarToggler": () => (/* binding */ CSidebarToggler), /* harmony export */ "CSpinner": () => (/* binding */ CSpinner), /* harmony export */ "CSpinnerPlugin": () => (/* binding */ CSpinnerPlugin), /* harmony export */ "CTabContent": () => (/* binding */ CTabContent), /* harmony export */ "CTabPane": () => (/* binding */ CTabPane), /* harmony export */ "CTable": () => (/* binding */ CTable), /* harmony export */ "CTableBody": () => (/* binding */ CTableBody), /* harmony export */ "CTableCaption": () => (/* binding */ CTableCaption), /* harmony export */ "CTableDataCell": () => (/* binding */ CTableDataCell), /* harmony export */ "CTableFoot": () => (/* binding */ CTableFoot), /* harmony export */ "CTableHead": () => (/* binding */ CTableHead), /* harmony export */ "CTableHeaderCell": () => (/* binding */ CTableHeaderCell), /* harmony export */ "CTablePlugin": () => (/* binding */ CTablePlugin), /* harmony export */ "CTableRow": () => (/* binding */ CTableRow), /* harmony export */ "CTabsPlugin": () => (/* binding */ CTabsPlugin), /* harmony export */ "CToast": () => (/* binding */ CToast), /* harmony export */ "CToastBody": () => (/* binding */ CToastBody), /* harmony export */ "CToastClose": () => (/* binding */ CToastClose), /* harmony export */ "CToastHeader": () => (/* binding */ CToastHeader), /* harmony export */ "CToastPlugin": () => (/* binding */ CToastPlugin), /* harmony export */ "CToaster": () => (/* binding */ CToaster), /* harmony export */ "CTooltip": () => (/* binding */ CTooltip), /* harmony export */ "CTooltipPlugin": () => (/* binding */ CTooltipPlugin), /* harmony export */ "CWidgetStatsA": () => (/* binding */ CWidgetStatsA), /* harmony export */ "CWidgetStatsB": () => (/* binding */ CWidgetStatsB), /* harmony export */ "CWidgetStatsC": () => (/* binding */ CWidgetStatsC), /* harmony export */ "CWidgetStatsD": () => (/* binding */ CWidgetStatsD), /* harmony export */ "CWidgetStatsE": () => (/* binding */ CWidgetStatsE), /* harmony export */ "CWidgetStatsF": () => (/* binding */ CWidgetStatsF), /* harmony export */ "CWidgetsStatsPlugin": () => (/* binding */ CWidgetsStatsPlugin), /* harmony export */ "default": () => (/* binding */ CoreuiVue), /* harmony export */ "vcplaceholder": () => (/* binding */ vcplaceholder), /* harmony export */ "vcpopover": () => (/* binding */ vcpopover), /* harmony export */ "vctooltip": () => (/* binding */ vctooltip) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js"); const CAccordion = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAccordion', props: { /** * The active item key. */ activeItemKey: { type: [Number, String], default: undefined, require: false, }, /** * Make accordion items stay open when another item is opened */ alwaysOpen: Boolean, /** * Removes the default background-color, some borders, and some rounded corners to render accordions edge-to-edge with their parent container. */ flush: Boolean, }, setup(props, { slots }) { const activeItemKey = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(props.activeItemKey); const setActiveItemKey = (key) => { activeItemKey.value = key; }; (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('activeItemKey', activeItemKey); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('alwaysOpen', props.alwaysOpen); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('setActiveItemKey', setActiveItemKey); return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: ['accordion', { ['accordion-flush']: props.flush }] }, slots.default && slots.default()); }, }); const vVisible = { beforeMount(el, { value }, { transition }) { el._vod = el.style.display === 'none' ? '' : el.style.display; if (transition && value) { transition.beforeEnter(el); } }, mounted(el, { value }, { transition }) { if (transition && value) { transition.enter(el); } }, updated(el, { value, oldValue }, { transition }) { if (!value === !oldValue) return; if (transition) { if (value) { transition.beforeEnter(el); transition.enter(el); } else { transition.leave(el, () => { // setDisplay(el, false) }); } } }, }; const CCollapse = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCollapse', props: { /** * Set horizontal collapsing to transition the width instead of height. */ horizontal: { type: Boolean, required: false, }, /** * Toggle the visibility of component. */ visible: { type: Boolean, required: false, }, }, emits: [ /** * Callback fired when the component requests to be hidden. */ 'hide', /** * Callback fired when the component requests to be shown. */ 'show', ], setup(props, { slots, emit }) { const collapsing = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(false); const show = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(props.visible); const handleBeforeEnter = () => { collapsing.value = true; }; const handleEnter = (el, done) => { emit('show'); el.addEventListener('transitionend', () => { done(); }); setTimeout(() => { if (props.horizontal) { el.style.width = `${el.scrollWidth}px`; return; } el.style.height = `${el.scrollHeight}px`; }, 1); }; const handleAfterEnter = (el) => { show.value = true; collapsing.value = false; props.horizontal ? el.style.removeProperty('width') : el.style.removeProperty('height'); }; const handleBeforeLeave = (el) => { collapsing.value = true; show.value = false; if (props.horizontal) { el.style.width = `${el.scrollWidth}px`; return; } el.style.height = `${el.scrollHeight}px`; }; const handleLeave = (el, done) => { emit('hide'); el.addEventListener('transitionend', () => { done(); }); setTimeout(() => { if (props.horizontal) { el.style.width = '0px'; return; } el.style.height = '0px'; }, 1); }; const handleAfterLeave = (el) => { collapsing.value = false; props.horizontal ? el.style.removeProperty('width') : el.style.removeProperty('height'); }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(vue__WEBPACK_IMPORTED_MODULE_0__.Transition, { css: false, onBeforeEnter: () => handleBeforeEnter(), onEnter: (el, done) => handleEnter(el, done), onAfterEnter: (el) => handleAfterEnter(el), onBeforeLeave: (el) => handleBeforeLeave(el), onLeave: (el, done) => handleLeave(el, done), onAfterLeave: (el) => handleAfterLeave(el), }, () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ collapsing.value ? 'collapsing' : 'collapse', { 'collapse-horizontal': props.horizontal, show: show.value }, ], }, slots.default && slots.default()), [[vVisible, props.visible]])); }, }); const CAccordionBody = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAccordionBody', setup(_, { slots }) { const visible = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('visible'); return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(CCollapse, { class: 'accordion-collapse', visible: visible.value }, { default: () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: ['accordion-body'] }, slots.default && slots.default()), }); }, }); const CAccordionButton = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAccordionButton', setup(_, { slots }) { const toggleVisibility = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('toggleVisibility'); const visible = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('visible'); return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('button', { 'aria-expanded': !visible.value, class: ['accordion-button', { ['collapsed']: !visible.value }], onClick: () => toggleVisibility(), }, slots.default && slots.default()); }, }); const CAccordionCollapse = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAccordionCollapse', props: { /** * Toggle the visibility of component. */ visible: { type: Boolean, required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(CCollapse, { class: 'accordion-collapse', visible: props.visible, }, slots.default && slots.default()); }, }); const CAccordionHeader = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAccordionHeader', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: ['accordion-header'] }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(CAccordionButton, {}, { default: () => slots.default && slots.default(), })); }, }); const CAccordionItem = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAccordionItem', props: { /** * The item key. */ itemKey: { type: [Number, String], default: undefined, require: false, }, }, setup(props, { slots }) { const activeItemKey = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('activeItemKey'); const alwaysOpen = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('alwaysOpen'); // eslint-disable-next-line no-unused-vars const setActiveItemKey = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('setActiveItemKey'); const itemKey = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(props.itemKey ? props.itemKey : Math.random().toString(36).substr(2, 9)); const visible = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(Boolean(activeItemKey.value === itemKey.value)); (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(activeItemKey, () => (visible.value = Boolean(activeItemKey.value === itemKey.value))); const toggleVisibility = () => { visible.value = !visible.value; !alwaysOpen && visible && setActiveItemKey(itemKey.value); }; (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('visible', visible); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('toggleVisibility', toggleVisibility); return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: ['accordion-item'] }, slots.default && slots.default()); }, }); const CAccordionPlugin = { install: (app) => { app.component(CAccordion.name, CAccordion); app.component(CAccordionBody.name, CAccordionBody); app.component(CAccordionButton.name, CAccordionButton); app.component(CAccordionCollapse.name, CAccordionCollapse); app.component(CAccordionHeader.name, CAccordionHeader); app.component(CAccordionItem.name, CAccordionItem); }, }; const Shape = { type: String, validator: (value) => { // The value must match one of these strings return [ 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3', ].includes(value); }, }; const Color = { type: String, validator: (value) => { // The value must match one of these strings return [ 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'link', 'transparent', ].includes(value); }, }; const TextColor = { type: String, validator: (value) => { return [ 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'white', 'muted', 'high-emphasis', 'medium-emphasis', 'disabled', 'high-emphasis-inverse', 'medium-emphasis-inverse', 'disabled-inverse', ].includes(value); }, }; const CCloseButton = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCloseButton', props: { /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, required: false, }, /** * Change the default color to white. */ white: { type: Boolean, required: false, }, }, emits: [ /** * Event called when the user clicks on the component. */ 'click', ], setup(props, { emit }) { const handleClick = () => { emit('click'); }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('button', { class: [ 'btn', 'btn-close', { ['btn-close-white']: props.white, }, props.disabled, ], 'aria-label': 'Close', disabled: props.disabled, onClick: handleClick, }); }, }); const CAlert = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAlert', props: { /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, /** * Optionally add a close button to alert and allow it to self dismisss. */ dismissible: { type: Boolean, default: false, required: false, }, /** * Set the alert variant to a solid. * * @values 'solid' */ variant: { type: String, default: undefined, required: false, validator: (value) => { return value === 'solid'; }, }, /** * Toggle the visibility of alert component. */ visible: { type: Boolean, default: true, required: false, }, }, emits: [ /** * Callback fired when the component requests to be closed. */ 'close', ], setup(props, { slots, emit }) { const visible = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(props.visible); (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => props.visible, () => { visible.value = props.visible; }); const handleDismiss = () => { visible.value = false; emit('close'); }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(vue__WEBPACK_IMPORTED_MODULE_0__.Transition, { name: 'fade', duration: 350, enterFromClass: '', enterActiveClass: 'fade', enterToClass: 'fade show', leaveActiveClass: 'fade', }, { default: () => visible.value && (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ 'alert', props.variant === 'solid' ? `bg-${props.color} text-white border-0` : `alert-${props.color}`, { [`alert-${props.color}`]: props.color, 'alert-dismissible': props.dismissible, }, ], }, [ slots.default && slots.default(), props.dismissible && (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(CCloseButton, { onClick: () => { handleDismiss(); }, }), ]), }); }, }); const CAlertHeading = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAlertHeading', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, default: 'h4', required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: 'alert-heading', }, slots); }, }); const CAlertLink = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAlertLink', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('a', { class: 'alert-link', }, slots); }, }); const CAlertPlugin = { install: (app) => { app.component(CAlert.name, CAlert); app.component(CAlertHeading.name, CAlertHeading); app.component(CAlertLink.name, CAlertLink); }, }; const CAvatar = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CAvatar', props: { /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, /** * Select the shape of the component. * * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' */ shape: Shape, /** * Size the component small, large, or extra large. * * @values 'sm', 'md', 'lg', 'xl' */ size: { type: String, default: undefined, required: false, validator: (value) => { return ['sm', 'md', 'lg', 'xl'].includes(value); }, }, /** * The src attribute for the img element. */ src: { type: String, default: undefined, required: false, }, /** * Sets the color context of the status indicator to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ status: { type: String, default: undefined, required: false, validator: (value) => { return [ 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', ].includes(value); }, }, /** * Sets the text color of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'white', 'muted', 'high-emphasis', 'medium-emphasis', 'disabled', 'high-emphasis-inverse', 'medium-emphasis-inverse', 'disabled-inverse' */ textColor: TextColor, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ 'avatar', { [`bg-${props.color}`]: props.color, [`avatar-${props.size}`]: props.size, [`text-${props.textColor}`]: props.textColor, }, `${props.shape}`, ], }, [ props.src ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('img', { src: props.src, class: 'avatar-img' }) : slots.default && slots.default(), props.status && (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('span', { class: ['avatar-status', `bg-${props.status}`] }), ]); }, }); const CAvatarPlugin = { install: (app) => { app.component(CAvatar.name, CAvatar); }, }; const CBackdrop = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CBackdrop', props: { /** * Toggle the visibility of modal component. */ visible: { type: Boolean, default: false, required: false, }, }, setup(props) { const handleBeforeEnter = (el) => { el.classList.remove('d-none'); }; const handleEnter = (el, done) => { el.addEventListener('transitionend', () => { done(); }); setTimeout(() => { el.style.visibility = 'visible'; el.classList.add('show'); }, 1); }; const handleLeave = (el, done) => { el.addEventListener('transitionend', () => { done(); }); el.classList.remove('show'); }; const handleAfterLeave = (el) => { el.classList.add('d-none'); }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(vue__WEBPACK_IMPORTED_MODULE_0__.Transition, { onBeforeEnter: (el) => handleBeforeEnter(el), onEnter: (el, done) => handleEnter(el, done), onLeave: (el, done) => handleLeave(el, done), onAfterLeave: (el) => handleAfterLeave(el), }, () => props.visible && (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'fade', })); }, }); const CBackdropPlugin = { install: (app) => { app.component(CBackdrop.name, CBackdrop); }, }; const CBadge = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CBadge', props: { /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'span', }, /** * Position badge in one of the corners of a link or button. * * @values 'top-start', 'top-end', 'bottom-end', 'bottom-start' */ position: { type: String, default: undefined, required: false, validator: (value) => { return ['top-start', 'top-end', 'bottom-end', 'bottom-start'].includes(value); }, }, /** * Select the shape of the component. * * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' */ shape: Shape, /** * Size the component small. * * @values 'sm' */ size: { type: String, default: undefined, required: false, validator: (value) => { return value === 'sm'; }, }, /** * Sets the text color of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'white', 'muted', 'high-emphasis', 'medium-emphasis', 'disabled', 'high-emphasis-inverse', 'medium-emphasis-inverse', 'disabled-inverse' */ textColor: TextColor, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: [ 'badge', { [`bg-${props.color}`]: props.color, 'position-absolute translate-middle': props.position, 'top-0': props.position && props.position.includes('top'), 'top-100': props.position && props.position.includes('bottom'), 'start-100': props.position && props.position.includes('end'), 'start-0': props.position && props.position.includes('start'), [`badge-${props.size}`]: props.size, [`text-${props.textColor}`]: props.textColor, }, props.shape, ], }, slots.default && slots.default()); }, }); const CBadgePlugin = { install: (app) => { app.component(CBadge.name, CBadge); }, }; const CBreadcrumbItem = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CBreadcrumbItem', props: { /** * Toggle the active state for the component. */ active: { type: Boolean, required: false, }, /** * The `href` attribute for the inner link component. */ href: { type: String, default: undefined, required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('li', { class: [ 'breadcrumb-item', { active: props.active, }, ], ...(props.active && { 'aria-current': 'page' }), }, props.href ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('a', { href: props.href }, slots.default && slots.default()) : slots.default && slots.default()); }, }); const CBreadcrumb = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CBreadcrumb', setup(_, { slots, attrs }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('nav', { 'aria-label': 'breadcrumb', }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('ol', { class: ['breadcrumb', attrs.class] }, slots.default && slots.default())); }, }); const CBreadcrumbPlugin = { install: (app) => { app.component(CBreadcrumb.name, CBreadcrumb); app.component(CBreadcrumbItem.name, CBreadcrumbItem); }, }; const CButton = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CButton', props: { /** * Toggle the active state for the component. */ active: { type: Boolean, default: false, required: false, }, /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, default: 'button', required: false, }, /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, required: false, }, /** * The href attribute specifies the URL of the page the link goes to. */ href: { type: String, default: undefined, required: false, }, /** * Select the shape of the component. * * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' */ shape: Shape, /** * Size the component small or large. * * @values 'sm', 'lg' */ size: { type: String, default: undefined, required: false, validator: (value) => { return ['sm', 'lg'].includes(value); }, }, /** * Set the button variant to an outlined button or a ghost button. * * @values 'ghost', 'outline' */ variant: { type: String, default: undefined, required: false, validator: (value) => { return ['ghost', 'outline'].includes(value); }, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: [ 'btn', props.variant ? `btn-${props.variant}-${props.color}` : `btn-${props.color}`, { [`btn-${props.size}`]: props.size, active: props.active, disabled: props.disabled, }, props.shape, ], disabled: props.disabled && props.component !== 'a', ...(props.component === 'a' && props.disabled && { 'aria-disabled': true, tabIndex: -1 }), ...(props.component === 'a' && props.href && { href: props.href }), }, slots.default && slots.default()); }, }); const CButtonPlugin = { install: (app) => { app.component(CButton.name, CButton); }, }; const CButtonToolbar = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CButtonToolbar', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'btn-toolbar' }, slots.default && slots.default()); }, }); const CButtonGroup = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CButtonGroup', props: { /** * Size the component small or large. * * @values 'sm', 'lg' */ size: { type: String, default: undefined, required: false, validator: (value) => { return ['sm', 'lg'].includes(value); }, }, /** * Create a set of buttons that appear vertically stacked rather than horizontally. Split button dropdowns are not supported here. */ vertical: { type: Boolean, required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ props.vertical ? 'btn-group-vertical' : 'btn-group', { [`btn-group-${props.size}`]: props.size }, ], }, slots.default && slots.default()); }, }); const CButtonGroupPlugin = { install: (app) => { app.component(CButtonToolbar.name, CButtonToolbar); app.component(CButtonGroup.name, CButtonGroup); }, }; const CCallout = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCallout', props: { /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ 'callout', { [`callout-${props.color}`]: props.color, }, ], }, slots.default && slots.default()); }, }); const CCalloutPlugin = { install: (app) => { app.component(CCallout.name, CCallout); }, }; const CCard = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCard', props: { /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, /** * Sets the text color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'white', 'muted', 'high-emphasis', 'medium-emphasis', 'disabled', 'high-emphasis-inverse', 'medium-emphasis-inverse', 'disabled-inverse' */ textColor: TextColor, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ 'card', { [`bg-${props.color}`]: props.color, [`text-${props.textColor}`]: props.textColor, }, ], }, slots.default && slots.default()); }, }); const CCardBody = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardBody', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'card-body' }, slots.default && slots.default()); }, }); const CCardFooter = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardFooter', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'card-footer' }, slots.default && slots.default()); }, }); const CCardGroup = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardGroup', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'card-group' }, slots.default && slots.default()); }, }); const CCardHeader = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardHeader', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'div', }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: 'card-header' }, slots.default && slots.default()); }, }); const CCardImage = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardImage', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'img', }, /** * Optionally orientate the image to the top, bottom. * * @values 'top', 'bottom' */ orientation: { type: String, default: undefined, required: false, validator: (value) => { return ['top', 'bottom'].includes(value); }, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: `card-img${props.orientation ? `-${props.orientation}` : ''}`, }, slots.default && slots.default()); }, }); const CCardImageOverlay = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardImageOverlay', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'card-img-overlay' }, slots.default && slots.default()); }, }); const CLink = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CLink', props: { /** * Toggle the active state for the component. */ active: { type: Boolean, required: false, }, /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'a', }, /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, required: false, }, /** * The href attribute specifies the URL of the page the link goes to. */ href: { type: String, default: undefined, required: false, }, }, emits: [ /** * Event called when the user clicks on the component. */ 'click', ], setup(props, { slots, emit }) { const handleClick = () => { emit('click', props.href); }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: [{ active: props.active, disabled: props.disabled }], ...(props.active && { 'aria-current': 'page' }), ...(props.component === 'a' && props.disabled && { 'aria-disabled': true, tabIndex: -1 }), ...((props.component === 'a' || props.component === 'button') && { onClick: handleClick, }), href: props.href, }, slots.default && slots.default()); }, }); const CCLinkPlugin = { install: (app) => { app.component(CLink.name, CLink); }, }; const CCardLink = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardLink', props: { /** * The href attribute specifies the URL of the page the link goes to. */ href: { type: String, default: '#', required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(CLink, { class: 'card-link', href: props.href }, { default: () => slots.default && slots.default() }); }, }); const CCardSubtitle = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardSubtitle', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'h6', }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: 'card-subtitle' }, slots.default && slots.default()); }, }); const CCardText = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardText', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'p', }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: 'card-text' }, slots.default && slots.default()); }, }); const CCardTitle = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCardTitle', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'h5', }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: 'card-title' }, slots.default && slots.default()); }, }); const CCardPlugin = { install: (app) => { app.component(CCard.name, CCard); app.component(CCardBody.name, CCardBody); app.component(CCardFooter.name, CCardFooter); app.component(CCardGroup.name, CCardGroup); app.component(CCardHeader.name, CCardHeader); app.component(CCardImage.name, CCardImage); app.component(CCardImageOverlay.name, CCardImageOverlay); app.component(CCardLink.name, CCardLink); app.component(CCardSubtitle.name, CCardSubtitle); app.component(CCardText.name, CCardText); app.component(CCardTitle.name, CCardTitle); }, }; const isVisible$1 = (element) => { const rect = element.getBoundingClientRect(); return (rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth)); }; const CCarousel = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCarousel', props: { /** * Adding in the previous and next controls. */ controls: Boolean, /** * Add darker controls, indicators, and captions. */ dark: Boolean, /** * index of the active item. */ index: { type: Number, default: 0, required: false, }, /** * Adding indicators at the bottom of the carousel for each item. */ indicators: Boolean, /** * The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle. */ interval: { type: [Boolean, Number], default: 5000, required: false, }, /** * If set to 'hover', pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave. If set to false, hovering over the carousel won't pause it. */ pause: { type: [Boolean, String], default: 'hover', required: false, validator: (value) => { return typeof value === 'boolean' || value === 'hover'; }, }, /** * Set type of the transition. * * @values 'crossfade', 'slide' */ transition: { type: String, default: 'slide', required: false, validator: (value) => { return ['crossfade', 'slide'].includes(value); }, }, /** * Set whether the carousel should cycle continuously or have hard stops. */ wrap: { type: Boolean, default: true, required: false, }, }, setup(props, { slots }) { const carouselRef = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const timeout = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const animating = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(false); const visible = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const customInterval = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(props.interval); const setAnimating = (value) => { animating.value = value; }; const setCustomInterval = (value) => { customInterval.value = value; }; (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('setAnimating', setAnimating); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('setCustomInterval', setCustomInterval); const pause = () => timeout.value && clearInterval(timeout.value); const cycle = () => { pause(); if (typeof props.interval === 'number') { timeout.value = setTimeout(() => nextItemWhenVisible(), typeof customInterval.value === 'number' ? customInterval.value : props.interval); } }; const state = (0,vue__WEBPACK_IMPORTED_MODULE_0__.reactive)({ items: [], active: props.index, direction: 'next', }); (0,vue__WEBPACK_IMPORTED_MODULE_0__.onBeforeMount)(() => { if (slots.default) { // @ts-expect-error TODO: fix types state.items = slots.default().filter((child) => child.type.name === 'CCarouselItem'); } }); const handleControlClick = (direction) => { if (animating.value) { return; } state.direction = direction; if (direction === 'next') { state.active === state.items.length - 1 ? (state.active = 0) : state.active++; } else { state.active === 0 ? (state.active = state.items.length - 1) : state.active--; } }; const nextItemWhenVisible = () => { // Don't call next when the page isn't visible // or the carousel or its parent isn't visible if (!document.hidden && isVisible$1(carouselRef.value)) { handleControlClick('next'); } }; const handleIndicatorClick = (index) => { if (state.active === index) { return; } if (state.active < index) { state.direction = 'next'; state.active = index; return; } if (state.active > index) { state.direction = 'prev'; state.active = index; } }; const handleScroll = () => { if (!document.hidden && isVisible$1(carouselRef.value)) { visible.value = true; } else { visible.value = false; } }; (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => { window.addEventListener('scroll', handleScroll); }); (0,vue__WEBPACK_IMPORTED_MODULE_0__.onUpdated)(() => { (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(animating, () => { if (props.wrap) { !animating.value && cycle(); return; } if (!props.wrap && state.active < state.items.length - 1) { !animating.value && cycle(); } }); }); (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(visible, () => { visible.value && cycle(); }); return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ 'carousel slide', props.transition === 'crossfade' && 'carousel-fade', props.dark && 'carousel-dark', ], onmouseover: () => props.pause && pause(), onmouseleave: () => cycle(), ref: carouselRef, }, [ props.indicators && (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'carousel-indicators', }, state.items.map((_, index) => { return (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('button', { type: 'button', id: index, 'data-coreui-target': '', ...(state.active === index && { class: 'active' }), onClick: () => handleIndicatorClick(index), }); })), (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'carousel-inner' }, state.items.map((item, index) => { return (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(item, { active: state.active === index ? true : false, direction: state.direction, }); })), props.controls && [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('button', { type: 'button', class: 'carousel-control-prev', 'data-coreui-target': '', onClick: () => handleControlClick('prev'), }, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('span', { class: 'carousel-control-prev-icon', ariaHidden: 'true' }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('span', { class: 'visually-hidden' }, 'Previous'), ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('button', { type: 'button', class: 'carousel-control-next', 'data-coreui-target': '', onClick: () => handleControlClick('next'), }, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('span', { class: 'carousel-control-next-icon', ariaHidden: 'true' }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('span', { class: 'visually-hidden' }, 'Next'), ]), ], ]); }, }); const CCarouselCaption = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCarouselCaption', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'carousel-caption', }, slots.default && slots.default()); }, }); const CCarouselItem = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CCarouselItem', props: { /** * @ignore */ active: { type: Boolean, default: false, }, /** * @ignore */ direction: { type: String, default: 'next', required: false, }, /** * The amount of time to delay between automatically cycling an item. */ interval: { type: [Boolean, Number], default: false, required: false, }, }, setup(props, { slots }) { const carouselItemRef = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const { active } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); const directionClassName = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const orderClassName = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const activeClassName = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(active.value && 'active'); // eslint-disable-next-line no-unused-vars const setAnimating = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('setAnimating'); // eslint-disable-next-line no-unused-vars const setCustomInterval = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('setCustomInterval'); (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(active, (active, prevActive) => { active && setCustomInterval(props.interval); if (!prevActive && active) { orderClassName.value = `carousel-item-${props.direction}`; setCustomInterval(props.interval); } setTimeout(() => { if (prevActive && !active) { activeClassName.value = 'active'; } directionClassName.value = `carousel-item-${props.direction === 'next' ? 'start' : 'end'}`; }, 0); carouselItemRef.value.addEventListener('transitionstart', () => { setAnimating(true); }); carouselItemRef.value.addEventListener('transitionend', () => { setAnimating(false); if (active) { directionClassName.value = ''; orderClassName.value = ''; activeClassName.value = 'active'; } if (!active) { directionClassName.value = ''; orderClassName.value = ''; activeClassName.value = ''; } }); }); return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ 'carousel-item', activeClassName.value, directionClassName.value, orderClassName.value, ], ref: carouselItemRef, }, slots.default && slots.default()); }, }); const CCarouselPlugin = { install: (app) => { app.component(CCarousel.name, CCarousel); app.component(CCarouselCaption.name, CCarouselCaption); app.component(CCarouselItem.name, CCarouselItem); }, }; const CCloseButtonPlugin = { install: (app) => { app.component(CCloseButton.name, CCloseButton); }, }; const CCollapsePlugin = { install: (app) => { app.component(CCollapse.name, CCollapse); }, }; var top = 'top'; var bottom = 'bottom'; var right = 'right'; var left = 'left'; var auto = 'auto'; var basePlacements = [top, bottom, right, left]; var start = 'start'; var end = 'end'; var clippingParents = 'clippingParents'; var viewport = 'viewport'; var popper = 'popper'; var reference = 'reference'; var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { return acc.concat([placement + "-" + start, placement + "-" + end]); }, []); var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { return acc.concat([placement, placement + "-" + start, placement + "-" + end]); }, []); // modifiers that need to read the DOM var beforeRead = 'beforeRead'; var read = 'read'; var afterRead = 'afterRead'; // pure-logic modifiers var beforeMain = 'beforeMain'; var main = 'main'; var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) var beforeWrite = 'beforeWrite'; var write = 'write'; var afterWrite = 'afterWrite'; var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; function getNodeName(element) { return element ? (element.nodeName || '').toLowerCase() : null; } function getWindow(node) { if (node == null) { return window; } if (node.toString() !== '[object Window]') { var ownerDocument = node.ownerDocument; return ownerDocument ? ownerDocument.defaultView || window : window; } return node; } function isElement(node) { var OwnElement = getWindow(node).Element; return node instanceof OwnElement || node instanceof Element; } function isHTMLElement(node) { var OwnElement = getWindow(node).HTMLElement; return node instanceof OwnElement || node instanceof HTMLElement; } function isShadowRoot(node) { // IE 11 has no ShadowRoot if (typeof ShadowRoot === 'undefined') { return false; } var OwnElement = getWindow(node).ShadowRoot; return node instanceof OwnElement || node instanceof ShadowRoot; } // and applies them to the HTMLElements such as popper and arrow function applyStyles(_ref) { var state = _ref.state; Object.keys(state.elements).forEach(function (name) { var style = state.styles[name] || {}; var attributes = state.attributes[name] || {}; var element = state.elements[name]; // arrow is optional + virtual elements if (!isHTMLElement(element) || !getNodeName(element)) { return; } // Flow doesn't support to extend this property, but it's the most // effective way to apply styles to an HTMLElement // $FlowFixMe[cannot-write] Object.assign(element.style, style); Object.keys(attributes).forEach(function (name) { var value = attributes[name]; if (value === false) { element.removeAttribute(name); } else { element.setAttribute(name, value === true ? '' : value); } }); }); } function effect$2(_ref2) { var state = _ref2.state; var initialStyles = { popper: { position: state.options.strategy, left: '0', top: '0', margin: '0' }, arrow: { position: 'absolute' }, reference: {} }; Object.assign(state.elements.popper.style, initialStyles.popper); state.styles = initialStyles; if (state.elements.arrow) { Object.assign(state.elements.arrow.style, initialStyles.arrow); } return function () { Object.keys(state.elements).forEach(function (name) { var element = state.elements[name]; var attributes = state.attributes[name] || {}; var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them var style = styleProperties.reduce(function (style, property) { style[property] = ''; return style; }, {}); // arrow is optional + virtual elements if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style); Object.keys(attributes).forEach(function (attribute) { element.removeAttribute(attribute); }); }); }; } // eslint-disable-next-line import/no-unused-modules var applyStyles$1 = { name: 'applyStyles', enabled: true, phase: 'write', fn: applyStyles, effect: effect$2, requires: ['computeStyles'] }; function getBasePlacement(placement) { return placement.split('-')[0]; } var max = Math.max; var min = Math.min; var round = Math.round; function getBoundingClientRect(element, includeScale) { if (includeScale === void 0) { includeScale = false; } var rect = element.getBoundingClientRect(); var scaleX = 1; var scaleY = 1; if (isHTMLElement(element) && includeScale) { var offsetHeight = element.offsetHeight; var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale // Fallback to 1 in case both values are `0` if (offsetWidth > 0) { scaleX = round(rect.width) / offsetWidth || 1; } if (offsetHeight > 0) { scaleY = round(rect.height) / offsetHeight || 1; } } return { width: rect.width / scaleX, height: rect.height / scaleY, top: rect.top / scaleY, right: rect.right / scaleX, bottom: rect.bottom / scaleY, left: rect.left / scaleX, x: rect.left / scaleX, y: rect.top / scaleY }; } // means it doesn't take into account transforms. function getLayoutRect(element) { var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. // Fixes https://github.com/popperjs/popper-core/issues/1223 var width = element.offsetWidth; var height = element.offsetHeight; if (Math.abs(clientRect.width - width) <= 1) { width = clientRect.width; } if (Math.abs(clientRect.height - height) <= 1) { height = clientRect.height; } return { x: element.offsetLeft, y: element.offsetTop, width: width, height: height }; } function contains(parent, child) { var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method if (parent.contains(child)) { return true; } // then fallback to custom implementation with Shadow DOM support else if (rootNode && isShadowRoot(rootNode)) { var next = child; do { if (next && parent.isSameNode(next)) { return true; } // $FlowFixMe[prop-missing]: need a better way to handle this... next = next.parentNode || next.host; } while (next); } // Give up, the result is false return false; } function getComputedStyle$1(element) { return getWindow(element).getComputedStyle(element); } function isTableElement(element) { return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; } function getDocumentElement(element) { // $FlowFixMe[incompatible-return]: assume body is always available return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] element.document) || window.document).documentElement; } function getParentNode(element) { if (getNodeName(element) === 'html') { return element; } return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle // $FlowFixMe[incompatible-return] // $FlowFixMe[prop-missing] element.assignedSlot || // step into the shadow DOM of the parent of a slotted node element.parentNode || ( // DOM Element detected isShadowRoot(element) ? element.host : null) || // ShadowRoot detected // $FlowFixMe[incompatible-call]: HTMLElement is a Node getDocumentElement(element) // fallback ); } function getTrueOffsetParent(element) { if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 getComputedStyle$1(element).position === 'fixed') { return null; } return element.offsetParent; } // `.offsetParent` reports `null` for fixed elements, while absolute elements // return the containing block function getContainingBlock(element) { var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; var isIE = navigator.userAgent.indexOf('Trident') !== -1; if (isIE && isHTMLElement(element)) { // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport var elementCss = getComputedStyle$1(element); if (elementCss.position === 'fixed') { return null; } } var currentNode = getParentNode(element); while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that // create a containing block. // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { return currentNode; } else { currentNode = currentNode.parentNode; } } return null; } // Gets the closest ancestor positioned element. Handles some edge cases, // such as table ancestors and cross browser bugs. function getOffsetParent(element) { var window = getWindow(element); var offsetParent = getTrueOffsetParent(element); while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { offsetParent = getTrueOffsetParent(offsetParent); } if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { return window; } return offsetParent || getContainingBlock(element) || window; } function getMainAxisFromPlacement(placement) { return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; } function within(min$1, value, max$1) { return max(min$1, min(value, max$1)); } function withinMaxClamp(min, value, max) { var v = within(min, value, max); return v > max ? max : v; } function getFreshSideObject() { return { top: 0, right: 0, bottom: 0, left: 0 }; } function mergePaddingObject(paddingObject) { return Object.assign({}, getFreshSideObject(), paddingObject); } function expandToHashMap(value, keys) { return keys.reduce(function (hashMap, key) { hashMap[key] = value; return hashMap; }, {}); } var toPaddingObject = function toPaddingObject(padding, state) { padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { placement: state.placement })) : padding; return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); }; function arrow(_ref) { var _state$modifiersData$; var state = _ref.state, name = _ref.name, options = _ref.options; var arrowElement = state.elements.arrow; var popperOffsets = state.modifiersData.popperOffsets; var basePlacement = getBasePlacement(state.placement); var axis = getMainAxisFromPlacement(basePlacement); var isVertical = [left, right].indexOf(basePlacement) >= 0; var len = isVertical ? 'height' : 'width'; if (!arrowElement || !popperOffsets) { return; } var paddingObject = toPaddingObject(options.padding, state); var arrowRect = getLayoutRect(arrowElement); var minProp = axis === 'y' ? top : left; var maxProp = axis === 'y' ? bottom : right; var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; var startDiff = popperOffsets[axis] - state.rects.reference[axis]; var arrowOffsetParent = getOffsetParent(arrowElement); var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is // outside of the popper bounds var min = paddingObject[minProp]; var max = clientSize - arrowRect[len] - paddingObject[maxProp]; var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; var offset = within(min, center, max); // Prevents breaking syntax highlighting... var axisProp = axis; state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); } function effect$1(_ref2) { var state = _ref2.state, options = _ref2.options; var _options$element = options.element, arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; if (arrowElement == null) { return; } // CSS selector if (typeof arrowElement === 'string') { arrowElement = state.elements.popper.querySelector(arrowElement); if (!arrowElement) { return; } } if (true) { if (!isHTMLElement(arrowElement)) { console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); } } if (!contains(state.elements.popper, arrowElement)) { if (true) { console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); } return; } state.elements.arrow = arrowElement; } // eslint-disable-next-line import/no-unused-modules var arrow$1 = { name: 'arrow', enabled: true, phase: 'main', fn: arrow, effect: effect$1, requires: ['popperOffsets'], requiresIfExists: ['preventOverflow'] }; function getVariation(placement) { return placement.split('-')[1]; } var unsetSides = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; // Round the offsets to the nearest suitable subpixel based on the DPR. // Zooming can change the DPR, but it seems to report a value that will // cleanly divide the values into the appropriate subpixels. function roundOffsetsByDPR(_ref) { var x = _ref.x, y = _ref.y; var win = window; var dpr = win.devicePixelRatio || 1; return { x: round(x * dpr) / dpr || 0, y: round(y * dpr) / dpr || 0 }; } function mapToStyles(_ref2) { var _Object$assign2; var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y; var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ x: x, y: y }) : { x: x, y: y }; x = _ref3.x; y = _ref3.y; var hasX = offsets.hasOwnProperty('x'); var hasY = offsets.hasOwnProperty('y'); var sideX = left; var sideY = top; var win = window; if (adaptive) { var offsetParent = getOffsetParent(popper); var heightProp = 'clientHeight'; var widthProp = 'clientWidth'; if (offsetParent === getWindow(popper)) { offsetParent = getDocumentElement(popper); if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { heightProp = 'scrollHeight'; widthProp = 'scrollWidth'; } } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it offsetParent = offsetParent; if (placement === top || (placement === left || placement === right) && variation === end) { sideY = bottom; var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] offsetParent[heightProp]; y -= offsetY - popperRect.height; y *= gpuAcceleration ? 1 : -1; } if (placement === left || (placement === top || placement === bottom) && variation === end) { sideX = right; var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] offsetParent[widthProp]; x -= offsetX - popperRect.width; x *= gpuAcceleration ? 1 : -1; } } var commonStyles = Object.assign({ position: position }, adaptive && unsetSides); var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ x: x, y: y }) : { x: x, y: y }; x = _ref4.x; y = _ref4.y; if (gpuAcceleration) { var _Object$assign; return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); } function computeStyles(_ref5) { var state = _ref5.state, options = _ref5.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; if (true) { var transitionProperty = getComputedStyle$1(state.elements.popper).transitionProperty || ''; if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { return transitionProperty.indexOf(property) >= 0; })) { console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); } } var commonStyles = { placement: getBasePlacement(state.placement), variation: getVariation(state.placement), popper: state.elements.popper, popperRect: state.rects.popper, gpuAcceleration: gpuAcceleration, isFixed: state.options.strategy === 'fixed' }; if (state.modifiersData.popperOffsets != null) { state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.popperOffsets, position: state.options.strategy, adaptive: adaptive, roundOffsets: roundOffsets }))); } if (state.modifiersData.arrow != null) { state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.arrow, position: 'absolute', adaptive: false, roundOffsets: roundOffsets }))); } state.attributes.popper = Object.assign({}, state.attributes.popper, { 'data-popper-placement': state.placement }); } // eslint-disable-next-line import/no-unused-modules var computeStyles$1 = { name: 'computeStyles', enabled: true, phase: 'beforeWrite', fn: computeStyles, data: {} }; var passive = { passive: true }; function effect(_ref) { var state = _ref.state, instance = _ref.instance, options = _ref.options; var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; var window = getWindow(state.elements.popper); var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); if (scroll) { scrollParents.forEach(function (scrollParent) { scrollParent.addEventListener('scroll', instance.update, passive); }); } if (resize) { window.addEventListener('resize', instance.update, passive); } return function () { if (scroll) { scrollParents.forEach(function (scrollParent) { scrollParent.removeEventListener('scroll', instance.update, passive); }); } if (resize) { window.removeEventListener('resize', instance.update, passive); } }; } // eslint-disable-next-line import/no-unused-modules var eventListeners = { name: 'eventListeners', enabled: true, phase: 'write', fn: function fn() {}, effect: effect, data: {} }; var hash$1 = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; function getOppositePlacement(placement) { return placement.replace(/left|right|bottom|top/g, function (matched) { return hash$1[matched]; }); } var hash = { start: 'end', end: 'start' }; function getOppositeVariationPlacement(placement) { return placement.replace(/start|end/g, function (matched) { return hash[matched]; }); } function getWindowScroll(node) { var win = getWindow(node); var scrollLeft = win.pageXOffset; var scrollTop = win.pageYOffset; return { scrollLeft: scrollLeft, scrollTop: scrollTop }; } function getWindowScrollBarX(element) { // If has a CSS width greater than the viewport, then this will be // incorrect for RTL. // Popper 1 is broken in this case and never had a bug report so let's assume // it's not an issue. I don't think anyone ever specifies width on // anyway. // Browsers where the left scrollbar doesn't cause an issue report `0` for // this (e.g. Edge 2019, IE11, Safari) return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } function getViewportRect(element) { var win = getWindow(element); var html = getDocumentElement(element); var visualViewport = win.visualViewport; var width = html.clientWidth; var height = html.clientHeight; var x = 0; var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper // can be obscured underneath it. // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even // if it isn't open, so if this isn't available, the popper will be detected // to overflow the bottom of the screen too early. if (visualViewport) { width = visualViewport.width; height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) // In Chrome, it returns a value very close to 0 (+/-) but contains rounding // errors due to floating point numbers, so we need to check precision. // Safari returns a number <= 0, usually < -1 when pinch-zoomed // Feature detection fails in mobile emulation mode in Chrome. // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < // 0.001 // Fallback here: "Not Safari" userAgent if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { x = visualViewport.offsetLeft; y = visualViewport.offsetTop; } } return { width: width, height: height, x: x + getWindowScrollBarX(element), y: y }; } // of the `` and `` rect bounds if horizontally scrollable function getDocumentRect(element) { var _element$ownerDocumen; var html = getDocumentElement(element); var winScroll = getWindowScroll(element); var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); var x = -winScroll.scrollLeft + getWindowScrollBarX(element); var y = -winScroll.scrollTop; if (getComputedStyle$1(body || html).direction === 'rtl') { x += max(html.clientWidth, body ? body.clientWidth : 0) - width; } return { width: width, height: height, x: x, y: y }; } function isScrollParent(element) { // Firefox wants us to check `-x` and `-y` variations as well var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } function getScrollParent(node) { if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { // $FlowFixMe[incompatible-return]: assume body is always available return node.ownerDocument.body; } if (isHTMLElement(node) && isScrollParent(node)) { return node; } return getScrollParent(getParentNode(node)); } /* given a DOM element, return the list of all scroll parents, up the list of ancesors until we get to the top window object. This list is what we attach scroll listeners to, because if any of these parent elements scroll, we'll need to re-calculate the reference element's position. */ function listScrollParents(element, list) { var _element$ownerDocumen; if (list === void 0) { list = []; } var scrollParent = getScrollParent(element); var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); var win = getWindow(scrollParent); var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; var updatedList = list.concat(target); return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here updatedList.concat(listScrollParents(getParentNode(target))); } function rectToClientRect(rect) { return Object.assign({}, rect, { left: rect.x, top: rect.y, right: rect.x + rect.width, bottom: rect.y + rect.height }); } function getInnerBoundingClientRect(element) { var rect = getBoundingClientRect(element); rect.top = rect.top + element.clientTop; rect.left = rect.left + element.clientLeft; rect.bottom = rect.top + element.clientHeight; rect.right = rect.left + element.clientWidth; rect.width = element.clientWidth; rect.height = element.clientHeight; rect.x = rect.left; rect.y = rect.top; return rect; } function getClientRectFromMixedType(element, clippingParent) { return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); } // A "clipping parent" is an overflowable container with the characteristic of // clipping (or hiding) overflowing elements with a position different from // `initial` function getClippingParents(element) { var clippingParents = listScrollParents(getParentNode(element)); var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; if (!isElement(clipperElement)) { return []; } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 return clippingParents.filter(function (clippingParent) { return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; }); } // Gets the maximum area that the element is visible in due to any number of // clipping parents function getClippingRect(element, boundary, rootBoundary) { var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); var clippingParents = [].concat(mainClippingParents, [rootBoundary]); var firstClippingParent = clippingParents[0]; var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { var rect = getClientRectFromMixedType(element, clippingParent); accRect.top = max(rect.top, accRect.top); accRect.right = min(rect.right, accRect.right); accRect.bottom = min(rect.bottom, accRect.bottom); accRect.left = max(rect.left, accRect.left); return accRect; }, getClientRectFromMixedType(element, firstClippingParent)); clippingRect.width = clippingRect.right - clippingRect.left; clippingRect.height = clippingRect.bottom - clippingRect.top; clippingRect.x = clippingRect.left; clippingRect.y = clippingRect.top; return clippingRect; } function computeOffsets(_ref) { var reference = _ref.reference, element = _ref.element, placement = _ref.placement; var basePlacement = placement ? getBasePlacement(placement) : null; var variation = placement ? getVariation(placement) : null; var commonX = reference.x + reference.width / 2 - element.width / 2; var commonY = reference.y + reference.height / 2 - element.height / 2; var offsets; switch (basePlacement) { case top: offsets = { x: commonX, y: reference.y - element.height }; break; case bottom: offsets = { x: commonX, y: reference.y + reference.height }; break; case right: offsets = { x: reference.x + reference.width, y: commonY }; break; case left: offsets = { x: reference.x - element.width, y: commonY }; break; default: offsets = { x: reference.x, y: reference.y }; } var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; if (mainAxis != null) { var len = mainAxis === 'y' ? 'height' : 'width'; switch (variation) { case start: offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); break; case end: offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); break; } } return offsets; } function detectOverflow(state, options) { if (options === void 0) { options = {}; } var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); var altContext = elementContext === popper ? reference : popper; var popperRect = state.rects.popper; var element = state.elements[altBoundary ? altContext : elementContext]; var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); var referenceClientRect = getBoundingClientRect(state.elements.reference); var popperOffsets = computeOffsets({ reference: referenceClientRect, element: popperRect, strategy: 'absolute', placement: placement }); var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect // 0 or negative = within the clipping rect var overflowOffsets = { top: clippingClientRect.top - elementClientRect.top + paddingObject.top, bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, left: clippingClientRect.left - elementClientRect.left + paddingObject.left, right: elementClientRect.right - clippingClientRect.right + paddingObject.right }; var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element if (elementContext === popper && offsetData) { var offset = offsetData[placement]; Object.keys(overflowOffsets).forEach(function (key) { var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; overflowOffsets[key] += offset[axis] * multiply; }); } return overflowOffsets; } function computeAutoPlacement(state, options) { if (options === void 0) { options = {}; } var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; var variation = getVariation(placement); var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { return getVariation(placement) === variation; }) : basePlacements; var allowedPlacements = placements$1.filter(function (placement) { return allowedAutoPlacements.indexOf(placement) >= 0; }); if (allowedPlacements.length === 0) { allowedPlacements = placements$1; if (true) { console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); } } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... var overflows = allowedPlacements.reduce(function (acc, placement) { acc[placement] = detectOverflow(state, { placement: placement, boundary: boundary, rootBoundary: rootBoundary, padding: padding })[getBasePlacement(placement)]; return acc; }, {}); return Object.keys(overflows).sort(function (a, b) { return overflows[a] - overflows[b]; }); } function getExpandedFallbackPlacements(placement) { if (getBasePlacement(placement) === auto) { return []; } var oppositePlacement = getOppositePlacement(placement); return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; } function flip(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; if (state.modifiersData[name]._skip) { return; } var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; var preferredPlacement = state.options.placement; var basePlacement = getBasePlacement(preferredPlacement); var isBasePlacement = basePlacement === preferredPlacement; var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { placement: placement, boundary: boundary, rootBoundary: rootBoundary, padding: padding, flipVariations: flipVariations, allowedAutoPlacements: allowedAutoPlacements }) : placement); }, []); var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var checksMap = new Map(); var makeFallbackChecks = true; var firstFittingPlacement = placements[0]; for (var i = 0; i < placements.length; i++) { var placement = placements[i]; var _basePlacement = getBasePlacement(placement); var isStartVariation = getVariation(placement) === start; var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; var len = isVertical ? 'width' : 'height'; var overflow = detectOverflow(state, { placement: placement, boundary: boundary, rootBoundary: rootBoundary, altBoundary: altBoundary, padding: padding }); var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; if (referenceRect[len] > popperRect[len]) { mainVariationSide = getOppositePlacement(mainVariationSide); } var altVariationSide = getOppositePlacement(mainVariationSide); var checks = []; if (checkMainAxis) { checks.push(overflow[_basePlacement] <= 0); } if (checkAltAxis) { checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); } if (checks.every(function (check) { return check; })) { firstFittingPlacement = placement; makeFallbackChecks = false; break; } checksMap.set(placement, checks); } if (makeFallbackChecks) { // `2` may be desired in some cases – research later var numberOfChecks = flipVariations ? 3 : 1; var _loop = function _loop(_i) { var fittingPlacement = placements.find(function (placement) { var checks = checksMap.get(placement); if (checks) { return checks.slice(0, _i).every(function (check) { return check; }); } }); if (fittingPlacement) { firstFittingPlacement = fittingPlacement; return "break"; } }; for (var _i = numberOfChecks; _i > 0; _i--) { var _ret = _loop(_i); if (_ret === "break") break; } } if (state.placement !== firstFittingPlacement) { state.modifiersData[name]._skip = true; state.placement = firstFittingPlacement; state.reset = true; } } // eslint-disable-next-line import/no-unused-modules var flip$1 = { name: 'flip', enabled: true, phase: 'main', fn: flip, requiresIfExists: ['offset'], data: { _skip: false } }; function getSideOffsets(overflow, rect, preventedOffsets) { if (preventedOffsets === void 0) { preventedOffsets = { x: 0, y: 0 }; } return { top: overflow.top - rect.height - preventedOffsets.y, right: overflow.right - rect.width + preventedOffsets.x, bottom: overflow.bottom - rect.height + preventedOffsets.y, left: overflow.left - rect.width - preventedOffsets.x }; } function isAnySideFullyClipped(overflow) { return [top, right, bottom, left].some(function (side) { return overflow[side] >= 0; }); } function hide(_ref) { var state = _ref.state, name = _ref.name; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var preventedOffsets = state.modifiersData.preventOverflow; var referenceOverflow = detectOverflow(state, { elementContext: 'reference' }); var popperAltOverflow = detectOverflow(state, { altBoundary: true }); var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); state.modifiersData[name] = { referenceClippingOffsets: referenceClippingOffsets, popperEscapeOffsets: popperEscapeOffsets, isReferenceHidden: isReferenceHidden, hasPopperEscaped: hasPopperEscaped }; state.attributes.popper = Object.assign({}, state.attributes.popper, { 'data-popper-reference-hidden': isReferenceHidden, 'data-popper-escaped': hasPopperEscaped }); } // eslint-disable-next-line import/no-unused-modules var hide$1 = { name: 'hide', enabled: true, phase: 'main', requiresIfExists: ['preventOverflow'], fn: hide }; function distanceAndSkiddingToXY(placement, rects, offset) { var basePlacement = getBasePlacement(placement); var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { placement: placement })) : offset, skidding = _ref[0], distance = _ref[1]; skidding = skidding || 0; distance = (distance || 0) * invertDistance; return [left, right].indexOf(basePlacement) >= 0 ? { x: distance, y: skidding } : { x: skidding, y: distance }; } function offset(_ref2) { var state = _ref2.state, options = _ref2.options, name = _ref2.name; var _options$offset = options.offset, offset = _options$offset === void 0 ? [0, 0] : _options$offset; var data = placements.reduce(function (acc, placement) { acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); return acc; }, {}); var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; if (state.modifiersData.popperOffsets != null) { state.modifiersData.popperOffsets.x += x; state.modifiersData.popperOffsets.y += y; } state.modifiersData[name] = data; } // eslint-disable-next-line import/no-unused-modules var offset$1 = { name: 'offset', enabled: true, phase: 'main', requires: ['popperOffsets'], fn: offset }; function popperOffsets(_ref) { var state = _ref.state, name = _ref.name; // Offsets are the actual position the popper needs to have to be // properly positioned near its reference element // This is the most basic placement, and will be adjusted by // the modifiers in the next step state.modifiersData[name] = computeOffsets({ reference: state.rects.reference, element: state.rects.popper, strategy: 'absolute', placement: state.placement }); } // eslint-disable-next-line import/no-unused-modules var popperOffsets$1 = { name: 'popperOffsets', enabled: true, phase: 'read', fn: popperOffsets, data: {} }; function getAltAxis(axis) { return axis === 'x' ? 'y' : 'x'; } function preventOverflow(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; var overflow = detectOverflow(state, { boundary: boundary, rootBoundary: rootBoundary, padding: padding, altBoundary: altBoundary }); var basePlacement = getBasePlacement(state.placement); var variation = getVariation(state.placement); var isBasePlacement = !variation; var mainAxis = getMainAxisFromPlacement(basePlacement); var altAxis = getAltAxis(mainAxis); var popperOffsets = state.modifiersData.popperOffsets; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset; var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { mainAxis: tetherOffsetValue, altAxis: tetherOffsetValue } : Object.assign({ mainAxis: 0, altAxis: 0 }, tetherOffsetValue); var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; var data = { x: 0, y: 0 }; if (!popperOffsets) { return; } if (checkMainAxis) { var _offsetModifierState$; var mainSide = mainAxis === 'y' ? top : left; var altSide = mainAxis === 'y' ? bottom : right; var len = mainAxis === 'y' ? 'height' : 'width'; var offset = popperOffsets[mainAxis]; var min$1 = offset + overflow[mainSide]; var max$1 = offset - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; var minLen = variation === start ? referenceRect[len] : popperRect[len]; var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go // outside the reference bounds var arrowElement = state.elements.arrow; var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { width: 0, height: 0 }; var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); var arrowPaddingMin = arrowPaddingObject[mainSide]; var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want // to include its full size in the calculation. If the reference is small // and near the edge of a boundary, the popper can overflow even if the // reference is not overflowing as well (e.g. virtual elements with no // width or height) var arrowLen = within(0, referenceRect[len], arrowRect[len]); var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; var tetherMax = offset + maxOffset - offsetModifierValue; var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); popperOffsets[mainAxis] = preventedOffset; data[mainAxis] = preventedOffset - offset; } if (checkAltAxis) { var _offsetModifierState$2; var _mainSide = mainAxis === 'x' ? top : left; var _altSide = mainAxis === 'x' ? bottom : right; var _offset = popperOffsets[altAxis]; var _len = altAxis === 'y' ? 'height' : 'width'; var _min = _offset + overflow[_mainSide]; var _max = _offset - overflow[_altSide]; var isOriginSide = [top, left].indexOf(basePlacement) !== -1; var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); popperOffsets[altAxis] = _preventedOffset; data[altAxis] = _preventedOffset - _offset; } state.modifiersData[name] = data; } // eslint-disable-next-line import/no-unused-modules var preventOverflow$1 = { name: 'preventOverflow', enabled: true, phase: 'main', fn: preventOverflow, requiresIfExists: ['offset'] }; function getHTMLElementScroll(element) { return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop }; } function getNodeScroll(node) { if (node === getWindow(node) || !isHTMLElement(node)) { return getWindowScroll(node); } else { return getHTMLElementScroll(node); } } function isElementScaled(element) { var rect = element.getBoundingClientRect(); var scaleX = round(rect.width) / element.offsetWidth || 1; var scaleY = round(rect.height) / element.offsetHeight || 1; return scaleX !== 1 || scaleY !== 1; } // Returns the composite rect of an element relative to its offsetParent. // Composite means it takes into account transforms as well as layout. function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { if (isFixed === void 0) { isFixed = false; } var isOffsetParentAnElement = isHTMLElement(offsetParent); var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); var documentElement = getDocumentElement(offsetParent); var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); var scroll = { scrollLeft: 0, scrollTop: 0 }; var offsets = { x: 0, y: 0 }; if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 isScrollParent(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { offsets = getBoundingClientRect(offsetParent, true); offsets.x += offsetParent.clientLeft; offsets.y += offsetParent.clientTop; } else if (documentElement) { offsets.x = getWindowScrollBarX(documentElement); } } return { x: rect.left + scroll.scrollLeft - offsets.x, y: rect.top + scroll.scrollTop - offsets.y, width: rect.width, height: rect.height }; } function order(modifiers) { var map = new Map(); var visited = new Set(); var result = []; modifiers.forEach(function (modifier) { map.set(modifier.name, modifier); }); // On visiting object, check for its dependencies and visit them recursively function sort(modifier) { visited.add(modifier.name); var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); requires.forEach(function (dep) { if (!visited.has(dep)) { var depModifier = map.get(dep); if (depModifier) { sort(depModifier); } } }); result.push(modifier); } modifiers.forEach(function (modifier) { if (!visited.has(modifier.name)) { // check for visited object sort(modifier); } }); return result; } function orderModifiers(modifiers) { // order based on dependencies var orderedModifiers = order(modifiers); // order based on phase return modifierPhases.reduce(function (acc, phase) { return acc.concat(orderedModifiers.filter(function (modifier) { return modifier.phase === phase; })); }, []); } function debounce(fn) { var pending; return function () { if (!pending) { pending = new Promise(function (resolve) { Promise.resolve().then(function () { pending = undefined; resolve(fn()); }); }); } return pending; }; } function format(str) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return [].concat(args).reduce(function (p, c) { return p.replace(/%s/, c); }, str); } var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; function validateModifiers(modifiers) { modifiers.forEach(function (modifier) { [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` .filter(function (value, index, self) { return self.indexOf(value) === index; }).forEach(function (key) { switch (key) { case 'name': if (typeof modifier.name !== 'string') { console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); } break; case 'enabled': if (typeof modifier.enabled !== 'boolean') { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); } break; case 'phase': if (modifierPhases.indexOf(modifier.phase) < 0) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); } break; case 'fn': if (typeof modifier.fn !== 'function') { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); } break; case 'effect': if (modifier.effect != null && typeof modifier.effect !== 'function') { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); } break; case 'requires': if (modifier.requires != null && !Array.isArray(modifier.requires)) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); } break; case 'requiresIfExists': if (!Array.isArray(modifier.requiresIfExists)) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); } break; case 'options': case 'data': break; default: console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { return "\"" + s + "\""; }).join(', ') + "; but \"" + key + "\" was provided."); } modifier.requires && modifier.requires.forEach(function (requirement) { if (modifiers.find(function (mod) { return mod.name === requirement; }) == null) { console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); } }); }); }); } function uniqueBy(arr, fn) { var identifiers = new Set(); return arr.filter(function (item) { var identifier = fn(item); if (!identifiers.has(identifier)) { identifiers.add(identifier); return true; } }); } function mergeByName(modifiers) { var merged = modifiers.reduce(function (merged, current) { var existing = merged[current.name]; merged[current.name] = existing ? Object.assign({}, existing, current, { options: Object.assign({}, existing.options, current.options), data: Object.assign({}, existing.data, current.data) }) : current; return merged; }, {}); // IE11 does not support Object.values return Object.keys(merged).map(function (key) { return merged[key]; }); } var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; var DEFAULT_OPTIONS = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; function areValidElements() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return !args.some(function (element) { return !(element && typeof element.getBoundingClientRect === 'function'); }); } function popperGenerator(generatorOptions) { if (generatorOptions === void 0) { generatorOptions = {}; } var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; return function createPopper(reference, popper, options) { if (options === void 0) { options = defaultOptions; } var state = { placement: 'bottom', orderedModifiers: [], options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), modifiersData: {}, elements: { reference: reference, popper: popper }, attributes: {}, styles: {} }; var effectCleanupFns = []; var isDestroyed = false; var instance = { state: state, setOptions: function setOptions(setOptionsAction) { var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; cleanupModifierEffects(); state.options = Object.assign({}, defaultOptions, state.options, options); state.scrollParents = { reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], popper: listScrollParents(popper) }; // Orders the modifiers based on their dependencies and `phase` // properties var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers state.orderedModifiers = orderedModifiers.filter(function (m) { return m.enabled; }); // Validate the provided modifiers so that the consumer will get warned // if one of the modifiers is invalid for any reason if (true) { var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { var name = _ref.name; return name; }); validateModifiers(modifiers); if (getBasePlacement(state.options.placement) === auto) { var flipModifier = state.orderedModifiers.find(function (_ref2) { var name = _ref2.name; return name === 'flip'; }); if (!flipModifier) { console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); } } var _getComputedStyle = getComputedStyle$1(popper), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can // cause bugs with positioning, so we'll warn the consumer if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { return parseFloat(margin); })) { console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); } } runModifierEffects(); return instance.update(); }, // Sync update – it will always be executed, even if not necessary. This // is useful for low frequency updates where sync behavior simplifies the // logic. // For high frequency updates (e.g. `resize` and `scroll` events), always // prefer the async Popper#update method forceUpdate: function forceUpdate() { if (isDestroyed) { return; } var _state$elements = state.elements, reference = _state$elements.reference, popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements // anymore if (!areValidElements(reference, popper)) { if (true) { console.error(INVALID_ELEMENT_ERROR); } return; } // Store the reference and popper rects to be read by modifiers state.rects = { reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), popper: getLayoutRect(popper) }; // Modifiers have the ability to reset the current update cycle. The // most common use case for this is the `flip` modifier changing the // placement, which then needs to re-run all the modifiers, because the // logic was previously ran for the previous placement and is therefore // stale/incorrect state.reset = false; state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier // is filled with the initial data specified by the modifier. This means // it doesn't persist and is fresh on each update. // To ensure persistent data, use `${name}#persistent` state.orderedModifiers.forEach(function (modifier) { return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); }); var __debug_loops__ = 0; for (var index = 0; index < state.orderedModifiers.length; index++) { if (true) { __debug_loops__ += 1; if (__debug_loops__ > 100) { console.error(INFINITE_LOOP_ERROR); break; } } if (state.reset === true) { state.reset = false; index = -1; continue; } var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; if (typeof fn === 'function') { state = fn({ state: state, options: _options, name: name, instance: instance }) || state; } } }, // Async and optimistically optimized update – it will not be executed if // not necessary (debounced to run at most once-per-tick) update: debounce(function () { return new Promise(function (resolve) { instance.forceUpdate(); resolve(state); }); }), destroy: function destroy() { cleanupModifierEffects(); isDestroyed = true; } }; if (!areValidElements(reference, popper)) { if (true) { console.error(INVALID_ELEMENT_ERROR); } return instance; } instance.setOptions(options).then(function (state) { if (!isDestroyed && options.onFirstUpdate) { options.onFirstUpdate(state); } }); // Modifiers have the ability to execute arbitrary code before the first // update cycle runs. They will be executed in the same order as the update // cycle. This is useful when a modifier adds some persistent data that // other modifiers need to use, but the modifier is run after the dependent // one. function runModifierEffects() { state.orderedModifiers.forEach(function (_ref3) { var name = _ref3.name, _ref3$options = _ref3.options, options = _ref3$options === void 0 ? {} : _ref3$options, effect = _ref3.effect; if (typeof effect === 'function') { var cleanupFn = effect({ state: state, name: name, instance: instance, options: options }); var noopFn = function noopFn() {}; effectCleanupFns.push(cleanupFn || noopFn); } }); } function cleanupModifierEffects() { effectCleanupFns.forEach(function (fn) { return fn(); }); effectCleanupFns = []; } return instance; }; } var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; var createPopper = /*#__PURE__*/popperGenerator({ defaultModifiers: defaultModifiers }); // eslint-disable-next-line import/no-unused-modules const CDropdown = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CDropdown', props: { /** * Set aligment of dropdown menu. * * @values { 'start' | 'end' | { xs: 'start' | 'end' } | { sm: 'start' | 'end' } | { md: 'start' | 'end' } | { lg: 'start' | 'end' } | { xl: 'start' | 'end'} | { xxl: 'start' | 'end'} } */ alignment: { type: [String, Object], default: undefined, required: false, // eslint-disable-next-line @typescript-eslint/no-explicit-any validator: (value) => { if (value === 'start' || value === 'end') { return true; } else { if (typeof value.xs !== 'undefined' && (value.xs === 'start' || value.xs === 'end')) { return true; } if (typeof value.sm !== 'undefined' && (value.sm === 'start' || value.sm === 'end')) { return true; } if (typeof value.md !== 'undefined' && (value.md === 'start' || value.md === 'end')) { return true; } if (typeof value.lg !== 'undefined' && (value.lg === 'start' || value.lg === 'end')) { return true; } if (typeof value.xl !== 'undefined' && (value.xl === 'start' || value.xl === 'end')) { return true; } if (typeof value.xxl !== 'undefined' && (value.xxl === 'start' || value.xxl === 'end')) { return true; } return false; } }, }, /** * Sets a darker color scheme to match a dark navbar. */ dark: { type: Boolean, required: false, }, /** * Sets a specified direction and location of the dropdown menu. * * @values 'dropup', 'dropend', 'dropstart' */ direction: { type: String, default: undefined, required: false, validator: (value) => { return ['dropup', 'dropend', 'dropstart'].includes(value); }, }, /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, required: false, }, /** * Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. * * @values 'auto', 'top-end', 'top', 'top-start', 'bottom-end', 'bottom', 'bottom-start', 'right-start', 'right', 'right-end', 'left-start', 'left', 'left-end' */ placement: { type: String, default: 'bottom-start', required: false, }, /** * If you want to disable dynamic positioning set this property to `true`. */ popper: { type: Boolean, default: true, required: false, }, /** * Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. */ trigger: { type: [String, Array], required: false, default: 'click', }, /** * Set the dropdown variant to an btn-group, dropdown, input-group, and nav-item. * * @values 'btn-group', 'dropdown', 'input-group', 'nav-item' */ variant: { type: String, default: 'btn-group', required: false, validator: (value) => { return ['btn-group', 'dropdown', 'input-group', 'nav-item'].includes(value); }, }, /** * Toggle the visibility of dropdown menu component. */ visible: { type: Boolean, required: false, }, }, emits: [ /** * Callback fired when the component requests to be hidden. */ 'hide', /** * Callback fired when the component requests to be shown. */ 'show', ], setup(props, { slots, emit }) { const dropdownRef = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const dropdownMenuRef = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const placement = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(props.placement); const popper = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(); const config = (0,vue__WEBPACK_IMPORTED_MODULE_0__.reactive)({ alignment: props.alignment, dark: props.dark, popper: props.popper, visible: props.visible, }); const { visible } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(config); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('config', config); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('variant', props.variant); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('visible', visible); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('dropdownRef', dropdownRef); (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('dropdownMenuRef', dropdownMenuRef); if (props.direction === 'dropup') { placement.value = 'top-start'; } if (props.direction === 'dropend') { placement.value = 'right-start'; } if (props.direction === 'dropstart') { placement.value = 'left-start'; } if (props.alignment === 'end') { placement.value = 'bottom-end'; } const initPopper = () => { // Disable popper if responsive aligment is set. if (typeof props.alignment === 'object') { return; } if (dropdownRef.value) { popper.value = createPopper(dropdownRef.value, dropdownMenuRef.value, { placement: placement.value, }); } }; const destroyPopper = () => { if (popper.value) { popper.value.destroy(); } popper.value = undefined; }; const toggleMenu = function () { if (props.disabled === false) { if (visible.value === true) { visible.value = false; } else { visible.value = true; } } }; (0,vue__WEBPACK_IMPORTED_MODULE_0__.provide)('toggleMenu', toggleMenu); const hideMenu = function () { if (props.disabled === false) { visible.value = false; } }; const handleKeyup = (event) => { if (dropdownRef.value && !dropdownRef.value.contains(event.target)) { hideMenu(); } }; const handleClickOutside = (event) => { if (dropdownRef.value && !dropdownRef.value.contains(event.target)) { hideMenu(); } }; (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => { window.addEventListener('click', handleClickOutside); window.addEventListener('keyup', handleKeyup); }); (0,vue__WEBPACK_IMPORTED_MODULE_0__.onUnmounted)(() => { window.removeEventListener('click', handleClickOutside); window.removeEventListener('keyup', handleKeyup); }); (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(visible, () => { props.popper && (visible.value ? initPopper() : destroyPopper()); visible.value ? emit('show') : emit('hide'); }); return () => props.variant === 'input-group' ? [slots.default && slots.default()] : (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ props.variant === 'nav-item' ? 'nav-item dropdown' : props.variant, props.direction, ], }, slots.default && slots.default()); }, }); const CDropdownItem = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CDropdownItem', props: { /** * Toggle the active state for the component. */ active: { type: Boolean, required: false, }, /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, default: 'a', required: false, }, /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, required: false, }, /** * The href attribute specifies the URL of the page the link goes to. */ href: { type: String, default: undefined, required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(CLink, { class: 'dropdown-item', active: props.active, component: props.component, disabled: props.disabled, href: props.href, }, { default: () => slots.default && slots.default(), }); }, }); const CDropdownHeader = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CDropdownHeader', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, default: 'h6', required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: 'dropdown-header', }, slots.default && slots.default()); }, }); const CDropdownDivider = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CDropdownDivider', setup() { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('hr', { class: 'dropdown-divider', }); }, }); const CDropdownMenu = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CDropdownMenu', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. * * @values 'div', 'ul' */ component: { type: String, default: 'div', required: false, }, }, setup(props, { slots }) { const dropdownMenuRef = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('dropdownMenuRef'); // eslint-disable-next-line @typescript-eslint/no-explicit-any const config = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('config'); const { alignment, dark, popper, visible } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(config); // eslint-disable-next-line @typescript-eslint/ban-types const alignmentClassNames = (alignment) => { const classNames = []; if (typeof alignment === 'object') { Object.keys(alignment).map((key) => { classNames.push(`dropdown-menu${key === 'xs' ? '' : `-${key}`}-${alignment[key]}`); }); } if (typeof alignment === 'string') { classNames.push(`dropdown-menu-${alignment}`); } return classNames; }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: [ 'dropdown-menu', { 'dropdown-menu-dark': dark.value, show: visible.value }, alignmentClassNames(alignment.value), ], ...((typeof alignment.value === 'object' || !popper.value) && { 'data-coreui-popper': 'static', }), ref: dropdownMenuRef, }, props.component === 'ul' ? slots.default && slots.default().map((vnode) => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('li', {}, vnode)) : slots.default && slots.default()); }, }); const CDropdownToggle = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CDropdownToggle', props: { /** * Toggle the active state for the component. */ active: { type: Boolean, default: false, required: false, }, /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, /** * Enables pseudo element caret on toggler. */ caret: { type: Boolean, default: true, required: false, }, /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, default: 'button', require: false, }, /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, required: false, }, /** * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' */ shape: Shape, /** * Size the component small or large. * * @values 'sm', 'lg' */ size: { type: String, default: undefined, required: false, validator: (value) => { return ['sm', 'lg'].includes(value); }, }, /** * Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` className for proper spacing around the dropdown caret. */ split: { type: Boolean, required: false, }, /** * Set the button variant to an outlined button or a ghost button. * * @values 'ghost', 'outline' */ variant: { type: String, default: undefined, required: false, validator: (value) => { return ['ghost', 'outline'].includes(value); }, }, }, setup(props, { slots }) { const dropdownRef = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('dropdownRef'); const dropdownVariant = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('variant'); const visible = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('visible'); const toggleMenu = (0,vue__WEBPACK_IMPORTED_MODULE_0__.inject)('toggleMenu'); const className = [ { 'dropdown-toggle': props.caret, 'dropdown-toggle-split': props.split, show: visible, active: props.active, disabled: props.disabled, }, ]; const buttonClassName = [ 'btn', props.variant ? `btn-${props.variant}-${props.color}` : `btn-${props.color}`, { [`btn-${props.size}`]: props.size, }, props.shape, ]; return () => dropdownVariant === 'nav-item' ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('a', { active: props.active, class: ['nav-link', className], disabled: props.disabled, href: '#', onClick: (event) => { event.preventDefault(); return toggleMenu(); }, ref: dropdownRef, }, { default: () => slots.default && slots.default() }) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)( // TODO: check how to use CButton component props.component, { class: [...className, ...buttonClassName], active: props.active, disabled: props.disabled, onClick: () => toggleMenu(), ...(props.component === 'button' && { type: 'button' }), ref: dropdownRef, }, props.split ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('span', { class: 'visually-hidden' }, 'Toggle Dropdown') : slots.default && slots.default()); }, }); const CDropdownPlugin = { install: (app) => { app.component(CDropdown.name, CDropdown); app.component(CDropdownItem.name, CDropdownItem); app.component(CDropdownHeader.name, CDropdownHeader); app.component(CDropdownDivider.name, CDropdownDivider); app.component(CDropdownMenu.name, CDropdownMenu); app.component(CDropdownToggle.name, CDropdownToggle); }, }; const CFooter = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFooter', props: { /** * Place footer in non-static positions. * * @values 'fixed', 'sticky' */ position: { type: String, default: undefined, required: false, validator: (value) => { return ['fixed', 'sticky'].includes(value); }, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: ['footer', { [`footer-${props.position}`]: props.position }] }, slots.default && slots.default()); }, }); const CFooterPlugin = { install: (app) => { app.component(CFooter.name, CFooter); }, }; const CForm = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CForm', props: { /** * Mark a form as validated. If you set it `true`, all validation styles will be applied to the forms component. */ validated: { type: Boolean, required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('form', { class: [{ ['was-validated']: props.validated }] }, slots.default && slots.default()); }, }); /*! * is-plain-object * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. */ function isObject(o) { return Object.prototype.toString.call(o) === '[object Object]'; } function isPlainObject(o) { var ctor,prot; if (isObject(o) === false) return false; // If has modified constructor ctor = o.constructor; if (ctor === undefined) return true; // If has modified prototype prot = ctor.prototype; if (isObject(prot) === false) return false; // If constructor does not have an Object-specific method if (prot.hasOwnProperty('isPrototypeOf') === false) { return false; } // Most likely a plain Object return true; } function t(){return t=Object.assign||function(e){for(var t=1;t=0||(i[r]=e[r]);return i}const n={silent:!1,logLevel:"warn"},i=["validator"],o=Object.prototype,a=o.toString,s=o.hasOwnProperty,u=/^\s*function (\w+)/;function l(e){var t;const r=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(r){const e=r.toString().match(u);return e?e[1]:""}return ""}const c=isPlainObject,f=e=>e;let d=f;if(true){const e="undefined"!=typeof console;d=e?function(e,t=n.logLevel){!1===n.silent&&console[t](`[VueTypes warn]: ${e}`);}:f;}const p=(e,t)=>s.call(e,t),y=Number.isInteger||function(e){return "number"==typeof e&&isFinite(e)&&Math.floor(e)===e},v=Array.isArray||function(e){return "[object Array]"===a.call(e)},h=e=>"[object Function]"===a.call(e),b=e=>c(e)&&p(e,"_vueTypes_name"),g=e=>c(e)&&(p(e,"type")||["_vueTypes_name","validator","default","required"].some(t=>p(e,t)));function O(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function m(e,t,r=!1){let n,i=!0,o="";n=c(e)?e:{type:e};const a=b(n)?n._vueTypes_name+" - ":"";if(g(n)&&null!==n.type){if(void 0===n.type||!0===n.type)return i;if(!n.required&&void 0===t)return i;v(n.type)?(i=n.type.some(e=>!0===m(e,t,!0)),o=n.type.map(e=>l(e)).join(" or ")):(o=l(n),i="Array"===o?v(t):"Object"===o?c(t):"String"===o||"Number"===o||"Boolean"===o||"Function"===o?function(e){if(null==e)return "";const t=e.constructor.toString().match(u);return t?t[1]:""}(t)===o:t instanceof n.type);}if(!i){const e=`${a}value "${t}" should be of type "${o}"`;return !1===r?(d(e),!1):e}if(p(n,"validator")&&h(n.validator)){const e=d,o=[];if(d=e=>{o.push(e);},i=n.validator(t),d=e,!i){const e=(o.length>1?"* ":"")+o.join("\n* ");return o.length=0,!1===r?(d(e),i):e}}return i}function j(e,t){const r=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get(){return this.required=!0,this}},def:{value(e){return void 0===e?(p(this,"default")&&delete this.default,this):h(e)||!0===m(this,e,!0)?(this.default=v(e)?()=>[...e]:c(e)?()=>Object.assign({},e):e,this):(d(`${this._vueTypes_name} - invalid default value: "${e}"`),this)}}}),{validator:n}=r;return h(n)&&(r.validator=O(n,r)),r}function _(e,t){const r=j(e,t);return Object.defineProperty(r,"validate",{value(e){return h(this.validator)&&d(`${this._vueTypes_name} - calling .validate() will overwrite the current custom validator function. Validator info:\n${JSON.stringify(this)}`),this.validator=O(e,this),this}})}function T(e,t,n){const o=function(e){const t={};return Object.getOwnPropertyNames(e).forEach(r=>{t[r]=Object.getOwnPropertyDescriptor(e,r);}),Object.defineProperties({},t)}(t);if(o._vueTypes_name=e,!c(n))return o;const{validator:a}=n,s=r(n,i);if(h(a)){let{validator:e}=o;e&&(e=null!==(l=(u=e).__original)&&void 0!==l?l:u),o.validator=O(e?function(t){return e.call(this,t)&&a.call(this,t)}:a,o);}var u,l;return Object.assign(o,s)}function $(e){return e.replace(/^(?!\s*$)/gm," ")}const w=()=>_("any",{}),P=()=>_("function",{type:Function}),x=()=>_("boolean",{type:Boolean}),E=()=>_("string",{type:String}),N=()=>_("number",{type:Number}),q=()=>_("array",{type:Array}),A=()=>_("object",{type:Object}),V=()=>j("integer",{type:Number,validator:e=>y(e)}),S=()=>j("symbol",{validator:e=>"symbol"==typeof e});function k(e,t="custom validation failed"){if("function"!=typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return j(e.name||"<>",{type:null,validator(r){const n=e(r);return n||d(`${this._vueTypes_name} - ${t}`),n}})}function D(e){if(!v(e))throw new TypeError("[VueTypes error]: You must provide an array as argument.");const t=`oneOf - value should be one of "${e.join('", "')}".`,r=e.reduce((e,t)=>{if(null!=t){const r=t.constructor;-1===e.indexOf(r)&&e.push(r);}return e},[]);return j("oneOf",{type:r.length>0?r:void 0,validator(r){const n=-1!==e.indexOf(r);return n||d(t),n}})}function L(e){if(!v(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");let t=!1,r=[];for(let n=0;nr.indexOf(e)===t);const n=r.length>0?r:null;return j("oneOfType",t?{type:n,validator(t){const r=[],n=e.some(e=>{const n=m(b(e)&&"oneOf"===e._vueTypes_name?e.type||null:e,t,!0);return "string"==typeof n&&r.push(n),!0===n});return n||d(`oneOfType - provided value does not match any of the ${r.length} passed-in validators:\n${$(r.join("\n"))}`),n}}:{type:n})}function F(e){return j("arrayOf",{type:Array,validator(t){let r="";const n=t.every(t=>(r=m(e,t,!0),!0===r));return n||d(`arrayOf - value validation error:\n${$(r)}`),n}})}function Y(e){return j("instanceOf",{type:e})}function B(e){return j("objectOf",{type:Object,validator(t){let r="";const n=Object.keys(t).every(n=>(r=m(e,t[n],!0),!0===r));return n||d(`objectOf - value validation error:\n${$(r)}`),n}})}function I(e){const t=Object.keys(e),r=t.filter(t=>{var r;return !(null===(r=e[t])||void 0===r||!r.required)}),n=j("shape",{type:Object,validator(n){if(!c(n))return !1;const i=Object.keys(n);if(r.length>0&&r.some(e=>-1===i.indexOf(e))){const e=r.filter(e=>-1===i.indexOf(e));return d(1===e.length?`shape - required property "${e[0]}" is not defined.`:`shape - required properties "${e.join('", "')}" are not defined.`),!1}return i.every(r=>{if(-1===t.indexOf(r))return !0===this._vueTypes_isLoose||(d(`shape - shape definition does not include a "${r}" property. Allowed keys: "${t.join('", "')}".`),!1);const i=m(e[r],n[r],!0);return "string"==typeof i&&d(`shape - "${r}" property validation error:\n ${$(i)}`),!0===i})}});return Object.defineProperty(n,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(n,"loose",{get(){return this._vueTypes_isLoose=!0,this}}),n}const J=["name","validate","getter"],M=/*#__PURE__*/(()=>{var e,t;return t=e=class{static get any(){return w()}static get func(){return P().def(this.defaults.func)}static get bool(){return x().def(this.defaults.bool)}static get string(){return E().def(this.defaults.string)}static get number(){return N().def(this.defaults.number)}static get array(){return q().def(this.defaults.array)}static get object(){return A().def(this.defaults.object)}static get integer(){return V().def(this.defaults.integer)}static get symbol(){return S()}static extend(e){if(v(e))return e.forEach(e=>this.extend(e)),this;const{name:t,validate:n=!1,getter:i=!1}=e,o=r(e,J);if(p(this,t))throw new TypeError(`[VueTypes error]: Type "${t}" already defined`);const{type:a}=o;if(b(a))return delete o.type,Object.defineProperty(this,t,i?{get:()=>T(t,a,o)}:{value(...e){const r=T(t,a,o);return r.validator&&(r.validator=r.validator.bind(r,...e)),r}});let s;return s=i?{get(){const e=Object.assign({},o);return n?_(t,e):j(t,e)},enumerable:!0}:{value(...e){const r=Object.assign({},o);let i;return i=n?_(t,r):j(t,r),r.validator&&(i.validator=r.validator.bind(i,...e)),i},enumerable:!0},Object.defineProperty(this,t,s)}},e.defaults={},e.sensibleDefaults=void 0,e.config=n,e.custom=k,e.oneOf=D,e.instanceOf=Y,e.oneOfType=L,e.arrayOf=F,e.objectOf=B,e.shape=I,e.utils={validate:(e,t)=>!0===m(t,e,!0),toType:(e,t,r=!1)=>r?_(e,t):j(e,t)},t})();function R(e={func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0}){var r,n;return n=r=class extends M{static get sensibleDefaults(){return t({},this.defaults)}static set sensibleDefaults(r){this.defaults=!1!==r?t({},!0!==r?r:e):{};}},r.defaults=t({},e),n}class z extends(R()){} const CFormLabel = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFormLabel', props: { /** * A string of all className you want to be applied to the component, and override standard className value. */ customClassName: { type: [Array, String], default: undefined, required: false, }, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('label', { class: props.customClassName ? props.customClassName : 'form-label', }, slots.default && slots.default()); }, }); const CFormCheck = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFormCheck', inheritAttrs: false, props: { /** * Create button-like checkboxes and radio buttons. */ button: I({ /** * Sets the color context of the component to one of CoreUI’s themed colors. * * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' */ color: Color, /** * Select the shape of the component. * * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' */ shape: Shape, /** * Size the component small or large. * * @values 'sm' | 'lg' */ size: { type: String, default: undefined, required: false, validator: (value) => { return ['sm', 'lg'].includes(value); }, }, /** * Set the button variant to an outlined button or a ghost button. */ variant: { type: String, default: undefined, required: false, validator: (value) => { return ['outline', 'ghost'].includes(value); }, }, }), /** * The id global attribute defines an identifier (ID) that must be unique in the whole document. */ id: { type: String, default: undefined, required: false, }, /** * Input Checkbox indeterminate Property */ indeterminate: Boolean, /** * Group checkboxes or radios on the same horizontal row by adding. */ inline: { type: Boolean, required: false, }, /** * Set component validation state to invalid. */ invalid: { type: Boolean, required: false, }, /** * The element represents a caption for a component. */ label: { type: String, default: undefined, required: false, }, /** * The default name for a value passed using v-model. */ modelValue: { type: [Boolean, String], value: undefined, required: false, }, /** * Specifies the type of component. * * @values 'checkbox', 'radio' */ type: { type: String, default: 'checkbox', required: false, }, /** * Set component validation state to valid. */ valid: { type: Boolean, required: false, }, }, emits: [ /** * Event occurs when the checked value has been changed. */ 'change', /** * Emit the new value whenever there’s a change event. */ 'update:modelValue', ], setup(props, { attrs, emit, slots }) { const handleChange = (event) => { const target = event.target; emit('change', event); emit('update:modelValue', target.checked); }; const formControl = () => { return (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('input', { checked: props.modelValue, class: [ props.button ? 'btn-check' : 'form-check-input', { 'is-invalid': props.invalid, 'is-valid': props.valid, }, ], id: props.id, indeterminate: props.indeterminate, onChange: (event) => handleChange(event), type: props.type, ...attrs, }); }; const formLabel = () => { return (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(CFormLabel, { customClassName: props.button ? [ 'btn', props.button.variant ? `btn-${props.button.variant}-${props.button.color}` : `btn-${props.button.color}`, { [`btn-${props.button.size}`]: props.button.size, }, `${props.button.shape}`, ] : 'form-check-label', ...(props.id && { for: props.id }), }, { default: () => (slots.label && slots.label()) || props.label, }); }; return () => props.button ? [formControl(), (slots.label || props.label) && formLabel()] : props.label ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: [ 'form-check', { 'form-check-inline': props.inline, 'is-invalid': props.invalid, 'is-valid': props.valid, }, ], }, [formControl(), props.label && formLabel()]) : formControl(); }, }); const CFormFeedback = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFormFeedback', props: { /** * Component used for the root node. Either a string to use a HTML element or a component. */ component: { type: String, required: false, default: 'div', }, /** * Method called immediately after the `value` prop changes. */ invalid: Boolean, /** * If your form layout allows it, you can display validation feedback in a styled tooltip. */ tooltip: Boolean, /** * Set component validation state to valid. */ valid: Boolean, }, setup(props, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)(props.component, { class: [ { [`invalid-${props.tooltip ? 'tooltip' : 'feedback'}`]: props.invalid, [`valid-${props.tooltip ? 'tooltip' : 'feedback'}`]: props.valid, }, ], }, slots.default && slots.default()); }, }); const CFormFloating = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFormFloating', setup(_, { slots }) { return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('div', { class: 'form-floating', }, slots.default && slots.default()); }, }); const CFormInput = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFormInput', props: { /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, required: false, }, /** * Set component validation state to invalid. */ invalid: { type: Boolean, required: false, }, /** * The default name for a value passed using v-model. */ modelValue: { type: String, default: undefined, require: false, }, /** * Render the component styled as plain text. Removes the default form field styling and preserve the correct margin and padding. Recommend to use only along side `readonly`. */ plainText: { type: Boolean, required: false, }, /** * Toggle the readonly state for the component. */ readonly: { type: Boolean, required: false, }, /** * Size the component small or large. * * @values 'sm' | 'lg' */ size: { type: String, default: undefined, require: false, validator: (value) => { return ['sm', 'lg'].includes(value); }, }, /** * Specifies the type of component. * * @values 'color' | 'file' | 'text' | string */ type: { type: String, default: 'text', require: false, }, /** * Set component validation state to valid. */ valid: { type: Boolean, required: false, }, }, emits: [ /** * Event occurs when the element loses focus, after the content has been changed. */ 'change', /** * Event occurs immediately after the value of a component has changed. */ 'input', /** * Emit the new value whenever there’s an input or change event. */ 'update:modelValue', ], setup(props, { emit, slots }) { const handleChange = (event) => { const target = event.target; emit('change', event); emit('update:modelValue', target.value); }; const handleInput = (event) => { const target = event.target; emit('input', event); emit('update:modelValue', target.value); }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('input', { class: [ props.plainText ? 'form-control-plaintext' : 'form-control', { 'form-control-color': props.type === 'color', [`form-control-${props.size}`]: props.size, 'is-invalid': props.invalid, 'is-valid': props.valid, }, ], disabled: props.disabled, onChange: (event) => handleChange(event), onInput: (event) => handleInput(event), readonly: props.readonly, type: props.type, value: props.modelValue, }, slots.default && slots.default()); }, }); const CFormRange = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFormRange', props: { /** * Toggle the disabled state for the component. */ disabled: { type: Boolean, default: undefined, required: false, }, /** * Specifies the maximum value for the component. */ max: { type: Number, default: undefined, required: false, }, /** * Specifies the minimum value for the component. */ min: { type: Number, default: undefined, required: false, }, /** * The default name for a value passed using v-model. */ modelValue: { type: String, value: undefined, required: false, }, /** * Toggle the readonly state for the component. */ readonly: { type: Boolean, required: false, }, /** * Specifies the interval between legal numbers in the component. */ steps: { type: Number, default: undefined, required: false, }, /** * The `value` attribute of component. * * @controllable onChange * */ value: { type: Number, default: undefined, required: false, }, }, emits: [ /** * Event occurs when the value has been changed. */ 'change', /** * Emit the new value whenever there’s a change event. */ 'update:modelValue', ], setup(props, { emit, slots }) { const handleChange = (event) => { const target = event.target; emit('change', event); emit('update:modelValue', target.value); }; return () => (0,vue__WEBPACK_IMPORTED_MODULE_0__.h)('input', { class: 'form-range', disabled: props.disabled, max: props.max, min: props.min, onChange: (event) => handleChange(event), steps: props.steps, readonly: props.readonly, type: 'range', value: props.modelValue, }, slots.default && slots.default()); }, }); const CFormSelect = (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ name: 'CFormSelect', props: { /** * Specifies the number of visible options in a drop-down list. */ htmlSize: { type: Number, default: undefined, required: false, }, /** * Set component validation state to invalid. */ invalid: { type: Boolean, required: false, }, /** * The default name for a value passed using v-model. */ modelValue: { type: [String, Array], default: undefined, require: false, }, multiple: { type: Boolean, required: false, }, /** * Options list of the select component. Available keys: `label`, `value`, `disabled`. * Examples: * - `:options="[{ value: 'js', label: 'JavaScript' }, { value: 'html', label: 'HTML', disabled: true }]"` * - `:options="['js', 'html']"` */ options: { type: Array, default: undefined, required: false, }, /** * Size the component small or large. * * @values 'sm' | 'lg' */ size: { type: String, default: undefined, require: false, validator: (value) => { return ['sm', 'lg'].includes(value); }, }, /** * Set component validation state to valid. */ valid: { type: Boolean, required: false, }, }, emits: [ /** * Event occurs when when a user changes the selected option of a `