{"version":3,"file":"phoenix.js","sources":["../../../src/js/utils.js","../../../src/js/docs.js","../../../src/js/theme/advance-ajax-table.js","../../../src/js/theme/anchor.js","../../../src/js/theme/bigPicture.js","../../../src/js/theme/node.js","../../../src/js/theme/bulk-select.js","../../../src/js/theme/charts/echarts/echarts-utils.js","../../../src/js/theme/charts/echarts/basic-echarts.js","../../../src/js/theme/charts/echarts/reports-details-chart.js","../../../src/js/theme/chat.js","../../../src/js/theme/choices.js","../../../src/js/theme/copyLink.js","../../../src/js/theme/countUp.js","../../../src/js/theme/create-board.js","../../../src/js/theme/detector.js","../../../src/js/theme/dropdown-on-hover.js","../../../src/js/theme/dropzone.js","../../../src/js/theme/featherIcons.js","../../../src/js/theme/flatpickr.js","../../../src/js/theme/form-validation.js","../../../src/js/theme/fullcalendar.js","../../../src/js/theme/glightbox.js","../../../src/js/theme/googleMap.js","../../../src/js/theme/icons.js","../../../src/js/theme/isotope.js","../../../src/js/theme/list.js","../../../src/js/theme/lottie.js","../../../src/js/theme/modal.js","../../../src/js/theme/navbar-combo.js","../../../src/js/theme/navbar-shadow-on-scroll.js","../../../src/js/theme/navbar-soft-on-scroll.js","../../../src/js/theme/navbar-vertical.js","../../../src/js/theme/phoenix-offcanvas.js","../../../src/js/theme/picmo.js","../../../src/js/theme/popover.js","../../../src/js/theme/product-details.js","../../../src/js/theme/quantity.js","../../../src/js/theme/randomColor.js","../../../src/js/theme/rater.js","../../../src/js/theme/responsiveNavItems.js","../../../src/js/theme/search.js","../../../src/js/theme/simplabar.js","../../../src/js/theme/sortable.js","../../../src/js/theme/support-chat.js","../../../src/js/theme/swiper.js","../../../src/js/theme/theme-control.js","../../../src/js/theme/tinymce.js","../../../src/js/theme/toast.js","../../../src/js/theme/todoOffCanvas.js","../../../src/js/theme/tooltip.js","../../../src/js/theme/wizard.js","../../../src/js/theme/faq-tab.js","../../../src/js/theme/kanban.js","../../../src/js/theme/2fa-verification.js","../../../src/js/theme/mapbox.js","../../../src/js/theme/flight-map.js","../../../src/js/theme/typed.js","../../../src/js/theme/price-tier-form.js","../../../src/js/theme/nouislider.js","../../../src/js/theme/collapse-all.js","../../../src/js/theme/data.js","../../../src/js/theme/leaflet.js","../../../src/js/theme/mapbox-cluster.js","../../../src/js/theme/charts/echarts/trip-review-chart.js","../../../src/js/theme/play-on-hover.js","../../../src/js/theme/password-toggle.js","../../../src/js/phoenix.js"],"sourcesContent":["/* -------------------------------------------------------------------------- */\r\n/* Utils */\r\n/* -------------------------------------------------------------------------- */\r\nexport const docReady = fn => {\r\n // see if DOM is already available\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', fn);\r\n } else {\r\n setTimeout(fn, 1);\r\n }\r\n};\r\n\r\nexport const toggleColor = (lightColor, darkColor) => {\r\n const currentMode = getItemFromStore('phoenixTheme');\r\n const mode = currentMode === 'auto' ? getSystemTheme() : currentMode;\r\n return mode === 'light' ? lightColor : darkColor;\r\n};\r\n\r\nexport const resize = fn => window.addEventListener('resize', fn);\r\n\r\nexport const isIterableArray = array => Array.isArray(array) && !!array.length;\r\n\r\nexport const camelize = str => {\r\n const text = str.replace(/[-_\\s.]+(.)?/g, (_, c) =>\r\n c ? c.toUpperCase() : ''\r\n );\r\n return `${text.substr(0, 1).toLowerCase()}${text.substr(1)}`;\r\n};\r\n\r\nexport const getData = (el, data) => {\r\n try {\r\n return JSON.parse(el.dataset[camelize(data)]);\r\n } catch (e) {\r\n return el.dataset[camelize(data)];\r\n }\r\n};\r\n\r\n/* ----------------------------- Colors function ---------------------------- */\r\n\r\nexport const hexToRgb = hexValue => {\r\n let hex;\r\n hexValue.indexOf('#') === 0\r\n ? (hex = hexValue.substring(1))\r\n : (hex = hexValue);\r\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\r\n hex.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b)\r\n );\r\n return result\r\n ? [\r\n parseInt(result[1], 16),\r\n parseInt(result[2], 16),\r\n parseInt(result[3], 16)\r\n ]\r\n : null;\r\n};\r\n\r\nexport const rgbaColor = (color = '#fff', alpha = 0.5) =>\r\n `rgba(${hexToRgb(color)}, ${alpha})`;\r\n\r\n/* --------------------------------- Colors --------------------------------- */\r\n\r\nexport const getColor = (name, dom = document.documentElement) => {\r\n return getComputedStyle(dom).getPropertyValue(`--phoenix-${name}`).trim();\r\n};\r\n\r\nexport const hasClass = (el, className) => {\r\n !el && false;\r\n return el.classList.value.includes(className);\r\n};\r\n\r\nexport const addClass = (el, className) => {\r\n el.classList.add(className);\r\n};\r\n\r\nexport const getOffset = el => {\r\n const rect = el.getBoundingClientRect();\r\n const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\r\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft };\r\n};\r\n\r\nexport const isScrolledIntoView = el => {\r\n let top = el.offsetTop;\r\n let left = el.offsetLeft;\r\n const width = el.offsetWidth;\r\n const height = el.offsetHeight;\r\n\r\n while (el.offsetParent) {\r\n // eslint-disable-next-line no-param-reassign\r\n el = el.offsetParent;\r\n top += el.offsetTop;\r\n left += el.offsetLeft;\r\n }\r\n\r\n return {\r\n all:\r\n top >= window.pageYOffset &&\r\n left >= window.pageXOffset &&\r\n top + height <= window.pageYOffset + window.innerHeight &&\r\n left + width <= window.pageXOffset + window.innerWidth,\r\n partial:\r\n top < window.pageYOffset + window.innerHeight &&\r\n left < window.pageXOffset + window.innerWidth &&\r\n top + height > window.pageYOffset &&\r\n left + width > window.pageXOffset\r\n };\r\n};\r\n\r\nexport const breakpoints = {\r\n xs: 0,\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n xxl: 1540\r\n};\r\n\r\nexport const getBreakpoint = el => {\r\n const classes = el && el.classList.value;\r\n let breakpoint;\r\n if (classes) {\r\n breakpoint =\r\n breakpoints[\r\n classes\r\n .split(' ')\r\n .filter(cls => cls.includes('navbar-expand-'))\r\n .pop()\r\n .split('-')\r\n .pop()\r\n ];\r\n }\r\n return breakpoint;\r\n};\r\n\r\n/* --------------------------------- Cookie --------------------------------- */\r\n\r\nexport const setCookie = (name, value, seconds) => {\r\n const expires = window.dayjs().add(seconds, 'second').toDate();\r\n document.cookie = `${name}=${value};expires=${expires}`;\r\n};\r\n\r\nexport const getCookie = name => {\r\n const keyValue = document.cookie.match(`(^|;) ?${name}=([^;]*)(;|$)`);\r\n return keyValue ? keyValue[2] : keyValue;\r\n};\r\n\r\nexport const settings = {\r\n tinymce: {\r\n theme: 'oxide'\r\n },\r\n chart: {\r\n borderColor: 'rgba(255, 255, 255, 0.8)'\r\n }\r\n};\r\n\r\n/* -------------------------- Chart Initialization -------------------------- */\r\n\r\nexport const newChart = (chart, config) => {\r\n const ctx = chart.getContext('2d');\r\n return new window.Chart(ctx, config);\r\n};\r\n\r\n/* ---------------------------------- Store --------------------------------- */\r\n\r\nexport const getItemFromStore = (key, defaultValue, store = localStorage) => {\r\n try {\r\n return JSON.parse(store.getItem(key)) || defaultValue;\r\n } catch {\r\n return store.getItem(key) || defaultValue;\r\n }\r\n};\r\n\r\nexport const setItemToStore = (key, payload, store = localStorage) =>\r\n store.setItem(key, payload);\r\nexport const getStoreSpace = (store = localStorage) =>\r\n parseFloat(\r\n (\r\n escape(encodeURIComponent(JSON.stringify(store))).length /\r\n (1024 * 1024)\r\n ).toFixed(2)\r\n );\r\n\r\n/* get Dates between */\r\n\r\nexport const getDates = (\r\n startDate,\r\n endDate,\r\n interval = 1000 * 60 * 60 * 24\r\n) => {\r\n const duration = endDate - startDate;\r\n const steps = duration / interval;\r\n return Array.from(\r\n { length: steps + 1 },\r\n (v, i) => new Date(startDate.valueOf() + interval * i)\r\n );\r\n};\r\n\r\nexport const getPastDates = duration => {\r\n let days;\r\n\r\n switch (duration) {\r\n case 'week':\r\n days = 7;\r\n break;\r\n case 'month':\r\n days = 30;\r\n break;\r\n case 'year':\r\n days = 365;\r\n break;\r\n\r\n default:\r\n days = duration;\r\n }\r\n\r\n const date = new Date();\r\n const endDate = date;\r\n const startDate = new Date(new Date().setDate(date.getDate() - (days - 1)));\r\n return getDates(startDate, endDate);\r\n};\r\n\r\n/* Get Random Number */\r\nexport const getRandomNumber = (min, max) => {\r\n return Math.floor(Math.random() * (max - min) + min);\r\n};\r\n\r\nexport const getSystemTheme = () =>\r\n window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n\r\n// export const handleThemeDropdownIcon = value => {\r\n// document.querySelectorAll('[data-theme-dropdown-toggle-icon]').forEach(el => {\r\n// const theme = getData(el, 'theme-dropdown-toggle-icon');\r\n\r\n// if (value === theme) {\r\n// el.classList.remove('d-none');\r\n// } else {\r\n// el.classList.add('d-none');\r\n// }\r\n// });\r\n// };\r\n// handleThemeDropdownIcon(getItemFromStore('phoenixTheme'));\r\n\r\nexport default {\r\n docReady,\r\n toggleColor,\r\n resize,\r\n isIterableArray,\r\n camelize,\r\n getData,\r\n hasClass,\r\n addClass,\r\n hexToRgb,\r\n rgbaColor,\r\n getColor,\r\n breakpoints,\r\n // getGrays,\r\n getOffset,\r\n isScrolledIntoView,\r\n getBreakpoint,\r\n setCookie,\r\n getCookie,\r\n newChart,\r\n settings,\r\n getItemFromStore,\r\n setItemToStore,\r\n getStoreSpace,\r\n getDates,\r\n getPastDates,\r\n getRandomNumber,\r\n getSystemTheme\r\n // handleThemeDropdownIcon\r\n};\r\n","import { Collapse, Toast } from 'bootstrap';\r\n\r\nconst docComponentInit = () => {\r\n const componentCards = document.querySelectorAll('[data-component-card]');\r\n const iconCopiedToast = document.getElementById('icon-copied-toast');\r\n const iconCopiedToastInstance = new Toast(iconCopiedToast);\r\n\r\n componentCards.forEach(card => {\r\n const copyCodeBtn = card.querySelector('.copy-code-btn');\r\n const copyCodeEl = card.querySelector('.code-to-copy');\r\n const previewBtn = card.querySelector('.preview-btn');\r\n const collapseElement = card.querySelector('.code-collapse');\r\n const collapseInstance = Collapse.getOrCreateInstance(collapseElement, {\r\n toggle: false\r\n });\r\n\r\n previewBtn?.addEventListener('click', () => {\r\n collapseInstance.toggle();\r\n });\r\n\r\n copyCodeBtn?.addEventListener('click', () => {\r\n const el = document.createElement('textarea');\r\n el.value = copyCodeEl.innerHTML;\r\n document.body.appendChild(el);\r\n\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n\r\n iconCopiedToast.querySelector(\r\n '.toast-body'\r\n ).innerHTML = `Code has been copied to clipboard.
`;\r\n iconCopiedToastInstance.show();\r\n });\r\n });\r\n};\r\n\r\nexport default docComponentInit;\r\n","/* eslint-disable */\r\nconst orders = [\r\n {\r\n id: 1,\r\n dropdownId: 'order-dropdown-1',\r\n orderId: '#2181',\r\n mailLink: 'mailto:carry@example.com',\r\n customer: 'Carry Anna',\r\n date: '10/03/2023',\r\n address: 'Carry Anna, 2392 Main Avenue, Penasauka, New Jersey 02149',\r\n deliveryType: 'Cash on Delivery',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$99'\r\n },\r\n {\r\n id: 2,\r\n dropdownId: 'order-dropdown-2',\r\n orderId: '#2182',\r\n mailLink: 'mailto:milind@example.com',\r\n customer: 'Milind Mikuja',\r\n date: '10/03/2023',\r\n address: 'Milind Mikuja, 1 Hollywood Blvd,Beverly Hills, California 90210',\r\n deliveryType: 'Cash on Delivery',\r\n status: 'Processing',\r\n badge: { type: 'primary', icon: 'fas fa-redo' },\r\n amount: '$120'\r\n },\r\n {\r\n id: 3,\r\n dropdownId: 'order-dropdown-3',\r\n orderId: '#2183',\r\n mailLink: 'mailto:stanly@example.com',\r\n customer: 'Stanly Drinkwater',\r\n date: '30/04/2023',\r\n address: 'Stanly Drinkwater, 1 Infinite Loop, Cupertino, California 90210',\r\n deliveryType: 'Local Delivery',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$70'\r\n },\r\n {\r\n id: 4,\r\n dropdownId: 'order-dropdown-4',\r\n orderId: '#2184',\r\n mailLink: 'mailto:bucky@example.com',\r\n customer: 'Bucky Robert',\r\n date: '30/04/2023',\r\n address: 'Bucky Robert, 1 Infinite Loop, Cupertino, California 90210',\r\n deliveryType: 'Free Shipping',\r\n status: 'Pending',\r\n badge: { type: 'warning', icon: 'fas fa-stream' },\r\n amount: '$92'\r\n },\r\n {\r\n id: 5,\r\n dropdownId: 'order-dropdown-5',\r\n orderId: '#2185',\r\n mailLink: 'mailto:josef@example.com',\r\n customer: 'Josef Stravinsky',\r\n date: '30/04/2023',\r\n address: 'Josef Stravinsky, 1 Infinite Loop, Cupertino, California 90210',\r\n deliveryType: 'Via Free Road',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$120'\r\n },\r\n {\r\n id: 6,\r\n dropdownId: 'order-dropdown-6',\r\n orderId: '#2186',\r\n mailLink: 'mailto:igor@example.com',\r\n customer: 'Igor Borvibson',\r\n date: '30/04/2023',\r\n address: 'Igor Borvibson, 1 Infinite Loop, Cupertino, California 90210',\r\n deliveryType: 'Free Shipping',\r\n status: 'Processing',\r\n badge: { type: 'primary', icon: 'fas fa-redo' },\r\n amount: '$145'\r\n },\r\n {\r\n id: 7,\r\n dropdownId: 'order-dropdown-7',\r\n orderId: '#2187',\r\n mailLink: 'mailto:katerina@example.com',\r\n customer: 'Katerina Karenin',\r\n date: '30/04/2023',\r\n address: 'Katerina Karenin, 1 Infinite Loop, Cupertino, California 90210',\r\n deliveryType: 'Flat Rate',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$55'\r\n },\r\n {\r\n id: 8,\r\n dropdownId: 'order-dropdown-8',\r\n orderId: '#2188',\r\n mailLink: 'mailto:roy@example.com',\r\n customer: 'Roy Anderson',\r\n date: '29/04/2023',\r\n address: 'Roy Anderson, 1 Infinite Loop, Cupertino, California 90210',\r\n deliveryType: 'Local Delivery',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$90'\r\n },\r\n {\r\n id: 9,\r\n dropdownId: 'order-dropdown-9',\r\n orderId: '#2189',\r\n mailLink: 'mailto:Stephenson@example.com',\r\n customer: 'Thomas Stephenson',\r\n date: '29/04/2023',\r\n address: 'Thomas Stephenson, 116 Ballifeary Road, Bamff',\r\n deliveryType: 'Flat Rate',\r\n status: 'Processing',\r\n badge: { type: 'primary', icon: 'fas fa-redo' },\r\n amount: '$52'\r\n },\r\n {\r\n id: 10,\r\n dropdownId: 'order-dropdown-10',\r\n orderId: '#2190',\r\n mailLink: 'mailto:eviewsing@example.com',\r\n customer: 'Evie Singh',\r\n date: '29/04/2023',\r\n address: 'Evie Singh, 54 Castledore Road, Tunstead',\r\n deliveryType: 'Flat Rate',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$90'\r\n },\r\n {\r\n id: 11,\r\n dropdownId: 'order-dropdown-11',\r\n orderId: '#2191',\r\n mailLink: 'mailto:peter@example.com',\r\n customer: 'David Peters',\r\n date: '29/04/2023',\r\n address: 'David Peters, Rhyd Y Groes, Rhosgoch, LL66 0AT',\r\n deliveryType: 'Local Delivery',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$69'\r\n },\r\n {\r\n id: 12,\r\n dropdownId: 'order-dropdown-12',\r\n orderId: '#2192',\r\n mailLink: 'mailto:jennifer@example.com',\r\n customer: 'Jennifer Johnson',\r\n date: '28/04/2023',\r\n address: 'Jennifer Johnson, Rhyd Y Groes, Rhosgoch, LL66 0AT',\r\n deliveryType: 'Flat Rate',\r\n status: 'Processing',\r\n badge: { type: 'primary', icon: 'fas fa-redo' },\r\n amount: '$112'\r\n },\r\n {\r\n id: 13,\r\n dropdownId: 'order-dropdown-13',\r\n orderId: '#2193',\r\n mailLink: 'mailto:okuneva@example.com',\r\n customer: 'Demarcus Okuneva',\r\n date: '28/04/2023',\r\n address: 'Demarcus Okuneva, 90555 Upton Drive Jeffreyview, UT 08771',\r\n deliveryType: 'Flat Rate',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$99'\r\n },\r\n {\r\n id: 14,\r\n dropdownId: 'order-dropdown-14',\r\n orderId: '#2194',\r\n mailLink: 'mailto:simeon@example.com',\r\n customer: 'Simeon Harber',\r\n date: '27/04/2023',\r\n address:\r\n 'Simeon Harber, 702 Kunde Plain Apt. 634 East Bridgetview, HI 13134-1862',\r\n deliveryType: 'Free Shipping',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$129'\r\n },\r\n {\r\n id: 15,\r\n dropdownId: 'order-dropdown-15',\r\n orderId: '#2195',\r\n mailLink: 'mailto:lavon@example.com',\r\n customer: 'Lavon Haley',\r\n date: '27/04/2023',\r\n address: 'Lavon Haley, 30998 Adonis Locks McGlynnside, ID 27241',\r\n deliveryType: 'Free Shipping',\r\n status: 'Pending',\r\n badge: { type: 'warning', icon: 'fas fa-stream' },\r\n amount: '$70'\r\n },\r\n {\r\n id: 16,\r\n dropdownId: 'order-dropdown-16',\r\n orderId: '#2196',\r\n mailLink: 'mailto:ashley@example.com',\r\n customer: 'Ashley Kirlin',\r\n date: '26/04/2023',\r\n address:\r\n 'Ashley Kirlin, 43304 Prosacco Shore South Dejuanfurt, MO 18623-0505',\r\n deliveryType: 'Local Delivery',\r\n status: 'Processing',\r\n badge: { type: 'primary', icon: 'fas fa-redo' },\r\n amount: '$39'\r\n },\r\n {\r\n id: 17,\r\n dropdownId: 'order-dropdown-17',\r\n orderId: '#2197',\r\n mailLink: 'mailto:johnnie@example.com',\r\n customer: 'Johnnie Considine',\r\n date: '26/04/2023',\r\n address:\r\n 'Johnnie Considine, 6008 Hermann Points Suite 294 Hansenville, TN 14210',\r\n deliveryType: 'Flat Rate',\r\n status: 'Pending',\r\n badge: { type: 'warning', icon: 'fas fa-stream' },\r\n amount: '$70'\r\n },\r\n {\r\n id: 18,\r\n dropdownId: 'order-dropdown-18',\r\n orderId: '#2198',\r\n mailLink: 'mailto:trace@example.com',\r\n customer: 'Trace Farrell',\r\n date: '26/04/2023',\r\n address: 'Trace Farrell, 431 Steuber Mews Apt. 252 Germanland, AK 25882',\r\n deliveryType: 'Free Shipping',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$70'\r\n },\r\n {\r\n id: 19,\r\n dropdownId: 'order-dropdown-19',\r\n orderId: '#2199',\r\n mailLink: 'mailto:nienow@example.com',\r\n customer: 'Estell Nienow',\r\n date: '26/04/2023',\r\n address: 'Estell Nienow, 4167 Laverna Manor Marysemouth, NV 74590',\r\n deliveryType: 'Free Shipping',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$59'\r\n },\r\n {\r\n id: 20,\r\n dropdownId: 'order-dropdown-20',\r\n orderId: '#2200',\r\n mailLink: 'mailto:howe@example.com',\r\n customer: 'Daisha Howe',\r\n date: '25/04/2023',\r\n address:\r\n 'Daisha Howe, 829 Lavonne Valley Apt. 074 Stehrfort, RI 77914-0379',\r\n deliveryType: 'Free Shipping',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$39'\r\n },\r\n {\r\n id: 21,\r\n dropdownId: 'order-dropdown-21',\r\n orderId: '#2201',\r\n mailLink: 'mailto:haley@example.com',\r\n customer: 'Miles Haley',\r\n date: '24/04/2023',\r\n address: 'Miles Haley, 53150 Thad Squares Apt. 263 Archibaldfort, MO 00837',\r\n deliveryType: 'Flat Rate',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$55'\r\n },\r\n {\r\n id: 22,\r\n dropdownId: 'order-dropdown-22',\r\n orderId: '#2202',\r\n mailLink: 'mailto:watsica@example.com',\r\n customer: 'Brenda Watsica',\r\n date: '24/04/2023',\r\n address: \"Brenda Watsica, 9198 O'Kon Harbors Morarborough, IA 75409-7383\",\r\n deliveryType: 'Free Shipping',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$89'\r\n },\r\n {\r\n id: 23,\r\n dropdownId: 'order-dropdown-23',\r\n orderId: '#2203',\r\n mailLink: 'mailto:ellie@example.com',\r\n customer: \"Ellie O'Reilly\",\r\n date: '24/04/2023',\r\n address:\r\n \"Ellie O'Reilly, 1478 Kaitlin Haven Apt. 061 Lake Muhammadmouth, SC 35848\",\r\n deliveryType: 'Free Shipping',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$47'\r\n },\r\n {\r\n id: 24,\r\n dropdownId: 'order-dropdown-24',\r\n orderId: '#2204',\r\n mailLink: 'mailto:garry@example.com',\r\n customer: 'Garry Brainstrow',\r\n date: '23/04/2023',\r\n address: 'Garry Brainstrow, 13572 Kurt Mews South Merritt, IA 52491',\r\n deliveryType: 'Free Shipping',\r\n status: 'Completed',\r\n badge: { type: 'success', icon: 'fas fa-check' },\r\n amount: '$139'\r\n },\r\n {\r\n id: 25,\r\n dropdownId: 'order-dropdown-25',\r\n orderId: '#2205',\r\n mailLink: 'mailto:estell@example.com',\r\n customer: 'Estell Pollich',\r\n date: '23/04/2023',\r\n address: 'Estell Pollich, 13572 Kurt Mews South Merritt, IA 52491',\r\n deliveryType: 'Free Shipping',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$49'\r\n },\r\n {\r\n id: 26,\r\n dropdownId: 'order-dropdown-26',\r\n orderId: '#2206',\r\n mailLink: 'mailto:ara@example.com',\r\n customer: 'Ara Mueller',\r\n date: '23/04/2023',\r\n address: 'Ara Mueller, 91979 Kohler Place Waelchiborough, CT 41291',\r\n deliveryType: 'Flat Rate',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$19'\r\n },\r\n {\r\n id: 27,\r\n dropdownId: 'order-dropdown-27',\r\n orderId: '#2207',\r\n mailLink: 'mailto:blick@example.com',\r\n customer: 'Lucienne Blick',\r\n date: '23/04/2023',\r\n address:\r\n 'Lucienne Blick, 6757 Giuseppe Meadows Geraldinemouth, MO 48819-4970',\r\n deliveryType: 'Flat Rate',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$59'\r\n },\r\n {\r\n id: 28,\r\n dropdownId: 'order-dropdown-28',\r\n orderId: '#2208',\r\n mailLink: 'mailto:haag@example.com',\r\n customer: 'Laverne Haag',\r\n date: '22/04/2023',\r\n address: 'Laverne Haag, 2327 Kaylee Mill East Citlalli, AZ 89582-3143',\r\n deliveryType: 'Flat Rate',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$49'\r\n },\r\n {\r\n id: 29,\r\n dropdownId: 'order-dropdown-29',\r\n orderId: '#2209',\r\n mailLink: 'mailto:bednar@example.com',\r\n customer: 'Brandon Bednar',\r\n date: '22/04/2023',\r\n address:\r\n 'Brandon Bednar, 25156 Isaac Crossing Apt. 810 Lonborough, CO 83774-5999',\r\n deliveryType: 'Flat Rate',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$39'\r\n },\r\n {\r\n id: 30,\r\n dropdownId: 'order-dropdown-30',\r\n orderId: '#2210',\r\n mailLink: 'mailto:dimitri@example.com',\r\n customer: 'Dimitri Boehm',\r\n date: '23/04/2023',\r\n address: 'Dimitri Boehm, 71603 Wolff Plains Apt. 885 Johnstonton, MI 01581',\r\n deliveryType: 'Flat Rate',\r\n status: 'On Hold',\r\n badge: { type: 'secondary', icon: 'fas fa-ban' },\r\n amount: '$111'\r\n }\r\n];\r\n\r\nconst advanceAjaxTableInit = () => {\r\n const togglePaginationButtonDisable = (button, disabled) => {\r\n button.disabled = disabled;\r\n button.classList[disabled ? 'add' : 'remove']('disabled');\r\n };\r\n // Selectors\r\n const table = document.getElementById('advanceAjaxTable');\r\n\r\n if (table) {\r\n const options = {\r\n page: 10,\r\n pagination: {\r\n item: \"
${deliveryType}
\r\n\r\n ${\r\n window.dayjs(params[0].axisValue).isValid()\r\n ? window.dayjs(params[0].axisValue).format(dateFormatter)\r\n : params[0].axisValue\r\n }\r\n
\r\n ${tooltipItem}\r\n\r\n ${\r\n window.dayjs(params[0].axisValue).isValid()\r\n ? window.dayjs(params[0].axisValue).format('DD MMM, YYYY')\r\n : params[0].axisValue\r\n }\r\n
\r\n ${tooltipItem}\r\n${el.value}
`;\r\n iconCopiedToastInstance.show();\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default iconCopiedInit;\r\n","/*-----------------------------------------------\r\n| Isotope\r\n-----------------------------------------------*/\r\n\r\nconst isotopeInit = () => {\r\n const { getData } = window.phoenix.utils;\r\n const Selector = {\r\n ISOTOPE_ITEM: '.isotope-item',\r\n DATA_ISOTOPE: '[data-sl-isotope]',\r\n DATA_FILTER: '[data-filter]',\r\n DATA_FILER_NAV: '[data-filter-nav]'\r\n };\r\n\r\n const DATA_KEY = {\r\n ISOTOPE: 'sl-isotope'\r\n };\r\n const ClassName = {\r\n ACTIVE: 'active'\r\n };\r\n\r\n if (window.Isotope) {\r\n const masonryItems = document.querySelectorAll(Selector.DATA_ISOTOPE);\r\n masonryItems.length &&\r\n masonryItems.forEach(masonryItem => {\r\n window.imagesLoaded(masonryItem, () => {\r\n masonryItem.querySelectorAll(Selector.ISOTOPE_ITEM).forEach(item => {\r\n // eslint-disable-next-line\r\n item.style.visibility = 'visible';\r\n });\r\n\r\n const userOptions = getData(masonryItem, DATA_KEY.ISOTOPE);\r\n const defaultOptions = {\r\n itemSelector: Selector.ISOTOPE_ITEM,\r\n layoutMode: 'packery'\r\n };\r\n\r\n const options = window._.merge(defaultOptions, userOptions);\r\n const isotope = new window.Isotope(masonryItem, options);\r\n\r\n // --------- filter -----------------\r\n const filterElement = document.querySelector(Selector.DATA_FILER_NAV);\r\n filterElement?.addEventListener('click', function (e) {\r\n const item = e.target.dataset.filter;\r\n isotope.arrange({ filter: item });\r\n document.querySelectorAll(Selector.DATA_FILTER).forEach(el => {\r\n el.classList.remove(ClassName.ACTIVE);\r\n });\r\n e.target.classList.add(ClassName.ACTIVE);\r\n });\r\n // ---------- filter end ------------\r\n\r\n return isotope;\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport default isotopeInit;\r\n","/* eslint-disable no-unused-expressions */\r\n/* -------------------------------------------------------------------------- */\r\n/* Data Table */\r\n/* -------------------------------------------------------------------------- */\r\n/* eslint-disable no-param-reassign */\r\nconst togglePaginationButtonDisable = (button, disabled) => {\r\n button.disabled = disabled;\r\n button.classList[disabled ? 'add' : 'remove']('disabled');\r\n};\r\n\r\nconst listInit = () => {\r\n const { getData } = window.phoenix.utils;\r\n if (window.List) {\r\n const lists = document.querySelectorAll('[data-list]');\r\n\r\n if (lists.length) {\r\n lists.forEach(el => {\r\n const bulkSelect = el.querySelector('[data-bulk-select]');\r\n\r\n let options = getData(el, 'list');\r\n\r\n if (options.pagination) {\r\n options = {\r\n ...options,\r\n pagination: {\r\n item: ``,\r\n ...options.pagination\r\n }\r\n };\r\n }\r\n\r\n const paginationButtonNext = el.querySelector(\r\n '[data-list-pagination=\"next\"]'\r\n );\r\n const paginationButtonPrev = el.querySelector(\r\n '[data-list-pagination=\"prev\"]'\r\n );\r\n const viewAll = el.querySelector('[data-list-view=\"*\"]');\r\n const viewLess = el.querySelector('[data-list-view=\"less\"]');\r\n const listInfo = el.querySelector('[data-list-info]');\r\n const listFilter = el.querySelector('[data-list-filter]');\r\n const list = new List(el, options);\r\n\r\n // ---------------------------------------\r\n\r\n let totalItem = list.items.length;\r\n const itemsPerPage = list.page;\r\n const btnDropdownClose = list.listContainer.querySelector('.btn-close');\r\n let pageQuantity = Math.ceil(list.size() / list.page);\r\n let pageCount = 1;\r\n let numberOfcurrentItems =\r\n (pageCount - 1) * Number(list.page) + list.visibleItems.length;\r\n let isSearching = false;\r\n\r\n btnDropdownClose &&\r\n btnDropdownClose.addEventListener('search.close', () => {\r\n list.fuzzySearch('');\r\n });\r\n\r\n const updateListControls = () => {\r\n listInfo &&\r\n (listInfo.innerHTML = `Showing ${list.i} to ${numberOfcurrentItems} of ${totalItem} entries`);\r\n\r\n paginationButtonPrev &&\r\n togglePaginationButtonDisable(\r\n paginationButtonPrev,\r\n pageCount === 1 || pageCount === 0\r\n );\r\n paginationButtonNext &&\r\n togglePaginationButtonDisable(\r\n paginationButtonNext,\r\n pageCount === pageQuantity || pageCount === 0\r\n );\r\n\r\n if (pageCount > 1 && pageCount < pageQuantity) {\r\n togglePaginationButtonDisable(paginationButtonNext, false);\r\n togglePaginationButtonDisable(paginationButtonPrev, false);\r\n }\r\n };\r\n\r\n // List info\r\n updateListControls();\r\n\r\n if (paginationButtonNext) {\r\n paginationButtonNext.addEventListener('click', e => {\r\n e.preventDefault();\r\n pageCount += 1;\r\n const nextInitialIndex = list.i + itemsPerPage;\r\n nextInitialIndex <= list.size() &&\r\n list.show(nextInitialIndex, itemsPerPage);\r\n });\r\n }\r\n\r\n if (paginationButtonPrev) {\r\n paginationButtonPrev.addEventListener('click', e => {\r\n e.preventDefault();\r\n pageCount -= 1;\r\n const prevItem = list.i - itemsPerPage;\r\n prevItem > 0 && list.show(prevItem, itemsPerPage);\r\n });\r\n }\r\n\r\n const toggleViewBtn = () => {\r\n viewLess.classList.toggle('d-none');\r\n viewAll.classList.toggle('d-none');\r\n };\r\n\r\n if (viewAll) {\r\n viewAll.addEventListener('click', () => {\r\n list.show(1, totalItem);\r\n pageCount = 1;\r\n toggleViewBtn();\r\n });\r\n }\r\n if (viewLess) {\r\n viewLess.addEventListener('click', () => {\r\n list.show(1, itemsPerPage);\r\n pageCount = 1;\r\n toggleViewBtn();\r\n });\r\n }\r\n // numbering pagination\r\n if (options.pagination) {\r\n el.querySelector('.pagination').addEventListener('click', e => {\r\n if (e.target.classList[0] === 'page') {\r\n const pageNum = Number(e.target.getAttribute('data-i'));\r\n if (pageNum) {\r\n list.show(itemsPerPage * (pageNum - 1) + 1, list.page);\r\n pageCount = pageNum;\r\n }\r\n }\r\n });\r\n }\r\n // filter\r\n if (options.filter) {\r\n const { key } = options.filter;\r\n listFilter.addEventListener('change', e => {\r\n list.filter(item => {\r\n if (e.target.value === '') {\r\n return true;\r\n }\r\n pageQuantity = Math.ceil(list.matchingItems.length / list.page);\r\n pageCount = 1;\r\n updateListControls();\r\n return item\r\n .values()\r\n [key].toLowerCase()\r\n .includes(e.target.value.toLowerCase());\r\n });\r\n });\r\n }\r\n\r\n // bulk-select\r\n if (bulkSelect) {\r\n const bulkSelectInstance =\r\n window.phoenix.BulkSelect.getInstance(bulkSelect);\r\n bulkSelectInstance.attachRowNodes(\r\n list.items.map(item =>\r\n item.elm.querySelector('[data-bulk-select-row]')\r\n )\r\n );\r\n\r\n bulkSelect.addEventListener('change', () => {\r\n if (list) {\r\n if (bulkSelect.checked) {\r\n list.items.forEach(item => {\r\n item.elm.querySelector(\r\n '[data-bulk-select-row]'\r\n ).checked = true;\r\n });\r\n } else {\r\n list.items.forEach(item => {\r\n item.elm.querySelector(\r\n '[data-bulk-select-row]'\r\n ).checked = false;\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n list.on('searchStart', () => {\r\n isSearching = true;\r\n });\r\n list.on('searchComplete', () => {\r\n isSearching = false;\r\n });\r\n\r\n list.on('updated', item => {\r\n if (!list.matchingItems.length) {\r\n pageQuantity = Math.ceil(list.size() / list.page);\r\n } else {\r\n pageQuantity = Math.ceil(list.matchingItems.length / list.page);\r\n }\r\n numberOfcurrentItems =\r\n (pageCount - 1) * Number(list.page) + list.visibleItems.length;\r\n updateListControls();\r\n\r\n // -------search-----------\r\n if (isSearching) {\r\n if (list.matchingItems.length === 0) {\r\n pageCount = 0;\r\n } else {\r\n pageCount = 1;\r\n }\r\n totalItem = list.matchingItems.length;\r\n numberOfcurrentItems =\r\n (pageCount === 0 ? 1 : pageCount - 1) * Number(list.page) +\r\n list.visibleItems.length;\r\n\r\n updateListControls();\r\n listInfo &&\r\n (listInfo.innerHTML = `${\r\n list.matchingItems.length === 0 ? 0 : list.i\r\n } to ${\r\n list.matchingItems.length === 0 ? 0 : numberOfcurrentItems\r\n } Items of ${\r\n list.matchingItems.length\r\n }`);\r\n }\r\n\r\n // -------fallback-----------\r\n const fallback =\r\n el.querySelector('.fallback') ||\r\n document.getElementById(options.fallback);\r\n\r\n if (fallback) {\r\n if (item.matchingItems.length === 0) {\r\n fallback.classList.remove('d-none');\r\n } else {\r\n fallback.classList.add('d-none');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport default listInit;\r\n","const lottieInit = () => {\r\n const { getData } = window.phoenix.utils;\r\n const lotties = document.querySelectorAll('.lottie');\r\n if (lotties.length) {\r\n lotties.forEach(item => {\r\n const options = getData(item, 'options');\r\n window.bodymovin.loadAnimation({\r\n container: item,\r\n path: '../img/animated-icons/warning-light.json',\r\n renderer: 'svg',\r\n loop: true,\r\n autoplay: true,\r\n name: 'Hello World',\r\n ...options\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport default lottieInit;\r\n","/* ----------------------------------------------------------------- */\r\n/* Modal */\r\n/* ----------------------------------------------------------------- */\r\n\r\nconst modalInit = () => {\r\n const $modals = document.querySelectorAll('[data-phoenix-modal]');\r\n\r\n if ($modals) {\r\n const { getData, getCookie, setCookie } = window.phoenix.utils;\r\n $modals.forEach(modal => {\r\n const userOptions = getData(modal, 'phoenix-modal');\r\n const defaultOptions = {\r\n autoShow: false\r\n };\r\n const options = window._.merge(defaultOptions, userOptions);\r\n if (options.autoShow) {\r\n const autoShowModal = new window.bootstrap.Modal(modal);\r\n const disableModalBtn = modal.querySelector(\r\n '[data-disable-modal-auto-show]'\r\n );\r\n\r\n disableModalBtn.addEventListener('click', () => {\r\n const seconds = 24 * 60 * 60;\r\n setCookie('disableAutoShowModal', 'true', seconds);\r\n });\r\n\r\n const disableAutoShowModalCookie = getCookie('disableAutoShowModal');\r\n if (!disableAutoShowModalCookie) {\r\n autoShowModal.show();\r\n }\r\n } else {\r\n modal.addEventListener('shown.bs.modal', () => {\r\n const $autofocusEls = modal.querySelectorAll('[autofocus=autofocus]');\r\n $autofocusEls.forEach(el => {\r\n el.focus();\r\n });\r\n });\r\n }\r\n });\r\n }\r\n};\r\nexport default modalInit;\r\n","/* -------------------------------------------------------------------------- */\r\n/* Navbar Combo Layout */\r\n/* -------------------------------------------------------------------------- */\r\n\r\nconst navbarComboInit = () => {\r\n const { getBreakpoint, getData, addClass, hasClass, resize } =\r\n window.phoenix.utils;\r\n\r\n const Selector = {\r\n NAVBAR_VERTICAL: '.navbar-vertical',\r\n NAVBAR_TOP_COMBO: '[data-navbar-top=\"combo\"]',\r\n COLLAPSE: '.collapse',\r\n DATA_MOVE_CONTAINER: '[data-move-container]',\r\n NAVBAR_NAV: '.navbar-nav',\r\n NAVBAR_VERTICAL_DIVIDER: '.navbar-vertical-divider'\r\n };\r\n\r\n const ClassName = {\r\n FLEX_COLUMN: 'flex-column'\r\n };\r\n\r\n const navbarVertical = document.querySelector(Selector.NAVBAR_VERTICAL);\r\n const navbarTopCombo = document.querySelector(Selector.NAVBAR_TOP_COMBO);\r\n\r\n const moveNavContent = windowWidth => {\r\n const navbarVerticalBreakpoint = getBreakpoint(navbarVertical);\r\n const navbarTopBreakpoint = getBreakpoint(navbarTopCombo);\r\n\r\n if (windowWidth < navbarTopBreakpoint) {\r\n const navbarCollapse = navbarTopCombo.querySelector(Selector.COLLAPSE);\r\n const navbarTopContent = navbarCollapse.innerHTML;\r\n\r\n if (navbarTopContent) {\r\n const targetID = getData(navbarTopCombo, 'move-target');\r\n const targetElement = document.querySelector(targetID);\r\n\r\n navbarCollapse.innerHTML = '';\r\n targetElement.insertAdjacentHTML(\r\n 'afterend',\r\n `\r\n ${street}, ${location}
\r\n `;\r\n const popup = L.popup({ minWidth: 180 }).setContent(popupContent);\r\n marker.bindPopup(popup);\r\n mcg.addLayer(marker);\r\n return true;\r\n });\r\n map.addLayer(mcg);\r\n\r\n const themeController = document.body;\r\n themeController.addEventListener(\r\n 'clickControl',\r\n ({ detail: { control, value } }) => {\r\n if (control === 'phoenixTheme') {\r\n tiles.updateFilter(\r\n value === 'dark'\r\n ? [\r\n 'invert:98%',\r\n 'grayscale:69%',\r\n 'bright:89%',\r\n 'contrast:111%',\r\n 'hue:205deg',\r\n 'saturate:1000%'\r\n ]\r\n : ['bright:101%', 'contrast:101%', 'hue:23deg', 'saturate:225%']\r\n );\r\n }\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport default leafletInit;\r\n","import { getColor } from '../utils';\r\n\r\n/* -------------------------------------------------------------------------- */\r\n/* mapbox cluster */\r\n/* -------------------------------------------------------------------------- */\r\n\r\nconst mapboxClusterInit = () => {\r\n const mapboxCluster = document.querySelectorAll('#mapbox-cluster');\r\n if (mapboxCluster) {\r\n mapboxCluster.forEach(() => {\r\n window.mapboxgl.accessToken =\r\n 'pk.eyJ1IjoidGhlbWV3YWdvbiIsImEiOiJjbGhmNW5ybzkxcmoxM2RvN2RmbW1nZW90In0.hGIvQ890TYkZ948MVrsMIQ';\r\n\r\n const styles = {\r\n default: 'mapbox://styles/mapbox/light-v11',\r\n light: 'mapbox://styles/themewagon/clj57pads001701qo25756jtw',\r\n dark: 'mapbox://styles/themewagon/cljzg9juf007x01pk1bepfgew'\r\n };\r\n\r\n const map = new window.mapboxgl.Map({\r\n container: 'mapbox-cluster',\r\n style: styles[window.config.config.phoenixTheme],\r\n center: [-73.102712, 7.102257],\r\n zoom: 3.5,\r\n pitch: 40,\r\n attributionControl: false\r\n });\r\n\r\n map.on('load', () => {\r\n map.addSource('earthquakes', {\r\n type: 'geojson',\r\n data: 'https://docs.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson',\r\n cluster: true,\r\n clusterMaxZoom: 14,\r\n clusterRadius: 50\r\n });\r\n\r\n map.addLayer({\r\n id: 'clusters',\r\n type: 'circle',\r\n source: 'earthquakes',\r\n filter: ['has', 'point_count'],\r\n paint: {\r\n 'circle-color': [\r\n 'step',\r\n ['get', 'point_count'],\r\n getColor('secondary'),\r\n 100,\r\n getColor('info'),\r\n 750,\r\n getColor('warning')\r\n ],\r\n 'circle-radius': [\r\n 'step',\r\n ['get', 'point_count'],\r\n 20,\r\n 100,\r\n 30,\r\n 750,\r\n 40\r\n ]\r\n }\r\n });\r\n\r\n map.addLayer({\r\n id: 'cluster-count',\r\n type: 'symbol',\r\n source: 'earthquakes',\r\n filter: ['has', 'point_count'],\r\n layout: {\r\n 'text-field': ['get', 'point_count_abbreviated'],\r\n 'text-font': ['DIN Offc Pro Medium', 'Arial Unicode MS Bold'],\r\n 'text-size': 12\r\n },\r\n paint: {\r\n 'text-color': getColor('white')\r\n }\r\n });\r\n\r\n map.addLayer({\r\n id: 'unclustered-point',\r\n type: 'circle',\r\n source: 'earthquakes',\r\n filter: ['!', ['has', 'point_count']],\r\n paint: {\r\n 'circle-color': getColor('primary-light'),\r\n 'circle-radius': 4,\r\n 'circle-stroke-width': 1,\r\n 'circle-stroke-color': getColor('emphasis-bg')\r\n }\r\n });\r\n\r\n map.on('click', 'clusters', e => {\r\n const features = map.queryRenderedFeatures(e.point, {\r\n layers: ['clusters']\r\n });\r\n const clusterId = features[0].properties.cluster_id;\r\n map\r\n .getSource('earthquakes')\r\n .getClusterExpansionZoom(clusterId, (err, zoom) => {\r\n if (err) return;\r\n\r\n map.easeTo({\r\n center: features[0].geometry.coordinates,\r\n zoom\r\n });\r\n });\r\n });\r\n\r\n map.on('click', 'unclustered-point', e => {\r\n const coordinates = e.features[0].geometry.coordinates.slice();\r\n const { mag } = e.features[0].properties;\r\n const tsunami = e.features[0].properties.tsunami === 1 ? 'yes' : 'no';\r\n\r\n while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {\r\n coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;\r\n }\r\n\r\n new window.mapboxgl.Popup()\r\n .setLngLat(coordinates)\r\n .setHTML(`magnitude: ${mag}