{"version":3,"file":"6263.8772fd2cb0ab4fd085a8.js","mappings":"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","sources":["webpack://grafana/./node_modules/clsx/dist/clsx.js","webpack://grafana/./public/app/features/dashboard/components/DashboardLoading/DashboardFailed.tsx","webpack://grafana/./public/app/features/dashboard/components/DashboardLoading/DashboardLoading.tsx","webpack://grafana/./public/app/features/dashboard/components/AddLibraryPanelWidget/AddLibraryPanelWidget.tsx","webpack://grafana/./public/app/features/dashboard/components/RowOptions/RowOptionsForm.tsx","webpack://grafana/./public/app/features/dashboard/components/RowOptions/RowOptionsModal.tsx","webpack://grafana/./public/app/features/dashboard/components/RowOptions/RowOptionsButton.tsx","webpack://grafana/./public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx","webpack://grafana/./public/app/features/dashboard/dashgrid/DashboardGrid.tsx","webpack://grafana/./node_modules/react-grid-layout/build/GridItem.js","webpack://grafana/./node_modules/react-grid-layout/build/ReactGridLayout.js","webpack://grafana/./node_modules/react-grid-layout/build/ReactGridLayoutPropTypes.js","webpack://grafana/./node_modules/react-grid-layout/build/ResponsiveReactGridLayout.js","webpack://grafana/./node_modules/react-grid-layout/build/calculateUtils.js","webpack://grafana/./node_modules/react-grid-layout/build/components/WidthProvider.js","webpack://grafana/./node_modules/react-grid-layout/build/fastRGLPropsEqual.js","webpack://grafana/./node_modules/react-grid-layout/build/responsiveUtils.js","webpack://grafana/./node_modules/react-grid-layout/build/utils.js","webpack://grafana/./node_modules/react-grid-layout/index.js","webpack://grafana/./node_modules/react-grid-layout/node_modules/fast-equals/dist/fast-equals.js"],"sourcesContent":["function e(r){var o,t,f=\"\";if(\"string\"==typeof r||\"number\"==typeof r)f+=r;else if(\"object\"==typeof r)if(Array.isArray(r))for(o=0;o {\n if (!initError) {\n return null;\n }\n\n return (\n
\n \n {getMessageFromError(initError.error)}\n \n
\n );\n};\n\nexport const styles = {\n dashboardLoading: css`\n height: 60vh;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n};\n","import { css, keyframes } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { locationService } from '@grafana/runtime';\nimport { Button, HorizontalGroup, Spinner, useStyles2, VerticalGroup } from '@grafana/ui';\nimport { DashboardInitPhase } from 'app/types';\n\nexport interface Props {\n initPhase: DashboardInitPhase;\n}\n\nexport const DashboardLoading = ({ initPhase }: Props) => {\n const styles = useStyles2(getStyles);\n const cancelVariables = () => {\n locationService.push('/');\n };\n\n return (\n
\n
\n \n \n {initPhase}\n {' '}\n \n \n \n \n
\n
\n );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => {\n // Amount of time we want to pass before we start showing loading spinner\n const slowStartThreshold = '0.5s';\n\n const invisibleToVisible = keyframes`\n 0% { opacity: 0%; }\n 100% { opacity: 100%; }\n `;\n\n return {\n dashboardLoading: css`\n height: 60vh;\n display: flex;\n opacity: 0%;\n align-items: center;\n justify-content: center;\n animation: ${invisibleToVisible} 0s step-end ${slowStartThreshold} 1 normal forwards;\n `,\n dashboardLoadingText: css`\n font-size: ${theme.typography.h4.fontSize};\n `,\n };\n};\n","import { css, cx, keyframes } from '@emotion/css';\nimport React from 'react';\nimport tinycolor from 'tinycolor2';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LibraryPanel } from '@grafana/schema';\nimport { IconButton, useStyles2 } from '@grafana/ui';\nimport { Trans } from 'app/core/internationalization';\n\nimport {\n LibraryPanelsSearch,\n LibraryPanelsSearchVariant,\n} from '../../../library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch';\nimport { DashboardModel, PanelModel } from '../../state';\n\ninterface Props {\n panel: PanelModel;\n dashboard: DashboardModel;\n}\n\nexport const AddLibraryPanelWidget = ({ panel, dashboard }: Props) => {\n const onCancelAddPanel = (evt: React.MouseEvent) => {\n evt.preventDefault();\n dashboard.removePanel(panel);\n };\n\n const onAddLibraryPanel = (panelInfo: LibraryPanel) => {\n const { gridPos } = panel;\n\n const newPanel = {\n ...panelInfo.model,\n gridPos,\n libraryPanel: panelInfo,\n };\n\n dashboard.addPanel(newPanel);\n dashboard.removePanel(panel);\n };\n\n const styles = useStyles2(getStyles);\n\n return (\n
\n
\n
\n \n Add panel from panel library\n \n
\n \n
\n \n
\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n const pulsate = keyframes({\n '0%': {\n boxShadow: `0 0 0 2px ${theme.colors.background.canvas}, 0 0 0px 4px ${theme.colors.primary.main}`,\n },\n '50%': {\n boxShadow: `0 0 0 2px ${theme.components.dashboard.background}, 0 0 0px 4px ${tinycolor(theme.colors.primary.main)\n .darken(20)\n .toHexString()}`,\n },\n '100%': {\n boxShadow: `0 0 0 2px ${theme.components.dashboard.background}, 0 0 0px 4px ${theme.colors.primary.main}`,\n },\n });\n\n return {\n // wrapper is used to make sure box-shadow animation isn't cut off in dashboard page\n wrapper: css({\n height: '100%',\n paddingTop: `${theme.spacing(0.5)}`,\n }),\n headerRow: css({\n display: 'flex',\n alignItems: 'center',\n height: '38px',\n flexShrink: 0,\n width: '100%',\n fontSize: theme.typography.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n paddingLeft: `${theme.spacing(1)}`,\n transition: 'background-color 0.1s ease-in-out',\n cursor: 'move',\n\n '&:hover': {\n background: `${theme.colors.background.secondary}`,\n },\n }),\n callToAction: css({\n overflow: 'hidden',\n outline: '2px dotted transparent',\n outlineOffset: '2px',\n boxShadow: '0 0 0 2px black, 0 0 0px 4px #1f60c4',\n animation: `${pulsate} 2s ease infinite`,\n }),\n };\n};\n","import React, { useCallback, useState } from 'react';\n\nimport { selectors } from '@grafana/e2e-selectors';\nimport { Button, Field, Form, Modal, Input, Alert } from '@grafana/ui';\n\nimport { RepeatRowSelect } from '../RepeatRowSelect/RepeatRowSelect';\n\nexport type OnRowOptionsUpdate = (title: string, repeat?: string | null) => void;\n\nexport interface Props {\n title: string;\n repeat?: string;\n onUpdate: OnRowOptionsUpdate;\n onCancel: () => void;\n warning?: React.ReactNode;\n}\n\nexport const RowOptionsForm = ({ repeat, title, warning, onUpdate, onCancel }: Props) => {\n const [newRepeat, setNewRepeat] = useState(repeat);\n const onChangeRepeat = useCallback((name?: string) => setNewRepeat(name), [setNewRepeat]);\n\n return (\n {\n onUpdate(formData.title, newRepeat);\n }}\n >\n {({ register }) => (\n <>\n \n \n \n \n \n \n {warning && (\n \n {warning}\n \n )}\n \n \n \n \n \n )}\n \n );\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { Modal, useStyles2 } from '@grafana/ui';\n\nimport { OnRowOptionsUpdate, RowOptionsForm } from './RowOptionsForm';\n\nexport interface RowOptionsModalProps {\n title: string;\n repeat?: string;\n warning?: React.ReactNode;\n onDismiss: () => void;\n onUpdate: OnRowOptionsUpdate;\n}\n\nexport const RowOptionsModal = ({ repeat, title, onDismiss, onUpdate, warning }: RowOptionsModalProps) => {\n const styles = useStyles2(getStyles);\n\n return (\n \n \n \n );\n};\n\nconst getStyles = () => ({\n modal: css`\n label: RowOptionsModal;\n width: 500px;\n `,\n});\n","import React from 'react';\n\nimport { Icon, ModalsController } from '@grafana/ui';\n\nimport { OnRowOptionsUpdate } from './RowOptionsForm';\nimport { RowOptionsModal } from './RowOptionsModal';\n\nexport interface RowOptionsButtonProps {\n title: string;\n repeat?: string;\n onUpdate: OnRowOptionsUpdate;\n warning?: React.ReactNode;\n}\n\nexport const RowOptionsButton = ({ repeat, title, onUpdate, warning }: RowOptionsButtonProps) => {\n const onUpdateChange = (hideModal: () => void) => (title: string, repeat?: string | null) => {\n onUpdate(title, repeat);\n hideModal();\n };\n\n return (\n \n {({ showModal, hideModal }) => {\n return (\n {\n showModal(RowOptionsModal, {\n title,\n repeat,\n onDismiss: hideModal,\n onUpdate: onUpdateChange(hideModal),\n warning,\n });\n }}\n >\n \n \n );\n }}\n \n );\n};\n\nRowOptionsButton.displayName = 'RowOptionsButton';\n","import classNames from 'classnames';\nimport { indexOf } from 'lodash';\nimport React from 'react';\nimport { Unsubscribable } from 'rxjs';\n\nimport { selectors } from '@grafana/e2e-selectors';\nimport { getTemplateSrv, RefreshEvent } from '@grafana/runtime';\nimport { Icon, TextLink } from '@grafana/ui';\nimport appEvents from 'app/core/app_events';\nimport { SHARED_DASHBOARD_QUERY } from 'app/plugins/datasource/dashboard/types';\n\nimport { ShowConfirmModalEvent } from '../../../../types/events';\nimport { DashboardModel } from '../../state/DashboardModel';\nimport { PanelModel } from '../../state/PanelModel';\nimport { RowOptionsButton } from '../RowOptions/RowOptionsButton';\n\nexport interface DashboardRowProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n}\n\nexport class DashboardRow extends React.Component {\n sub?: Unsubscribable;\n\n componentDidMount() {\n this.sub = this.props.dashboard.events.subscribe(RefreshEvent, this.onVariableUpdated);\n }\n\n componentWillUnmount() {\n if (this.sub) {\n this.sub.unsubscribe();\n }\n }\n\n onVariableUpdated = () => {\n this.forceUpdate();\n };\n\n onToggle = () => {\n this.props.dashboard.toggleRow(this.props.panel);\n };\n\n getWarning = () => {\n const panels = !!this.props.panel.panels?.length\n ? this.props.panel.panels\n : this.props.dashboard.getRowPanels(indexOf(this.props.dashboard.panels, this.props.panel));\n const isAnyPanelUsingDashboardDS = panels.some((p) => p.datasource?.uid === SHARED_DASHBOARD_QUERY);\n if (isAnyPanelUsingDashboardDS) {\n return (\n
\n

\n Panels in this row use the {SHARED_DASHBOARD_QUERY} data source. These panels will reference the panel in\n the original row, not the ones in the repeated rows.\n

\n \n Learn more\n \n
\n );\n }\n\n return undefined;\n };\n\n onUpdate = (title: string, repeat?: string | null) => {\n this.props.panel.setProperty('title', title);\n this.props.panel.setProperty('repeat', repeat ?? undefined);\n this.props.panel.render();\n this.props.dashboard.processRepeats();\n this.forceUpdate();\n };\n\n onDelete = () => {\n appEvents.publish(\n new ShowConfirmModalEvent({\n title: 'Delete row',\n text: 'Are you sure you want to remove this row and all its panels?',\n altActionText: 'Delete row only',\n icon: 'trash-alt',\n onConfirm: () => {\n this.props.dashboard.removeRow(this.props.panel, true);\n },\n onAltAction: () => {\n this.props.dashboard.removeRow(this.props.panel, false);\n },\n })\n );\n };\n\n render() {\n const classes = classNames({\n 'dashboard-row': true,\n 'dashboard-row--collapsed': this.props.panel.collapsed,\n });\n\n const title = getTemplateSrv().replace(this.props.panel.title, this.props.panel.scopedVars, 'text');\n const count = this.props.panel.panels ? this.props.panel.panels.length : 0;\n const panels = count === 1 ? 'panel' : 'panels';\n const canEdit = this.props.dashboard.meta.canEdit === true;\n\n return (\n
\n \n \n {title}\n \n ({count} {panels})\n \n \n {canEdit && (\n
\n \n \n
\n )}\n {this.props.panel.collapsed === true && (\n /* disabling the a11y rules here as the button handles keyboard interactions */\n /* this is just to provide a better experience for mouse users */\n /* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n
\n  \n
\n )}\n {canEdit &&
}\n
\n );\n }\n}\n","import classNames from 'classnames';\nimport React, { PureComponent, CSSProperties, useRef, useCallback, useReducer, useMemo } from 'react';\nimport ReactGridLayout, { ItemCallback } from 'react-grid-layout';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { Subscription } from 'rxjs';\n\nimport { zIndex } from '@grafana/data/src/themes/zIndex';\nimport { config } from '@grafana/runtime';\nimport { LayoutItemContext } from '@grafana/ui';\nimport appEvents from 'app/core/app_events';\nimport { GRID_CELL_HEIGHT, GRID_CELL_VMARGIN, GRID_COLUMN_COUNT } from 'app/core/constants';\nimport { contextSrv } from 'app/core/services/context_srv';\nimport { VariablesChanged } from 'app/features/variables/types';\nimport { DashboardPanelsChangedEvent } from 'app/types/events';\n\nimport { AddLibraryPanelWidget } from '../components/AddLibraryPanelWidget';\nimport { DashboardRow } from '../components/DashboardRow';\nimport { DashboardModel, PanelModel } from '../state';\nimport { GridPos } from '../state/PanelModel';\n\nimport DashboardEmpty from './DashboardEmpty';\nimport { DashboardPanel } from './DashboardPanel';\n\nexport const PANEL_FILTER_VARIABLE = 'systemPanelFilterVar';\n\nexport interface Props {\n dashboard: DashboardModel;\n isEditable: boolean;\n editPanel: PanelModel | null;\n viewPanel: PanelModel | null;\n hidePanelMenus?: boolean;\n}\n\ninterface State {\n panelFilter?: RegExp;\n}\n\nexport class DashboardGrid extends PureComponent {\n private panelMap: { [key: string]: PanelModel } = {};\n private eventSubs = new Subscription();\n private windowHeight = 1200;\n private windowWidth = 1920;\n private gridWidth = 0;\n /** Used to keep track of mobile panel layout position */\n private lastPanelBottom = 0;\n private isLayoutInitialized = false;\n\n constructor(props: Props) {\n super(props);\n this.state = {\n panelFilter: undefined,\n };\n }\n\n componentDidMount() {\n const { dashboard } = this.props;\n\n if (config.featureToggles.panelFilterVariable) {\n // If panel filter variable is set on load then\n // update state to filter panels\n for (const variable of dashboard.getVariables()) {\n if (variable.id === PANEL_FILTER_VARIABLE) {\n if ('query' in variable) {\n this.setPanelFilter(variable.query);\n }\n break;\n }\n }\n\n this.eventSubs.add(\n appEvents.subscribe(VariablesChanged, (e) => {\n if (e.payload.variable?.id === PANEL_FILTER_VARIABLE) {\n if ('current' in e.payload.variable) {\n let variable = e.payload.variable.current;\n if ('value' in variable && typeof variable.value === 'string') {\n this.setPanelFilter(variable.value);\n }\n }\n }\n })\n );\n }\n\n this.eventSubs.add(dashboard.events.subscribe(DashboardPanelsChangedEvent, this.triggerForceUpdate));\n }\n\n componentWillUnmount() {\n this.eventSubs.unsubscribe();\n }\n\n setPanelFilter(regex: string) {\n // Only set the panels filter if the systemPanelFilterVar variable\n // is a non-empty string\n let panelFilter = undefined;\n if (regex.length > 0) {\n panelFilter = new RegExp(regex, 'i');\n }\n\n this.setState({\n panelFilter: panelFilter,\n });\n }\n\n buildLayout() {\n const layout: ReactGridLayout.Layout[] = [];\n this.panelMap = {};\n const { panelFilter } = this.state;\n\n let count = 0;\n for (const panel of this.props.dashboard.panels) {\n if (!panel.key) {\n panel.key = `panel-${panel.id}-${Date.now()}`;\n }\n this.panelMap[panel.key] = panel;\n\n if (!panel.gridPos) {\n console.log('panel without gridpos');\n continue;\n }\n\n const panelPos: ReactGridLayout.Layout = {\n i: panel.key,\n x: panel.gridPos.x,\n y: panel.gridPos.y,\n w: panel.gridPos.w,\n h: panel.gridPos.h,\n };\n\n if (panel.type === 'row') {\n panelPos.w = GRID_COLUMN_COUNT;\n panelPos.h = 1;\n panelPos.isResizable = false;\n panelPos.isDraggable = panel.collapsed;\n }\n\n if (!panelFilter) {\n layout.push(panelPos);\n } else {\n if (panelFilter.test(panel.title)) {\n panelPos.isResizable = false;\n panelPos.isDraggable = false;\n panelPos.x = (count % 2) * GRID_COLUMN_COUNT;\n panelPos.y = Math.floor(count / 2);\n layout.push(panelPos);\n count++;\n }\n }\n }\n\n return layout;\n }\n\n onLayoutChange = (newLayout: ReactGridLayout.Layout[]) => {\n if (this.state.panelFilter) {\n return;\n }\n for (const newPos of newLayout) {\n this.panelMap[newPos.i!].updateGridPos(newPos, this.isLayoutInitialized);\n }\n\n if (this.isLayoutInitialized) {\n this.isLayoutInitialized = true;\n }\n\n this.props.dashboard.sortPanelsByGridPos();\n this.forceUpdate();\n };\n\n triggerForceUpdate = () => {\n this.forceUpdate();\n };\n\n updateGridPos = (item: ReactGridLayout.Layout, layout: ReactGridLayout.Layout[]) => {\n this.panelMap[item.i!].updateGridPos(item);\n };\n\n onResize: ItemCallback = (layout, oldItem, newItem) => {\n const panel = this.panelMap[newItem.i!];\n panel.updateGridPos(newItem);\n };\n\n onResizeStop: ItemCallback = (layout, oldItem, newItem) => {\n this.updateGridPos(newItem, layout);\n };\n\n onDragStop: ItemCallback = (layout, oldItem, newItem) => {\n this.updateGridPos(newItem, layout);\n };\n\n getPanelScreenPos(panel: PanelModel, gridWidth: number): { top: number; bottom: number } {\n let top = 0;\n\n // mobile layout\n if (gridWidth < config.theme2.breakpoints.values.md) {\n // In mobile layout panels are stacked so we just add the panel vertical margin to the last panel bottom position\n top = this.lastPanelBottom + GRID_CELL_VMARGIN;\n } else {\n // For top position we need to add back the vertical margin removed by translateGridHeightToScreenHeight\n top = translateGridHeightToScreenHeight(panel.gridPos.y) + GRID_CELL_VMARGIN;\n }\n\n this.lastPanelBottom = top + translateGridHeightToScreenHeight(panel.gridPos.h);\n\n return { top, bottom: this.lastPanelBottom };\n }\n\n renderPanels(gridWidth: number, isDashboardDraggable: boolean) {\n const { panelFilter } = this.state;\n const panelElements = [];\n\n // Reset last panel bottom\n this.lastPanelBottom = 0;\n\n // This is to avoid layout re-flows, accessing window.innerHeight can trigger re-flow\n // We assume here that if width change height might have changed as well\n if (this.gridWidth !== gridWidth) {\n this.windowHeight = window.innerHeight ?? 1000;\n this.windowWidth = window.innerWidth;\n this.gridWidth = gridWidth;\n }\n\n for (const panel of this.props.dashboard.panels) {\n const panelClasses = classNames({ 'react-grid-item--fullscreen': panel.isViewing });\n\n // used to allow overflowing content to show on top of the next panel\n // requires parent create stacking context to prevent overlap with parent elements\n const descIndex = this.props.dashboard.panels.length - panelElements.length;\n\n const p = (\n \n {(width: number, height: number) => {\n return this.renderPanel(panel, width, height, isDashboardDraggable);\n }}\n \n );\n\n if (!panelFilter) {\n panelElements.push(p);\n } else {\n if (panelFilter.test(panel.title)) {\n panelElements.push(p);\n }\n }\n }\n\n return panelElements;\n }\n\n renderPanel(panel: PanelModel, width: number, height: number, isDraggable: boolean) {\n if (panel.type === 'row') {\n return ;\n }\n\n if (panel.type === 'add-library-panel') {\n return ;\n }\n\n return (\n \n );\n }\n\n /**\n * Without this hack the move animations are triggered on initial load and all panels fly into position.\n * This can be quite distracting and make the dashboard appear to less snappy.\n */\n onGetWrapperDivRef = (ref: HTMLDivElement | null) => {\n if (ref && contextSrv.user.authenticatedBy !== 'render') {\n setTimeout(() => {\n ref.classList.add('react-grid-layout--enable-move-animations');\n }, 50);\n }\n };\n\n render() {\n const { isEditable, dashboard } = this.props;\n\n if (dashboard.panels.length === 0) {\n return ;\n }\n\n /**\n * We have a parent with \"flex: 1 1 0\" we need to reset it to \"flex: 1 1 auto\" to have the AutoSizer\n * properly working. For more information go here:\n * https://github.com/bvaughn/react-virtualized/blob/master/docs/usingAutoSizer.md#can-i-use-autosizer-within-a-flex-container\n *\n * pos: rel + z-index is required to create a new stacking context to contain the escalating z-indexes of the panels\n */\n return (\n \n \n {({ width }) => {\n if (width === 0) {\n return null;\n }\n\n // Disable draggable if mobile device, solving an issue with unintentionally\n // moving panels. https://github.com/grafana/grafana/issues/18497\n const draggable = width <= config.theme2.breakpoints.values.md ? false : isEditable;\n\n return (\n /**\n * The children is using a width of 100% so we need to guarantee that it is wrapped\n * in an element that has the calculated size given by the AutoSizer. The AutoSizer\n * has a width of 0 and will let its content overflow its div.\n */\n
\n \n {this.renderPanels(width, draggable)}\n \n
\n );\n }}\n
\n
\n );\n }\n}\n\ninterface GrafanaGridItemProps extends React.HTMLAttributes {\n gridWidth?: number;\n gridPos?: GridPos;\n descendingOrderIndex?: number;\n isViewing: boolean;\n windowHeight: number;\n windowWidth: number;\n children: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n}\n\n/**\n * A hacky way to intercept the react-layout-grid item dimensions and pass them to DashboardPanel\n */\nconst GrafanaGridItem = React.forwardRef((props, ref) => {\n const theme = config.theme2;\n let width = 100;\n let height = 100;\n\n const boostedCount = useRef(0);\n const [_, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const boostZIndex = useCallback(() => {\n boostedCount.current += 1;\n forceUpdate();\n\n return () => {\n boostedCount.current -= 1;\n forceUpdate();\n };\n }, [forceUpdate]);\n\n const ctxValue = useMemo(() => ({ boostZIndex }), [boostZIndex]);\n\n const { gridWidth, gridPos, isViewing, windowHeight, windowWidth, descendingOrderIndex, ...divProps } = props;\n const style: CSSProperties = props.style ?? {};\n\n if (isViewing) {\n // In fullscreen view mode a single panel take up full width & 85% height\n width = gridWidth!;\n height = windowHeight * 0.85;\n style.height = height;\n style.width = '100%';\n } else if (windowWidth < theme.breakpoints.values.md) {\n // Mobile layout is a bit different, every panel take up full width\n width = props.gridWidth!;\n height = translateGridHeightToScreenHeight(gridPos!.h);\n style.height = height;\n style.width = '100%';\n } else {\n // Normal grid layout. The grid framework passes width and height directly to children as style props.\n if (props.style) {\n const { width: styleWidth, height: styleHeight } = props.style;\n if (styleWidth != null) {\n width = typeof styleWidth === 'number' ? styleWidth : parseFloat(styleWidth);\n }\n if (styleHeight != null) {\n height = typeof styleHeight === 'number' ? styleHeight : parseFloat(styleHeight);\n }\n }\n }\n\n // props.children[0] is our main children. RGL adds the drag handle at props.children[1]\n return (\n \n \n {/* Pass width and height to children as render props */}\n {[props.children[0](width, height), props.children.slice(1)]}\n
\n \n );\n});\n\n/**\n * This translates grid height dimensions to real pixels\n */\nfunction translateGridHeightToScreenHeight(gridHeight: number): number {\n return gridHeight * (GRID_CELL_HEIGHT + GRID_CELL_VMARGIN) - GRID_CELL_VMARGIN;\n}\n\nGrafanaGridItem.displayName = 'GridItemWithDimensions';\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDraggable = require(\"react-draggable\");\nvar _reactResizable = require(\"react-resizable\");\nvar _utils = require(\"./utils\");\nvar _calculateUtils = require(\"./calculateUtils\");\nvar _ReactGridLayoutPropTypes = require(\"./ReactGridLayoutPropTypes\");\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type { Element as ReactElement, Node as ReactNode } from \"react\";*/\n/*:: import type {\n ReactDraggableCallbackData,\n GridDragEvent,\n GridResizeEvent,\n DroppingPosition,\n Position,\n ResizeHandleAxis\n} from \"./utils\";*/\n/*:: import type { PositionParams } from \"./calculateUtils\";*/\n/*:: import type { ResizeHandle, ReactRef } from \"./ReactGridLayoutPropTypes\";*/\n/*:: type PartialPosition = { top: number, left: number };*/\n/*:: type GridItemCallback = (\n i: string,\n w: number,\n h: number,\n Data\n) => void;*/\n/*:: type ResizeCallbackData = {\n node: HTMLElement,\n size: Position,\n handle: ResizeHandleAxis\n};*/\n/*:: type GridItemResizeCallback = (\n e: Event,\n data: ResizeCallbackData,\n position: Position\n) => void;*/\n/*:: type State = {\n resizing: ?{ top: number, left: number, width: number, height: number },\n dragging: ?{ top: number, left: number },\n className: string\n};*/\n/*:: type Props = {\n children: ReactElement,\n cols: number,\n containerWidth: number,\n margin: [number, number],\n containerPadding: [number, number],\n rowHeight: number,\n maxRows: number,\n isDraggable: boolean,\n isResizable: boolean,\n isBounded: boolean,\n static?: boolean,\n useCSSTransforms?: boolean,\n usePercentages?: boolean,\n transformScale: number,\n droppingPosition?: DroppingPosition,\n\n className: string,\n style?: Object,\n // Draggability\n cancel: string,\n handle: string,\n\n x: number,\n y: number,\n w: number,\n h: number,\n\n minW: number,\n maxW: number,\n minH: number,\n maxH: number,\n i: string,\n\n resizeHandles?: ResizeHandleAxis[],\n resizeHandle?: ResizeHandle,\n\n onDrag?: GridItemCallback,\n onDragStart?: GridItemCallback,\n onDragStop?: GridItemCallback,\n onResize?: GridItemCallback,\n onResizeStart?: GridItemCallback,\n onResizeStop?: GridItemCallback\n};*/\n/*:: type DefaultProps = {\n className: string,\n cancel: string,\n handle: string,\n minH: number,\n minW: number,\n maxH: number,\n maxW: number,\n transformScale: number\n};*/\n/**\n * An individual item within a ReactGridLayout.\n */\nclass GridItem extends _react.default.Component /*:: */{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"state\", {\n resizing: null,\n dragging: null,\n className: \"\"\n });\n _defineProperty(this, \"elementRef\", /*#__PURE__*/_react.default.createRef());\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n _defineProperty(this, \"onDragStart\", (e, _ref) => {\n let {\n node\n } = _ref;\n const {\n onDragStart,\n transformScale\n } = this.props;\n if (!onDragStart) return;\n const newPosition /*: PartialPosition*/ = {\n top: 0,\n left: 0\n };\n\n // TODO: this wont work on nested parents\n const {\n offsetParent\n } = node;\n if (!offsetParent) return;\n const parentRect = offsetParent.getBoundingClientRect();\n const clientRect = node.getBoundingClientRect();\n const cLeft = clientRect.left / transformScale;\n const pLeft = parentRect.left / transformScale;\n const cTop = clientRect.top / transformScale;\n const pTop = parentRect.top / transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n this.setState({\n dragging: newPosition\n });\n\n // Call callback with this data\n const {\n x,\n y\n } = (0, _calculateUtils.calcXY)(this.getPositionParams(), newPosition.top, newPosition.left, this.props.w, this.props.h);\n return onDragStart.call(this, this.props.i, x, y, {\n e,\n node,\n newPosition\n });\n });\n /**\n * onDrag event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n _defineProperty(this, \"onDrag\", (e, _ref2) => {\n let {\n node,\n deltaX,\n deltaY\n } = _ref2;\n const {\n onDrag\n } = this.props;\n if (!onDrag) return;\n if (!this.state.dragging) {\n throw new Error(\"onDrag called before onDragStart.\");\n }\n let top = this.state.dragging.top + deltaY;\n let left = this.state.dragging.left + deltaX;\n const {\n isBounded,\n i,\n w,\n h,\n containerWidth\n } = this.props;\n const positionParams = this.getPositionParams();\n\n // Boundary calculations; keeps items within the grid\n if (isBounded) {\n const {\n offsetParent\n } = node;\n if (offsetParent) {\n const {\n margin,\n rowHeight,\n containerPadding\n } = this.props;\n const bottomBoundary = offsetParent.clientHeight - (0, _calculateUtils.calcGridItemWHPx)(h, rowHeight, margin[1]);\n top = (0, _calculateUtils.clamp)(top - containerPadding[1], 0, bottomBoundary);\n const colWidth = (0, _calculateUtils.calcGridColWidth)(positionParams);\n const rightBoundary = containerWidth - (0, _calculateUtils.calcGridItemWHPx)(w, colWidth, margin[0]);\n left = (0, _calculateUtils.clamp)(left - containerPadding[0], 0, rightBoundary);\n }\n }\n const newPosition /*: PartialPosition*/ = {\n top,\n left\n };\n this.setState({\n dragging: newPosition\n });\n\n // Call callback with this data\n const {\n containerPadding\n } = this.props;\n const {\n x,\n y\n } = (0, _calculateUtils.calcXY)(positionParams, top - containerPadding[1], left - containerPadding[0], w, h);\n return onDrag.call(this, i, x, y, {\n e,\n node,\n newPosition\n });\n });\n /**\n * onDragStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n _defineProperty(this, \"onDragStop\", (e, _ref3) => {\n let {\n node\n } = _ref3;\n const {\n onDragStop\n } = this.props;\n if (!onDragStop) return;\n if (!this.state.dragging) {\n throw new Error(\"onDragEnd called before onDragStart.\");\n }\n const {\n w,\n h,\n i,\n containerPadding\n } = this.props;\n const {\n left,\n top\n } = this.state.dragging;\n const newPosition /*: PartialPosition*/ = {\n top,\n left\n };\n this.setState({\n dragging: null\n });\n const {\n x,\n y\n } = (0, _calculateUtils.calcXY)(this.getPositionParams(), top - containerPadding[1], left - containerPadding[0], w, h);\n return onDragStop.call(this, i, x, y, {\n e,\n node,\n newPosition\n });\n });\n /**\n * onResizeStop event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node and size information\n */\n _defineProperty(this, \"onResizeStop\", (e, callbackData, position) => this.onResizeHandler(e, callbackData, position, \"onResizeStop\"));\n // onResizeStart event handler\n _defineProperty(this, \"onResizeStart\", (e, callbackData, position) => this.onResizeHandler(e, callbackData, position, \"onResizeStart\"));\n // onResize event handler\n _defineProperty(this, \"onResize\", (e, callbackData, position) => this.onResizeHandler(e, callbackData, position, \"onResize\"));\n }\n shouldComponentUpdate(nextProps /*: Props*/, nextState /*: State*/) /*: boolean*/{\n // We can't deeply compare children. If the developer memoizes them, we can\n // use this optimization.\n if (this.props.children !== nextProps.children) return true;\n if (this.props.droppingPosition !== nextProps.droppingPosition) return true;\n // TODO memoize these calculations so they don't take so long?\n const oldPosition = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(this.props), this.props.x, this.props.y, this.props.w, this.props.h, this.state);\n const newPosition = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(nextProps), nextProps.x, nextProps.y, nextProps.w, nextProps.h, nextState);\n return !(0, _utils.fastPositionEqual)(oldPosition, newPosition) || this.props.useCSSTransforms !== nextProps.useCSSTransforms;\n }\n componentDidMount() {\n this.moveDroppingItem({});\n }\n componentDidUpdate(prevProps /*: Props*/) {\n this.moveDroppingItem(prevProps);\n }\n\n // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n // this element by `x, y` pixels.\n moveDroppingItem(prevProps /*: Props*/) {\n const {\n droppingPosition\n } = this.props;\n if (!droppingPosition) return;\n const node = this.elementRef.current;\n // Can't find DOM node (are we unmounted?)\n if (!node) return;\n const prevDroppingPosition = prevProps.droppingPosition || {\n left: 0,\n top: 0\n };\n const {\n dragging\n } = this.state;\n const shouldDrag = dragging && droppingPosition.left !== prevDroppingPosition.left || droppingPosition.top !== prevDroppingPosition.top;\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n const deltaX = droppingPosition.left - dragging.left;\n const deltaY = droppingPosition.top - dragging.top;\n this.onDrag(droppingPosition.e, {\n node,\n deltaX,\n deltaY\n });\n }\n }\n getPositionParams() /*: PositionParams*/{\n let props /*: Props*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n return {\n cols: props.cols,\n containerPadding: props.containerPadding,\n containerWidth: props.containerWidth,\n margin: props.margin,\n maxRows: props.maxRows,\n rowHeight: props.rowHeight\n };\n }\n\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n createStyle(pos /*: Position*/) /*: { [key: string]: ?string }*/{\n const {\n usePercentages,\n containerWidth,\n useCSSTransforms\n } = this.props;\n let style;\n // CSS Transforms support (default)\n if (useCSSTransforms) {\n style = (0, _utils.setTransform)(pos);\n } else {\n // top,left (slow)\n style = (0, _utils.setTopLeft)(pos);\n\n // This is used for server rendering.\n if (usePercentages) {\n style.left = (0, _utils.perc)(pos.left / containerWidth);\n style.width = (0, _utils.perc)(pos.width / containerWidth);\n }\n }\n return style;\n }\n\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n mixinDraggable(child /*: ReactElement*/, isDraggable /*: boolean*/) /*: ReactElement*/{\n return /*#__PURE__*/_react.default.createElement(_reactDraggable.DraggableCore, {\n disabled: !isDraggable,\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop,\n handle: this.props.handle,\n cancel: \".react-resizable-handle\" + (this.props.cancel ? \",\" + this.props.cancel : \"\"),\n scale: this.props.transformScale,\n nodeRef: this.elementRef\n }, child);\n }\n\n /**\n * Utility function to setup callback handler definitions for\n * similarily structured resize events.\n */\n curryResizeHandler(position /*: Position*/, handler /*: Function*/) /*: Function*/{\n return (e /*: Event*/, data /*: ResizeCallbackData*/) => /*: Function*/handler(e, data, position);\n }\n\n /**\n * Mix a Resizable instance into a child.\n * @param {Element} child Child element.\n * @param {Object} position Position object (pixel values)\n * @return {Element} Child wrapped in Resizable.\n */\n mixinResizable(child /*: ReactElement*/, position /*: Position*/, isResizable /*: boolean*/) /*: ReactElement*/{\n const {\n cols,\n minW,\n minH,\n maxW,\n maxH,\n transformScale,\n resizeHandles,\n resizeHandle\n } = this.props;\n const positionParams = this.getPositionParams();\n\n // This is the max possible width - doesn't go to infinity because of the width of the window\n const maxWidth = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, cols, 0).width;\n\n // Calculate min/max constraints using our min & maxes\n const mins = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, minW, minH);\n const maxes = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, maxW, maxH);\n const minConstraints = [mins.width, mins.height];\n const maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];\n return /*#__PURE__*/_react.default.createElement(_reactResizable.Resizable\n // These are opts for the resize handle itself\n , {\n draggableOpts: {\n disabled: !isResizable\n },\n className: isResizable ? undefined : \"react-resizable-hide\",\n width: position.width,\n height: position.height,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n onResizeStop: this.curryResizeHandler(position, this.onResizeStop),\n onResizeStart: this.curryResizeHandler(position, this.onResizeStart),\n onResize: this.curryResizeHandler(position, this.onResize),\n transformScale: transformScale,\n resizeHandles: resizeHandles,\n handle: resizeHandle\n }, child);\n }\n /**\n * Wrapper around resize events to provide more useful data.\n */\n onResizeHandler(e /*: Event*/, _ref4 /*:: */,\n // 'size' is updated position\n position /*: Position*/,\n // existing position\n handlerName /*: string*/) /*: void*/{\n let {\n node,\n size,\n handle\n } /*: ResizeCallbackData*/ = _ref4 /*: ResizeCallbackData*/;\n const handler = this.props[handlerName];\n if (!handler) return;\n const {\n x,\n y,\n i,\n maxH,\n minH,\n containerWidth\n } = this.props;\n const {\n minW,\n maxW\n } = this.props;\n\n // Clamping of dimensions based on resize direction\n let updatedSize = size;\n if (node) {\n updatedSize = (0, _utils.resizeItemInDirection)(handle, position, size, containerWidth);\n this.setState({\n resizing: handlerName === \"onResizeStop\" ? null : updatedSize\n });\n }\n\n // Get new XY based on pixel size\n let {\n w,\n h\n } = (0, _calculateUtils.calcWH)(this.getPositionParams(), updatedSize.width, updatedSize.height, x, y, handle);\n\n // Min/max capping.\n // minW should be at least 1 (TODO propTypes validation?)\n w = (0, _calculateUtils.clamp)(w, Math.max(minW, 1), maxW);\n h = (0, _calculateUtils.clamp)(h, minH, maxH);\n handler.call(this, i, w, h, {\n e,\n node,\n size: updatedSize,\n handle\n });\n }\n render() /*: ReactNode*/{\n const {\n x,\n y,\n w,\n h,\n isDraggable,\n isResizable,\n droppingPosition,\n useCSSTransforms\n } = this.props;\n const pos = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(), x, y, w, h, this.state);\n const child = _react.default.Children.only(this.props.children);\n\n // Create the child element. We clone the existing element but modify its className and style.\n let newChild = /*#__PURE__*/_react.default.cloneElement(child, {\n ref: this.elementRef,\n className: (0, _clsx.default)(\"react-grid-item\", child.props.className, this.props.className, {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: {\n ...this.props.style,\n ...child.props.style,\n ...this.createStyle(pos)\n }\n });\n\n // Resizable support. This is usually on but the user can toggle it off.\n newChild = this.mixinResizable(newChild, pos, isResizable);\n\n // Draggable support. This is always on, except for with placeholders.\n newChild = this.mixinDraggable(newChild, isDraggable);\n return newChild;\n }\n}\nexports.default = GridItem;\n_defineProperty(GridItem, \"propTypes\", {\n // Children must be only a single element\n children: _propTypes.default.element,\n // General grid attributes\n cols: _propTypes.default.number.isRequired,\n containerWidth: _propTypes.default.number.isRequired,\n rowHeight: _propTypes.default.number.isRequired,\n margin: _propTypes.default.array.isRequired,\n maxRows: _propTypes.default.number.isRequired,\n containerPadding: _propTypes.default.array.isRequired,\n // These are all in grid units\n x: _propTypes.default.number.isRequired,\n y: _propTypes.default.number.isRequired,\n w: _propTypes.default.number.isRequired,\n h: _propTypes.default.number.isRequired,\n // All optional\n minW: function (props /*: Props*/, propName /*: string*/) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW) return new Error(\"minWidth larger than item width/maxWidth\");\n },\n maxW: function (props /*: Props*/, propName /*: string*/) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW) return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n minH: function (props /*: Props*/, propName /*: string*/) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH) return new Error(\"minHeight larger than item height/maxHeight\");\n },\n maxH: function (props /*: Props*/, propName /*: string*/) {\n const value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH) return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n // ID is nice to have for callbacks\n i: _propTypes.default.string.isRequired,\n // Resize handle options\n resizeHandles: _ReactGridLayoutPropTypes.resizeHandleAxesType,\n resizeHandle: _ReactGridLayoutPropTypes.resizeHandleType,\n // Functions\n onDragStop: _propTypes.default.func,\n onDragStart: _propTypes.default.func,\n onDrag: _propTypes.default.func,\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // Flags\n isDraggable: _propTypes.default.bool.isRequired,\n isResizable: _propTypes.default.bool.isRequired,\n isBounded: _propTypes.default.bool.isRequired,\n static: _propTypes.default.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: _propTypes.default.bool.isRequired,\n transformScale: _propTypes.default.number,\n // Others\n className: _propTypes.default.string,\n // Selector for draggable handle\n handle: _propTypes.default.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: _propTypes.default.string,\n // Current position of a dropping element\n droppingPosition: _propTypes.default.shape({\n e: _propTypes.default.object.isRequired,\n left: _propTypes.default.number.isRequired,\n top: _propTypes.default.number.isRequired\n })\n});\n_defineProperty(GridItem, \"defaultProps\", {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _fastEquals = require(\"fast-equals\");\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _utils = require(\"./utils\");\nvar _calculateUtils = require(\"./calculateUtils\");\nvar _GridItem = _interopRequireDefault(require(\"./GridItem\"));\nvar _ReactGridLayoutPropTypes = _interopRequireDefault(require(\"./ReactGridLayoutPropTypes\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";*/\n/*:: import type {\n CompactType,\n GridResizeEvent,\n GridDragEvent,\n DragOverEvent,\n Layout,\n DroppingPosition,\n LayoutItem\n} from \"./utils\";*/\n// Types\n/*:: import type { PositionParams } from \"./calculateUtils\";*/\n/*:: type State = {\n activeDrag: ?LayoutItem,\n layout: Layout,\n mounted: boolean,\n oldDragItem: ?LayoutItem,\n oldLayout: ?Layout,\n oldResizeItem: ?LayoutItem,\n resizing: boolean,\n droppingDOMNode: ?ReactElement,\n droppingPosition?: DroppingPosition,\n // Mirrored props\n children: ReactChildrenArray>,\n compactType?: CompactType,\n propsLayout?: Layout\n};*/\n/*:: import type { Props, DefaultProps } from \"./ReactGridLayoutPropTypes\";*/\n// End Types\nconst layoutClassName = \"react-grid-layout\";\nlet isFirefox = false;\n// Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\ntry {\n isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n /* Ignore */\n}\n\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\nclass ReactGridLayout extends React.Component /*:: */{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"state\", {\n activeDrag: null,\n layout: (0, _utils.synchronizeLayoutWithChildren)(this.props.layout, this.props.children, this.props.cols,\n // Legacy support for verticalCompact: false\n (0, _utils.compactType)(this.props), this.props.allowOverlap),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n resizing: false,\n droppingDOMNode: null,\n children: []\n });\n _defineProperty(this, \"dragEnterCounter\", 0);\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n _defineProperty(this, \"onDragStart\", (i /*: string*/, x /*: number*/, y /*: number*/, _ref /*:: */) => {\n let {\n e,\n node\n } /*: GridDragEvent*/ = _ref /*: GridDragEvent*/;\n const {\n layout\n } = this.state;\n const l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n const placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n this.setState({\n oldDragItem: (0, _utils.cloneLayoutItem)(l),\n oldLayout: layout,\n activeDrag: placeholder\n });\n return this.props.onDragStart(layout, l, l, null, e, node);\n });\n /**\n * Each drag movement create a new dragelement and move the element to the dragged location\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n _defineProperty(this, \"onDrag\", (i, x, y, _ref2) => {\n let {\n e,\n node\n } = _ref2;\n const {\n oldDragItem\n } = this.state;\n let {\n layout\n } = this.state;\n const {\n cols,\n allowOverlap,\n preventCollision\n } = this.props;\n const l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n // Create placeholder (display only)\n const placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n };\n\n // Move the element to the dragged location.\n const isUserAction = true;\n layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, (0, _utils.compactType)(this.props), cols, allowOverlap);\n this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n this.setState({\n layout: allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(this.props), cols),\n activeDrag: placeholder\n });\n });\n /**\n * When dragging stops, figure out which position the element is closest to and update its x and y.\n * @param {String} i Index of the child.\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n _defineProperty(this, \"onDragStop\", (i, x, y, _ref3) => {\n let {\n e,\n node\n } = _ref3;\n if (!this.state.activeDrag) return;\n const {\n oldDragItem\n } = this.state;\n let {\n layout\n } = this.state;\n const {\n cols,\n preventCollision,\n allowOverlap\n } = this.props;\n const l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n // Move the element here\n const isUserAction = true;\n layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, (0, _utils.compactType)(this.props), cols, allowOverlap);\n\n // Set state\n const newLayout = allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(this.props), cols);\n this.props.onDragStop(newLayout, oldDragItem, l, null, e, node);\n const {\n oldLayout\n } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n });\n _defineProperty(this, \"onResizeStart\", (i, w, h, _ref4) => {\n let {\n e,\n node\n } = _ref4;\n const {\n layout\n } = this.state;\n const l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n this.setState({\n oldResizeItem: (0, _utils.cloneLayoutItem)(l),\n oldLayout: this.state.layout,\n resizing: true\n });\n this.props.onResizeStart(layout, l, l, null, e, node);\n });\n _defineProperty(this, \"onResize\", (i, w, h, _ref5) => {\n let {\n e,\n node,\n size,\n handle\n } = _ref5;\n const {\n oldResizeItem\n } = this.state;\n const {\n layout\n } = this.state;\n const {\n cols,\n preventCollision,\n allowOverlap\n } = this.props;\n let shouldMoveItem = false;\n let finalLayout;\n let x;\n let y;\n const [newLayout, l] = (0, _utils.withLayoutItem)(layout, i, l => {\n let hasCollisions;\n x = l.x;\n y = l.y;\n if ([\"sw\", \"w\", \"nw\", \"n\", \"ne\"].indexOf(handle) !== -1) {\n if ([\"sw\", \"nw\", \"w\"].indexOf(handle) !== -1) {\n x = l.x + (l.w - w);\n w = l.x !== x && x < 0 ? l.w : w;\n x = x < 0 ? 0 : x;\n }\n if ([\"ne\", \"n\", \"nw\"].indexOf(handle) !== -1) {\n y = l.y + (l.h - h);\n h = l.y !== y && y < 0 ? l.h : h;\n y = y < 0 ? 0 : y;\n }\n shouldMoveItem = true;\n }\n\n // Something like quad tree should be used\n // to find collisions faster\n if (preventCollision && !allowOverlap) {\n const collisions = (0, _utils.getAllCollisions)(layout, {\n ...l,\n w,\n h,\n x,\n y\n }).filter(layoutItem => layoutItem.i !== l.i);\n hasCollisions = collisions.length > 0;\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // Reset layoutItem dimensions if there were collisions\n y = l.y;\n h = l.h;\n x = l.x;\n w = l.w;\n shouldMoveItem = false;\n }\n }\n l.w = w;\n l.h = h;\n return l;\n });\n\n // Shouldn't ever happen, but typechecking makes it necessary\n if (!l) return;\n finalLayout = newLayout;\n if (shouldMoveItem) {\n // Move the element to the new position.\n const isUserAction = true;\n finalLayout = (0, _utils.moveElement)(newLayout, l, x, y, isUserAction, this.props.preventCollision, (0, _utils.compactType)(this.props), cols, allowOverlap);\n }\n\n // Create placeholder element (display only)\n const placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n this.props.onResize(finalLayout, oldResizeItem, l, placeholder, e, node);\n\n // Re-compact the newLayout and set the drag placeholder.\n this.setState({\n layout: allowOverlap ? finalLayout : (0, _utils.compact)(finalLayout, (0, _utils.compactType)(this.props), cols),\n activeDrag: placeholder\n });\n });\n _defineProperty(this, \"onResizeStop\", (i, w, h, _ref6) => {\n let {\n e,\n node\n } = _ref6;\n const {\n layout,\n oldResizeItem\n } = this.state;\n const {\n cols,\n allowOverlap\n } = this.props;\n const l = (0, _utils.getLayoutItem)(layout, i);\n\n // Set state\n const newLayout = allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(this.props), cols);\n this.props.onResizeStop(newLayout, oldResizeItem, l, null, e, node);\n const {\n oldLayout\n } = this.state;\n this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null,\n resizing: false\n });\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n });\n // Called while dragging an element. Part of browser native drag/drop API.\n // Native event target might be the layout itself, or an element within the layout.\n _defineProperty(this, \"onDragOver\", e => {\n e.preventDefault(); // Prevent any browser native action\n e.stopPropagation();\n\n // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n // FIXME remove this hack\n if (isFirefox &&\n // $FlowIgnore can't figure this out\n !e.nativeEvent.target?.classList.contains(layoutClassName)) {\n return false;\n }\n const {\n droppingItem,\n onDropDragOver,\n margin,\n cols,\n rowHeight,\n maxRows,\n width,\n containerPadding,\n transformScale\n } = this.props;\n // Allow user to customize the dropping item or short-circuit the drop based on the results\n // of the `onDragOver(e: Event)` callback.\n const onDragOverResult = onDropDragOver?.(e);\n if (onDragOverResult === false) {\n if (this.state.droppingDOMNode) {\n this.removeDroppingPlaceholder();\n }\n return false;\n }\n const finalDroppingItem = {\n ...droppingItem,\n ...onDragOverResult\n };\n const {\n layout\n } = this.state;\n\n // $FlowIgnore missing def\n const gridRect = e.currentTarget.getBoundingClientRect(); // The grid's position in the viewport\n\n // Calculate the mouse position relative to the grid\n const layerX = e.clientX - gridRect.left;\n const layerY = e.clientY - gridRect.top;\n const droppingPosition = {\n left: layerX / transformScale,\n top: layerY / transformScale,\n e\n };\n if (!this.state.droppingDOMNode) {\n const positionParams /*: PositionParams*/ = {\n cols,\n margin,\n maxRows,\n rowHeight,\n containerWidth: width,\n containerPadding: containerPadding || margin\n };\n const calculatedPosition = (0, _calculateUtils.calcXY)(positionParams, layerY, layerX, finalDroppingItem.w, finalDroppingItem.h);\n this.setState({\n droppingDOMNode: /*#__PURE__*/React.createElement(\"div\", {\n key: finalDroppingItem.i\n }),\n droppingPosition,\n layout: [...layout, {\n ...finalDroppingItem,\n x: calculatedPosition.x,\n y: calculatedPosition.y,\n static: false,\n isDraggable: true\n }]\n });\n } else if (this.state.droppingPosition) {\n const {\n left,\n top\n } = this.state.droppingPosition;\n const shouldUpdatePosition = left != layerX || top != layerY;\n if (shouldUpdatePosition) {\n this.setState({\n droppingPosition\n });\n }\n }\n });\n _defineProperty(this, \"removeDroppingPlaceholder\", () => {\n const {\n droppingItem,\n cols\n } = this.props;\n const {\n layout\n } = this.state;\n const newLayout = (0, _utils.compact)(layout.filter(l => l.i !== droppingItem.i), (0, _utils.compactType)(this.props), cols, this.props.allowOverlap);\n this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n });\n _defineProperty(this, \"onDragLeave\", e => {\n e.preventDefault(); // Prevent any browser native action\n e.stopPropagation();\n this.dragEnterCounter--;\n\n // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n if (this.dragEnterCounter === 0) {\n this.removeDroppingPlaceholder();\n }\n });\n _defineProperty(this, \"onDragEnter\", e => {\n e.preventDefault(); // Prevent any browser native action\n e.stopPropagation();\n this.dragEnterCounter++;\n });\n _defineProperty(this, \"onDrop\", (e /*: Event*/) => {\n e.preventDefault(); // Prevent any browser native action\n e.stopPropagation();\n const {\n droppingItem\n } = this.props;\n const {\n layout\n } = this.state;\n const item = layout.find(l => l.i === droppingItem.i);\n\n // reset dragEnter counter on drop\n this.dragEnterCounter = 0;\n this.removeDroppingPlaceholder();\n this.props.onDrop(layout, item, e);\n });\n }\n componentDidMount() {\n this.setState({\n mounted: true\n });\n // Possibly call back with layout on mount. This should be done after correcting the layout width\n // to ensure we don't rerender with the wrong width.\n this.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n static getDerivedStateFromProps(nextProps /*: Props*/, prevState /*: State*/) /*: $Shape | null*/{\n let newLayoutBase;\n if (prevState.activeDrag) {\n return null;\n }\n\n // Legacy support for compactType\n // Allow parent to set layout directly.\n if (!(0, _fastEquals.deepEqual)(nextProps.layout, prevState.propsLayout) || nextProps.compactType !== prevState.compactType) {\n newLayoutBase = nextProps.layout;\n } else if (!(0, _utils.childrenEqual)(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n }\n\n // We need to regenerate the layout.\n if (newLayoutBase) {\n const newLayout = (0, _utils.synchronizeLayoutWithChildren)(newLayoutBase, nextProps.children, nextProps.cols, (0, _utils.compactType)(nextProps), nextProps.allowOverlap);\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n return null;\n }\n shouldComponentUpdate(nextProps /*: Props*/, nextState /*: State*/) /*: boolean*/{\n return (\n // NOTE: this is almost always unequal. Therefore the only way to get better performance\n // from SCU is if the user intentionally memoizes children. If they do, and they can\n // handle changes properly, performance will increase.\n this.props.children !== nextProps.children || !(0, _utils.fastRGLPropsEqual)(this.props, nextProps, _fastEquals.deepEqual) || this.state.activeDrag !== nextState.activeDrag || this.state.mounted !== nextState.mounted || this.state.droppingPosition !== nextState.droppingPosition\n );\n }\n componentDidUpdate(prevProps /*: Props*/, prevState /*: State*/) {\n if (!this.state.activeDrag) {\n const newLayout = this.state.layout;\n const oldLayout = prevState.layout;\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n }\n\n /**\n * Calculates a pixel value for the container.\n * @return {String} Container height in pixels.\n */\n containerHeight() /*: ?string*/{\n if (!this.props.autoSize) return;\n const nbRow = (0, _utils.bottom)(this.state.layout);\n const containerPaddingY = this.props.containerPadding ? this.props.containerPadding[1] : this.props.margin[1];\n return nbRow * this.props.rowHeight + (nbRow - 1) * this.props.margin[1] + containerPaddingY * 2 + \"px\";\n }\n onLayoutMaybeChanged(newLayout /*: Layout*/, oldLayout /*: ?Layout*/) {\n if (!oldLayout) oldLayout = this.state.layout;\n if (!(0, _fastEquals.deepEqual)(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n placeholder() /*: ?ReactElement*/{\n const {\n activeDrag\n } = this.state;\n if (!activeDrag) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n useCSSTransforms,\n transformScale\n } = this.props;\n\n // {...this.state.activeDrag} is pretty slow, actually\n return /*#__PURE__*/React.createElement(_GridItem.default, {\n w: activeDrag.w,\n h: activeDrag.h,\n x: activeDrag.x,\n y: activeDrag.y,\n i: activeDrag.i,\n className: `react-grid-placeholder ${this.state.resizing ? \"placeholder-resizing\" : \"\"}`,\n containerWidth: width,\n cols: cols,\n margin: margin,\n containerPadding: containerPadding || margin,\n maxRows: maxRows,\n rowHeight: rowHeight,\n isDraggable: false,\n isResizable: false,\n isBounded: false,\n useCSSTransforms: useCSSTransforms,\n transformScale: transformScale\n }, /*#__PURE__*/React.createElement(\"div\", null));\n }\n\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n processGridItem(child /*: ReactElement*/, isDroppingItem /*: boolean*/) /*: ?ReactElement*/{\n if (!child || !child.key) return;\n const l = (0, _utils.getLayoutItem)(this.state.layout, String(child.key));\n if (!l) return null;\n const {\n width,\n cols,\n margin,\n containerPadding,\n rowHeight,\n maxRows,\n isDraggable,\n isResizable,\n isBounded,\n useCSSTransforms,\n transformScale,\n draggableCancel,\n draggableHandle,\n resizeHandles,\n resizeHandle\n } = this.props;\n const {\n mounted,\n droppingPosition\n } = this.state;\n\n // Determine user manipulations possible.\n // If an item is static, it can't be manipulated by default.\n // Any properties defined directly on the grid item will take precedence.\n const draggable = typeof l.isDraggable === \"boolean\" ? l.isDraggable : !l.static && isDraggable;\n const resizable = typeof l.isResizable === \"boolean\" ? l.isResizable : !l.static && isResizable;\n const resizeHandlesOptions = l.resizeHandles || resizeHandles;\n\n // isBounded set on child if set on parent, and child is not explicitly false\n const bounded = draggable && isBounded && l.isBounded !== false;\n return /*#__PURE__*/React.createElement(_GridItem.default, {\n containerWidth: width,\n cols: cols,\n margin: margin,\n containerPadding: containerPadding || margin,\n maxRows: maxRows,\n rowHeight: rowHeight,\n cancel: draggableCancel,\n handle: draggableHandle,\n onDragStop: this.onDragStop,\n onDragStart: this.onDragStart,\n onDrag: this.onDrag,\n onResizeStart: this.onResizeStart,\n onResize: this.onResize,\n onResizeStop: this.onResizeStop,\n isDraggable: draggable,\n isResizable: resizable,\n isBounded: bounded,\n useCSSTransforms: useCSSTransforms && mounted,\n usePercentages: !mounted,\n transformScale: transformScale,\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n i: l.i,\n minH: l.minH,\n minW: l.minW,\n maxH: l.maxH,\n maxW: l.maxW,\n static: l.static,\n droppingPosition: isDroppingItem ? droppingPosition : undefined,\n resizeHandles: resizeHandlesOptions,\n resizeHandle: resizeHandle\n }, child);\n }\n render() /*: React.Element<\"div\">*/{\n const {\n className,\n style,\n isDroppable,\n innerRef\n } = this.props;\n const mergedClassName = (0, _clsx.default)(layoutClassName, className);\n const mergedStyle = {\n height: this.containerHeight(),\n ...style\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: innerRef,\n className: mergedClassName,\n style: mergedStyle,\n onDrop: isDroppable ? this.onDrop : _utils.noop,\n onDragLeave: isDroppable ? this.onDragLeave : _utils.noop,\n onDragEnter: isDroppable ? this.onDragEnter : _utils.noop,\n onDragOver: isDroppable ? this.onDragOver : _utils.noop\n }, React.Children.map(this.props.children, child => this.processGridItem(child)), isDroppable && this.state.droppingDOMNode && this.processGridItem(this.state.droppingDOMNode, true), this.placeholder());\n }\n}\nexports.default = ReactGridLayout;\n// TODO publish internal ReactClass displayName transform\n_defineProperty(ReactGridLayout, \"displayName\", \"ReactGridLayout\");\n// Refactored to another module to make way for preval\n_defineProperty(ReactGridLayout, \"propTypes\", _ReactGridLayoutPropTypes.default);\n_defineProperty(ReactGridLayout, \"defaultProps\", {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity,\n // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isBounded: false,\n isDraggable: true,\n isResizable: true,\n allowOverlap: false,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n resizeHandles: [\"se\"],\n onLayoutChange: _utils.noop,\n onDragStart: _utils.noop,\n onDrag: _utils.noop,\n onDragStop: _utils.noop,\n onResizeStart: _utils.noop,\n onResize: _utils.noop,\n onResizeStop: _utils.noop,\n onDrop: _utils.noop,\n onDropDragOver: _utils.noop\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resizeHandleType = exports.resizeHandleAxesType = exports.default = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/*:: import type {\n Ref,\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";*/\n/*:: import type {\n DragOverEvent,\n EventCallback,\n CompactType,\n Layout,\n LayoutItem,\n ResizeHandleAxis\n} from \"./utils\";*/\n/*:: export type ReactRef = {|\n +current: T | null\n|};*/\n// util\n/*:: export type ResizeHandle =\n | ReactElement\n | ((\n resizeHandleAxis: ResizeHandleAxis,\n ref: ReactRef\n ) => ReactElement);*/\n// Defines which resize handles should be rendered (default: 'se')\n// Allows for any combination of:\n// 's' - South handle (bottom-center)\n// 'w' - West handle (left-center)\n// 'e' - East handle (right-center)\n// 'n' - North handle (top-center)\n// 'sw' - Southwest handle (bottom-left)\n// 'nw' - Northwest handle (top-left)\n// 'se' - Southeast handle (bottom-right)\n// 'ne' - Northeast handle (top-right)\nconst resizeHandleAxesType /*: ReactPropsChainableTypeChecker*/ = exports.resizeHandleAxesType = _propTypes.default.arrayOf(_propTypes.default.oneOf([\"s\", \"w\", \"e\", \"n\", \"sw\", \"nw\", \"se\", \"ne\"]));\n// Custom component for resize handles\nconst resizeHandleType /*: ReactPropsChainableTypeChecker*/ = exports.resizeHandleType = _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]);\n/*:: export type Props = {|\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: ?[number, number],\n rowHeight: number,\n maxRows: number,\n isBounded: boolean,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n resizeHandles: ResizeHandleAxis[],\n resizeHandle?: ResizeHandle,\n allowOverlap: boolean,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDropDragOver: (e: DragOverEvent) => ?({| w?: number, h?: number |} | false),\n onDrop: (layout: Layout, item: ?LayoutItem, e: Event) => void,\n children: ReactChildrenArray>,\n innerRef?: Ref<\"div\">\n|};*/\n/*:: export type DefaultProps = $Diff<\n Props,\n {\n children: ReactChildrenArray>,\n width: number\n }\n>;*/\nvar _default = exports.default = {\n //\n // Basic props\n //\n className: _propTypes.default.string,\n style: _propTypes.default.object,\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: _propTypes.default.number,\n // If true, the container height swells and contracts to fit contents\n autoSize: _propTypes.default.bool,\n // # of cols.\n cols: _propTypes.default.number,\n // A selector that will not be draggable.\n draggableCancel: _propTypes.default.string,\n // A selector for the draggable handler\n draggableHandle: _propTypes.default.string,\n // Deprecated\n verticalCompact: function (props /*: Props*/) {\n if (props.verticalCompact === false && process.env.NODE_ENV !== \"production\") {\n console.warn(\n // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" + 'Use `compactType`: \"horizontal\" | \"vertical\" | null.');\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: (_propTypes.default.oneOf([\"vertical\", \"horizontal\"]) /*: ReactPropsChainableTypeChecker*/),\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function (props /*: Props*/) {\n var layout = props.layout;\n // I hope you're setting the data-grid property on the grid items\n if (layout === undefined) return;\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n //\n // Grid Dimensions\n //\n\n // Margin between items [x, y] in px\n margin: (_propTypes.default.arrayOf(_propTypes.default.number) /*: ReactPropsChainableTypeChecker*/),\n // Padding inside the container [x, y] in px\n containerPadding: (_propTypes.default.arrayOf(_propTypes.default.number) /*: ReactPropsChainableTypeChecker*/),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: _propTypes.default.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: _propTypes.default.number,\n //\n // Flags\n //\n isBounded: _propTypes.default.bool,\n isDraggable: _propTypes.default.bool,\n isResizable: _propTypes.default.bool,\n // If true, grid can be placed one over the other.\n allowOverlap: _propTypes.default.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: _propTypes.default.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: _propTypes.default.bool,\n // parent layout transform scale\n transformScale: _propTypes.default.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: _propTypes.default.bool,\n // Resize handle options\n resizeHandles: resizeHandleAxesType,\n resizeHandle: resizeHandleType,\n //\n // Callbacks\n //\n\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: _propTypes.default.func,\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: _propTypes.default.func,\n // Calls on each drag movement.\n onDrag: _propTypes.default.func,\n // Calls when drag is complete.\n onDragStop: _propTypes.default.func,\n //Calls when resize starts.\n onResizeStart: _propTypes.default.func,\n // Calls when resize movement happens.\n onResize: _propTypes.default.func,\n // Calls when resize is complete.\n onResizeStop: _propTypes.default.func,\n // Calls when some element is dropped.\n onDrop: _propTypes.default.func,\n //\n // Other validations\n //\n\n droppingItem: (_propTypes.default.shape({\n i: _propTypes.default.string.isRequired,\n w: _propTypes.default.number.isRequired,\n h: _propTypes.default.number.isRequired\n }) /*: ReactPropsChainableTypeChecker*/),\n // Children must not have duplicate keys.\n children: function (props /*: Props*/, propName /*: string*/) {\n const children = props[propName];\n\n // Check children keys for duplicates. Throw if found.\n const keys = {};\n _react.default.Children.forEach(children, function (child) {\n if (child?.key == null) return;\n if (keys[child.key]) {\n throw new Error('Duplicate child key \"' + child.key + '\" found! This will cause problems in ReactGridLayout.');\n }\n keys[child.key] = true;\n });\n },\n // Optional ref for getting a reference for the wrapping div.\n innerRef: _propTypes.default.any\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _fastEquals = require(\"fast-equals\");\nvar _utils = require(\"./utils\");\nvar _responsiveUtils = require(\"./responsiveUtils\");\nvar _ReactGridLayout = _interopRequireDefault(require(\"./ReactGridLayout\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); } /*:: import { type Layout, type Pick } from \"./utils\";*/ /*:: import { type ResponsiveLayout, type OnLayoutChangeCallback, type Breakpoints } from \"./responsiveUtils\";*/\n// $FlowFixMe[method-unbinding]\nconst type = obj => Object.prototype.toString.call(obj);\n\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\nfunction getIndentationValue /*:: */(param /*: { [key: string]: T } | T*/, breakpoint /*: string*/) /*: T*/{\n // $FlowIgnore TODO fix this typedef\n if (param == null) return null;\n // $FlowIgnore TODO fix this typedef\n return Array.isArray(param) ? param : param[breakpoint];\n}\n/*:: type State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: ResponsiveLayout\n};*/\n/*:: type Props = {|\n ...React.ElementConfig,\n\n // Responsive config\n breakpoint?: ?Breakpoint,\n breakpoints: Breakpoints,\n cols: { [key: Breakpoint]: number },\n layouts: ResponsiveLayout,\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n /* prettier-ignore *-/\n containerPadding: { [key: Breakpoint]: ?[number, number] } | ?[number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: OnLayoutChangeCallback,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: ?[number, number]\n ) => void\n|};*/\n/*:: type DefaultProps = Pick<\n Props<>,\n {|\n allowOverlap: 0,\n breakpoints: 0,\n cols: 0,\n containerPadding: 0,\n layouts: 0,\n margin: 0,\n onBreakpointChange: 0,\n onLayoutChange: 0,\n onWidthChange: 0\n |}\n>;*/\nclass ResponsiveReactGridLayout extends React.Component\n/*:: <\n Props<>,\n State\n>*/\n{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"state\", this.generateInitialState());\n // wrap layouts so we do not need to pass layouts to child\n _defineProperty(this, \"onLayoutChange\", (layout /*: Layout*/) => {\n this.props.onLayoutChange(layout, {\n ...this.props.layouts,\n [this.state.breakpoint]: layout\n });\n });\n }\n generateInitialState() /*: State*/{\n const {\n width,\n breakpoints,\n layouts,\n cols\n } = this.props;\n const breakpoint = (0, _responsiveUtils.getBreakpointFromWidth)(breakpoints, width);\n const colNo = (0, _responsiveUtils.getColsFromBreakpoint)(breakpoint, cols);\n // verticalCompact compatibility, now deprecated\n const compactType = this.props.verticalCompact === false ? null : this.props.compactType;\n // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n const initialLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, breakpoint, breakpoint, colNo, compactType);\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n static getDerivedStateFromProps(nextProps /*: Props<*>*/, prevState /*: State*/) /*: ?$Shape*/{\n if (!(0, _fastEquals.deepEqual)(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n const {\n breakpoint,\n cols\n } = prevState;\n\n // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n const newLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(nextProps.layouts, nextProps.breakpoints, breakpoint, breakpoint, cols, nextProps.compactType);\n return {\n layout: newLayout,\n layouts: nextProps.layouts\n };\n }\n return null;\n }\n componentDidUpdate(prevProps /*: Props<*>*/) {\n // Allow parent to set width or breakpoint directly.\n if (this.props.width != prevProps.width || this.props.breakpoint !== prevProps.breakpoint || !(0, _fastEquals.deepEqual)(this.props.breakpoints, prevProps.breakpoints) || !(0, _fastEquals.deepEqual)(this.props.cols, prevProps.cols)) {\n this.onWidthChange(prevProps);\n }\n }\n /**\n * When the width changes work through breakpoints and reset state with the new width & breakpoint.\n * Width changes are necessary to figure out the widget widths.\n */\n onWidthChange(prevProps /*: Props<*>*/) {\n const {\n breakpoints,\n cols,\n layouts,\n compactType\n } = this.props;\n const newBreakpoint = this.props.breakpoint || (0, _responsiveUtils.getBreakpointFromWidth)(this.props.breakpoints, this.props.width);\n const lastBreakpoint = this.state.breakpoint;\n const newCols /*: number*/ = (0, _responsiveUtils.getColsFromBreakpoint)(newBreakpoint, cols);\n const newLayouts = {\n ...layouts\n };\n\n // Breakpoint change\n if (lastBreakpoint !== newBreakpoint || prevProps.breakpoints !== breakpoints || prevProps.cols !== cols) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in newLayouts)) newLayouts[lastBreakpoint] = (0, _utils.cloneLayout)(this.state.layout);\n\n // Find or generate a new layout.\n let layout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(newLayouts, breakpoints, newBreakpoint, lastBreakpoint, newCols, compactType);\n\n // This adds missing items.\n layout = (0, _utils.synchronizeLayoutWithChildren)(layout, this.props.children, newCols, compactType, this.props.allowOverlap);\n\n // Store the new layout.\n newLayouts[newBreakpoint] = layout;\n\n // callbacks\n this.props.onLayoutChange(layout, newLayouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n const margin = getIndentationValue(this.props.margin, newBreakpoint);\n const containerPadding = getIndentationValue(this.props.containerPadding, newBreakpoint);\n\n //call onWidthChange on every change of width, not only on breakpoint changes\n this.props.onWidthChange(this.props.width, margin, newCols, containerPadding);\n }\n render() /*: React.Element*/{\n /* eslint-disable no-unused-vars */\n const {\n breakpoint,\n breakpoints,\n cols,\n layouts,\n margin,\n containerPadding,\n onBreakpointChange,\n onLayoutChange,\n onWidthChange,\n ...other\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return /*#__PURE__*/React.createElement(_ReactGridLayout.default, _extends({}, other, {\n // $FlowIgnore should allow nullable here due to DefaultProps\n margin: getIndentationValue(margin, this.state.breakpoint),\n containerPadding: getIndentationValue(containerPadding, this.state.breakpoint),\n onLayoutChange: this.onLayoutChange,\n layout: this.state.layout,\n cols: this.state.cols\n }));\n }\n}\nexports.default = ResponsiveReactGridLayout;\n// This should only include propTypes needed in this code; RGL itself\n// will do validation of the rest props passed to it.\n_defineProperty(ResponsiveReactGridLayout, \"propTypes\", {\n //\n // Basic props\n //\n\n // Optional, but if you are managing width yourself you may want to set the breakpoint\n // yourself as well.\n breakpoint: _propTypes.default.string,\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: _propTypes.default.object,\n allowOverlap: _propTypes.default.bool,\n // # of cols. This is a breakpoint -> cols map\n cols: _propTypes.default.object,\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object]),\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object]),\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts(props /*: Props<>*/, propName /*: string*/) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\"Layout property must be an object. Received: \" + type(props[propName]));\n }\n Object.keys(props[propName]).forEach(key => {\n if (!(key in props.breakpoints)) {\n throw new Error(\"Each key in layouts must align with a key in breakpoints.\");\n }\n (0, _utils.validateLayout)(props.layouts[key], \"layouts.\" + key);\n });\n },\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: _propTypes.default.number.isRequired,\n //\n // Callbacks\n //\n\n // Calls back with breakpoint and new # cols\n onBreakpointChange: _propTypes.default.func,\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: _propTypes.default.func,\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: _propTypes.default.func\n});\n_defineProperty(ResponsiveReactGridLayout, \"defaultProps\", {\n breakpoints: {\n lg: 1200,\n md: 996,\n sm: 768,\n xs: 480,\n xxs: 0\n },\n cols: {\n lg: 12,\n md: 10,\n sm: 6,\n xs: 4,\n xxs: 2\n },\n containerPadding: {\n lg: null,\n md: null,\n sm: null,\n xs: null,\n xxs: null\n },\n layouts: {},\n margin: [10, 10],\n allowOverlap: false,\n onBreakpointChange: _utils.noop,\n onLayoutChange: _utils.noop,\n onWidthChange: _utils.noop\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcGridColWidth = calcGridColWidth;\nexports.calcGridItemPosition = calcGridItemPosition;\nexports.calcGridItemWHPx = calcGridItemWHPx;\nexports.calcWH = calcWH;\nexports.calcXY = calcXY;\nexports.clamp = clamp;\n/*:: import type { Position } from \"./utils\";*/\n/*:: export type PositionParams = {\n margin: [number, number],\n containerPadding: [number, number],\n containerWidth: number,\n cols: number,\n rowHeight: number,\n maxRows: number\n};*/\n// Helper for generating column width\nfunction calcGridColWidth(positionParams /*: PositionParams*/) /*: number*/{\n const {\n margin,\n containerPadding,\n containerWidth,\n cols\n } = positionParams;\n return (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols;\n}\n\n// This can either be called:\n// calcGridItemWHPx(w, colWidth, margin[0])\n// or\n// calcGridItemWHPx(h, rowHeight, margin[1])\nfunction calcGridItemWHPx(gridUnits /*: number*/, colOrRowSize /*: number*/, marginPx /*: number*/) /*: number*/{\n // 0 * Infinity === NaN, which causes problems with resize contraints\n if (!Number.isFinite(gridUnits)) return gridUnits;\n return Math.round(colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx);\n}\n\n/**\n * Return position on the page given an x, y, w, h.\n * left, top, width, height are all in pixels.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Position} Object containing coords.\n */\nfunction calcGridItemPosition(positionParams /*: PositionParams*/, x /*: number*/, y /*: number*/, w /*: number*/, h /*: number*/, state /*: ?Object*/) /*: Position*/{\n const {\n margin,\n containerPadding,\n rowHeight\n } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n const out = {};\n\n // If resizing, use the exact width and height as returned from resizing callbacks.\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n }\n // Otherwise, calculate from grid units.\n else {\n out.width = calcGridItemWHPx(w, colWidth, margin[0]);\n out.height = calcGridItemWHPx(h, rowHeight, margin[1]);\n }\n\n // If dragging, use the exact width and height as returned from dragging callbacks.\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n } else if (state && state.resizing && typeof state.resizing.top === \"number\" && typeof state.resizing.left === \"number\") {\n out.top = Math.round(state.resizing.top);\n out.left = Math.round(state.resizing.left);\n }\n // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n return out;\n}\n\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} x and y in grid units.\n */\nfunction calcXY(positionParams /*: PositionParams*/, top /*: number*/, left /*: number*/, w /*: number*/, h /*: number*/) /*: { x: number, y: number }*/{\n const {\n margin,\n cols,\n rowHeight,\n maxRows\n } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n let x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n x = clamp(x, 0, cols - w);\n y = clamp(y, 0, maxRows - h);\n return {\n x,\n y\n };\n}\n\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @param {String} handle Resize Handle.\n * @return {Object} w, h as grid units.\n */\nfunction calcWH(positionParams /*: PositionParams*/, width /*: number*/, height /*: number*/, x /*: number*/, y /*: number*/, handle /*: string*/) /*: { w: number, h: number }*/{\n const {\n margin,\n maxRows,\n cols,\n rowHeight\n } = positionParams;\n const colWidth = calcGridColWidth(positionParams);\n\n // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n let w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));\n\n // Capping\n let _w = clamp(w, 0, cols - x);\n let _h = clamp(h, 0, maxRows - y);\n if ([\"sw\", \"w\", \"nw\"].indexOf(handle) !== -1) {\n _w = clamp(w, 0, cols);\n }\n if ([\"nw\", \"n\", \"ne\"].indexOf(handle) !== -1) {\n _h = clamp(h, 0, maxRows);\n }\n return {\n w: _w,\n h: _h\n };\n}\n\n// Similar to _.clamp\nfunction clamp(num /*: number*/, lowerBound /*: number*/, upperBound /*: number*/) /*: number*/{\n return Math.max(Math.min(num, upperBound), lowerBound);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = WidthProvideRGL;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type { ReactRef } from \"../ReactGridLayoutPropTypes\";*/\n/*:: type WPDefaultProps = {|\n measureBeforeMount: boolean\n|};*/\n/*:: type WPProps = {|\n className?: string,\n style?: Object,\n ...WPDefaultProps\n|};*/\n// eslint-disable-next-line no-unused-vars\n/*:: type WPState = {|\n width: number\n|};*/\n/*:: type ComposedProps = {|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n|};*/\nconst layoutClassName = \"react-grid-layout\";\n\n/*\n * A simple HOC that provides facility for listening to container resizes.\n *\n * The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers\n * a flow bug of some sort that causes it to stop typechecking.\n */\nfunction WidthProvideRGL /*:: */(ComposedComponent /*: React.AbstractComponent*/) /*: React.AbstractComponent>*/{\n var _class;\n return _class = class WidthProvider extends React.Component\n /*:: <\n ComposedProps,\n WPState\n >*/\n {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"state\", {\n width: 1280\n });\n _defineProperty(this, \"elementRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"resizeObserver\", void 0);\n }\n componentDidMount() {\n this.mounted = true;\n this.resizeObserver = new _resizeObserverPolyfill.default(entries => {\n const node = this.elementRef.current;\n if (node instanceof HTMLElement) {\n const width = entries[0].contentRect.width;\n this.setState({\n width\n });\n }\n });\n const node = this.elementRef.current;\n if (node instanceof HTMLElement) {\n this.resizeObserver.observe(node);\n }\n }\n componentWillUnmount() {\n this.mounted = false;\n const node = this.elementRef.current;\n if (node instanceof HTMLElement) {\n this.resizeObserver.unobserve(node);\n }\n this.resizeObserver.disconnect();\n }\n render() {\n const {\n measureBeforeMount,\n ...rest\n } = this.props;\n if (measureBeforeMount && !this.mounted) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: (0, _clsx.default)(this.props.className, layoutClassName),\n style: this.props.style\n // $FlowIgnore ref types\n ,\n ref: this.elementRef\n });\n }\n return /*#__PURE__*/React.createElement(ComposedComponent, _extends({\n innerRef: this.elementRef\n }, rest, this.state));\n }\n }, _defineProperty(_class, \"defaultProps\", {\n measureBeforeMount: false\n }), _defineProperty(_class, \"propTypes\", {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: _propTypes.default.bool\n }), _class;\n}","// this file was prevaled\nmodule.exports = function fastRGLPropsEqual(a, b, isEqualImpl) {\n if (a === b) return true;\n return a.className === b.className && isEqualImpl(a.style, b.style) && a.width === b.width && a.autoSize === b.autoSize && a.cols === b.cols && a.draggableCancel === b.draggableCancel && a.draggableHandle === b.draggableHandle && isEqualImpl(a.verticalCompact, b.verticalCompact) && isEqualImpl(a.compactType, b.compactType) && isEqualImpl(a.layout, b.layout) && isEqualImpl(a.margin, b.margin) && isEqualImpl(a.containerPadding, b.containerPadding) && a.rowHeight === b.rowHeight && a.maxRows === b.maxRows && a.isBounded === b.isBounded && a.isDraggable === b.isDraggable && a.isResizable === b.isResizable && a.allowOverlap === b.allowOverlap && a.preventCollision === b.preventCollision && a.useCSSTransforms === b.useCSSTransforms && a.transformScale === b.transformScale && a.isDroppable === b.isDroppable && isEqualImpl(a.resizeHandles, b.resizeHandles) && isEqualImpl(a.resizeHandle, b.resizeHandle) && a.onLayoutChange === b.onLayoutChange && a.onDragStart === b.onDragStart && a.onDrag === b.onDrag && a.onDragStop === b.onDragStop && a.onResizeStart === b.onResizeStart && a.onResize === b.onResize && a.onResizeStop === b.onResizeStop && a.onDrop === b.onDrop && isEqualImpl(a.droppingItem, b.droppingItem) && isEqualImpl(a.innerRef, b.innerRef);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findOrGenerateResponsiveLayout = findOrGenerateResponsiveLayout;\nexports.getBreakpointFromWidth = getBreakpointFromWidth;\nexports.getColsFromBreakpoint = getColsFromBreakpoint;\nexports.sortBreakpoints = sortBreakpoints;\nvar _utils = require(\"./utils\");\n/*:: import type { CompactType, Layout } from \"./utils\";*/\n/*:: export type Breakpoint = string;*/\n/*:: export type DefaultBreakpoints = \"lg\" | \"md\" | \"sm\" | \"xs\" | \"xxs\";*/\n/*:: export type ResponsiveLayout = {\n +[breakpoint: T]: Layout\n};*/\n// + indicates read-only\n/*:: export type Breakpoints = {\n +[breakpoint: T]: number\n};*/\n/*:: export type OnLayoutChangeCallback = (\n Layout,\n { [key: Breakpoint]: Layout }\n) => void;*/\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nfunction getBreakpointFromWidth(breakpoints /*: Breakpoints*/, width /*: number*/) /*: Breakpoint*/{\n const sorted = sortBreakpoints(breakpoints);\n let matching = sorted[0];\n for (let i = 1, len = sorted.length; i < len; i++) {\n const breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n return matching;\n}\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\nfunction getColsFromBreakpoint(breakpoint /*: Breakpoint*/, cols /*: Breakpoints*/) /*: number*/{\n if (!cols[breakpoint]) {\n throw new Error(\"ResponsiveReactGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n }\n return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\nfunction findOrGenerateResponsiveLayout(layouts /*: ResponsiveLayout*/, breakpoints /*: Breakpoints*/, breakpoint /*: Breakpoint*/, lastBreakpoint /*: Breakpoint*/, cols /*: number*/, compactType /*: CompactType*/) /*: Layout*/{\n // If it already exists, just return it.\n if (layouts[breakpoint]) return (0, _utils.cloneLayout)(layouts[breakpoint]);\n // Find or generate the next layout\n let layout = layouts[lastBreakpoint];\n const breakpointsSorted = sortBreakpoints(breakpoints);\n const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n const b = breakpointsAbove[i];\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n layout = (0, _utils.cloneLayout)(layout || []); // clone layout so we don't modify existing items\n return (0, _utils.compact)((0, _utils.correctBounds)(layout, {\n cols: cols\n }), compactType, cols);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\nfunction sortBreakpoints(breakpoints /*: Breakpoints*/) /*: Array*/{\n const keys /*: Array*/ = Object.keys(breakpoints);\n return keys.sort(function (a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bottom = bottom;\nexports.childrenEqual = childrenEqual;\nexports.cloneLayout = cloneLayout;\nexports.cloneLayoutItem = cloneLayoutItem;\nexports.collides = collides;\nexports.compact = compact;\nexports.compactItem = compactItem;\nexports.compactType = compactType;\nexports.correctBounds = correctBounds;\nexports.fastPositionEqual = fastPositionEqual;\nexports.fastRGLPropsEqual = void 0;\nexports.getAllCollisions = getAllCollisions;\nexports.getFirstCollision = getFirstCollision;\nexports.getLayoutItem = getLayoutItem;\nexports.getStatics = getStatics;\nexports.modifyLayout = modifyLayout;\nexports.moveElement = moveElement;\nexports.moveElementAwayFromCollision = moveElementAwayFromCollision;\nexports.noop = void 0;\nexports.perc = perc;\nexports.resizeItemInDirection = resizeItemInDirection;\nexports.setTopLeft = setTopLeft;\nexports.setTransform = setTransform;\nexports.sortLayoutItems = sortLayoutItems;\nexports.sortLayoutItemsByColRow = sortLayoutItemsByColRow;\nexports.sortLayoutItemsByRowCol = sortLayoutItemsByRowCol;\nexports.synchronizeLayoutWithChildren = synchronizeLayoutWithChildren;\nexports.validateLayout = validateLayout;\nexports.withLayoutItem = withLayoutItem;\nvar _fastEquals = require(\"fast-equals\");\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/*:: import type {\n ChildrenArray as ReactChildrenArray,\n Element as ReactElement\n} from \"react\";*/\n/*:: export type ResizeHandleAxis =\n | \"s\"\n | \"w\"\n | \"e\"\n | \"n\"\n | \"sw\"\n | \"nw\"\n | \"se\"\n | \"ne\";*/\n/*:: export type LayoutItem = {\n w: number,\n h: number,\n x: number,\n y: number,\n i: string,\n minW?: number,\n minH?: number,\n maxW?: number,\n maxH?: number,\n moved?: boolean,\n static?: boolean,\n isDraggable?: ?boolean,\n isResizable?: ?boolean,\n resizeHandles?: Array,\n isBounded?: ?boolean\n};*/\n/*:: export type Layout = $ReadOnlyArray;*/\n/*:: export type Position = {\n left: number,\n top: number,\n width: number,\n height: number\n};*/\n/*:: export type ReactDraggableCallbackData = {\n node: HTMLElement,\n x?: number,\n y?: number,\n deltaX: number,\n deltaY: number,\n lastX?: number,\n lastY?: number\n};*/\n/*:: export type PartialPosition = { left: number, top: number };*/\n/*:: export type DroppingPosition = { left: number, top: number, e: Event };*/\n/*:: export type Size = { width: number, height: number };*/\n/*:: export type GridDragEvent = {\n e: Event,\n node: HTMLElement,\n newPosition: PartialPosition\n};*/\n/*:: export type GridResizeEvent = {\n e: Event,\n node: HTMLElement,\n size: Size,\n handle: string\n};*/\n/*:: export type DragOverEvent = MouseEvent & {\n nativeEvent: {\n layerX: number,\n layerY: number,\n ...Event\n }\n};*/\n/*:: export type Pick = $Exact<\n $ObjMapi(k: K, v: V) => $ElementType>\n>;*/\n// Helpful port from TS\n/*:: type REl = ReactElement;*/\n/*:: export type ReactChildren = ReactChildrenArray;*/\n/*:: export type EventCallback = (\n Layout,\n oldItem: ?LayoutItem,\n newItem: ?LayoutItem,\n placeholder: ?LayoutItem,\n Event,\n ?HTMLElement\n) => void;*/\n// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e).\n/*:: export type CompactType = ?(\"horizontal\" | \"vertical\");*/\nconst isProduction = process.env.NODE_ENV === \"production\";\nconst DEBUG = false;\n\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\nfunction bottom(layout /*: Layout*/) /*: number*/{\n let max = 0,\n bottomY;\n for (let i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n return max;\n}\nfunction cloneLayout(layout /*: Layout*/) /*: Layout*/{\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n return newLayout;\n}\n\n// Modify a layoutItem inside a layout. Returns a new Layout,\n// does not mutate. Carries over all other LayoutItems unmodified.\nfunction modifyLayout(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: Layout*/{\n const newLayout = Array(layout.length);\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layoutItem.i === layout[i].i) {\n newLayout[i] = layoutItem;\n } else {\n newLayout[i] = layout[i];\n }\n }\n return newLayout;\n}\n\n// Function to be called to modify a layout item.\n// Does defensive clones to ensure the layout is not modified.\nfunction withLayoutItem(layout /*: Layout*/, itemKey /*: string*/, cb /*: LayoutItem => LayoutItem*/) /*: [Layout, ?LayoutItem]*/{\n let item = getLayoutItem(layout, itemKey);\n if (!item) return [layout, null];\n item = cb(cloneLayoutItem(item)); // defensive clone then modify\n // FIXME could do this faster if we already knew the index\n layout = modifyLayout(layout, item);\n return [layout, item];\n}\n\n// Fast path to cloning, since this is monomorphic\nfunction cloneLayoutItem(layoutItem /*: LayoutItem*/) /*: LayoutItem*/{\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null/undefined\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable,\n resizeHandles: layoutItem.resizeHandles,\n isBounded: layoutItem.isBounded\n };\n}\n\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\nfunction childrenEqual(a /*: ReactChildren*/, b /*: ReactChildren*/) /*: boolean*/{\n return (0, _fastEquals.deepEqual)(_react.default.Children.map(a, c => c?.key), _react.default.Children.map(b, c => c?.key)) && (0, _fastEquals.deepEqual)(_react.default.Children.map(a, c => c?.props[\"data-grid\"]), _react.default.Children.map(b, c => c?.props[\"data-grid\"]));\n}\n\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\n/*:: type FastRGLPropsEqual = (Object, Object, Function) => boolean;*/\nconst fastRGLPropsEqual /*: FastRGLPropsEqual*/ = exports.fastRGLPropsEqual = require(\"./fastRGLPropsEqual\");\n\n// Like the above, but a lot simpler.\nfunction fastPositionEqual(a /*: Position*/, b /*: Position*/) /*: boolean*/{\n return a.left === b.left && a.top === b.top && a.width === b.width && a.height === b.height;\n}\n\n/**\n * Given two layoutitems, check if they collide.\n */\nfunction collides(l1 /*: LayoutItem*/, l2 /*: LayoutItem*/) /*: boolean*/{\n if (l1.i === l2.i) return false; // same element\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * Does not modify layout items (clones). Creates a new layout array.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @param {Boolean} allowOverlap When `true`, allows overlapping grid items.\n * @return {Array} Compacted Layout.\n */\nfunction compact(layout /*: Layout*/, compactType /*: CompactType*/, cols /*: number*/, allowOverlap /*: ?boolean*/) /*: Layout*/{\n // Statics go in the compareWith array right away so items flow around them.\n const compareWith = getStatics(layout);\n // We go through the items by row and column.\n const sorted = sortLayoutItems(layout, compactType);\n // Holding for new items.\n const out = Array(layout.length);\n for (let i = 0, len = sorted.length; i < len; i++) {\n let l = cloneLayoutItem(sorted[i]);\n\n // Don't move static elements\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted, allowOverlap);\n\n // Add to comparison array. We only collide with items before this one.\n // Statics are already in this array.\n compareWith.push(l);\n }\n\n // Add to output array to make sure they still come out in the right order.\n out[layout.indexOf(sorted[i])] = l;\n\n // Clear moved flag, if it exists.\n l.moved = false;\n }\n return out;\n}\nconst heightWidth = {\n x: \"w\",\n y: \"h\"\n};\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\nfunction resolveCompactionCollision(layout /*: Layout*/, item /*: LayoutItem*/, moveToCoord /*: number*/, axis /*: \"x\" | \"y\"*/) {\n const sizeProp = heightWidth[axis];\n item[axis] += 1;\n const itemIndex = layout.map(layoutItem => {\n return layoutItem.i;\n }).indexOf(item.i);\n\n // Go through each item we collide with.\n for (let i = itemIndex + 1; i < layout.length; i++) {\n const otherItem = layout[i];\n // Ignore static items\n if (otherItem.static) continue;\n\n // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n if (otherItem.y > item.y + item.h) break;\n if (collides(item, otherItem)) {\n resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis);\n }\n }\n item[axis] = moveToCoord;\n}\n\n/**\n * Compact an item in the layout.\n *\n * Modifies item.\n *\n */\nfunction compactItem(compareWith /*: Layout*/, l /*: LayoutItem*/, compactType /*: CompactType*/, cols /*: number*/, fullLayout /*: Layout*/, allowOverlap /*: ?boolean*/) /*: LayoutItem*/{\n const compactV = compactType === \"vertical\";\n const compactH = compactType === \"horizontal\";\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y);\n // Move the element up as far as it can go without colliding.\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n\n // Move it down, and keep moving it down if it's colliding.\n let collides;\n // Checking the compactType null value to avoid breaking the layout when overlapping is allowed.\n while ((collides = getFirstCollision(compareWith, l)) && !(compactType === null && allowOverlap)) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n }\n // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n // ALso move element as left as we can\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n }\n }\n\n // Ensure that there are no negative positions\n l.y = Math.max(l.y, 0);\n l.x = Math.max(l.x, 0);\n return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * Modifies layout items.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\nfunction correctBounds(layout /*: Layout*/, bounds /*: { cols: number }*/) /*: Layout*/{\n const collidesWith = getStatics(layout);\n for (let i = 0, len = layout.length; i < len; i++) {\n const l = layout[i];\n // Overflows right\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n // Overflows left\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n if (!l.static) collidesWith.push(l);else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\nfunction getLayoutItem(layout /*: Layout*/, id /*: string*/) /*: ?LayoutItem*/{\n for (let i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\nfunction getFirstCollision(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: ?LayoutItem*/{\n for (let i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\nfunction getAllCollisions(layout /*: Layout*/, layoutItem /*: LayoutItem*/) /*: Array*/{\n return layout.filter(l => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\nfunction getStatics(layout /*: Layout*/) /*: Array*/{\n return layout.filter(l => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * Modifies layout items.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\nfunction moveElement(layout /*: Layout*/, l /*: LayoutItem*/, x /*: ?number*/, y /*: ?number*/, isUserAction /*: ?boolean*/, preventCollision /*: ?boolean*/, compactType /*: CompactType*/, cols /*: number*/, allowOverlap /*: ?boolean*/) /*: Layout*/{\n // If this is static and not explicitly enabled as draggable,\n // no move is possible, so we can short-circuit this immediately.\n if (l.static && l.isDraggable !== true) return layout;\n\n // Short-circuit if nothing to do.\n if (l.y === y && l.x === x) return layout;\n log(`Moving element ${l.i} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`);\n const oldX = l.x;\n const oldY = l.y;\n\n // This is quite a bit faster than extending the object\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true;\n\n // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n let sorted = sortLayoutItems(layout, compactType);\n const movingUp = compactType === \"vertical\" && typeof y === \"number\" ? oldY >= y : compactType === \"horizontal\" && typeof x === \"number\" ? oldX >= x : false;\n // $FlowIgnore acceptable modification of read-only array as it was recently cloned\n if (movingUp) sorted = sorted.reverse();\n const collisions = getAllCollisions(sorted, l);\n const hasCollisions = collisions.length > 0;\n\n // We may have collisions. We can short-circuit if we've turned off collisions or\n // allowed overlap.\n if (hasCollisions && allowOverlap) {\n // Easy, we don't need to resolve collisions. But we *did* change the layout,\n // so clone it on the way out.\n return cloneLayout(layout);\n } else if (hasCollisions && preventCollision) {\n // If we are preventing collision but not allowing overlap, we need to\n // revert the position of this element so it goes to where it came from, rather\n // than the user's desired location.\n log(`Collision prevented on ${l.i}, reverting.`);\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout; // did not change so don't clone\n }\n\n // Move each item that collides away from this element.\n for (let i = 0, len = collisions.length; i < len; i++) {\n const collision = collisions[i];\n log(`Resolving collision between ${l.i} at [${l.x},${l.y}] and ${collision.i} at [${collision.x},${collision.y}]`);\n\n // Short circuit so we can't infinite loop\n if (collision.moved) continue;\n\n // Don't move static items - we have to move *this* element away\n if (collision.static) {\n layout = moveElementAwayFromCollision(layout, collision, l, isUserAction, compactType, cols);\n } else {\n layout = moveElementAwayFromCollision(layout, l, collision, isUserAction, compactType, cols);\n }\n }\n return layout;\n}\n\n/**\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\n * We attempt to move it up if there's room, otherwise it goes below.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} collidesWith Layout item we're colliding with.\n * @param {LayoutItem} itemToMove Layout item we're moving.\n */\nfunction moveElementAwayFromCollision(layout /*: Layout*/, collidesWith /*: LayoutItem*/, itemToMove /*: LayoutItem*/, isUserAction /*: ?boolean*/, compactType /*: CompactType*/, cols /*: number*/) /*: Layout*/{\n const compactH = compactType === \"horizontal\";\n // Compact vertically if not set to horizontal\n const compactV = compactType === \"vertical\";\n const preventCollision = collidesWith.static; // we're already colliding (not for static items)\n\n // If there is enough space above the collision to put this element, move it there.\n // We only do this on the main collision as this can get funky in cascades and cause\n // unwanted swapping behavior.\n if (isUserAction) {\n // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false;\n\n // Make a mock item so we don't modify the item here, only modify in moveElement.\n const fakeItem /*: LayoutItem*/ = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n };\n const firstCollision = getFirstCollision(layout, fakeItem);\n const collisionNorth = firstCollision && firstCollision.y + firstCollision.h > collidesWith.y;\n const collisionWest = firstCollision && collidesWith.x + collidesWith.w > firstCollision.x;\n\n // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n if (!firstCollision) {\n log(`Doing reverse collision on ${itemToMove.i} up to [${fakeItem.x},${fakeItem.y}].`);\n return moveElement(layout, itemToMove, compactH ? fakeItem.x : undefined, compactV ? fakeItem.y : undefined, isUserAction, preventCollision, compactType, cols);\n } else if (collisionNorth && compactV) {\n return moveElement(layout, itemToMove, undefined, collidesWith.y + 1, isUserAction, preventCollision, compactType, cols);\n } else if (collisionNorth && compactType == null) {\n collidesWith.y = itemToMove.y;\n itemToMove.y = itemToMove.y + itemToMove.h;\n return layout;\n } else if (collisionWest && compactH) {\n return moveElement(layout, collidesWith, itemToMove.x, undefined, isUserAction, preventCollision, compactType, cols);\n }\n }\n const newX = compactH ? itemToMove.x + 1 : undefined;\n const newY = compactV ? itemToMove.y + 1 : undefined;\n if (newX == null && newY == null) {\n return layout;\n }\n return moveElement(layout, itemToMove, compactH ? itemToMove.x + 1 : undefined, compactV ? itemToMove.y + 1 : undefined, isUserAction, preventCollision, compactType, cols);\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\nfunction perc(num /*: number*/) /*: string*/{\n return num * 100 + \"%\";\n}\n\n/**\n * Helper functions to constrain dimensions of a GridItem\n */\nconst constrainWidth = (left /*: number*/, currentWidth /*: number*/, newWidth /*: number*/, containerWidth /*: number*/) => {\n return left + newWidth > containerWidth ? currentWidth : newWidth;\n};\nconst constrainHeight = (top /*: number*/, currentHeight /*: number*/, newHeight /*: number*/) => {\n return top < 0 ? currentHeight : newHeight;\n};\nconst constrainLeft = (left /*: number*/) => Math.max(0, left);\nconst constrainTop = (top /*: number*/) => Math.max(0, top);\nconst resizeNorth = (currentSize, _ref, _containerWidth) => {\n let {\n left,\n height,\n width\n } = _ref;\n const top = currentSize.top - (height - currentSize.height);\n return {\n left,\n width,\n height: constrainHeight(top, currentSize.height, height),\n top: constrainTop(top)\n };\n};\nconst resizeEast = (currentSize, _ref2, containerWidth) => {\n let {\n top,\n left,\n height,\n width\n } = _ref2;\n return {\n top,\n height,\n width: constrainWidth(currentSize.left, currentSize.width, width, containerWidth),\n left: constrainLeft(left)\n };\n};\nconst resizeWest = (currentSize, _ref3, containerWidth) => {\n let {\n top,\n height,\n width\n } = _ref3;\n const left = currentSize.left - (width - currentSize.width);\n return {\n height,\n width: left < 0 ? currentSize.width : constrainWidth(currentSize.left, currentSize.width, width, containerWidth),\n top: constrainTop(top),\n left: constrainLeft(left)\n };\n};\nconst resizeSouth = (currentSize, _ref4, containerWidth) => {\n let {\n top,\n left,\n height,\n width\n } = _ref4;\n return {\n width,\n left,\n height: constrainHeight(top, currentSize.height, height),\n top: constrainTop(top)\n };\n};\nconst resizeNorthEast = function () {\n return resizeNorth(arguments.length <= 0 ? undefined : arguments[0], resizeEast(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst resizeNorthWest = function () {\n return resizeNorth(arguments.length <= 0 ? undefined : arguments[0], resizeWest(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst resizeSouthEast = function () {\n return resizeSouth(arguments.length <= 0 ? undefined : arguments[0], resizeEast(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst resizeSouthWest = function () {\n return resizeSouth(arguments.length <= 0 ? undefined : arguments[0], resizeWest(...arguments), arguments.length <= 2 ? undefined : arguments[2]);\n};\nconst ordinalResizeHandlerMap = {\n n: resizeNorth,\n ne: resizeNorthEast,\n e: resizeEast,\n se: resizeSouthEast,\n s: resizeSouth,\n sw: resizeSouthWest,\n w: resizeWest,\n nw: resizeNorthWest\n};\n\n/**\n * Helper for clamping width and position when resizing an item.\n */\nfunction resizeItemInDirection(direction /*: ResizeHandleAxis*/, currentSize /*: Position*/, newSize /*: Position*/, containerWidth /*: number*/) /*: Position*/{\n const ordinalHandler = ordinalResizeHandlerMap[direction];\n // Shouldn't be possible given types; that said, don't fail hard\n if (!ordinalHandler) return newSize;\n return ordinalHandler(currentSize, {\n ...currentSize,\n ...newSize\n }, containerWidth);\n}\nfunction setTransform(_ref5 /*:: */) /*: Object*/{\n let {\n top,\n left,\n width,\n height\n } /*: Position*/ = _ref5 /*: Position*/;\n // Replace unitless items with px\n const translate = `translate(${left}px,${top}px)`;\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\nfunction setTopLeft(_ref6 /*:: */) /*: Object*/{\n let {\n top,\n left,\n width,\n height\n } /*: Position*/ = _ref6 /*: Position*/;\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n position: \"absolute\"\n };\n}\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\nfunction sortLayoutItems(layout /*: Layout*/, compactType /*: CompactType*/) /*: Layout*/{\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n if (compactType === \"vertical\") return sortLayoutItemsByRowCol(layout);else return layout;\n}\n\n/**\n * Sort layout items by row ascending and column ascending.\n *\n * Does not modify Layout.\n */\nfunction sortLayoutItemsByRowCol(layout /*: Layout*/) /*: Layout*/{\n // Slice to clone array as sort modifies\n return layout.slice(0).sort(function (a, b) {\n if (a.y > b.y || a.y === b.y && a.x > b.x) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n return -1;\n });\n}\n\n/**\n * Sort layout items by column ascending then row ascending.\n *\n * Does not modify Layout.\n */\nfunction sortLayoutItemsByColRow(layout /*: Layout*/) /*: Layout*/{\n return layout.slice(0).sort(function (a, b) {\n if (a.x > b.x || a.x === b.x && a.y > b.y) {\n return 1;\n }\n return -1;\n });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * Does not modify initialLayout.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\nfunction synchronizeLayoutWithChildren(initialLayout /*: Layout*/, children /*: ReactChildren*/, cols /*: number*/, compactType /*: CompactType*/, allowOverlap /*: ?boolean*/) /*: Layout*/{\n initialLayout = initialLayout || [];\n\n // Generate one layout item per child.\n const layout /*: LayoutItem[]*/ = [];\n _react.default.Children.forEach(children, (child /*: ReactElement*/) => {\n // Child may not exist\n if (child?.key == null) return;\n const exists = getLayoutItem(initialLayout, String(child.key));\n const g = child.props[\"data-grid\"];\n // Don't overwrite the layout item if it's already in the initial layout.\n // If it has a `data-grid` property, prefer that over what's in the layout.\n if (exists && g == null) {\n layout.push(cloneLayoutItem(exists));\n } else {\n // Hey, this item has a data-grid property, use it.\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n // FIXME clone not really necessary here\n layout.push(cloneLayoutItem({\n ...g,\n i: child.key\n }));\n } else {\n // Nothing provided: ensure this is added to the bottom\n // FIXME clone not really necessary here\n layout.push(cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n }));\n }\n }\n });\n\n // Correct the layout.\n const correctedLayout = correctBounds(layout, {\n cols: cols\n });\n return allowOverlap ? correctedLayout : compact(correctedLayout, compactType, cols);\n}\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\nfunction validateLayout(layout /*: Layout*/) /*: void*/{\n let contextName /*: string*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Layout\";\n const subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n for (let i = 0, len = layout.length; i < len; i++) {\n const item = layout[i];\n for (let j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + i + \"].\" + subProps[j] + \" must be a number!\");\n }\n }\n }\n}\n\n// Legacy support for verticalCompact: false\nfunction compactType(props /*: ?{ verticalCompact: boolean, compactType: CompactType }*/) /*: CompactType*/{\n const {\n verticalCompact,\n compactType\n } = props || {};\n return verticalCompact === false ? null : compactType;\n}\nfunction log() {\n if (!DEBUG) return;\n // eslint-disable-next-line no-console\n console.log(...arguments);\n}\nconst noop = () => {};\nexports.noop = noop;","module.exports = require(\"./build/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./build/utils\");\nmodule.exports.calculateUtils = require(\"./build/calculateUtils\");\nmodule.exports.Responsive =\n require(\"./build/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./build/responsiveUtils\");\nmodule.exports.WidthProvider =\n require(\"./build/components/WidthProvider\").default;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global[\"fast-equals\"] = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\r\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\r\n * use inside the built comparator.\r\n */\r\n function createDefaultIsNestedEqual(comparator) {\r\n return function isEqual(a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, meta) {\r\n return comparator(a, b, meta);\r\n };\r\n }\r\n /**\r\n * Wrap the provided `areItemsEqual` method to manage the circular cache, allowing\r\n * for circular references to be safely included in the comparison without creating\r\n * stack overflows.\r\n */\r\n function createIsCircular(areItemsEqual) {\r\n return function isCircular(a, b, isEqual, cache) {\r\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\r\n return areItemsEqual(a, b, isEqual, cache);\r\n }\r\n var cachedA = cache.get(a);\r\n var cachedB = cache.get(b);\r\n if (cachedA && cachedB) {\r\n return cachedA === b && cachedB === a;\r\n }\r\n cache.set(a, b);\r\n cache.set(b, a);\r\n var result = areItemsEqual(a, b, isEqual, cache);\r\n cache.delete(a);\r\n cache.delete(b);\r\n return result;\r\n };\r\n }\r\n /**\r\n * Targeted shallow merge of two objects.\r\n *\r\n * @NOTE\r\n * This exists as a tinier compiled version of the `__assign` helper that\r\n * `tsc` injects in case of `Object.assign` not being present.\r\n */\r\n function merge(a, b) {\r\n var merged = {};\r\n for (var key in a) {\r\n merged[key] = a[key];\r\n }\r\n for (var key in b) {\r\n merged[key] = b[key];\r\n }\r\n return merged;\r\n }\r\n /**\r\n * Whether the value is a plain object.\r\n *\r\n * @NOTE\r\n * This is a same-realm compariosn only.\r\n */\r\n function isPlainObject(value) {\r\n return value.constructor === Object || value.constructor == null;\r\n }\r\n /**\r\n * When the value is `Promise`-like, aka \"then-able\".\r\n */\r\n function isPromiseLike(value) {\r\n return typeof value.then === 'function';\r\n }\r\n /**\r\n * Whether the values passed are strictly equal or both NaN.\r\n */\r\n function sameValueZeroEqual(a, b) {\r\n return a === b || (a !== a && b !== b);\r\n }\n\n var ARGUMENTS_TAG = '[object Arguments]';\r\n var BOOLEAN_TAG = '[object Boolean]';\r\n var DATE_TAG = '[object Date]';\r\n var REG_EXP_TAG = '[object RegExp]';\r\n var MAP_TAG = '[object Map]';\r\n var NUMBER_TAG = '[object Number]';\r\n var OBJECT_TAG = '[object Object]';\r\n var SET_TAG = '[object Set]';\r\n var STRING_TAG = '[object String]';\r\n var toString = Object.prototype.toString;\r\n function createComparator(_a) {\r\n var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, createIsNestedEqual = _a.createIsNestedEqual;\r\n var isEqual = createIsNestedEqual(comparator);\r\n /**\r\n * compare the value of the two objects and return true if they are equivalent in values\r\n */\r\n function comparator(a, b, meta) {\r\n // If the items are strictly equal, no need to do a value comparison.\r\n if (a === b) {\r\n return true;\r\n }\r\n // If the items are not non-nullish objects, then the only possibility\r\n // of them being equal but not strictly is if they are both `NaN`. Since\r\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\r\n // both objects, which is faster than `isNaN()`.\r\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\r\n return a !== a && b !== b;\r\n }\r\n // Checks are listed in order of commonality of use-case:\r\n // 1. Common complex object types (plain object, array)\r\n // 2. Common data values (date, regexp)\r\n // 3. Less-common complex object types (map, set)\r\n // 4. Less-common data values (promise, primitive wrappers)\r\n // Inherently this is both subjective and assumptive, however\r\n // when reviewing comparable libraries in the wild this order\r\n // appears to be generally consistent.\r\n // `isPlainObject` only checks against the object's own realm. Cross-realm\r\n // comparisons are rare, and will be handled in the ultimate fallback, so\r\n // we can avoid the `toString.call()` cost unless necessary.\r\n if (isPlainObject(a) && isPlainObject(b)) {\r\n return areObjectsEqual(a, b, isEqual, meta);\r\n }\r\n // `isArray()` works on subclasses and is cross-realm, so we can again avoid\r\n // the `toString.call()` cost unless necessary by just checking if either\r\n // and then both are arrays.\r\n var aArray = Array.isArray(a);\r\n var bArray = Array.isArray(b);\r\n if (aArray || bArray) {\r\n return aArray === bArray && areArraysEqual(a, b, isEqual, meta);\r\n }\r\n // Since this is a custom object, use the classic `toString.call()` to get its\r\n // type. This is reasonably performant in modern environments like v8 and\r\n // SpiderMonkey, and allows for cross-realm comparison when other checks like\r\n // `instanceof` do not.\r\n var aTag = toString.call(a);\r\n if (aTag !== toString.call(b)) {\r\n return false;\r\n }\r\n if (aTag === DATE_TAG) {\r\n // `getTime()` showed better results compared to alternatives like `valueOf()`\r\n // or the unary `+` operator.\r\n return areDatesEqual(a, b, isEqual, meta);\r\n }\r\n if (aTag === REG_EXP_TAG) {\r\n return areRegExpsEqual(a, b, isEqual, meta);\r\n }\r\n if (aTag === MAP_TAG) {\r\n return areMapsEqual(a, b, isEqual, meta);\r\n }\r\n if (aTag === SET_TAG) {\r\n return areSetsEqual(a, b, isEqual, meta);\r\n }\r\n // If a simple object tag, then we can prioritize a simple object comparison because\r\n // it is likely a custom class. If an arguments tag, it should be treated as a standard\r\n // object.\r\n if (aTag === OBJECT_TAG || aTag === ARGUMENTS_TAG) {\r\n // The exception for value comparison is `Promise`-like contracts. These should be\r\n // treated the same as standard `Promise` objects, which means strict equality.\r\n return isPromiseLike(a) || isPromiseLike(b)\r\n ? false\r\n : areObjectsEqual(a, b, isEqual, meta);\r\n }\r\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\r\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\r\n // types.\r\n if (aTag === BOOLEAN_TAG || aTag === NUMBER_TAG || aTag === STRING_TAG) {\r\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\r\n }\r\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\r\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\r\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\r\n // comparison that can be made.\r\n // - For types that can be introspected, but rarely have requirements to be compared\r\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\r\n // use-cases (may be included in a future release, if requested enough).\r\n // - For types that can be introspected but do not have an objective definition of what\r\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\r\n // In all cases, these decisions should be reevaluated based on changes to the language and\r\n // common development practices.\r\n return false;\r\n }\r\n return comparator;\r\n }\n\n /**\r\n * Whether the arrays are equal in value.\r\n */\r\n function areArraysEqual(a, b, isEqual, meta) {\r\n var index = a.length;\r\n if (b.length !== index) {\r\n return false;\r\n }\r\n // Decrementing `while` showed faster results than either incrementing or\r\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\r\n // methods like `some` / `every` were not used to avoid incurring the garbage\r\n // cost of anonymous callbacks.\r\n while (index-- > 0) {\r\n if (!isEqual(a[index], b[index], index, index, a, b, meta)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Whether the arrays are equal in value, including circular references.\r\n */\r\n var areArraysEqualCircular = createIsCircular(areArraysEqual);\n\n /**\r\n * Whether the dates passed are equal in value.\r\n *\r\n * @NOTE\r\n * This is a standalone function instead of done inline in the comparator\r\n * to allow for overrides.\r\n */\r\n function areDatesEqual(a, b) {\r\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\r\n }\n\n /**\r\n * Whether the `Map`s are equal in value.\r\n */\r\n function areMapsEqual(a, b, isEqual, meta) {\r\n var isValueEqual = a.size === b.size;\r\n if (!isValueEqual) {\r\n return false;\r\n }\r\n if (!a.size) {\r\n return true;\r\n }\r\n // The use of `forEach()` is to avoid the transpilation cost of `for...of` comparisons, and\r\n // the inability to control the performance of the resulting code. It also avoids excessive\r\n // iteration compared to doing comparisons of `keys()` and `values()`. As a result, though,\r\n // we cannot short-circuit the iterations; bookkeeping must be done to short-circuit the\r\n // equality checks themselves.\r\n var matchedIndices = {};\r\n var indexA = 0;\r\n a.forEach(function (aValue, aKey) {\r\n if (!isValueEqual) {\r\n return;\r\n }\r\n var hasMatch = false;\r\n var matchIndexB = 0;\r\n b.forEach(function (bValue, bKey) {\r\n if (!hasMatch &&\r\n !matchedIndices[matchIndexB] &&\r\n (hasMatch =\r\n isEqual(aKey, bKey, indexA, matchIndexB, a, b, meta) &&\r\n isEqual(aValue, bValue, aKey, bKey, a, b, meta))) {\r\n matchedIndices[matchIndexB] = true;\r\n }\r\n matchIndexB++;\r\n });\r\n indexA++;\r\n isValueEqual = hasMatch;\r\n });\r\n return isValueEqual;\r\n }\r\n /**\r\n * Whether the `Map`s are equal in value, including circular references.\r\n */\r\n var areMapsEqualCircular = createIsCircular(areMapsEqual);\n\n var OWNER = '_owner';\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n /**\r\n * Whether the objects are equal in value.\r\n */\r\n function areObjectsEqual(a, b, isEqual, meta) {\r\n var keysA = Object.keys(a);\r\n var index = keysA.length;\r\n if (Object.keys(b).length !== index) {\r\n return false;\r\n }\r\n var key;\r\n // Decrementing `while` showed faster results than either incrementing or\r\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\r\n // methods like `some` / `every` were not used to avoid incurring the garbage\r\n // cost of anonymous callbacks.\r\n while (index-- > 0) {\r\n key = keysA[index];\r\n if (key === OWNER) {\r\n var reactElementA = !!a.$$typeof;\r\n var reactElementB = !!b.$$typeof;\r\n if ((reactElementA || reactElementB) && reactElementA !== reactElementB) {\r\n return false;\r\n }\r\n }\r\n if (!hasOwnProperty.call(b, key) ||\r\n !isEqual(a[key], b[key], key, key, a, b, meta)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Whether the objects are equal in value, including circular references.\r\n */\r\n var areObjectsEqualCircular = createIsCircular(areObjectsEqual);\n\n /**\r\n * Whether the regexps passed are equal in value.\r\n *\r\n * @NOTE\r\n * This is a standalone function instead of done inline in the comparator\r\n * to allow for overrides. An example of this would be supporting a\r\n * pre-ES2015 environment where the `flags` property is not available.\r\n */\r\n function areRegExpsEqual(a, b) {\r\n return a.source === b.source && a.flags === b.flags;\r\n }\n\n /**\r\n * Whether the `Set`s are equal in value.\r\n */\r\n function areSetsEqual(a, b, isEqual, meta) {\r\n var isValueEqual = a.size === b.size;\r\n if (!isValueEqual) {\r\n return false;\r\n }\r\n if (!a.size) {\r\n return true;\r\n }\r\n // The use of `forEach()` is to avoid the transpilation cost of `for...of` comparisons, and\r\n // the inability to control the performance of the resulting code. It also avoids excessive\r\n // iteration compared to doing comparisons of `keys()` and `values()`. As a result, though,\r\n // we cannot short-circuit the iterations; bookkeeping must be done to short-circuit the\r\n // equality checks themselves.\r\n var matchedIndices = {};\r\n a.forEach(function (aValue, aKey) {\r\n if (!isValueEqual) {\r\n return;\r\n }\r\n var hasMatch = false;\r\n var matchIndex = 0;\r\n b.forEach(function (bValue, bKey) {\r\n if (!hasMatch &&\r\n !matchedIndices[matchIndex] &&\r\n (hasMatch = isEqual(aValue, bValue, aKey, bKey, a, b, meta))) {\r\n matchedIndices[matchIndex] = true;\r\n }\r\n matchIndex++;\r\n });\r\n isValueEqual = hasMatch;\r\n });\r\n return isValueEqual;\r\n }\r\n /**\r\n * Whether the `Set`s are equal in value, including circular references.\r\n */\r\n var areSetsEqualCircular = createIsCircular(areSetsEqual);\n\n var DEFAULT_CONFIG = Object.freeze({\r\n areArraysEqual: areArraysEqual,\r\n areDatesEqual: areDatesEqual,\r\n areMapsEqual: areMapsEqual,\r\n areObjectsEqual: areObjectsEqual,\r\n areRegExpsEqual: areRegExpsEqual,\r\n areSetsEqual: areSetsEqual,\r\n createIsNestedEqual: createDefaultIsNestedEqual,\r\n });\r\n var DEFAULT_CIRCULAR_CONFIG = Object.freeze({\r\n areArraysEqual: areArraysEqualCircular,\r\n areDatesEqual: areDatesEqual,\r\n areMapsEqual: areMapsEqualCircular,\r\n areObjectsEqual: areObjectsEqualCircular,\r\n areRegExpsEqual: areRegExpsEqual,\r\n areSetsEqual: areSetsEqualCircular,\r\n createIsNestedEqual: createDefaultIsNestedEqual,\r\n });\r\n var isDeepEqual = createComparator(DEFAULT_CONFIG);\r\n /**\r\n * Whether the items passed are deeply-equal in value.\r\n */\r\n function deepEqual(a, b) {\r\n return isDeepEqual(a, b, undefined);\r\n }\r\n var isShallowEqual = createComparator(merge(DEFAULT_CONFIG, { createIsNestedEqual: function () { return sameValueZeroEqual; } }));\r\n /**\r\n * Whether the items passed are shallowly-equal in value.\r\n */\r\n function shallowEqual(a, b) {\r\n return isShallowEqual(a, b, undefined);\r\n }\r\n var isCircularDeepEqual = createComparator(DEFAULT_CIRCULAR_CONFIG);\r\n /**\r\n * Whether the items passed are deeply-equal in value, including circular references.\r\n */\r\n function circularDeepEqual(a, b) {\r\n return isCircularDeepEqual(a, b, new WeakMap());\r\n }\r\n var isCircularShallowEqual = createComparator(merge(DEFAULT_CIRCULAR_CONFIG, {\r\n createIsNestedEqual: function () { return sameValueZeroEqual; },\r\n }));\r\n /**\r\n * Whether the items passed are shallowly-equal in value, including circular references.\r\n */\r\n function circularShallowEqual(a, b) {\r\n return isCircularShallowEqual(a, b, new WeakMap());\r\n }\r\n /**\r\n * Create a custom equality comparison method.\r\n *\r\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\r\n * where the standard methods are not performant enough, but can also be used to provide\r\n * support for legacy environments that do not support expected features like\r\n * `RegExp.prototype.flags` out of the box.\r\n */\r\n function createCustomEqual(getComparatorOptions) {\r\n return createComparator(merge(DEFAULT_CONFIG, getComparatorOptions(DEFAULT_CONFIG)));\r\n }\r\n /**\r\n * Create a custom equality comparison method that handles circular references. This is very\r\n * similar to `createCustomEqual`, with the only difference being that `meta` expects to be\r\n * populated with a `WeakMap`-like contract.\r\n *\r\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\r\n * where the standard methods are not performant enough, but can also be used to provide\r\n * support for legacy environments that do not support expected features like\r\n * `WeakMap` out of the box.\r\n */\r\n function createCustomCircularEqual(getComparatorOptions) {\r\n var comparator = createComparator(merge(DEFAULT_CIRCULAR_CONFIG, getComparatorOptions(DEFAULT_CIRCULAR_CONFIG)));\r\n return (function (a, b, meta) {\r\n if (meta === void 0) { meta = new WeakMap(); }\r\n return comparator(a, b, meta);\r\n });\r\n }\n\n exports.circularDeepEqual = circularDeepEqual;\n exports.circularShallowEqual = circularShallowEqual;\n exports.createCustomCircularEqual = createCustomCircularEqual;\n exports.createCustomEqual = createCustomEqual;\n exports.deepEqual = deepEqual;\n exports.sameValueZeroEqual = sameValueZeroEqual;\n exports.shallowEqual = shallowEqual;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=fast-equals.js.map\n"],"names":["e","r","o","t","f","module","DashboardFailed","initError","styles","DashboardLoading","initPhase","getStyles","cancelVariables","theme","slowStartThreshold","invisibleToVisible","AddLibraryPanelWidget","panel","dashboard","onCancelAddPanel","evt","onAddLibraryPanel","panelInfo","gridPos","newPanel","IconButton","LibraryPanelsSearch","pulsate","tinycolor","RowOptionsForm","repeat","title","warning","onUpdate","onCancel","newRepeat","setNewRepeat","onChangeRepeat","name","Form","formData","register","Field","Input","RepeatRowSelect","Alert","selectors","Modal","Button","RowOptionsModal","onDismiss","RowOptionsButton","onUpdateChange","hideModal","showModal","Icon","DashboardRow","p","TextLink","classes","count","panels","canEdit","PANEL_FILTER_VARIABLE","DashboardGrid","props","Subscription","newLayout","newPos","item","layout","oldItem","newItem","ref","config","variable","regex","panelFilter","panelPos","gridWidth","top","translateGridHeightToScreenHeight","isDashboardDraggable","panelElements","panelClasses","descIndex","GrafanaGridItem","width","height","isDraggable","DashboardPanel","isEditable","DashboardEmpty","draggable","boostedCount","_","forceUpdate","x","boostZIndex","ctxValue","isViewing","windowHeight","windowWidth","descendingOrderIndex","divProps","style","styleWidth","styleHeight","LayoutItemContext","zIndex","gridHeight","exports","_react","_interopRequireDefault","_propTypes","_reactDraggable","_reactResizable","_utils","_calculateUtils","_ReactGridLayoutPropTypes","_clsx","obj","_defineProperty","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","GridItem","_ref","node","onDragStart","transformScale","newPosition","offsetParent","parentRect","clientRect","cLeft","pLeft","cTop","pTop","y","_ref2","deltaX","deltaY","onDrag","left","isBounded","i","h","containerWidth","positionParams","margin","rowHeight","containerPadding","bottomBoundary","colWidth","rightBoundary","_ref3","onDragStop","w","callbackData","position","nextProps","nextState","oldPosition","prevProps","droppingPosition","prevDroppingPosition","dragging","shouldDrag","pos","usePercentages","useCSSTransforms","child","handler","data","isResizable","cols","minW","minH","maxW","maxH","resizeHandles","resizeHandle","maxWidth","mins","maxes","minConstraints","maxConstraints","_ref4","handlerName","size","handle","updatedSize","newChild","propName","React","_interopRequireWildcard","_fastEquals","_GridItem","_getRequireWildcardCache","n","a","u","layoutClassName","isFirefox","ReactGridLayout","l","placeholder","oldDragItem","allowOverlap","preventCollision","isUserAction","oldLayout","_ref5","oldResizeItem","shouldMoveItem","finalLayout","hasCollisions","layoutItem","_ref6","droppingItem","onDropDragOver","maxRows","onDragOverResult","finalDroppingItem","gridRect","layerX","layerY","calculatedPosition","prevState","newLayoutBase","nbRow","containerPaddingY","activeDrag","isDroppingItem","draggableCancel","draggableHandle","mounted","resizable","resizeHandlesOptions","bounded","className","isDroppable","innerRef","mergedClassName","mergedStyle","resizeHandleAxesType","resizeHandleType","_default","children","keys","_responsiveUtils","_ReactGridLayout","_extends","target","source","type","getIndentationValue","param","breakpoint","ResponsiveReactGridLayout","breakpoints","layouts","colNo","compactType","newBreakpoint","lastBreakpoint","newCols","newLayouts","onBreakpointChange","onLayoutChange","onWidthChange","other","calcGridColWidth","calcGridItemPosition","calcGridItemWHPx","calcWH","calcXY","clamp","gridUnits","colOrRowSize","marginPx","state","out","_w","_h","num","lowerBound","upperBound","WidthProvideRGL","_resizeObserverPolyfill","ComposedComponent","_class","entries","measureBeforeMount","rest","b","isEqualImpl","findOrGenerateResponsiveLayout","getBreakpointFromWidth","getColsFromBreakpoint","sortBreakpoints","sorted","matching","len","breakpointName","breakpointsSorted","breakpointsAbove","bottom","childrenEqual","cloneLayout","cloneLayoutItem","collides","compact","compactItem","correctBounds","fastPositionEqual","getAllCollisions","getFirstCollision","getLayoutItem","getStatics","modifyLayout","moveElement","moveElementAwayFromCollision","perc","resizeItemInDirection","setTopLeft","setTransform","sortLayoutItems","sortLayoutItemsByColRow","sortLayoutItemsByRowCol","synchronizeLayoutWithChildren","validateLayout","withLayoutItem","isProduction","DEBUG","max","bottomY","itemKey","cb","c","fastRGLPropsEqual","l1","l2","compareWith","heightWidth","resolveCompactionCollision","moveToCoord","axis","sizeProp","itemIndex","otherItem","fullLayout","compactV","compactH","bounds","collidesWith","id","log","oldX","oldY","collisions","collision","itemToMove","fakeItem","firstCollision","collisionNorth","collisionWest","newX","newY","constrainWidth","currentWidth","newWidth","constrainHeight","currentHeight","newHeight","constrainLeft","constrainTop","resizeNorth","currentSize","_containerWidth","resizeEast","resizeWest","resizeSouth","ordinalResizeHandlerMap","direction","newSize","ordinalHandler","translate","initialLayout","exists","g","correctedLayout","contextName","subProps","j","verticalCompact","noop","global","factory","createDefaultIsNestedEqual","comparator","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","meta","createIsCircular","areItemsEqual","isEqual","cache","cachedA","cachedB","result","merge","merged","isPlainObject","isPromiseLike","sameValueZeroEqual","ARGUMENTS_TAG","BOOLEAN_TAG","DATE_TAG","REG_EXP_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","SET_TAG","STRING_TAG","toString","createComparator","_a","areArraysEqual","areDatesEqual","areMapsEqual","areObjectsEqual","areRegExpsEqual","areSetsEqual","createIsNestedEqual","aArray","bArray","aTag","index","areArraysEqualCircular","isValueEqual","matchedIndices","indexA","aValue","aKey","hasMatch","matchIndexB","bValue","bKey","areMapsEqualCircular","OWNER","hasOwnProperty","keysA","reactElementA","reactElementB","areObjectsEqualCircular","matchIndex","areSetsEqualCircular","DEFAULT_CONFIG","DEFAULT_CIRCULAR_CONFIG","isDeepEqual","deepEqual","isShallowEqual","shallowEqual","isCircularDeepEqual","circularDeepEqual","isCircularShallowEqual","circularShallowEqual","createCustomEqual","getComparatorOptions","createCustomCircularEqual"],"sourceRoot":""}