{"version":3,"sources":["webpack:///./node_modules/element-resize-detector/src/state-handler.js","webpack:///./public/app/features/dashboard/components/SubMenu/DashboardLinksDashboard.tsx","webpack:///./public/app/features/dashboard/components/SubMenu/DashboardLinks.tsx","webpack:///./public/app/features/dashboard/components/SubMenu/Annotations.tsx","webpack:///./public/app/features/dashboard/components/SubMenu/SubMenu.tsx","webpack:///./node_modules/react-grid-layout/node_modules/react-draggable/build/web/react-draggable.min.js","webpack:///./node_modules/react-grid-layout/build/ResponsiveReactGridLayout.js","webpack:///./node_modules/element-resize-detector/src/element-resize-detector.js","webpack:///./node_modules/react-grid-layout/index.js","webpack:///./node_modules/react-resizable/build/ResizableBox.js","webpack:///./public/app/features/dashboard/components/RowOptions/RowOptionsForm.tsx","webpack:///./public/app/features/dashboard/components/RowOptions/RowOptionsModal.tsx","webpack:///./public/app/features/dashboard/components/RowOptions/RowOptionsButton.tsx","webpack:///./public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx","webpack:///./public/app/features/dashboard/components/DashboardRow/index.ts","webpack:///./node_modules/throttle-debounce/dist/index.esm.js","webpack:///./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack:///./node_modules/element-resize-detector/src/browser-detector.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/react-resizable/build/propTypes.js","webpack:///./node_modules/react-sizeme/dist/react-sizeme.js","webpack:///./node_modules/element-resize-detector/src/id-generator.js","webpack:///./node_modules/react-grid-layout/build/GridItem.js","webpack:///./node_modules/react-grid-layout/build/components/WidthProvider.js","webpack:///./node_modules/react-draggable/web/react-draggable.min.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/react-grid-layout/build/responsiveUtils.js","webpack:///./node_modules/element-resize-detector/src/listener-handler.js","webpack:///./node_modules/react-grid-layout/build/utils.js","webpack:///./node_modules/react-grid-layout/build/ReactGridLayoutPropTypes.js","webpack:///./node_modules/element-resize-detector/src/id-handler.js","webpack:///./node_modules/batch-processor/src/utils.js","webpack:///./public/app/features/dashboard/components/PanelEditor/usePanelLatestData.ts","webpack:///./public/app/features/variables/pickers/PickerRenderer.tsx","webpack:///./public/app/features/dashboard/components/SubMenu/SubMenuItems.tsx","webpack:///./node_modules/react-resizable/build/utils.js","webpack:///./node_modules/element-resize-detector/src/element-utils.js","webpack:///./node_modules/lodash.isequal/index.js","webpack:///./public/app/features/library-panels/components/LibraryPanelsView/reducer.ts","webpack:///./public/app/features/library-panels/components/LibraryPanelsView/actions.ts","webpack:///./public/app/features/library-panels/components/DeleteLibraryPanelModal/reducer.ts","webpack:///./public/app/features/library-panels/components/DeleteLibraryPanelModal/actions.ts","webpack:///./public/app/features/library-panels/components/DeleteLibraryPanelModal/DeleteLibraryPanelModal.tsx","webpack:///./public/app/features/library-panels/components/LibraryPanelCard/LibraryPanelCard.tsx","webpack:///./public/app/features/library-panels/components/LibraryPanelsView/LibraryPanelsView.tsx","webpack:///./node_modules/react-use/esm/useEffectOnce.js","webpack:///./node_modules/react-grid-layout/build/fastRGLPropsEqual.js","webpack:///./node_modules/react-resizable/index.js","webpack:///./public/app/features/dashboard/components/AddPanelWidget/AddPanelWidget.tsx","webpack:///./public/app/features/dashboard/components/AddPanelWidget/index.ts","webpack:///./node_modules/react-grid-layout/build/ReactGridLayout.js","webpack:///./public/app/features/dashboard/components/RepeatRowSelect/RepeatRowSelect.tsx","webpack:///./public/app/core/components/Card/Card.tsx","webpack:///./node_modules/react-resizable/build/Resizable.js","webpack:///./public/app/features/inspector/InspectMetadataTab.tsx","webpack:///./public/app/features/inspector/InspectSubtitle.tsx","webpack:///./public/app/features/inspector/InspectErrorTab.tsx","webpack:///./public/app/features/dashboard/components/Inspector/InspectContent.tsx","webpack:///./public/app/features/dashboard/components/Inspector/hooks.ts","webpack:///./public/app/features/dashboard/components/Inspector/PanelInspector.tsx","webpack:///./public/app/features/alerting/StateHistory.tsx","webpack:///./public/app/features/alerting/TestRuleResult.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/PanelNotSupported.tsx","webpack:///./public/app/features/alerting/AlertTab.tsx","webpack:///./public/app/core/utils/docsLinks.ts","webpack:///./public/app/features/dashboard/components/TransformationsEditor/TransformationEditor.tsx","webpack:///./public/app/features/dashboard/components/TransformationsEditor/TransformationOperationRow.tsx","webpack:///./public/app/features/dashboard/components/TransformationsEditor/TransformationOperationRows.tsx","webpack:///./public/app/features/dashboard/components/TransformationsEditor/TransformationsEditor.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/PanelEditorQueries.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/PanelEditorTabs.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/OptionsGroup.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/DynamicConfigValueEditor.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/OverrideEditor.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/OverrideFieldConfigEditor.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/DefaultFieldConfigEditor.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/PanelOptionsEditor.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/AngularPanelOptions.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/state/utils.ts","webpack:///./public/app/features/dashboard/components/VizTypePicker/VizTypePickerPlugin.tsx","webpack:///./public/app/features/dashboard/components/VizTypePicker/VizTypePicker.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/VisualizationTab.tsx","webpack:///./public/app/features/library-panels/components/LibraryPanelInfo/LibraryPanelInfo.tsx","webpack:///./public/app/features/library-panels/components/AddLibraryPanelModal/AddLibraryPanelModal.tsx","webpack:///./public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/PanelOptionsTab.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/OptionsPaneContent.tsx","webpack:///./public/app/features/dashboard/components/PanelEditor/state/selectors.ts","webpack:///./public/app/features/library-panels/components/UnlinkModal/UnlinkModal.tsx","webpack:///./public/app/features/library-panels/guard.ts","webpack:///./public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx","webpack:///./public/app/features/dashboard/state/selectors.ts","webpack:///./public/app/features/dashboard/containers/DashboardPage.tsx","webpack:///./public/app/features/dashboard/dashgrid/DashboardGrid.tsx","webpack:///./node_modules/react-grid-layout/build/calculateUtils.js","webpack:///./node_modules/element-resize-detector/src/reporter.js","webpack:///./node_modules/element-resize-detector/src/collection-utils.js","webpack:///./node_modules/batch-processor/src/batch-processor.js","webpack:///./node_modules/element-resize-detector/src/detection-strategy/scroll.js"],"names":["getState","element","module","exports","initState","cleanState","DashboardLinksDashboard","props","link","linkInfo","listRef","useRef","useState","opened","setOpened","resolvedLinks","useResolvedLinks","asDropdown","key","aria-label","selectors","components","DashboardLinks","dropDown","onClick","Date","now","className","data-placement","data-toggle","name","style","marginRight","title","getDropdownLocationCssClass","current","role","ref","length","map","resolvedLink","index","id","href","url","target","targetBlank","undefined","rel","container","LinkElement","children","rest","tooltip","content","dashboardId","tags","result","useAsync","searchForTags","value","searchHits","dependencies","getLinkSrv","sanitize","sanitizeUrl","filter","searchHit","getLinkUrl","resolveLinks","getBackendSrv","limit","search","tag","wrapperPos","parentElement","getBoundingClientRect","pos","width","left","window","innerWidth","dashboard","links","forceUpdate","useReducer","x","useEffectOnce","on","CoreEvents","timeRangeUpdated","off","submenuVisibilityChanged","getAnchorInfo","type","linkElement","linkIconMap","icon","Switch","LegacyForms","Annotations","annotations","onAnnotationChanged","visibleAnnotations","setVisibleAnnotations","useEffect","annotation","hide","enable","label","checked","onChange","SubMenuUnConnected","onAnnotationStateChanged","updatedAnnotation","list","startRefresh","isSubMenuVisible","variables","variable","VariableHide","hideVariable","this","SubMenuItems","PureComponent","SubMenu","connect","state","getSubMenuVariables","templating","displayName","t","e","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","arguments","a","push","Array","isArray","apply","join","DraggableCore","resetWarningCache","Error","isRequired","array","bool","func","number","object","string","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","u","f","toString","isNaN","g","parseInt","y","concat","h","b","toUpperCase","document","documentElement","v","keys","getOwnPropertySymbols","getOwnPropertyDescriptor","w","configurable","writable","O","S","D","parentNode","attachEvent","addEventListener","P","detachEvent","removeEventListener","j","clientHeight","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","E","clientWidth","borderLeftWidth","borderRightWidth","T","paddingTop","paddingBottom","N","paddingLeft","paddingRight","C","M","getElementById","createElement","innerHTML","getElementsByTagName","appendChild","body","classList","add","match","RegExp","k","remove","replace","selection","empty","getSelection","removeAllRanges","_","forEach","getOwnPropertyDescriptors","defineProperties","touchAction","X","axis","Y","L","targetTouches","identifier","changedTouches","I","top","clientX","scrollLeft","clientY","scrollTop","offsetParent","scale","R","lastX","deltaX","deltaY","lastY","A","findDOMNode","U","iterator","constructor","V","next","done","return","TypeError","W","B","setPrototypeOf","getPrototypeOf","__proto__","H","ReferenceError","q","G","z","start","move","stop","F","J","dragging","NaN","touchIdentifier","onMouseDown","allowAnyClick","button","disabled","Node","handle","cancel","setState","onStart","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","grid","Math","round","onDrag","MouseEvent","createEvent","initMouseEvent","onStop","handleDragStart","Component","cloneElement","Children","only","onTouchStart","onMouseUp","onTouchEnd","K","Q","assign","tt","et","st","nt","rt","ot","at","it","nodeType","transform","ut","dragged","bounds","slackX","slackY","$","right","bottom","querySelector","HTMLElement","offsetLeft","marginLeft","offsetTop","marginTop","marginBottom","min","max","Boolean","position","defaultPosition","prevPropsPosition","isElementSVG","console","warn","SVGElement","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","indexOf","propertyIsEnumerable","Z","onDragStart","onDragStop","propTypes","defaultProps","React","obj","_typeof","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","desc","set","_interopRequireWildcard","_propTypes","_interopRequireDefault","_lodash","_utils","_responsiveUtils","_ReactGridLayout","WeakMap","_extends","source","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","self","_assertThisInitialized","getIndentationValue","param","breakpoint","ResponsiveReactGridLayout","_React$Component","subClass","superClass","_inherits","protoProps","staticProps","_super","_this","_len","args","_key","generateInitialState","layout","onLayoutChange","layouts","nextProps","prevState","_cols","cols","findOrGenerateResponsiveLayout","breakpoints","compactType","_this$props","getBreakpointFromWidth","colNo","getColsFromBreakpoint","verticalCompact","prevProps","onWidthChange","_this$props2","newBreakpoint","lastBreakpoint","newCols","newLayouts","cloneLayout","synchronizeLayoutWithChildren","onBreakpointChange","margin","containerPadding","_this$props3","other","propName","validateLayout","lg","md","sm","xs","xxs","noop","elementUtilsMaker","listenerHandlerMaker","idGeneratorMaker","idHandlerMaker","reporterMaker","browserDetector","batchProcessorMaker","stateHandler","objectStrategyMaker","scrollStrategyMaker","isCollection","toArray","collection","isElement","getOption","options","defaultValue","idHandler","idGenerator","defaultIdHandler","reporter","batchProcessor","globalOptions","callOnAdd","debug","detectionStrategy","eventListenerHandler","elementUtils","desiredStrategy","importantCssRules","strategyOptions","important","isLegacyOpera","isIE","onReadyCallbacks","listenTo","elements","listener","onResizeCallback","listeners","addListener","error","elementsReady","onReadyCallback","log","isDetectable","isBusy","markBusy","makeDetectable","markAsDetectable","startSize","offsetWidth","height","offsetHeight","callback","removeListener","removeAllListeners","uninstall","initDocument","targetDocument","utils","Responsive","WidthProvider","_Resizable","_propTypes2","ResizableBox","propsWidth","propsHeight","data","size","onResize","persist","getDerivedStateFromProps","render","handleSize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","resizeHandles","transformScale","resizableProps","RowOptionsForm","repeat","onUpdate","onCancel","newRepeat","setNewRepeat","onChangeRepeat","useCallback","defaultValues","onSubmit","formData","register","RepeatRowSelect","variant","RowOptionsModal","onDismiss","styles","getStyles","isOpen","modal","stylesFactory","css","RowOptionsButton","onUpdateChange","hideModal","showModal","DashboardRow","onVariableUpdated","onToggle","toggleRow","panel","collapsed","processRepeats","onDelete","appEvents","emit","showConfirmModal","text","altActionText","onConfirm","removeRow","onAltAction","templateVariableValueUpdated","classes","classNames","getTemplateSrv","scopedVars","count","panels","canEdit","meta","throttle","delay","noTrailing","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","elapsed","exec","clear","setTimeout","debounce","atBegin","buildCssTextString","rules","seperator","trim","getObject","OBJECT_STYLE","positionCheckPerformed","mutateDom","alterPositionStyles","setProperty","removeRelativeStyles","property","getNumericalValue","cssText","tabIndex","setAttribute","onload","getDocument","contentDocument","checkForObjectDocumentTimeoutId","objectDocument","injectObject","listenerProxy","proxy","removeChild","detector","version","agent","navigator","userAgent","toLowerCase","div","all","undef","opera","objA","objB","compare","compareContext","ret","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","nodeRef","_interopDefault","ex","React__default","ReactDOM","invariant","throttleDebounce","createResizeDetector","isShallowEqual","_createClass","_objectSpread2","instances","resizeDetector","strategy","errMsg","defaultConfig","monitorWidth","monitorHeight","monitorPosition","refreshRate","refreshMode","noPlaceholder","resizeDetectorStrategy","getDisplayName","WrappedComponent","ReferenceWrapper","_Component","Placeholder","_ref","phProps","renderWrapper","SizeMeRenderer","explicitRef","disablePlaceholder","restProps","onSize","renderPlaceholder","renderProps","toRender","withSize","config","_config$monitorWidth","_config$monitorHeight","_config$monitorPositi","_config$refreshRate","_config$refreshMode","_config$noPlaceholder","_config$resizeDetecto","refreshDelayStrategy","SizeMeRenderWrapper","SizeAwareComponent","_getPrototypeOf2","domEl","err","callbackState","cp","np","el","_el$getBoundingClient","hasSizeChanged","strategisedGetState","strategisedSetState","determineStrategy","handleDOMNode","checkIfSizeChanged","found","isSameNode","enableSSRBehaviour","noPlaceholders","refCallback","SizeMe","SizeAware","sizeMeConfig","createComponent","currentSizeMeConfig","prevSizeMeConfig","idCount","generate","_react","_reactDom","_reactDraggable","_reactResizable","_calculateUtils","_ReactGridLayoutPropTypes","_classnames","GridItem","resizing","newPosition","parentRect","clientRect","cLeft","pLeft","cTop","pTop","_calcXY","calcXY","getPositionParams","_ref2","isBounded","containerWidth","positionParams","rowHeight","bottomBoundary","calcGridItemWHPx","clamp","colWidth","calcGridColWidth","rightBoundary","_calcXY2","_ref3","_this$props4","_this$state$dragging","_calcXY3","callbackData","onResizeHandler","nextState","droppingPosition","oldPosition","calcGridItemPosition","fastPositionEqual","useCSSTransforms","moveDroppingItem","prevDroppingPosition","currentNode","shouldDrag","maxRows","_this$props5","usePercentages","setTransform","setTopLeft","perc","child","isDraggable","isResizable","_this$props6","minW","minH","maxW","maxH","resizeHandle","maxWidth","mins","maxes","Infinity","Resizable","_ref4","handlerName","handler","_this$props7","_this$props8","_calcWH","calcWH","_this$props9","newChild","static","dropping","cssTransforms","createStyle","mixinResizable","mixinDraggable","resizeHandlesType","resizeHandleType","ComposedComponent","_class","_temp","mounted","onWindowResize","measureBeforeMount","condition","format","argIndex","framesToPop","sorted","sortBreakpoints","matching","len","breakpointName","breakpointsSorted","breakpointsAbove","slice","compact","correctBounds","sort","eventListeners","getListeners","splice","newLayout","cloneLayoutItem","childrenEqual","collides","compactItem","getLayoutItem","getFirstCollision","getAllCollisions","getStatics","moveElement","moveElementAwayFromCollision","num","translate","WebkitTransform","MozTransform","msTransform","OTransform","sortLayoutItems","sortLayoutItemsByRowCol","sortLayoutItemsByColRow","initialLayout","exists","String","_grid","autoBindHandlers","fns","fastRGLPropsEqual","bottomY","layoutItem","moved","l1","l2","compareWith","out","heightWidth","resolveCompactionCollision","item","moveToCoord","sizeProp","otherItem","fullLayout","compactH","collidesWith","isUserAction","preventCollision","oldX","oldY","reverse","collisions","collision","itemToMove","compactV","fakeItem","contextName","subProps","_default","autoSize","draggableCancel","draggableHandle","isDroppable","onDrop","droppingItem","innerRef","usePanelLatestData","querySubscription","latestData","setLatestData","getQueryRunner","getData","subscribe","unsubscribe","withFieldConfig","withTransforms","isLoading","LoadingState","Loading","hasSeries","series","PickerRenderer","PickerToRender","useMemo","variableAdapters","picker","PickerLabel","labelOrName","dontHide","description","placement","pages","Dashboard","submenuItemLabels","visibleVariables","setVisibleVariables","submenuItem","busy","argsTag","mapTag","objectTag","setTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","root","Function","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","predicate","mapToArray","setToArray","uid","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","reIsNative","Buffer","Uint8Array","symToStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","entry","ListCache","MapCache","SetCache","values","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","test","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","ArrayBuffer","resolve","ctorString","isLength","baseUnary","initialLibraryPanelsViewState","loadingState","NotStarted","libraryPanels","searchString","totalCount","perPage","page","numberOfPages","currentPanelId","initSearch","createAction","searchCompleted","changeSearchString","changePage","libraryPanelsViewReducer","action","payload","ceil","Done","searchForLibraryPanels","dispatch","subscription","Subscription","dataObservable","from","getLibraryPanels","excludeUid","pipe","mergeMap","of","catchError","finalize","share","merge","timer","mapTo","takeUntil","deleteLibraryPanel","apiDeleteLibraryPanel","asyncDispatcher","initialDeleteLibraryPanelModalState","dashboardTitles","deleteLibraryPanelModalReducer","dashboards","getConnectedDashboards","libraryPanel","getLibraryPanelConnectedDashboards","connectedDashboards","dashboardIds","DeleteLibraryPanelModal","useStyles","getModalStyles","asyncDispatch","connected","LoadingIndicator","Confirm","modalText","HasConnectedDashboards","suffix","textInfo","myTable","LibraryPanelCard","formatDate","showSecondaryActions","showDeletionModal","setShowDeletionModal","heading","Figure","panelIcon","Meta","detailIcon","updated","updatedBy","Actions","SecondaryActions","tooltipPlacement","theme","colors","textWeak","tagList","LibraryPanelsView","onCreateNewPanel","onClickCard","currentPanel","getPanelViewStyles","useDebounce","cx","searchHeader","placeholder","prefix","autoFocus","event","currentTarget","libraryPanelList","pagination","currentPage","onNavigate","hideWhenSinglePage","newPanelButton","spacing","effect","isEqualImpl","mapDispatchToProps","addPanel","updateLocation","AddPanelWidget","addPanelView","setAddPanelView","onAddLibraryPanel","panelInfo","gridPos","newPanel","model","toPanelModelLibraryPanel","removePanel","copiedPanelPlugins","chain","hideFromList","copiedPanels","copiedPanelJson","store","LS_PANEL_COPY_KEY","copiedPanel","JSON","parse","pluginInfo","find","pluginCopy","cloneDeep","defaults","sortBy","getCopiedPanelPlugins","evt","onBack","libraryPanelsWrapper","dateString","actionsWrapper","actionsRow","query","editPanel","partial","AddDashboard","addNewPanel","featureToggles","panelLibrary","panelPluginInfo","delete","AddPanelWidgetHandle","headerRow","backButton","surface","pulsate","keyframes","bodyBg","formFocusOutline","tinycolor","darken","toHexString","bg2","border","radius","styleMixins","hoverColor","typography","weight","semibold","xl","noMargin","_GridItem","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","arr2","isFirefox","ReactGridLayout","context","activeDrag","oldDragItem","oldLayout","oldResizeItem","droppingDOMNode","nativeEvent","_e$nativeEvent","layerX","layerY","_this$state$droppingP","calculatedPosition","stopPropagation","dragEnterCounter","removeDroppingPlaceholder","newLayoutBase","propsLayout","onLayoutMaybeChanged","nbRow","containerPaddingY","_ref5","_this$state","hasCollisions","leastX","leastY","Number","isFinite","_ref6","_this$state2","isDroppingItem","_this$state3","draggable","resizable","resizeHandlesOptions","bounded","_this2","mergedClassName","mergedStyle","containerHeight","onDragLeave","onDragEnter","onDragOver","processGridItem","useSelector","getVariables","variableOptions","unshift","onSelectChange","option","Card","logoUrl","labels","actions","ariaLabel","mainClassName","src","_proto","componentWillUnmount","resetData","aspectRatio","lastHandleRect","slack","runConstraints","ratio","_ratio","oldW","oldH","slackW","slackH","resizeHandler","canDragX","canDragY","axisV","axisH","handleRect","_this2$runConstraints","dimensionsChanged","cb","renderResizeHandle","resizeHandleAxis","_this3","handleAxis","InspectMetadataTab","metadataDatasource","MetadataInspector","datasource","InspectSubtitle","tab","tabs","onSelectTab","useTheme","request","queryCount","targets","requestTime","endTime","startTime","formatted","formattedValueToString","getValueFormat","formatStats","tabsBar","active","onChangeTab","InspectErrorTab","json","open","InspectContent","plugin","isDataLoading","dataOptions","defaultTab","onDataOptionsChange","onClose","InspectTab","Data","currentTab","setCurrentTab","getPanelInspectorStyles","activeTab","subtitle","expandable","InspectDataTab","onOptionsChange","autoHeightMin","tabContent","InspectJSONTab","Stats","InspectStatsTab","timeZone","getTimezone","Query","QueryInspector","onRefreshQuery","refresh","PanelInspector","panelState","useDispatch","setDataOptions","metaDs","frame","custom","getDataSourceSrv","dataSource","useDatasourceMetadata","supportsDataQuery","useInspectTabs","inspect","inspectTab","StateHistory","stateHistoryItems","clearHistory","panelId","onRefresh","post","then","items","stateModel","alertDef","getStateDisplayModel","newState","time","info","getAlertAnnotationInfo","confirmVariant","confirmText","stateClass","iconClass","alertName","TestRuleResult","allNodesExpanded","testRuleResponse","setFormattedJson","formattedJson","getTextForClipboard","stringify","onClipboardSuccess","AppEvents","alertSuccess","onToggleExpand","getNrOfOpenNodes","renderExpandCollapse","collapse","expand","testRule","getSaveModelClone","dashPanel","editSourceId","getSaveModel","openNodes","CopyToClipboard","onSuccess","onDidRender","PanelNotSupported","propsDispatch","onBackToQueries","PanelEditorTabId","Layout","justify","UnConnectedAlertTab","validationMessage","showStateHistory","showDeleteConfirmation","showTestRule","onAngularPanelUpdated","onAddAlert","panelCtrl","_enableAlert","component","digest","onToggleModal","prop","renderTestRule","onClickBackdrop","renderDeleteConfirmation","alert","thresholds","alertState","renderStateHistory","loadAlertTab","destroy","angularPanelComponent","scope","getScope","$$childHead","ctrl","loader","getAngularLoader","scopeProps","load","getAlertingValidationMessage","transformations","hasTransformations","buttonIcon","buttonTitle","padding","AlertTab","severity","AppNotificationSeverity","EmptyListCTA","angularComponent","DOCS_LINKS","DocsId","Transformations","FieldConfig","FieldConfigOverrides","getDocsLink","TransformationEditor","debugMode","uiConfig","configs","input","setInput","output","setOutput","inputTransforms","transformation","outputTransforms","inputSubscription","transformDataFrame","outputSubscription","before","editor","defaultOptions","opts","TransformTab","transformationEditor","debugWrapper","transformationEditorDebugger","debugTitle","debugJson","debugSeparator","debugBorder","isLight","palette","gray85","gray15","textBlue","iconRow","fontFamily","monospace","white","gray05","TransformationOperationRow","onRemove","showDebug","setShowDebug","QueryOperationRow","align","QueryOperationAction","TransformationOperationRows","standardTransformersRegistry","getIfExists","UnThemedTransformationsEditor","onSearchChange","onSearchKeyDown","lower","filtered","onTransformationAdd","keyCode","showPicker","getTransformationNextId","nextId","existingIds","startsWith","selectable","onTransformationChange","onTransformationRemove","onDragEnd","destination","startIndex","endIndex","update","removed","renderTransformationEditors","droppableId","direction","provided","droppableProps","ids","buildTransformationIds","transformationCounters","transformationIds","panelData","setTransformations","xforms","noTransforms","grow","LocalStorageValueProvider","storageKey","isDismissed","Transforms","searchInput","onKeyDown","newTransform","hasTransforms","renderTransformsPicker","TransformationCard","getTransformationCardStyles","card","bg3","TransformationsEditor","withTheme","PanelEditorQueries","onRunQueries","onOpenQueryInspector","getLocationSrv","dataSourceChanged","updateQueries","buildQueryOptions","queries","maxDataPoints","minInterval","interval","timeRange","timeFrom","shift","timeShift","hideTimeOverride","QueryGroup","queryRunner","PanelEditorTabs","eventSubs","triggerForceUpdate","getCounter","Alert","Transform","getTransformations","events","PanelQueriesChangedEvent","PanelTransformationsChangedEvent","getPanelEditorTabsStyles","tabBar","counter","panelBg","pageHeaderBorder","OptionsGroup","defaultToClosed","renderTitle","nested","persistMe","CollapsibleSectionWithPersistence","memo","useLocalStorage","getOptionGroupStorageKey","setValue","isExpanded","CollapsibleSection","toggleExpand","box","header","toggle","isNested","formSpacingBase","formLabel","PANEL_EDITOR_UI_STATE_STORAGE_KEY","DynamicConfigValueEditor","registry","isCollapsible","isSystemOverride","renderLabel","includeDescription","includeCounter","category","getItemsCount","override","collapsibleOverrideEditor","COLLECTION_STANDARD_PROPERTIES","FieldConfigProperty","Thresholds","Links","Mappings","OverrideEditor","matcherUi","fieldMatchersUI","matcher","properties","matcherLabel","onMatcherConfigChange","matcherConfig","onDynamicConfigValueChange","onDynamicConfigValueRemove","onDynamicConfigValueAdd","propertyConfig","configPropertiesOptions","hideFromOverrides","isSystemOverrideGuard","propertyNames","matcherOptions","optionsToLabel","overrideDetails","includes","getSuggestions","getDataLinksVariableSuggestions","propertyPickerWrapper","isFullWidth","regular","unknownLabel","OverrideFieldConfigEditor","OverridesConfigEditor","overrides","fieldConfigRegistry","onOverrideChange","overrideIndex","onOverrideRemove","renderOverrides","excludeFromPicker","onOverrideAdd","DefaultFieldConfigEditor","onDefaultValueChange","isCustom","updateDefaultFieldConfigValue","renderEditor","categoryItemCount","showIf","hideFromDefaults","path","PanelEditor","FieldOptions","propertyEditor","GENERAL_OPTIONS_CATEGORY","groupedConfigs","groupBy","FieldConfigEditor","groupName","group","groupItemsCounter","countGroupItems","hiddenPropertiesCount","shouldRenderGroup","PanelOptionsEditor","eventBus","replaceVariables","optionEditors","onOptionChange","newOptions","lodashSet","getPanelOptionsVariableSuggestions","optionsToShow","lodashGet","AngularPanelOptionsUnconnected","loadAngularOptions","cleanUpAngularOptions","angularOptions","changePanelPlugin","initEditMode","onPluginTypeChange","template","editorTabs","getBool","toggleOptionGroup","saveSectionOpenState","elem","AngularPanelOptions","VizTypePickerPlugin","isCurrent","cssClass","PluginState","deprecated","PluginVisualization","bg","itemContent","img","logos","small","badge","border2","focusCss","bg1","PanelPluginBadge","display","color","alpha","beta","getPanelStateBadgeDisplayModel","isUnsignedPluginSignature","signature","PluginSignatureBadge","status","getAllPanelPluginMeta","allPanels","filterPluginList","pluginsList","searchQuery","first","VizTypePicker","onTypeChange","getFilteredPluginList","filteredPluginList","hasResults","renderList","matchesQuery","renderVizPlugin","VisualizationTabUnconnected","forwardRef","onToggleOptionGroup","setSearchQuery","onKeyPress","searchClear","Field","gray33","gray60","VisualizationTab","plugins","LibraryPanelInformation","libraryPanelInfo","avatarUrl","userAvatar","alt","textSemiWeak","AddLibraryPanelModal","initialFolderId","folderId","setFolderId","panelTitle","setPanelTitle","saveLibraryPanel","usePanelSave","FolderPicker","buttons","PanelLibraryOptionsGroup","showingAddPanelModal","setShowingAddPanelModal","useLibraryPanel","restoreModel","pick","hasChanged","publish","onAddToPanelLibrary","panelLibraryTitle","PanelOptionsTab","onPanelConfigChange","onPanelOptionsChanged","visTabInputRef","linkVariablesSuggestions","getPanelLinksVariableSuggestions","onRepeatRowSelectChange","panelLinksCount","maxPerRowOptions","isLibraryPanel","onBlur","transparent","focus","getOptions","angularPanelCtrl","suggestions","repeatDirection","maxPerRow","OptionsPaneContent","onFieldConfigsChange","setActiveTab","isSearching","setSearchMode","renderFieldOptions","fieldConfig","getFieldConfig","renderFieldOverrideOptions","showMainTab","skipDataQuery","panelOptionsPane","OptionsPane","TabsBarContent","overridesCount","defaultStyles","transition","transitionStyles","entered","Transition","in","timeout","appear","searchWrapper","searchRemoveIcon","tabSelections","isEmpty","select","tabsButton","legacyOptions","getPanelEditorTabs","memoizeOne","location","Visualize","getConfig","alertingEnabled","UnlinkModal","isPanelModelLibraryPanel","initPanelEditor","exitPanelEditor","updateSourcePanel","panelEditorCleanUp","setDiscardChanges","updatePanelEditorUIState","updateTimeZoneForSession","notifyApp","panelEditor","getPanel","getPanelStateById","initDone","uiState","ui","connector","onDiscard","onOpenDashboardSettings","editview","onSaveDashboard","showModalReact","SaveDashboardModalProxy","onSaveLibraryPanel","saveAndRefreshLibraryPanel","createPanelLibrarySuccessNotification","createPanelLibraryErrorNotification","statusText","SaveLibraryPanelModal","onFieldConfigChange","updateFieldConfig","updateOptions","onPanelConfigChanged","configKey","onDisplayModeChange","mode","onTogglePanelOptions","isPanelOptionsVisible","renderPanel","mainPaneWrapper","mainPaneWrapperNoTabs","renderPanelToolbar","panelWrapper","centeringContainer","calculatePanelSize","DashboardPanel","isEditing","isViewing","isInView","sourcePanel","PanelOptionsChangedEvent","tabsWrapper","DataPane","variablesWrapper","panelToolbar","renderTemplateVariables","displayModes","DashNavTimeControls","onChangeTimeZone","editorActions","rightPaneSize","General","onGoBack","renderEditorActions","verticalSplitPanesWrapper","SplitPaneWrapper","leftPaneComponents","renderPanelAndEditor","rightPaneComponents","renderOptionsPane","updateUiState","rightPaneVisible","paneSpacing","zIndex","sidemenu","dashboardBg","toolbarLeft","DashboardPage","viewPanel","showLoadingState","rememberScrollTop","setScrollTop","updateScrollTop","onAddPanel","cancelVariables","initDashboard","$injector","$scope","urlSlug","urlUid","urlType","urlFolderId","routeInfo","fixUrl","cleanUpDashboardAndVariables","setPanelFullscreenClass","urlEditPanelId","urlViewPanelId","Branding","AppTitle","dashboardWatcher","setEditingState","getPanelByIdFromUrlParam","canEditPanel","createErrorNotification","initViewPanel","exitViewPanel","triggerPanelsRendering","urlPanelId","expandParentRowFor","getPanelById","isFullscreen","toggleClass","inline","initPhase","initError","getMessageFromError","inspectPanelId","inspectPanel","isInitSlow","isPanelEditorOpen","renderSlowInitState","approximateScrollTop","getInspectPanel","hideHorizontalTrack","updateAfterMountMs","renderInitFailedState","mapStateToProps","routeParams","slug","getModel","hot","lastGridWidth","ignoreNextWidthChange","SizedReactLayoutGrid","sizeMe","abs","GRID_CELL_VMARGIN","GRID_COLUMN_COUNT","GRID_CELL_HEIGHT","DashboardGrid","panelMap","panelRef","newPos","updateGridPos","sortPanelsByGridPos","oldItem","newItem","viewTop","innerHeight","otherPanelInFullscreen","DashboardPanelsChangedEvent","stringId","panelPos","panelElements","panelClasses","buildLayout","renderPanels","gridUnits","colOrRowSize","marginPx","lowerBound","upperBound","quiet","attachFunction","Batch","batch","topLevel","bottomLevel","level","fn","asyncProcess","autoProcess","asyncFrameHandler","isProcessing","processBatch","processingBatch","processBatchAsync","force","localAsyncProcess","hasState","scrollbarSizes","insertBefore","firstChild","widthSize","heightSize","getScrollbarSizes","styleId","containerClass","containerAnimationClass","containerAnimationActiveClass","method","head","styleElement","injectStyle","injectScrollStyle","addEvent","removeEvent","getExpandElement","childNodes","getShrinkElement","isUnrendered","getStyle","elementStyle","widthCSS","heightCSS","storeStyle","storeCurrentSize","lastWidth","lastHeight","getWidthOffset","getHeightOffset","getExpandWidth","getExpandHeight","positionScrollbars","shrink","expandWidth","expandHeight","shrinkWidth","getShrinkWidth","shrinkHeight","getShrinkHeight","injectContainerElement","addAnimationClass","onAnimationStart","onRendered","injectScrollElements","rootContainer","scrollbarWidth","scrollbarHeight","containerContainerStyle","containerStyle","expandStyle","shrinkStyle","expandChildStyle","shrinkChildStyle","containerContainer","expandChild","shrinkChild","dir","onExpandScroll","onShrinkScroll","onExpand","onShrink","registerListenersAndPositionElements","updateChildSizes","getExpandChildElement","updateDetectorElements","sizeChanged","areElementsInjected","notifyListenersIfNeeded","lastNotifiedWidth","lastNotifiedHeight","handleScroll","finalizeDomMutation","ready","install","contains","isInDocument","isDetached"],"mappings":"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","file":"DashboardPage.3817b8b78f33fc1605dc.js","sourcesContent":["\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n element[prop] = {};\n return getState(element);\n}\n\nfunction getState(element) {\n return element[prop];\n}\n\nfunction cleanState(element) {\n delete element[prop];\n}\n\nmodule.exports = {\n initState: initState,\n getState: getState,\n cleanState: cleanState\n};\n","import React, { useRef, useState } from 'react';\nimport { Icon, Tooltip } from '@grafana/ui';\nimport { sanitize, sanitizeUrl } from '@grafana/data/src/text/sanitize';\nimport { getBackendSrv } from 'app/core/services/backend_srv';\nimport { getLinkSrv } from '../../../panel/panellinks/link_srv';\nimport { DashboardLink } from '../../state/DashboardModel';\nimport { DashboardSearchHit } from 'app/features/search/types';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { useAsync } from 'react-use';\n\ninterface Props {\n link: DashboardLink;\n linkInfo: { title: string; href: string };\n dashboardId: any;\n}\n\nexport const DashboardLinksDashboard: React.FC = (props) => {\n const { link, linkInfo } = props;\n const listRef = useRef(null);\n const [opened, setOpened] = useState(0);\n const resolvedLinks = useResolvedLinks(props, opened);\n\n if (link.asDropdown) {\n return (\n \n <>\n setOpened(Date.now())}\n className=\"gf-form-label gf-form-label--dashlink\"\n data-placement=\"bottom\"\n data-toggle=\"dropdown\"\n >\n \n {linkInfo.title}\n \n
    \n {resolvedLinks.length > 0 &&\n resolvedLinks.map((resolvedLink, index) => {\n return (\n
  • \n \n {resolvedLink.title}\n \n
  • \n );\n })}\n
\n \n
\n );\n }\n\n return (\n <>\n {resolvedLinks.length > 0 &&\n resolvedLinks.map((resolvedLink, index) => {\n return (\n \n \n \n {resolvedLink.title}\n \n \n );\n })}\n \n );\n};\n\ninterface LinkElementProps {\n link: DashboardLink;\n 'aria-label': string;\n key: string;\n children: JSX.Element;\n}\n\nconst LinkElement: React.FC = (props) => {\n const { link, children, ...rest } = props;\n\n return (\n
\n {link.tooltip && {children}}\n {!link.tooltip && <>{children}}\n
\n );\n};\n\nconst useResolvedLinks = ({ link, dashboardId }: Props, opened: number): ResolvedLinkDTO[] => {\n const { tags } = link;\n const result = useAsync(() => searchForTags(tags), [tags, opened]);\n if (!result.value) {\n return [];\n }\n return resolveLinks(dashboardId, link, result.value);\n};\n\ninterface ResolvedLinkDTO {\n id: any;\n url: string;\n title: string;\n}\n\nexport async function searchForTags(\n tags: any[],\n dependencies: { getBackendSrv: typeof getBackendSrv } = { getBackendSrv }\n): Promise {\n const limit = 100;\n const searchHits: DashboardSearchHit[] = await dependencies.getBackendSrv().search({ tag: tags, limit });\n\n return searchHits;\n}\n\nexport function resolveLinks(\n dashboardId: any,\n link: DashboardLink,\n searchHits: DashboardSearchHit[],\n dependencies: { getLinkSrv: typeof getLinkSrv; sanitize: typeof sanitize; sanitizeUrl: typeof sanitizeUrl } = {\n getLinkSrv,\n sanitize,\n sanitizeUrl,\n }\n): ResolvedLinkDTO[] {\n return searchHits\n .filter((searchHit) => searchHit.id !== dashboardId)\n .map((searchHit) => {\n const id = searchHit.id;\n const title = dependencies.sanitize(searchHit.title);\n const resolvedLink = dependencies.getLinkSrv().getLinkUrl({ ...link, url: searchHit.url });\n const url = dependencies.sanitizeUrl(resolvedLink);\n\n return { id, title, url };\n });\n}\n\nfunction getDropdownLocationCssClass(element: HTMLElement | null) {\n if (!element) {\n return 'invisible';\n }\n\n const wrapperPos = element.parentElement!.getBoundingClientRect();\n const pos = element.getBoundingClientRect();\n\n if (pos.width === 0) {\n return 'invisible';\n }\n\n if (wrapperPos.left + pos.width + 10 > window.innerWidth) {\n return 'pull-left';\n } else {\n return 'pull-right';\n }\n}\n","import React, { FC, useReducer } from 'react';\nimport { Icon, IconName, Tooltip } from '@grafana/ui';\nimport { sanitize, sanitizeUrl } from '@grafana/data/src/text/sanitize';\nimport { DashboardLinksDashboard } from './DashboardLinksDashboard';\nimport { getLinkSrv } from '../../../panel/panellinks/link_srv';\n\nimport { DashboardModel } from '../../state';\nimport { DashboardLink } from '../../state/DashboardModel';\nimport { linkIconMap } from '../LinksSettings/LinkSettingsEdit';\nimport { useEffectOnce } from 'react-use';\nimport { CoreEvents } from 'app/types';\nimport { selectors } from '@grafana/e2e-selectors';\n\nexport interface Props {\n dashboard: DashboardModel;\n links: DashboardLink[];\n}\n\nexport const DashboardLinks: FC = ({ dashboard, links }) => {\n if (!links.length) {\n return null;\n }\n\n // Emulate forceUpdate (https://reactjs.org/docs/hooks-faq.html#is-there-something-like-forceupdate)\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n useEffectOnce(() => {\n dashboard.on(CoreEvents.timeRangeUpdated, forceUpdate);\n\n return () => {\n dashboard.off(CoreEvents.timeRangeUpdated, forceUpdate);\n };\n });\n\n useEffectOnce(() => {\n dashboard.on(CoreEvents.submenuVisibilityChanged, forceUpdate);\n return () => {\n dashboard.off(CoreEvents.submenuVisibilityChanged, forceUpdate);\n };\n });\n\n return (\n <>\n {links.map((link: DashboardLink, index: number) => {\n const linkInfo = getLinkSrv().getAnchorInfo(link);\n const key = `${link.title}-$${index}`;\n\n if (link.type === 'dashboards') {\n return ;\n }\n\n const linkElement = (\n \n \n {sanitize(linkInfo.title)}\n \n );\n\n return (\n
\n {link.tooltip ? {linkElement} : linkElement}\n
\n );\n })}\n \n );\n};\n","import React, { FunctionComponent, useEffect, useState } from 'react';\nimport { LegacyForms } from '@grafana/ui';\nimport { AnnotationQuery } from '@grafana/data';\nconst { Switch } = LegacyForms;\n\ninterface Props {\n annotations: AnnotationQuery[];\n onAnnotationChanged: (annotation: any) => void;\n}\n\nexport const Annotations: FunctionComponent = ({ annotations, onAnnotationChanged }) => {\n const [visibleAnnotations, setVisibleAnnotations] = useState([]);\n useEffect(() => {\n setVisibleAnnotations(annotations.filter((annotation) => annotation.hide !== true));\n }, [annotations]);\n\n if (visibleAnnotations.length === 0) {\n return null;\n }\n\n return (\n <>\n {visibleAnnotations.map((annotation: any) => {\n return (\n \n onAnnotationChanged(annotation)}\n />\n \n );\n })}\n \n );\n};\n","import React, { PureComponent } from 'react';\nimport { connect, MapStateToProps } from 'react-redux';\nimport { StoreState } from '../../../../types';\nimport { getSubMenuVariables } from '../../../variables/state/selectors';\nimport { VariableHide, VariableModel } from '../../../variables/types';\nimport { DashboardModel } from '../../state';\nimport { DashboardLinks } from './DashboardLinks';\nimport { Annotations } from './Annotations';\nimport { SubMenuItems } from './SubMenuItems';\nimport { DashboardLink } from '../../state/DashboardModel';\nimport { AnnotationQuery } from '@grafana/data';\n\ninterface OwnProps {\n dashboard: DashboardModel;\n links: DashboardLink[];\n annotations: AnnotationQuery[];\n}\n\ninterface ConnectedProps {\n variables: VariableModel[];\n}\n\ninterface DispatchProps {}\n\ntype Props = OwnProps & ConnectedProps & DispatchProps;\n\nclass SubMenuUnConnected extends PureComponent {\n onAnnotationStateChanged = (updatedAnnotation: any) => {\n // we're mutating dashboard state directly here until annotations are in Redux.\n for (let index = 0; index < this.props.dashboard.annotations.list.length; index++) {\n const annotation = this.props.dashboard.annotations.list[index];\n if (annotation.name === updatedAnnotation.name) {\n annotation.enable = !annotation.enable;\n break;\n }\n }\n this.props.dashboard.startRefresh();\n this.forceUpdate();\n };\n\n isSubMenuVisible = () => {\n if (this.props.dashboard.links.length > 0) {\n return true;\n }\n\n const visibleVariables = this.props.variables.filter((variable) => variable.hide !== VariableHide.hideVariable);\n if (visibleVariables.length > 0) {\n return true;\n }\n\n const visibleAnnotations = this.props.dashboard.annotations.list.filter((annotation) => annotation.hide !== true);\n return visibleAnnotations.length > 0;\n };\n\n render() {\n const { dashboard, variables, links, annotations } = this.props;\n\n if (!this.isSubMenuVisible()) {\n return null;\n }\n\n return (\n
\n \n \n
\n {dashboard && }\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToProps = (state) => {\n return {\n variables: getSubMenuVariables(state.templating.variables),\n };\n};\n\nexport const SubMenu = connect(mapStateToProps)(SubMenuUnConnected);\nSubMenu.displayName = 'SubMenu';\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){t.exports=n(5)()},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}function X(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function Y(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function L(t,e,n){var r=\"number\"==typeof e?function(t,e){return t.targetTouches&&f(t.targetTouches,function(t){return e===t.identifier})||t.changedTouches&&f(t.changedTouches,function(t){return e===t.identifier})}(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=I(n);return function(t,e,n){var r=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect();return{x:(t.clientX+e.scrollLeft-r.left)/n,y:(t.clientY+e.scrollTop-r.top)/n}}(r||t,n.props.offsetParent||o.offsetParent||o.ownerDocument.body,n.props.scale)}function R(t,e,n){var r=t.state,o=!d(r.lastX),a=I(t);return o?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}}function A(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function I(t){var e=u.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}function U(t){return(U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function V(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function W(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!D(t.target,n.props.handle,e)||n.props.cancel&&D(t.target,n.props.cancel,e))){var o=function(t){return t.targetTouches&&t.targetTouches[0]?t.targetTouches[0].identifier:t.changedTouches&&t.changedTouches[0]?t.changedTouches[0].identifier:void 0}(t);n.setState({touchIdentifier:o});var a=L(t,o,H(n));if(null!=a){var i=a.x,s=a.y,c=R(H(n),i,s);n.props.onStart,!1!==n.props.onStart(t,c)&&(n.props.enableUserSelectHack&&M(r),n.setState({dragging:!0,lastX:i,lastY:s}),x(r,F.move,n.handleDrag),x(r,F.stop,n.handleDragStop))}}}),G(H(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r,o,a,i=e.x,s=e.y;if(Array.isArray(n.props.grid)){var u=i-n.state.lastX,c=s-n.state.lastY,l=V((r=n.props.grid,o=u,a=c,[Math.round(o/r[0])*r[0],Math.round(a/r[1])*r[1]]),2);if(u=l[0],c=l[1],!u&&!c)return;i=n.state.lastX+u,s=n.state.lastY+c}var f=R(H(n),i,s);if(!1!==n.props.onDrag(t,f))n.setState({lastX:i,lastY:s});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var p=document.createEvent(\"MouseEvents\");p.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(p)}}}),G(H(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=L(t,n.state.touchIdentifier,H(n));if(null!=e){var r=e.x,o=e.y,a=R(H(n),r,o),i=u.a.findDOMNode(H(n));i&&n.props.enableUserSelectHack&&k(i.ownerDocument),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(P(i.ownerDocument,F.move,n.handleDrag),P(i.ownerDocument,F.stop,n.handleDragStop))}}}),G(H(n),\"onMouseDown\",function(t){return F=z.mouse,n.handleDragStart(t)}),G(H(n),\"onMouseUp\",function(t){return F=z.mouse,n.handleDragStop(t)}),G(H(n),\"onTouchStart\",function(t){return F=z.touch,n.handleDragStart(t)}),G(H(n),\"onTouchEnd\",function(t){return F=z.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&q(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;P(e,z.mouse.move,this.handleDrag),P(e,z.touch.move,this.handleDrag),P(e,z.mouse.stop,this.handleDragStop),P(e,z.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&k(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:_(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&W(n.prototype,r),a&&W(n,a),e}();function K(t){return(K=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Q(){return(Q=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=t[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function et(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&it(t,e)}(e,o.a.Component),at(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:{x:n.x,y:n.y,prevPropsPosition:et({},n)}}}]),at(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,s=e.defaultClassNameDragged,u=e.position,c=e.positionOffset,f=(e.scale,Z(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),p={},d=null,g=!Boolean(u)||this.state.dragging,y=u||r,h={x:X(this)&&g?this.state.x:y.x,y:Y(this)&&g?this.state.y:y.y};this.state.isElementSVG?d=function(t,e){return C(t,e,\"\")}(h,c):p=function(t,e){var n=C(t,e,\"px\");return w({},b(\"transform\",m),n)}(h,c);var v=l()(n.props.className||\"\",a,(st(t={},i,this.state.dragging),st(t,s,this.state.dragged),t));return o.a.createElement(J,Q({},f,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:v,style:et({},n.props.style,{},p),transform:d}))}}]),e}();st(ut,\"displayName\",\"Draggable\"),st(ut,\"propTypes\",et({},J.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:y,style:y,transform:y})),st(ut,\"defaultProps\",et({},J.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))}])});\n//# sourceMappingURL=react-draggable.min.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.isequal\"));\n\nvar _utils = require(\"./utils\");\n\nvar _responsiveUtils = require(\"./responsiveUtils\");\n\nvar _ReactGridLayout = _interopRequireDefault(require(\"./ReactGridLayout\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar type = function type(obj) {\n return 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 */\n\n\nfunction getIndentationValue\n/*:: */\n(param\n/*: { [key: string]: T } | T*/\n, breakpoint\n/*: string*/\n)\n/*: T*/\n{\n // $FlowIssue doesn't seem to understand this\n if (param == null) return null;\n return Array.isArray(param) ? param : param[breakpoint];\n}\n/*:: type State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: { [key: string]: Layout }\n};*/\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: (Layout, { [key: Breakpoint]: Layout }) => void,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: ?[number, number]\n ) => void\n|};*/\n\n\nvar ResponsiveReactGridLayout = /*#__PURE__*/function (_React$Component) {\n _inherits(ResponsiveReactGridLayout, _React$Component);\n\n var _super = _createSuper(ResponsiveReactGridLayout);\n\n function ResponsiveReactGridLayout() {\n var _this;\n\n _classCallCheck(this, ResponsiveReactGridLayout);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", _this.generateInitialState());\n\n _defineProperty(_assertThisInitialized(_this), \"onLayoutChange\", function (layout\n /*: Layout*/\n ) {\n _this.props.onLayoutChange(layout, _objectSpread(_objectSpread({}, _this.props.layouts), {}, _defineProperty({}, _this.state.breakpoint, layout)));\n });\n\n return _this;\n }\n\n _createClass(ResponsiveReactGridLayout, [{\n key: \"generateInitialState\",\n value: function generateInitialState()\n /*: State*/\n {\n var _this$props = this.props,\n width = _this$props.width,\n breakpoints = _this$props.breakpoints,\n layouts = _this$props.layouts,\n cols = _this$props.cols;\n var breakpoint = (0, _responsiveUtils.getBreakpointFromWidth)(breakpoints, width);\n var colNo = (0, _responsiveUtils.getColsFromBreakpoint)(breakpoint, cols); // verticalCompact compatibility, now deprecated\n\n var compactType = this.props.verticalCompact === false ? null : this.props.compactType; // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n\n var initialLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, breakpoint, breakpoint, colNo, compactType);\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps\n /*: Props<*>*/\n ) {\n // Allow parent to set width or breakpoint directly.\n if (this.props.width != prevProps.width || this.props.breakpoint !== prevProps.breakpoint || !(0, _lodash.default)(this.props.breakpoints, prevProps.breakpoints) || !(0, _lodash.default)(this.props.cols, prevProps.cols)) {\n this.onWidthChange(prevProps);\n }\n } // wrap layouts so we do not need to pass layouts to child\n\n }, {\n key: \"onWidthChange\",\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 value: function onWidthChange(prevProps\n /*: Props<*>*/\n ) {\n var _this$props2 = this.props,\n breakpoints = _this$props2.breakpoints,\n cols = _this$props2.cols,\n layouts = _this$props2.layouts,\n compactType = _this$props2.compactType;\n var newBreakpoint = this.props.breakpoint || (0, _responsiveUtils.getBreakpointFromWidth)(this.props.breakpoints, this.props.width);\n var lastBreakpoint = this.state.breakpoint;\n var newCols\n /*: number*/\n = (0, _responsiveUtils.getColsFromBreakpoint)(newBreakpoint, cols);\n\n var newLayouts = _objectSpread({}, layouts); // Breakpoint change\n\n\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); // Find or generate a new layout.\n\n var layout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(newLayouts, breakpoints, newBreakpoint, lastBreakpoint, newCols, compactType); // This adds missing items.\n\n layout = (0, _utils.synchronizeLayoutWithChildren)(layout, this.props.children, newCols, compactType); // Store the new layout.\n\n newLayouts[newBreakpoint] = layout; // callbacks\n\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\n var margin = getIndentationValue(this.props.margin, newBreakpoint);\n var containerPadding = getIndentationValue(this.props.containerPadding, newBreakpoint); //call onWidthChange on every change of width, not only on breakpoint changes\n\n this.props.onWidthChange(this.props.width, margin, newCols, containerPadding);\n }\n }, {\n key: \"render\",\n value: function render() {\n /* eslint-disable no-unused-vars */\n var _this$props3 = this.props,\n breakpoint = _this$props3.breakpoint,\n breakpoints = _this$props3.breakpoints,\n cols = _this$props3.cols,\n layouts = _this$props3.layouts,\n margin = _this$props3.margin,\n containerPadding = _this$props3.containerPadding,\n onBreakpointChange = _this$props3.onBreakpointChange,\n onLayoutChange = _this$props3.onLayoutChange,\n onWidthChange = _this$props3.onWidthChange,\n other = _objectWithoutProperties(_this$props3, [\"breakpoint\", \"breakpoints\", \"cols\", \"layouts\", \"margin\", \"containerPadding\", \"onBreakpointChange\", \"onLayoutChange\", \"onWidthChange\"]);\n /* eslint-enable no-unused-vars */\n\n\n return /*#__PURE__*/React.createElement(_ReactGridLayout.default, _extends({}, other, {\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 }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps\n /*: Props<*>*/\n , prevState\n /*: State*/\n ) {\n if (!(0, _lodash.default)(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n var breakpoint = prevState.breakpoint,\n _cols = prevState.cols; // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n\n var 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\n return null;\n }\n }]);\n\n return ResponsiveReactGridLayout;\n}(React.Component);\n\nexports.default = ResponsiveReactGridLayout;\n\n_defineProperty(ResponsiveReactGridLayout, \"propTypes\", {\n //\n // Basic props\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 // # 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: function layouts(props\n /*: Props<>*/\n , propName\n /*: string*/\n ) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\"Layout property must be an object. Received: \" + type(props[propName]));\n }\n\n Object.keys(props[propName]).forEach(function (key) {\n if (!(key in props.breakpoints)) {\n throw new Error(\"Each key in layouts must align with a key in breakpoints.\");\n }\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 // 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\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 layouts: {},\n margin: [10, 10],\n containerPadding: {\n lg: null,\n md: null,\n sm: null,\n xs: null,\n xxs: null\n },\n onBreakpointChange: _utils.noop,\n onLayoutChange: _utils.noop,\n onWidthChange: _utils.noop\n});","\"use strict\";\n\nvar forEach = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker = require(\"./element-utils\");\nvar listenerHandlerMaker = require(\"./listener-handler\");\nvar idGeneratorMaker = require(\"./id-generator\");\nvar idHandlerMaker = require(\"./id-handler\");\nvar reporterMaker = require(\"./reporter\");\nvar browserDetector = require(\"./browser-detector\");\nvar batchProcessorMaker = require(\"batch-processor\");\nvar stateHandler = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n if (!Array.isArray(collection)) {\n var array = [];\n forEach(collection, function (obj) {\n array.push(obj);\n });\n return array;\n } else {\n return collection;\n }\n}\n\nfunction isElement(obj) {\n return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd Determines if listeners should be called when they are getting added.\n Default is true. If true, the listener is guaranteed to be called when it has been added.\n If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n If not provided, a default id handler will be used.\n * @property {reporter} reporter A custom reporter that handles reporting logs, warnings and errors.\n If not provided, a default id handler will be used.\n If set to false, then nothing will be reported.\n * @property {boolean} debug If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n options = options || {};\n\n //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var idHandler;\n\n if (options.idHandler) {\n // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n idHandler = {\n get: function (element) { return options.idHandler.get(element, true); },\n set: options.idHandler.set\n };\n } else {\n var idGenerator = idGeneratorMaker();\n var defaultIdHandler = idHandlerMaker({\n idGenerator: idGenerator,\n stateHandler: stateHandler\n });\n idHandler = defaultIdHandler;\n }\n\n //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var reporter = options.reporter;\n\n if(!reporter) {\n //If options.reporter is false, then the reporter should be quiet.\n var quiet = reporter === false;\n reporter = reporterMaker(quiet);\n }\n\n //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n //Options to be used as default for the listenTo function.\n var globalOptions = {};\n globalOptions.callOnAdd = !!getOption(options, \"callOnAdd\", true);\n globalOptions.debug = !!getOption(options, \"debug\", false);\n\n var eventListenerHandler = listenerHandlerMaker(idHandler);\n var elementUtils = elementUtilsMaker({\n stateHandler: stateHandler\n });\n\n //The detection strategy to be used.\n var detectionStrategy;\n var desiredStrategy = getOption(options, \"strategy\", \"object\");\n var importantCssRules = getOption(options, \"important\", false);\n var strategyOptions = {\n reporter: reporter,\n batchProcessor: batchProcessor,\n stateHandler: stateHandler,\n idHandler: idHandler,\n important: importantCssRules\n };\n\n if(desiredStrategy === \"scroll\") {\n if (browserDetector.isLegacyOpera()) {\n reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n desiredStrategy = \"object\";\n } else if (browserDetector.isIE(9)) {\n reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n desiredStrategy = \"object\";\n }\n }\n\n if(desiredStrategy === \"scroll\") {\n detectionStrategy = scrollStrategyMaker(strategyOptions);\n } else if(desiredStrategy === \"object\") {\n detectionStrategy = objectStrategyMaker(strategyOptions);\n } else {\n throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n }\n\n //Calls can be made to listenTo with elements that are still being installed.\n //Also, same elements can occur in the elements list in the listenTo function.\n //With this map, the ready callbacks can be synchronized between the calls\n //so that the ready callback can always be called when an element is ready - even if\n //it wasn't installed from the function itself.\n var onReadyCallbacks = {};\n\n /**\n * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n * @public\n * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n * @param {function} listener The callback to be executed for each resize event for each element.\n */\n function listenTo(options, elements, listener) {\n function onResizeCallback(element) {\n var listeners = eventListenerHandler.get(element);\n forEach(listeners, function callListenerProxy(listener) {\n listener(element);\n });\n }\n\n function addListener(callOnAdd, element, listener) {\n eventListenerHandler.add(element, listener);\n\n if(callOnAdd) {\n listener(element);\n }\n }\n\n //Options object may be omitted.\n if(!listener) {\n listener = elements;\n elements = options;\n options = {};\n }\n\n if(!elements) {\n throw new Error(\"At least one element required.\");\n }\n\n if(!listener) {\n throw new Error(\"Listener required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n var elementsReady = 0;\n\n var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n var debug = getOption(options, \"debug\", globalOptions.debug);\n\n forEach(elements, function attachListenerToElement(element) {\n if (!stateHandler.getState(element)) {\n stateHandler.initState(element);\n idHandler.set(element);\n }\n\n var id = idHandler.get(element);\n\n debug && reporter.log(\"Attaching listener to element\", id, element);\n\n if(!elementUtils.isDetectable(element)) {\n debug && reporter.log(id, \"Not detectable.\");\n if(elementUtils.isBusy(element)) {\n debug && reporter.log(id, \"System busy making it detectable\");\n\n //The element is being prepared to be detectable. Do not make it detectable.\n //Just add the listener, because the element will soon be detectable.\n addListener(callOnAdd, element, listener);\n onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n onReadyCallbacks[id].push(function onReady() {\n elementsReady++;\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n return;\n }\n\n debug && reporter.log(id, \"Making detectable...\");\n //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n elementUtils.markBusy(element, true);\n return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n debug && reporter.log(id, \"onElementDetectable\");\n\n if (stateHandler.getState(element)) {\n elementUtils.markAsDetectable(element);\n elementUtils.markBusy(element, false);\n detectionStrategy.addListener(element, onResizeCallback);\n addListener(callOnAdd, element, listener);\n\n // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n // so that a resize event may be emitted.\n // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n // Also, check the state existance before since the element may have been uninstalled in the installation process.\n var state = stateHandler.getState(element);\n if (state && state.startSize) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (state.startSize.width !== width || state.startSize.height !== height) {\n onResizeCallback(element);\n }\n }\n\n if(onReadyCallbacks[id]) {\n forEach(onReadyCallbacks[id], function(callback) {\n callback();\n });\n }\n } else {\n // The element has been unisntalled before being detectable.\n debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n }\n\n delete onReadyCallbacks[id];\n\n elementsReady++;\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n }\n\n debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n //The element has been prepared to be detectable and is ready to be listened to.\n addListener(callOnAdd, element, listener);\n elementsReady++;\n });\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n }\n\n function uninstall(elements) {\n if(!elements) {\n return reporter.error(\"At least one element is required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n forEach(elements, function (element) {\n eventListenerHandler.removeAllListeners(element);\n detectionStrategy.uninstall(element);\n stateHandler.cleanState(element);\n });\n }\n\n function initDocument(targetDocument) {\n detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n }\n\n return {\n listenTo: listenTo,\n removeListener: eventListenerHandler.removeListener,\n removeAllListeners: eventListenerHandler.removeAllListeners,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","module.exports = require(\"./build/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./build/utils\");\nmodule.exports.Responsive = require(\"./build/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./build/responsiveUtils\");\nmodule.exports.WidthProvider = require(\"./build/components/WidthProvider\").default;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\n\nvar _propTypes2 = require(\"./propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ResizableBox = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n\n function ResizableBox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, data) {\n var size = data.size;\n\n if (_this.props.onResize) {\n e.persist && e.persist();\n\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n });\n\n return _this;\n }\n\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n\n return null;\n };\n\n var _proto = ResizableBox.prototype;\n\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n style = _this$props.style,\n transformScale = _this$props.transformScale,\n props = _objectWithoutPropertiesLoose(_this$props, [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\", \"style\", \"transformScale\"]);\n\n return /*#__PURE__*/React.createElement(_Resizable.default, {\n axis: axis,\n draggableOpts: draggableOpts,\n handle: handle,\n handleSize: handleSize,\n height: this.state.height,\n lockAspectRatio: lockAspectRatio,\n maxConstraints: maxConstraints,\n minConstraints: minConstraints,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n resizeHandles: resizeHandles,\n transformScale: transformScale,\n width: this.state.width\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n })\n })));\n };\n\n return ResizableBox;\n}(React.Component);\n\nexports.default = ResizableBox;\n\n_defineProperty(ResizableBox, \"propTypes\", _objectSpread(_objectSpread({}, _propTypes2.resizableProps), {}, {\n children: _propTypes.default.element\n}));","import React, { FC, useCallback, useState } from 'react';\nimport { Button, Field, Form, HorizontalGroup, Input } from '@grafana/ui';\n\nimport { RepeatRowSelect } from '../RepeatRowSelect/RepeatRowSelect';\n\nexport type OnRowOptionsUpdate = (title: string | null, repeat: string | null | undefined) => void;\n\nexport interface Props {\n title: string | null;\n repeat?: string | null;\n onUpdate: OnRowOptionsUpdate;\n onCancel: () => void;\n}\n\nexport const RowOptionsForm: FC = ({ repeat, title, onUpdate, onCancel }) => {\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 \n\n \n \n \n \n \n )}\n \n );\n};\n","import React, { FC } from 'react';\nimport { Modal, stylesFactory } from '@grafana/ui';\nimport { css } from 'emotion';\n\nimport { OnRowOptionsUpdate, RowOptionsForm } from './RowOptionsForm';\n\nexport interface RowOptionsModalProps {\n title: string | null;\n repeat: string | null;\n onDismiss: () => void;\n onUpdate: OnRowOptionsUpdate;\n}\n\nexport const RowOptionsModal: FC = ({ repeat, title, onDismiss, onUpdate }) => {\n const styles = getStyles();\n return (\n \n \n \n );\n};\n\nconst getStyles = stylesFactory(() => {\n return {\n modal: css`\n label: RowOptionsModal;\n width: 500px;\n `,\n };\n});\n","import React, { FC } from 'react';\nimport { Icon, ModalsController } from '@grafana/ui';\n\nimport { RowOptionsModal } from './RowOptionsModal';\nimport { OnRowOptionsUpdate } from './RowOptionsForm';\n\nexport interface RowOptionsButtonProps {\n title: string | null;\n repeat: string | null | undefined;\n onUpdate: OnRowOptionsUpdate;\n}\n\nexport const RowOptionsButton: FC = ({ repeat, title, onUpdate }) => {\n const onUpdateChange = (hideModal: () => void) => (title: string | null, repeat: string | null) => {\n onUpdate(title, repeat);\n hideModal();\n };\n\n return (\n \n {({ showModal, hideModal }) => {\n return (\n {\n showModal(RowOptionsModal, { title, repeat, onDismiss: hideModal, onUpdate: onUpdateChange(hideModal) });\n }}\n >\n \n \n );\n }}\n \n );\n};\n\nRowOptionsButton.displayName = 'RowOptionsButton';\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '@grafana/ui';\nimport { PanelModel } from '../../state/PanelModel';\nimport { DashboardModel } from '../../state/DashboardModel';\nimport appEvents from 'app/core/app_events';\nimport { CoreEvents } from 'app/types';\nimport { RowOptionsButton } from '../RowOptions/RowOptionsButton';\nimport { getTemplateSrv } from '@grafana/runtime';\n\nexport interface DashboardRowProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n}\n\nexport class DashboardRow extends React.Component {\n constructor(props: DashboardRowProps) {\n super(props);\n\n this.state = {\n collapsed: this.props.panel.collapsed,\n };\n\n this.props.dashboard.on(CoreEvents.templateVariableValueUpdated, this.onVariableUpdated);\n }\n\n componentWillUnmount() {\n this.props.dashboard.off(CoreEvents.templateVariableValueUpdated, this.onVariableUpdated);\n }\n\n onVariableUpdated = () => {\n this.forceUpdate();\n };\n\n onToggle = () => {\n this.props.dashboard.toggleRow(this.props.panel);\n\n this.setState((prevState: any) => {\n return { collapsed: !prevState.collapsed };\n });\n };\n\n onUpdate = (title: string, repeat: string | undefined) => {\n this.props.panel['title'] = title;\n this.props.panel['repeat'] = repeat;\n this.props.panel.render();\n this.props.dashboard.processRepeats();\n this.forceUpdate();\n };\n\n onDelete = () => {\n appEvents.emit(CoreEvents.showConfirmModal, {\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 render() {\n const classes = classNames({\n 'dashboard-row': true,\n 'dashboard-row--collapsed': this.state.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
\n )}\n {this.state.collapsed === true && (\n
\n  \n
\n )}\n {canEdit &&
}\n
\n );\n }\n}\n","export { DashboardRow } from './DashboardRow';\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [noTrailing] Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset)\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {Boolean} [debounceMode] If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @return {Function} A new, throttled, function.\n */\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n var self = this;\n var elapsed = Date.now() - lastExec;\n var args = arguments;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, args);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [atBegin] Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @return {Function} A new, debounced function.\n */\n\nfunction debounce (delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n}\n\nexport { throttle, debounce };\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n\n if(!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n function listenerProxy() {\n listener(element);\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support object, but supports the resize event directly on elements.\n getState(element).object = {\n proxy: listenerProxy\n };\n element.attachEvent(\"onresize\", listenerProxy);\n } else {\n var object = getObject(element);\n\n if(!object) {\n throw new Error(\"Element is not detectable by this strategy.\");\n }\n\n object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n }\n }\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n var debug = options.debug;\n\n function injectObject(element, callback) {\n var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n var positionCheckPerformed = false;\n\n // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n var style = window.getComputedStyle(element);\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n getState(element).startSize = {\n width: width,\n height: height\n };\n\n function mutateDom() {\n function alterPositionStyles() {\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function onObjectLoad() {\n // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n if (!positionCheckPerformed) {\n alterPositionStyles();\n }\n\n /*jshint validthis: true */\n\n function getDocument(element, callback) {\n //Opera 12 seem to call the object.onload before the actual document has been created.\n //So if it is not present, poll it with an timeout until it is present.\n //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n if(!element.contentDocument) {\n var state = getState(element);\n if (state.checkForObjectDocumentTimeoutId) {\n window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n }\n state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n state.checkForObjectDocumentTimeoutId = 0;\n getDocument(element, callback);\n }, 100);\n\n return;\n }\n\n callback(element.contentDocument);\n }\n\n //Mutating the object element here seems to fire another load event.\n //Mutating the inner document of the object element is fine though.\n var objectElement = this;\n\n //Create the style element to be added to the object.\n getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n //Notify that the element is ready to be listened to.\n callback(element);\n });\n }\n\n // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n if (style.position !== \"\") {\n alterPositionStyles(style);\n positionCheckPerformed = true;\n }\n\n //Add an object element as a child to the target element that will be listened to for resize events.\n var object = document.createElement(\"object\");\n object.style.cssText = OBJECT_STYLE;\n object.tabIndex = -1;\n object.type = \"text/html\";\n object.setAttribute(\"aria-hidden\", \"true\");\n object.onload = onObjectLoad;\n\n //Safari: This must occur before adding the object to the DOM.\n //IE: Does not like that this happens before, even if it is also added after.\n if(!browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n\n if (!getState(element)) {\n // The element has been uninstalled before the actual loading happened.\n return;\n }\n\n element.appendChild(object);\n getState(element).object = object;\n\n //IE: This must occur after adding the object to the DOM.\n if(browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n }\n\n if(batchProcessor) {\n batchProcessor.add(mutateDom);\n } else {\n mutateDom();\n }\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support objects properly. Luckily they do support the resize event.\n //So do not inject the object and notify that the element is already ready to be listened to.\n //The event handler for the resize event is attached in the utils.addListener instead.\n callback(element);\n } else {\n injectObject(element, callback);\n }\n }\n\n /**\n * Returns the child object of the target element.\n * @private\n * @param {element} element The target element.\n * @returns The object element of the target.\n */\n function getObject(element) {\n return getState(element).object;\n }\n\n function uninstall(element) {\n if (!getState(element)) {\n return;\n }\n\n var object = getObject(element);\n\n if (!object) {\n return;\n }\n\n if (browserDetector.isIE(8)) {\n element.detachEvent(\"onresize\", object.proxy);\n } else {\n element.removeChild(object);\n }\n\n if (getState(element).checkForObjectDocumentTimeoutId) {\n window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n }\n\n delete getState(element).object;\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall\n };\n};\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n function isAnyIeVersion() {\n var agent = navigator.userAgent.toLowerCase();\n return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n }\n\n if(!isAnyIeVersion()) {\n return false;\n }\n\n if(!version) {\n return true;\n }\n\n //Shamelessly stolen from https://gist.github.com/padolsey/527683\n var ieVersion = (function(){\n var undef,\n v = 3,\n div = document.createElement(\"div\"),\n all = div.getElementsByTagName(\"i\");\n\n do {\n div.innerHTML = \"\";\n }\n while (all[0]);\n\n return v > 4 ? v : undef;\n }());\n\n return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n return !!window.opera;\n};\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.resizableProps = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar resizableProps = {\n /*\n * Restricts resizing to a particular axis (default: 'both')\n * 'both' - allows resizing by width or height\n * 'x' - only allows the width to be changed\n * 'y' - only allows the height to be changed\n * 'none' - disables resizing altogether\n * */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n className: _propTypes.default.string,\n\n /*\n * Require that one and only one child be present.\n * */\n children: _propTypes.default.element.isRequired,\n\n /*\n * These will be passed wholesale to react-draggable's DraggableCore\n * */\n draggableOpts: _propTypes.default.shape({\n allowAnyClick: _propTypes.default.bool,\n cancel: _propTypes.default.string,\n children: _propTypes.default.node,\n disabled: _propTypes.default.bool,\n enableUserSelectHack: _propTypes.default.bool,\n offsetParent: _propTypes.default.node,\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n handle: _propTypes.default.string,\n nodeRef: _propTypes.default.object,\n onStart: _propTypes.default.func,\n onDrag: _propTypes.default.func,\n onStop: _propTypes.default.func,\n onMouseDown: _propTypes.default.func,\n scale: _propTypes.default.number\n }),\n\n /*\n * Initial height\n * */\n height: _propTypes.default.number.isRequired,\n\n /*\n * Customize cursor resize handle\n * */\n handle: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),\n\n /*\n * If you change this, be sure to update your css\n * */\n handleSize: _propTypes.default.arrayOf(_propTypes.default.number),\n lockAspectRatio: _propTypes.default.bool,\n\n /*\n * Max X & Y measure\n * */\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /*\n * Min X & Y measure\n * */\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /*\n * Called on stop resize event\n * */\n onResizeStop: _propTypes.default.func,\n\n /*\n * Called on start resize event\n * */\n onResizeStart: _propTypes.default.func,\n\n /*\n * Called on resize event\n * */\n onResize: _propTypes.default.func,\n\n /*\n * Defines which resize handles should be rendered (default: 'se')\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-center)\n * */\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n\n /*\n * If `transform: scale(n)` is set on the parent, this should be set to `n`.\n * */\n transformScale: _propTypes.default.number,\n\n /*\n * Initial width\n */\n width: _propTypes.default.number.isRequired\n};\nexports.resizableProps = resizableProps;","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar ReactDOM = _interopDefault(require('react-dom'));\nvar invariant = _interopDefault(require('invariant'));\nvar throttleDebounce = require('throttle-debounce');\nvar createResizeDetector = _interopDefault(require('element-resize-detector'));\nvar isShallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar instances = {}; // Lazily require to not cause bug\n// https://github.com/ctrlplusb/react-sizeme/issues/6\n\nfunction resizeDetector() {\n var strategy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'scroll';\n\n if (!instances[strategy]) {\n instances[strategy] = createResizeDetector({\n strategy: strategy\n });\n }\n\n return instances[strategy];\n}\n\nvar errMsg = 'react-sizeme: an error occurred whilst stopping to listen to node size changes';\nvar defaultConfig = {\n monitorWidth: true,\n monitorHeight: false,\n monitorPosition: false,\n refreshRate: 16,\n refreshMode: 'throttle',\n noPlaceholder: false,\n resizeDetectorStrategy: 'scroll'\n};\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n/**\n * This is a utility wrapper component that will allow our higher order\n * component to get a ref handle on our wrapped components html.\n * @see https://gist.github.com/jimfb/32b587ee6177665fb4cf\n */\n\n\nvar ReferenceWrapper =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ReferenceWrapper, _Component);\n\n function ReferenceWrapper() {\n _classCallCheck(this, ReferenceWrapper);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ReferenceWrapper).apply(this, arguments));\n }\n\n _createClass(ReferenceWrapper, [{\n key: \"render\",\n value: function render() {\n return React.Children.only(this.props.children);\n }\n }]);\n\n return ReferenceWrapper;\n}(React.Component);\n\n_defineProperty(ReferenceWrapper, \"displayName\", 'SizeMeReferenceWrapper');\n\nfunction Placeholder(_ref) {\n var className = _ref.className,\n style = _ref.style;\n // Lets create the props for the temp element.\n var phProps = {}; // We will use any provided className/style or else make the temp\n // container take the full available space.\n\n if (!className && !style) {\n phProps.style = {\n width: '100%',\n height: '100%'\n };\n } else {\n if (className) {\n phProps.className = className;\n }\n\n if (style) {\n phProps.style = style;\n }\n }\n\n return React__default.createElement(\"div\", phProps);\n}\n\nPlaceholder.displayName = 'SizeMePlaceholder';\n/**\n * As we need to maintain a ref on the root node that is rendered within our\n * SizeMe component we need to wrap our entire render in a sub component.\n * Without this, we lose the DOM ref after the placeholder is removed from\n * the render and the actual component is rendered.\n * It took me forever to figure this out, so tread extra careful on this one!\n */\n\nvar renderWrapper = function renderWrapper(WrappedComponent) {\n function SizeMeRenderer(props) {\n var explicitRef = props.explicitRef,\n className = props.className,\n style = props.style,\n size = props.size,\n disablePlaceholder = props.disablePlaceholder,\n onSize = props.onSize,\n restProps = _objectWithoutProperties(props, [\"explicitRef\", \"className\", \"style\", \"size\", \"disablePlaceholder\", \"onSize\"]);\n\n var noSizeData = size == null || size.width == null && size.height == null && size.position == null;\n var renderPlaceholder = noSizeData && !disablePlaceholder;\n var renderProps = {\n className: className,\n style: style\n };\n\n if (size != null) {\n renderProps.size = size;\n }\n\n var toRender = renderPlaceholder ? React__default.createElement(Placeholder, {\n className: className,\n style: style\n }) : React__default.createElement(WrappedComponent, _extends({}, renderProps, restProps));\n return React__default.createElement(ReferenceWrapper, {\n ref: explicitRef\n }, toRender);\n }\n\n SizeMeRenderer.displayName = \"SizeMeRenderer(\".concat(getDisplayName(WrappedComponent), \")\");\n return SizeMeRenderer;\n};\n/**\n * :: config -> Component -> WrappedComponent\n *\n * Higher order component that allows the wrapped component to become aware\n * of it's size, by receiving it as an object within it's props.\n *\n * @param monitorWidth\n * Default true, whether changes in the element's width should be monitored,\n * causing a size property to be broadcast.\n * @param monitorHeight\n * Default false, whether changes in the element's height should be monitored,\n * causing a size property to be broadcast.\n *\n * @return The wrapped component.\n */\n\n\nfunction withSize() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultConfig;\n var _config$monitorWidth = config.monitorWidth,\n monitorWidth = _config$monitorWidth === void 0 ? defaultConfig.monitorWidth : _config$monitorWidth,\n _config$monitorHeight = config.monitorHeight,\n monitorHeight = _config$monitorHeight === void 0 ? defaultConfig.monitorHeight : _config$monitorHeight,\n _config$monitorPositi = config.monitorPosition,\n monitorPosition = _config$monitorPositi === void 0 ? defaultConfig.monitorPosition : _config$monitorPositi,\n _config$refreshRate = config.refreshRate,\n refreshRate = _config$refreshRate === void 0 ? defaultConfig.refreshRate : _config$refreshRate,\n _config$refreshMode = config.refreshMode,\n refreshMode = _config$refreshMode === void 0 ? defaultConfig.refreshMode : _config$refreshMode,\n _config$noPlaceholder = config.noPlaceholder,\n noPlaceholder = _config$noPlaceholder === void 0 ? defaultConfig.noPlaceholder : _config$noPlaceholder,\n _config$resizeDetecto = config.resizeDetectorStrategy,\n resizeDetectorStrategy = _config$resizeDetecto === void 0 ? defaultConfig.resizeDetectorStrategy : _config$resizeDetecto;\n invariant(monitorWidth || monitorHeight || monitorPosition, 'You have to monitor at least one of the width, height, or position when using \"sizeMe\"');\n invariant(refreshRate >= 16, \"It is highly recommended that you don't put your refreshRate lower than \" + '16 as this may cause layout thrashing.');\n invariant(refreshMode === 'throttle' || refreshMode === 'debounce', 'The refreshMode should have a value of \"throttle\" or \"debounce\"');\n var refreshDelayStrategy = refreshMode === 'throttle' ? throttleDebounce.throttle : throttleDebounce.debounce;\n return function WrapComponent(WrappedComponent) {\n var SizeMeRenderWrapper = renderWrapper(WrappedComponent);\n\n var SizeAwareComponent =\n /*#__PURE__*/\n function (_React$Component) {\n _inherits(SizeAwareComponent, _React$Component);\n\n function SizeAwareComponent() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SizeAwareComponent);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SizeAwareComponent)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"domEl\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: undefined,\n height: undefined,\n position: undefined\n });\n\n _defineProperty(_assertThisInitialized(_this), \"uninstall\", function () {\n if (_this.domEl) {\n try {\n _this.detector.uninstall(_this.domEl);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn(errMsg);\n }\n\n _this.domEl = null;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"determineStrategy\", function (props) {\n if (props.onSize) {\n if (!_this.callbackState) {\n _this.callbackState = _objectSpread2({}, _this.state);\n }\n\n _this.strategy = 'callback';\n } else {\n _this.strategy = 'render';\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"strategisedSetState\", function (state) {\n if (_this.strategy === 'callback') {\n _this.callbackState = state;\n\n _this.props.onSize(state);\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"strategisedGetState\", function () {\n return _this.strategy === 'callback' ? _this.callbackState : _this.state;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"refCallback\", function (element) {\n _this.element = element;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"hasSizeChanged\", function (current, next) {\n var c = current;\n var n = next;\n var cp = c.position || {};\n var np = n.position || {};\n return monitorWidth && c.width !== n.width || monitorHeight && c.height !== n.height || monitorPosition && (cp.top !== np.top || cp.left !== np.left || cp.bottom !== np.bottom || cp.right !== np.right);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkIfSizeChanged\", refreshDelayStrategy(refreshRate, function (el) {\n var _el$getBoundingClient = el.getBoundingClientRect(),\n width = _el$getBoundingClient.width,\n height = _el$getBoundingClient.height,\n right = _el$getBoundingClient.right,\n left = _el$getBoundingClient.left,\n top = _el$getBoundingClient.top,\n bottom = _el$getBoundingClient.bottom;\n\n var next = {\n width: monitorWidth ? width : null,\n height: monitorHeight ? height : null,\n position: monitorPosition ? {\n right: right,\n left: left,\n top: top,\n bottom: bottom\n } : null\n };\n\n if (_this.hasSizeChanged(_this.strategisedGetState(), next)) {\n _this.strategisedSetState(next);\n }\n }));\n\n return _this;\n }\n\n _createClass(SizeAwareComponent, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.detector = resizeDetector(resizeDetectorStrategy);\n this.determineStrategy(this.props);\n this.handleDOMNode();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.determineStrategy(this.props);\n this.handleDOMNode();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // Change our size checker to a noop just in case we have some\n // late running events.\n this.hasSizeChanged = function () {\n return undefined;\n };\n\n this.checkIfSizeChanged = function () {\n return undefined;\n };\n\n this.uninstall();\n }\n }, {\n key: \"handleDOMNode\",\n value: function handleDOMNode() {\n var found = this.element && ReactDOM.findDOMNode(this.element);\n\n if (!found) {\n // If we previously had a dom node then we need to ensure that\n // we remove any existing listeners to avoid memory leaks.\n this.uninstall();\n return;\n }\n\n if (!this.domEl) {\n this.domEl = found;\n this.detector.listenTo(this.domEl, this.checkIfSizeChanged);\n } else if (this.domEl.isSameNode && !this.domEl.isSameNode(found) || this.domEl !== found) {\n this.uninstall();\n this.domEl = found;\n this.detector.listenTo(this.domEl, this.checkIfSizeChanged);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var disablePlaceholder = withSize.enableSSRBehaviour || withSize.noPlaceholders || noPlaceholder || this.strategy === 'callback';\n\n var size = _objectSpread2({}, this.state);\n\n return React__default.createElement(SizeMeRenderWrapper, _extends({\n explicitRef: this.refCallback,\n size: this.strategy === 'callback' ? null : size,\n disablePlaceholder: disablePlaceholder\n }, this.props));\n }\n }]);\n\n return SizeAwareComponent;\n }(React__default.Component);\n\n _defineProperty(SizeAwareComponent, \"displayName\", \"SizeMe(\".concat(getDisplayName(WrappedComponent), \")\"));\n\n SizeAwareComponent.WrappedComponent = WrappedComponent;\n return SizeAwareComponent;\n };\n}\n/**\n * Allow SizeMe to run within SSR environments. This is a \"global\" behaviour\n * flag that should be set within the initialisation phase of your application.\n *\n * Warning: don't set this flag unless you need to as using it may cause\n * extra render cycles to happen within your components depending on the logic\n * contained within them around the usage of the `size` data.\n *\n * DEPRECATED: Please use the global noPlaceholders\n */\n\n\nwithSize.enableSSRBehaviour = false;\n/**\n * Global configuration allowing to disable placeholder rendering for all\n * sizeMe components.\n */\n\nwithSize.noPlaceholders = false;\n\nvar SizeMe =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SizeMe, _Component);\n\n function SizeMe(props) {\n var _this;\n\n _classCallCheck(this, SizeMe);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SizeMe).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"createComponent\", function (config) {\n _this.SizeAware = withSize(config)(function (_ref) {\n var children = _ref.children;\n return children;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSize\", function (size) {\n return _this.setState({\n size: size\n });\n });\n\n var _children = props.children,\n render = props.render,\n sizeMeConfig = _objectWithoutProperties(props, [\"children\", \"render\"]);\n\n _this.createComponent(sizeMeConfig);\n\n _this.state = {\n size: {\n width: undefined,\n height: undefined\n }\n };\n return _this;\n }\n\n _createClass(SizeMe, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n prevChildren = _this$props.children,\n prevRender = _this$props.render,\n currentSizeMeConfig = _objectWithoutProperties(_this$props, [\"children\", \"render\"]);\n\n var nextChildren = prevProps.children,\n nextRender = prevProps.render,\n prevSizeMeConfig = _objectWithoutProperties(prevProps, [\"children\", \"render\"]);\n\n if (!isShallowEqual(currentSizeMeConfig, prevSizeMeConfig)) {\n this.createComponent(currentSizeMeConfig);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var SizeAware = this.SizeAware;\n var render = this.props.children || this.props.render;\n return React__default.createElement(SizeAware, {\n onSize: this.onSize\n }, render({\n size: this.state.size\n }));\n }\n }]);\n\n return SizeMe;\n}(React.Component);\n\n_defineProperty(SizeMe, \"defaultProps\", {\n children: undefined,\n render: undefined\n});\n\nwithSize.SizeMe = SizeMe;\nwithSize.withSize = withSize;\n\nmodule.exports = withSize;\n//# sourceMappingURL=react-sizeme.js.map\n","\"use strict\";\n\nmodule.exports = function() {\n var idCount = 1;\n\n /**\n * Generates a new unique id in the context.\n * @public\n * @returns {number} A unique id in the context.\n */\n function generate() {\n return idCount++;\n }\n\n return {\n generate: generate\n };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _reactResizable = require(\"react-resizable\");\n\nvar _utils = require(\"./utils\");\n\nvar _calculateUtils = require(\"./calculateUtils\");\n\nvar _ReactGridLayoutPropTypes = require(\"./ReactGridLayoutPropTypes\");\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * An individual item within a ReactGridLayout.\n */\nvar GridItem = /*#__PURE__*/function (_React$Component) {\n _inherits(GridItem, _React$Component);\n\n var _super = _createSuper(GridItem);\n\n function GridItem() {\n var _this;\n\n _classCallCheck(this, GridItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n resizing: null,\n dragging: null,\n className: \"\"\n });\n\n _defineProperty(_assertThisInitialized(_this), \"currentNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e\n /*: Event*/\n , _ref) {\n var node = _ref.node;\n var onDragStart = _this.props.onDragStart;\n if (!onDragStart) return;\n var newPosition\n /*: PartialPosition*/\n = {\n top: 0,\n left: 0\n }; // TODO: this wont work on nested parents\n\n var offsetParent = node.offsetParent;\n if (!offsetParent) return;\n var parentRect = offsetParent.getBoundingClientRect();\n var clientRect = node.getBoundingClientRect();\n var cLeft = clientRect.left / _this.props.transformScale;\n var pLeft = parentRect.left / _this.props.transformScale;\n var cTop = clientRect.top / _this.props.transformScale;\n var pTop = parentRect.top / _this.props.transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n\n _this.setState({\n dragging: newPosition\n }); // Call callback with this data\n\n\n var _calcXY = (0, _calculateUtils.calcXY)(_this.getPositionParams(), newPosition.top, newPosition.left, _this.props.w, _this.props.h),\n x = _calcXY.x,\n y = _calcXY.y;\n\n return onDragStart.call(_assertThisInitialized(_this), _this.props.i, x, y, {\n e: e,\n node: node,\n newPosition: newPosition\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e\n /*: Event*/\n , _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n var _this$props = _this.props,\n onDrag = _this$props.onDrag,\n transformScale = _this$props.transformScale;\n if (!onDrag) return;\n deltaX /= transformScale;\n deltaY /= transformScale;\n\n if (!_this.state.dragging) {\n throw new Error(\"onDrag called before onDragStart.\");\n }\n\n var top = _this.state.dragging.top + deltaY;\n var left = _this.state.dragging.left + deltaX;\n var _this$props2 = _this.props,\n isBounded = _this$props2.isBounded,\n i = _this$props2.i,\n w = _this$props2.w,\n h = _this$props2.h,\n containerWidth = _this$props2.containerWidth;\n\n var positionParams = _this.getPositionParams(); // Boundary calculations; keeps items within the grid\n\n\n if (isBounded) {\n var offsetParent = node.offsetParent;\n\n if (offsetParent) {\n var _this$props3 = _this.props,\n margin = _this$props3.margin,\n rowHeight = _this$props3.rowHeight;\n var bottomBoundary = offsetParent.clientHeight - (0, _calculateUtils.calcGridItemWHPx)(h, rowHeight, margin[1]);\n top = (0, _calculateUtils.clamp)(top, 0, bottomBoundary);\n var colWidth = (0, _calculateUtils.calcGridColWidth)(positionParams);\n var rightBoundary = containerWidth - (0, _calculateUtils.calcGridItemWHPx)(w, colWidth, margin[0]);\n left = (0, _calculateUtils.clamp)(left, 0, rightBoundary);\n }\n }\n\n var newPosition\n /*: PartialPosition*/\n = {\n top: top,\n left: left\n };\n\n _this.setState({\n dragging: newPosition\n }); // Call callback with this data\n\n\n var _calcXY2 = (0, _calculateUtils.calcXY)(positionParams, top, left, w, h),\n x = _calcXY2.x,\n y = _calcXY2.y;\n\n return onDrag.call(_assertThisInitialized(_this), i, x, y, {\n e: e,\n node: node,\n newPosition: newPosition\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e\n /*: Event*/\n , _ref3) {\n var node = _ref3.node;\n var onDragStop = _this.props.onDragStop;\n if (!onDragStop) return;\n\n if (!_this.state.dragging) {\n throw new Error(\"onDragEnd called before onDragStart.\");\n }\n\n var _this$props4 = _this.props,\n w = _this$props4.w,\n h = _this$props4.h,\n i = _this$props4.i;\n var _this$state$dragging = _this.state.dragging,\n left = _this$state$dragging.left,\n top = _this$state$dragging.top;\n var newPosition\n /*: PartialPosition*/\n = {\n top: top,\n left: left\n };\n\n _this.setState({\n dragging: null\n });\n\n var _calcXY3 = (0, _calculateUtils.calcXY)(_this.getPositionParams(), top, left, w, h),\n x = _calcXY3.x,\n y = _calcXY3.y;\n\n return onDragStop.call(_assertThisInitialized(_this), i, x, y, {\n e: e,\n node: node,\n newPosition: newPosition\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResizeStop\", function (e\n /*: Event*/\n , callbackData\n /*: { node: HTMLElement, size: Position }*/\n ) {\n _this.onResizeHandler(e, callbackData, \"onResizeStop\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResizeStart\", function (e\n /*: Event*/\n , callbackData\n /*: { node: HTMLElement, size: Position }*/\n ) {\n _this.onResizeHandler(e, callbackData, \"onResizeStart\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e\n /*: Event*/\n , callbackData\n /*: { node: HTMLElement, size: Position }*/\n ) {\n _this.onResizeHandler(e, callbackData, \"onResize\");\n });\n\n return _this;\n }\n\n _createClass(GridItem, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps\n /*: Props*/\n , nextState\n /*: State*/\n ) {\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; // TODO memoize these calculations so they don't take so long?\n\n var oldPosition = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(this.props), this.props.x, this.props.y, this.props.w, this.props.h, this.state);\n var 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 }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.moveDroppingItem({});\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps\n /*: Props*/\n ) {\n this.moveDroppingItem(prevProps);\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\n }, {\n key: \"moveDroppingItem\",\n value: function moveDroppingItem(prevProps\n /*: Props*/\n ) {\n var droppingPosition = this.props.droppingPosition;\n if (!droppingPosition) return;\n var prevDroppingPosition = prevProps.droppingPosition || {\n left: 0,\n top: 0\n };\n var dragging = this.state.dragging;\n\n if (!this.currentNode) {\n // eslint-disable-next-line react/no-find-dom-node\n this.currentNode = ((_reactDom.default.findDOMNode(this)\n /*: any*/\n )\n /*: HTMLElement*/\n );\n }\n\n var shouldDrag = dragging && droppingPosition.left !== prevDroppingPosition.left || droppingPosition.top !== prevDroppingPosition.top;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: this.currentNode,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n var deltaX = droppingPosition.left - dragging.left;\n var deltaY = droppingPosition.top - dragging.top;\n this.onDrag(droppingPosition.e, {\n node: this.currentNode,\n deltaX: deltaX,\n deltaY: deltaY\n });\n }\n }\n }, {\n key: \"getPositionParams\",\n value: function getPositionParams()\n /*: PositionParams*/\n {\n var props\n /*: Props*/\n = 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 * 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\n }, {\n key: \"createStyle\",\n value: function createStyle(pos\n /*: Position*/\n )\n /*: { [key: string]: ?string }*/\n {\n var _this$props5 = this.props,\n usePercentages = _this$props5.usePercentages,\n containerWidth = _this$props5.containerWidth,\n useCSSTransforms = _this$props5.useCSSTransforms;\n var style; // CSS Transforms support (default)\n\n if (useCSSTransforms) {\n style = (0, _utils.setTransform)(pos);\n } else {\n // top,left (slow)\n style = (0, _utils.setTopLeft)(pos); // This is used for server rendering.\n\n if (usePercentages) {\n style.left = (0, _utils.perc)(pos.left / containerWidth);\n style.width = (0, _utils.perc)(pos.width / containerWidth);\n }\n }\n\n return style;\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\n }, {\n key: \"mixinDraggable\",\n value: function mixinDraggable(child\n /*: ReactElement*/\n , isDraggable\n /*: boolean*/\n )\n /*: ReactElement*/\n {\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 }, child);\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\n }, {\n key: \"mixinResizable\",\n value: function mixinResizable(child\n /*: ReactElement*/\n , position\n /*: Position*/\n , isResizable\n /*: boolean*/\n )\n /*: ReactElement*/\n {\n var _this$props6 = this.props,\n cols = _this$props6.cols,\n x = _this$props6.x,\n minW = _this$props6.minW,\n minH = _this$props6.minH,\n maxW = _this$props6.maxW,\n maxH = _this$props6.maxH,\n transformScale = _this$props6.transformScale,\n resizeHandles = _this$props6.resizeHandles,\n resizeHandle = _this$props6.resizeHandle;\n var positionParams = this.getPositionParams(); // This is the max possible width - doesn't go to infinity because of the width of the window\n\n var maxWidth = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, cols - x, 0).width; // Calculate min/max constraints using our min & maxes\n\n var mins = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, minW, minH);\n var maxes = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, maxW, maxH);\n var minConstraints = [mins.width, mins.height];\n var maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];\n return /*#__PURE__*/_react.default.createElement(_reactResizable.Resizable, {\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.onResizeStop,\n onResizeStart: this.onResizeStart,\n onResize: this.onResize,\n transformScale: transformScale,\n resizeHandles: resizeHandles,\n handle: resizeHandle\n }, child);\n }\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\n }, {\n key: \"onResizeHandler\",\n\n /**\n * Wrapper around drag events to provide more useful data.\n * All drag events call the function with the given handler name,\n * with the signature (index, x, y).\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n value: function onResizeHandler(e\n /*: Event*/\n , _ref4, handlerName\n /*: string*/\n ) {\n var node = _ref4.node,\n size = _ref4.size;\n var handler = this.props[handlerName];\n if (!handler) return;\n var _this$props7 = this.props,\n cols = _this$props7.cols,\n x = _this$props7.x,\n y = _this$props7.y,\n i = _this$props7.i,\n maxH = _this$props7.maxH,\n minH = _this$props7.minH;\n var _this$props8 = this.props,\n minW = _this$props8.minW,\n maxW = _this$props8.maxW; // Get new XY\n\n var _calcWH = (0, _calculateUtils.calcWH)(this.getPositionParams(), size.width, size.height, x, y),\n w = _calcWH.w,\n h = _calcWH.h; // minW should be at least 1 (TODO propTypes validation?)\n\n\n minW = Math.max(minW, 1); // maxW should be at most (cols - x)\n\n maxW = Math.min(maxW, cols - x); // Min/max capping\n\n w = (0, _calculateUtils.clamp)(w, minW, maxW);\n h = (0, _calculateUtils.clamp)(h, minH, maxH);\n this.setState({\n resizing: handlerName === \"onResizeStop\" ? null : size\n });\n handler.call(this, i, w, h, {\n e: e,\n node: node,\n size: size\n });\n }\n }, {\n key: \"render\",\n value: function render()\n /*: ReactNode*/\n {\n var _this$props9 = this.props,\n x = _this$props9.x,\n y = _this$props9.y,\n w = _this$props9.w,\n h = _this$props9.h,\n isDraggable = _this$props9.isDraggable,\n isResizable = _this$props9.isResizable,\n droppingPosition = _this$props9.droppingPosition,\n useCSSTransforms = _this$props9.useCSSTransforms;\n var pos = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(), x, y, w, h, this.state);\n\n var child = _react.default.Children.only(this.props.children); // Create the child element. We clone the existing element but modify its className and style.\n\n\n var newChild = /*#__PURE__*/_react.default.cloneElement(child, {\n className: (0, _classnames.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: _objectSpread(_objectSpread(_objectSpread({}, this.props.style), child.props.style), this.createStyle(pos))\n }); // Resizable support. This is usually on but the user can toggle it off.\n\n\n newChild = this.mixinResizable(newChild, pos, isResizable); // Draggable support. This is always on, except for with placeholders.\n\n newChild = this.mixinDraggable(newChild, isDraggable);\n return newChild;\n }\n }]);\n\n return GridItem;\n}(_react.default.Component);\n\nexports.default = GridItem;\n\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 minW(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var 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 maxW(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var 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 minH(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var 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 maxH(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var 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.resizeHandlesType,\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\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 = WidthProvider;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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 WidthProvider\n/*:: */\n(ComposedComponent\n/*: React.AbstractComponent*/\n)\n/*: React.AbstractComponent<{|\n ...Config,\n measureBeforeMount?: boolean,\n className?: string,\n style?: Object,\n width?: number\n|}>*/\n{\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_React$Component) {\n _inherits(WidthProvider, _React$Component);\n\n var _super = _createSuper(WidthProvider);\n\n function WidthProvider() {\n var _this;\n\n _classCallCheck(this, WidthProvider);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: 1280\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResize\", function () {\n if (!_this.mounted) return; // eslint-disable-next-line react/no-find-dom-node\n\n var node = _reactDom.default.findDOMNode(_assertThisInitialized(_this)); // Flow casts this to Text | Element\n\n\n if (node instanceof HTMLElement) _this.setState({\n width: node.offsetWidth\n });\n });\n\n return _this;\n }\n\n _createClass(WidthProvider, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n window.addEventListener(\"resize\", this.onWindowResize); // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n\n this.onWindowResize();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n measureBeforeMount = _this$props.measureBeforeMount,\n rest = _objectWithoutProperties(_this$props, [\"measureBeforeMount\"]);\n\n if (measureBeforeMount && !this.mounted) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: this.props.className,\n style: this.props.style\n });\n }\n\n return /*#__PURE__*/React.createElement(ComposedComponent, _extends({}, rest, this.state));\n }\n }]);\n\n return WidthProvider;\n }(React.Component), _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 }), _temp;\n}","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"react\",\"react-dom\"],e):\"object\"==typeof exports?exports.ReactDraggable=e(require(\"react\"),require(\"react-dom\")):t.ReactDraggable=e(t.React,t.ReactDOM)}(window,function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){t.exports=n(11)()},function(t,e,n){\"use strict\";function r(t,e){for(var n=0,r=t.length;n0&&void 0!==arguments[0]?arguments[0]:\"transform\";if(\"undefined\"==typeof window||void 0===window.document)return\"\";var e=window.document.documentElement.style;if(t in e)return\"\";for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{})}},function(t,e,n){\"use strict\";n.d(e,\"e\",function(){return c}),n.d(e,\"g\",function(){return u}),n.d(e,\"a\",function(){return s}),n.d(e,\"b\",function(){return l}),n.d(e,\"f\",function(){return f}),n.d(e,\"c\",function(){return p}),n.d(e,\"d\",function(){return d});var r=n(1),o=n(6),a=n.n(o),i=n(2);function c(t,e,n){if(!t.props.bounds)return[e,n];var o=t.props.bounds;o=\"string\"==typeof o?o:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(o);var a=g(t);if(\"string\"==typeof o){var c,u=a.ownerDocument,s=u.defaultView;if(!((c=\"parent\"===o?a.parentNode:u.querySelector(o))instanceof s.HTMLElement))throw new Error('Bounds selector \"'+o+'\" could not find an element.');var l=s.getComputedStyle(a),f=s.getComputedStyle(c);o={left:-a.offsetLeft+Object(r.c)(f.paddingLeft)+Object(r.c)(l.marginLeft),top:-a.offsetTop+Object(r.c)(f.paddingTop)+Object(r.c)(l.marginTop),right:Object(i.h)(c)-Object(i.l)(a)-a.offsetLeft+Object(r.c)(f.paddingRight)-Object(r.c)(l.marginRight),bottom:Object(i.g)(c)-Object(i.k)(a)-a.offsetTop+Object(r.c)(f.paddingBottom)-Object(r.c)(l.marginBottom)}}return Object(r.e)(o.right)&&(e=Math.min(e,o.right)),Object(r.e)(o.bottom)&&(n=Math.min(n,o.bottom)),Object(r.e)(o.left)&&(e=Math.max(e,o.left)),Object(r.e)(o.top)&&(n=Math.max(n,o.top)),[e,n]}function u(t,e,n){return[Math.round(e/t[0])*t[0],Math.round(n/t[1])*t[1]]}function s(t){return\"both\"===t.props.axis||\"x\"===t.props.axis}function l(t){return\"both\"===t.props.axis||\"y\"===t.props.axis}function f(t,e,n){var r=\"number\"==typeof e?Object(i.e)(t,e):null;if(\"number\"==typeof e&&!r)return null;var o=g(n),a=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return Object(i.j)(r||t,a)}function p(t,e,n){var o=t.state,a=!Object(r.e)(o.lastX),i=g(t);return a?{node:i,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:i,deltaX:e-o.lastX,deltaY:n-o.lastY,lastX:o.lastX,lastY:o.lastY,x:e,y:n}}function d(t,e){var n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function g(t){var e=a.a.findDOMNode(t);if(!e)throw new Error(\": Unmounted during event!\");return e}},function(t,e,n){\"use strict\";function r(){}n.d(e,\"a\",function(){return r})},function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return w});var r=n(5),o=n.n(r),a=n(0),i=n.n(a),c=n(6),u=n.n(c),s=n(2),l=n(3),f=n(1),p=n(4);function d(t){return(d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function g(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function b(t,e){for(var n=0;n not mounted on DragStart!\");var r=e.ownerDocument;if(!(n.props.disabled||!(t.target instanceof r.defaultView.Node)||n.props.handle&&!Object(s.i)(t.target,n.props.handle,e)||n.props.cancel&&Object(s.i)(t.target,n.props.cancel,e))){var o=Object(s.f)(t);n.setState({touchIdentifier:o});var a=Object(l.f)(t,o,h(n));if(null!=a){var i=a.x,c=a.y,f=Object(l.c)(h(n),i,c);Object(p.a)(\"DraggableCore: handleDragStart: %j\",f),Object(p.a)(\"calling\",n.props.onStart),!1!==n.props.onStart(t,f)&&(n.props.enableUserSelectHack&&Object(s.b)(r),n.setState({dragging:!0,lastX:i,lastY:c}),Object(s.a)(r,j.move,n.handleDrag),Object(s.a)(r,j.stop,n.handleDragStop))}}}),O(h(n),\"handleDrag\",function(t){\"touchmove\"===t.type&&t.preventDefault();var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y;if(Array.isArray(n.props.grid)){var a=r-n.state.lastX,i=o-n.state.lastY,c=g(Object(l.g)(n.props.grid,a,i),2);if(a=c[0],i=c[1],!a&&!i)return;r=n.state.lastX+a,o=n.state.lastY+i}var u=Object(l.c)(h(n),r,o);if(Object(p.a)(\"DraggableCore: handleDrag: %j\",u),!1!==n.props.onDrag(t,u))n.setState({lastX:r,lastY:o});else try{n.handleDragStop(new MouseEvent(\"mouseup\"))}catch(t){var s=document.createEvent(\"MouseEvents\");s.initMouseEvent(\"mouseup\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.handleDragStop(s)}}}),O(h(n),\"handleDragStop\",function(t){if(n.state.dragging){var e=Object(l.f)(t,n.state.touchIdentifier,h(n));if(null!=e){var r=e.x,o=e.y,a=Object(l.c)(h(n),r,o),i=u.a.findDOMNode(h(n));i&&n.props.enableUserSelectHack&&Object(s.n)(i.ownerDocument),Object(p.a)(\"DraggableCore: handleDragStop: %j\",a),n.setState({dragging:!1,lastX:NaN,lastY:NaN}),n.props.onStop(t,a),i&&(Object(p.a)(\"DraggableCore: Removing handlers\"),Object(s.m)(i.ownerDocument,j.move,n.handleDrag),Object(s.m)(i.ownerDocument,j.stop,n.handleDragStop))}}}),O(h(n),\"onMouseDown\",function(t){return j=v.mouse,n.handleDragStart(t)}),O(h(n),\"onMouseUp\",function(t){return j=v.mouse,n.handleDragStop(t)}),O(h(n),\"onTouchStart\",function(t){return j=v.touch,n.handleDragStart(t)}),O(h(n),\"onTouchEnd\",function(t){return j=v.touch,n.handleDragStop(t)}),n}var n,r,a;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(e,o.a.Component),n=e,(r=[{key:\"componentWillUnmount\",value:function(){var t=u.a.findDOMNode(this);if(t){var e=t.ownerDocument;Object(s.m)(e,v.mouse.move,this.handleDrag),Object(s.m)(e,v.touch.move,this.handleDrag),Object(s.m)(e,v.mouse.stop,this.handleDragStop),Object(s.m)(e,v.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&Object(s.n)(e)}}},{key:\"render\",value:function(){return o.a.cloneElement(o.a.Children.only(this.props.children),{style:Object(s.o)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&b(n.prototype,r),a&&b(n,a),e}();O(w,\"displayName\",\"DraggableCore\"),O(w,\"propTypes\",{allowAnyClick:i.a.bool,disabled:i.a.bool,enableUserSelectHack:i.a.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error(\"Draggable's offsetParent must be a DOM Node.\")},grid:i.a.arrayOf(i.a.number),handle:i.a.string,cancel:i.a.string,onStart:i.a.func,onDrag:i.a.func,onStop:i.a.func,onMouseDown:i.a.func,className:f.a,style:f.a,transform:f.a}),O(w,\"defaultProps\",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})},function(t,e,n){var r;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,o=!1,a=void 0;try{for(var i,c=t[Symbol.iterator]();!(r=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(t){o=!0,a=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return n}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function j(t){for(var e=1;e, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.\"),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&P(t,e)}(e,o.a.Component),x(e,null,[{key:\"getDerivedStateFromProps\",value:function(t,e){var n=t.position,r=e.prevPropsPosition;return!n||r&&n.x===r.x&&n.y===r.y?null:(Object(b.a)(\"Draggable: getDerivedStateFromProps %j\",{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:j({},n)})}}]),x(e,[{key:\"componentDidMount\",value:function(){void 0!==window.SVGElement&&u.a.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:\"componentWillUnmount\",value:function(){this.setState({dragging:!1})}},{key:\"render\",value:function(){var t,e=this.props,n=(e.axis,e.bounds,e.children),r=e.defaultPosition,a=e.defaultClassName,i=e.defaultClassNameDragging,c=e.defaultClassNameDragged,u=e.position,s=e.positionOffset,d=(e.scale,m(e,[\"axis\",\"bounds\",\"children\",\"defaultPosition\",\"defaultClassName\",\"defaultClassNameDragging\",\"defaultClassNameDragged\",\"position\",\"positionOffset\",\"scale\"])),b={},y=null,O=!Boolean(u)||this.state.dragging,v=u||r,w={x:Object(p.a)(this)&&O?this.state.x:v.x,y:Object(p.b)(this)&&O?this.state.y:v.y};this.state.isElementSVG?y=Object(f.d)(w,s):b=Object(f.c)(w,s);var D=l()(n.props.className||\"\",a,(E(t={},i,this.state.dragging),E(t,c,this.state.dragged),t));return o.a.createElement(g.default,h({},d,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.a.cloneElement(o.a.Children.only(n),{className:D,style:j({},n.props.style,{},b),transform:y}))}}]),e}();E(T,\"displayName\",\"Draggable\"),E(T,\"propTypes\",j({},g.default.propTypes,{axis:i.a.oneOf([\"both\",\"x\",\"y\",\"none\"]),bounds:i.a.oneOfType([i.a.shape({left:i.a.number,right:i.a.number,top:i.a.number,bottom:i.a.number}),i.a.string,i.a.oneOf([!1])]),defaultClassName:i.a.string,defaultClassNameDragging:i.a.string,defaultClassNameDragged:i.a.string,defaultPosition:i.a.shape({x:i.a.number,y:i.a.number}),positionOffset:i.a.shape({x:i.a.oneOfType([i.a.number,i.a.string]),y:i.a.oneOfType([i.a.number,i.a.string])}),position:i.a.shape({x:i.a.number,y:i.a.number}),className:d.a,style:d.a,transform:d.a})),E(T,\"defaultProps\",j({},g.default.defaultProps,{axis:\"both\",bounds:!1,defaultClassName:\"react-draggable\",defaultClassNameDragging:\"react-draggable-dragging\",defaultClassNameDragged:\"react-draggable-dragged\",defaultPosition:{x:0,y:0},position:null,scale:1}))},function(t,e,n){\"use strict\";var r=n(12);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){\"use strict\";t.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}])});\n//# sourceMappingURL=react-draggable.min.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBreakpointFromWidth = getBreakpointFromWidth;\nexports.getColsFromBreakpoint = getColsFromBreakpoint;\nexports.findOrGenerateResponsiveLayout = findOrGenerateResponsiveLayout;\nexports.sortBreakpoints = sortBreakpoints;\n\nvar _utils = require(\"./utils\");\n\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\n/*: Breakpoints*/\n, width\n/*: number*/\n)\n/*: Breakpoint*/\n{\n var sorted = sortBreakpoints(breakpoints);\n var matching = sorted[0];\n\n for (var i = 1, len = sorted.length; i < len; i++) {\n var breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n\n return matching;\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 */\n\n\nfunction getColsFromBreakpoint(breakpoint\n/*: Breakpoint*/\n, cols\n/*: Breakpoints*/\n)\n/*: number*/\n{\n if (!cols[breakpoint]) {\n throw new Error(\"ResponsiveReactGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n }\n\n return cols[breakpoint];\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 */\n\n\nfunction findOrGenerateResponsiveLayout(layouts\n/*: ResponsiveLayout*/\n, breakpoints\n/*: Breakpoints*/\n, breakpoint\n/*: Breakpoint*/\n, lastBreakpoint\n/*: Breakpoint*/\n, cols\n/*: number*/\n, compactType\n/*: CompactType*/\n)\n/*: Layout*/\n{\n // If it already exists, just return it.\n if (layouts[breakpoint]) return (0, _utils.cloneLayout)(layouts[breakpoint]); // Find or generate the next layout\n\n var layout = layouts[lastBreakpoint];\n var breakpointsSorted = sortBreakpoints(breakpoints);\n var breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n\n for (var i = 0, len = breakpointsAbove.length; i < len; i++) {\n var b = breakpointsAbove[i];\n\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n\n layout = (0, _utils.cloneLayout)(layout || []); // clone layout so we don't modify existing items\n\n return (0, _utils.compact)((0, _utils.correctBounds)(layout, {\n cols: cols\n }), compactType, cols);\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 */\n\n\nfunction sortBreakpoints(breakpoints\n/*: Breakpoints*/\n)\n/*: Array*/\n{\n var keys\n /*: Array*/\n = Object.keys(breakpoints);\n return keys.sort(function (a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}","\"use strict\";\n\nmodule.exports = function(idHandler) {\n var eventListeners = {};\n\n /**\n * Gets all listeners for the given element.\n * @public\n * @param {element} element The element to get all listeners for.\n * @returns All listeners for the given element.\n */\n function getListeners(element) {\n var id = idHandler.get(element);\n\n if (id === undefined) {\n return [];\n }\n\n return eventListeners[id] || [];\n }\n\n /**\n * Stores the given listener for the given element. Will not actually add the listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The callback that the element has added.\n */\n function addListener(element, listener) {\n var id = idHandler.get(element);\n\n if(!eventListeners[id]) {\n eventListeners[id] = [];\n }\n\n eventListeners[id].push(listener);\n }\n\n function removeListener(element, listener) {\n var listeners = getListeners(element);\n for (var i = 0, len = listeners.length; i < len; ++i) {\n if (listeners[i] === listener) {\n listeners.splice(i, 1);\n break;\n }\n }\n }\n\n function removeAllListeners(element) {\n var listeners = getListeners(element);\n if (!listeners) { return; }\n listeners.length = 0;\n }\n\n return {\n get: getListeners,\n add: addListener,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners\n };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bottom = bottom;\nexports.cloneLayout = cloneLayout;\nexports.cloneLayoutItem = cloneLayoutItem;\nexports.childrenEqual = childrenEqual;\nexports.fastPositionEqual = fastPositionEqual;\nexports.collides = collides;\nexports.compact = compact;\nexports.compactItem = compactItem;\nexports.correctBounds = correctBounds;\nexports.getLayoutItem = getLayoutItem;\nexports.getFirstCollision = getFirstCollision;\nexports.getAllCollisions = getAllCollisions;\nexports.getStatics = getStatics;\nexports.moveElement = moveElement;\nexports.moveElementAwayFromCollision = moveElementAwayFromCollision;\nexports.perc = perc;\nexports.setTransform = setTransform;\nexports.setTopLeft = setTopLeft;\nexports.sortLayoutItems = sortLayoutItems;\nexports.sortLayoutItemsByRowCol = sortLayoutItemsByRowCol;\nexports.sortLayoutItemsByColRow = sortLayoutItemsByColRow;\nexports.synchronizeLayoutWithChildren = synchronizeLayoutWithChildren;\nexports.validateLayout = validateLayout;\nexports.compactType = compactType;\nexports.autoBindHandlers = autoBindHandlers;\nexports.noop = exports.fastRGLPropsEqual = void 0;\n\nvar _lodash = _interopRequireDefault(require(\"lodash.isequal\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar isProduction = process.env.NODE_ENV === \"production\";\nvar DEBUG = false;\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\n\nfunction bottom(layout\n/*: Layout*/\n)\n/*: number*/\n{\n var max = 0,\n bottomY;\n\n for (var i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n\n return max;\n}\n\nfunction cloneLayout(layout\n/*: Layout*/\n)\n/*: Layout*/\n{\n var newLayout = Array(layout.length);\n\n for (var i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n\n return newLayout;\n} // Fast path to cloning, since this is monomorphic\n\n\nfunction cloneLayoutItem(layoutItem\n/*: LayoutItem*/\n)\n/*: LayoutItem*/\n{\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 * 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 */\n\n\nfunction childrenEqual(a\n/*: ReactChildren*/\n, b\n/*: ReactChildren*/\n)\n/*: boolean*/\n{\n return (0, _lodash.default)(_react.default.Children.map(a, function (c) {\n return c.key;\n }), _react.default.Children.map(b, function (c) {\n return c.key;\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\n/*:: type FastRGLPropsEqual = (Object, Object, Function) => boolean;*/\n\n\nvar fastRGLPropsEqual\n/*: FastRGLPropsEqual*/\n= require(\"./fastRGLPropsEqual\"); // Like the above, but a lot simpler.\n\n\nexports.fastRGLPropsEqual = fastRGLPropsEqual;\n\nfunction fastPositionEqual(a\n/*: Position*/\n, b\n/*: Position*/\n) {\n return a.left === b.left && a.top === b.top && a.width === b.width && a.height === b.height;\n}\n/**\n * Given two layoutitems, check if they collide.\n */\n\n\nfunction collides(l1\n/*: LayoutItem*/\n, l2\n/*: LayoutItem*/\n)\n/*: boolean*/\n{\n if (l1.i === l2.i) return false; // same element\n\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n\n return true; // boxes overlap\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 * @return {Array} Compacted Layout.\n */\n\n\nfunction compact(layout\n/*: Layout*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n)\n/*: Layout*/\n{\n // Statics go in the compareWith array right away so items flow around them.\n var compareWith = getStatics(layout); // We go through the items by row and column.\n\n var sorted = sortLayoutItems(layout, compactType); // Holding for new items.\n\n var out = Array(layout.length);\n\n for (var i = 0, len = sorted.length; i < len; i++) {\n var l = cloneLayoutItem(sorted[i]); // Don't move static elements\n\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted); // Add to comparison array. We only collide with items before this one.\n // Statics are already in this array.\n\n compareWith.push(l);\n } // Add to output array to make sure they still come out in the right order.\n\n\n out[layout.indexOf(sorted[i])] = l; // Clear moved flag, if it exists.\n\n l.moved = false;\n }\n\n return out;\n}\n\nvar 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 */\n\nfunction resolveCompactionCollision(layout\n/*: Layout*/\n, item\n/*: LayoutItem*/\n, moveToCoord\n/*: number*/\n, axis\n/*: \"x\" | \"y\"*/\n) {\n var sizeProp = heightWidth[axis];\n item[axis] += 1;\n var itemIndex = layout.map(function (layoutItem) {\n return layoutItem.i;\n }).indexOf(item.i); // Go through each item we collide with.\n\n for (var i = itemIndex + 1; i < layout.length; i++) {\n var otherItem = layout[i]; // Ignore static items\n\n if (otherItem.static) continue; // 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\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis);\n }\n }\n\n item[axis] = moveToCoord;\n}\n/**\n * Compact an item in the layout.\n *\n * Modifies item.\n *\n */\n\n\nfunction compactItem(compareWith\n/*: Layout*/\n, l\n/*: LayoutItem*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n, fullLayout\n/*: Layout*/\n)\n/*: LayoutItem*/\n{\n var compactV = compactType === \"vertical\";\n var compactH = compactType === \"horizontal\";\n\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); // Move the element up as far as it can go without colliding.\n\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n l.y = Math.min(bottom(compareWith), l.y); // Move the element left as far as it can go without colliding.\n\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n } // Move it down, and keep moving it down if it's colliding.\n\n\n var collides;\n\n while (collides = getFirstCollision(compareWith, l)) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n } // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n\n\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n }\n\n return l;\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 */\n\n\nfunction correctBounds(layout\n/*: Layout*/\n, bounds\n/*: { cols: number }*/\n)\n/*: Layout*/\n{\n var collidesWith = getStatics(layout);\n\n for (var i = 0, len = layout.length; i < len; i++) {\n var l = layout[i]; // Overflows right\n\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w; // Overflows left\n\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\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\n return layout;\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 */\n\n\nfunction getLayoutItem(layout\n/*: Layout*/\n, id\n/*: string*/\n)\n/*: ?LayoutItem*/\n{\n for (var i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\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 */\n\n\nfunction getFirstCollision(layout\n/*: Layout*/\n, layoutItem\n/*: LayoutItem*/\n)\n/*: ?LayoutItem*/\n{\n for (var i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nfunction getAllCollisions(layout\n/*: Layout*/\n, layoutItem\n/*: LayoutItem*/\n)\n/*: Array*/\n{\n return layout.filter(function (l) {\n return 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 */\n\n\nfunction getStatics(layout\n/*: Layout*/\n)\n/*: Array*/\n{\n return layout.filter(function (l) {\n return 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 */\n\n\nfunction moveElement(layout\n/*: Layout*/\n, l\n/*: LayoutItem*/\n, x\n/*: ?number*/\n, y\n/*: ?number*/\n, isUserAction\n/*: ?boolean*/\n, preventCollision\n/*: ?boolean*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n)\n/*: Layout*/\n{\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; // Short-circuit if nothing to do.\n\n if (l.y === y && l.x === x) return layout;\n log(\"Moving element \".concat(l.i, \" to [\").concat(String(x), \",\").concat(String(y), \"] from [\").concat(l.x, \",\").concat(l.y, \"]\"));\n var oldX = l.x;\n var oldY = l.y; // This is quite a bit faster than extending the object\n\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true; // 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\n var sorted = sortLayoutItems(layout, compactType);\n var movingUp = compactType === \"vertical\" && typeof y === \"number\" ? oldY >= y : compactType === \"horizontal\" && typeof x === \"number\" ? oldX >= x : false; // $FlowIgnore acceptable modification of read-only array as it was recently cloned\n\n if (movingUp) sorted = sorted.reverse();\n var collisions = getAllCollisions(sorted, l); // There was a collision; abort\n\n if (preventCollision && collisions.length) {\n log(\"Collision prevented on \".concat(l.i, \", reverting.\"));\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout;\n } // Move each item that collides away from this element.\n\n\n for (var i = 0, len = collisions.length; i < len; i++) {\n var collision = collisions[i];\n log(\"Resolving collision between \".concat(l.i, \" at [\").concat(l.x, \",\").concat(l.y, \"] and \").concat(collision.i, \" at [\").concat(collision.x, \",\").concat(collision.y, \"]\")); // Short circuit so we can't infinite loop\n\n if (collision.moved) continue; // Don't move static items - we have to move *this* element away\n\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\n return layout;\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 */\n\n\nfunction moveElementAwayFromCollision(layout\n/*: Layout*/\n, collidesWith\n/*: LayoutItem*/\n, itemToMove\n/*: LayoutItem*/\n, isUserAction\n/*: ?boolean*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n)\n/*: Layout*/\n{\n var compactH = compactType === \"horizontal\"; // Compact vertically if not set to horizontal\n\n var compactV = compactType !== \"horizontal\";\n var preventCollision = collidesWith.static; // we're already colliding (not for static items)\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\n if (isUserAction) {\n // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false; // Make a mock item so we don't modify the item here, only modify in moveElement.\n\n var fakeItem\n /*: LayoutItem*/\n = {\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 }; // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n\n if (!getFirstCollision(layout, fakeItem)) {\n log(\"Doing reverse collision on \".concat(itemToMove.i, \" up to [\").concat(fakeItem.x, \",\").concat(fakeItem.y, \"].\"));\n return moveElement(layout, itemToMove, compactH ? fakeItem.x : undefined, compactV ? fakeItem.y : undefined, isUserAction, preventCollision, compactType, cols);\n }\n }\n\n return moveElement(layout, itemToMove, compactH ? itemToMove.x + 1 : undefined, compactV ? itemToMove.y + 1 : undefined, isUserAction, preventCollision, compactType, cols);\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 */\n\n\nfunction perc(num\n/*: number*/\n)\n/*: string*/\n{\n return num * 100 + \"%\";\n}\n\nfunction setTransform(_ref)\n/*: Object*/\n{\n var top = _ref.top,\n left = _ref.left,\n width = _ref.width,\n height = _ref.height;\n // Replace unitless items with px\n var translate = \"translate(\".concat(left, \"px,\").concat(top, \"px)\");\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n position: \"absolute\"\n };\n}\n\nfunction setTopLeft(_ref2)\n/*: Object*/\n{\n var top = _ref2.top,\n left = _ref2.left,\n width = _ref2.width,\n height = _ref2.height;\n return {\n top: \"\".concat(top, \"px\"),\n left: \"\".concat(left, \"px\"),\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n position: \"absolute\"\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 */\n\n\nfunction sortLayoutItems(layout\n/*: Layout*/\n, compactType\n/*: CompactType*/\n)\n/*: Layout*/\n{\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);else return sortLayoutItemsByRowCol(layout);\n}\n/**\n * Sort layout items by row ascending and column ascending.\n *\n * Does not modify Layout.\n */\n\n\nfunction sortLayoutItemsByRowCol(layout\n/*: Layout*/\n)\n/*: Layout*/\n{\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\n return -1;\n });\n}\n/**\n * Sort layout items by column ascending then row ascending.\n *\n * Does not modify Layout.\n */\n\n\nfunction sortLayoutItemsByColRow(layout\n/*: Layout*/\n)\n/*: Layout*/\n{\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\n return -1;\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 */\n\n\nfunction synchronizeLayoutWithChildren(initialLayout\n/*: Layout*/\n, children\n/*: ReactChildren*/\n, cols\n/*: number*/\n, compactType\n/*: CompactType*/\n)\n/*: Layout*/\n{\n initialLayout = initialLayout || []; // Generate one layout item per child.\n\n var layout\n /*: LayoutItem[]*/\n = [];\n\n _react.default.Children.forEach(children, function (child\n /*: ReactElement*/\n , i\n /*: number*/\n ) {\n // Don't overwrite if it already exists.\n var exists = getLayoutItem(initialLayout, String(child.key));\n\n if (exists) {\n layout[i] = cloneLayoutItem(exists);\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\"`_grid` properties on children have been deprecated as of React 15.2. \" + // eslint-disable-line\n \"Please use `data-grid` or add your properties directly to the `layout`.\");\n }\n\n var g = child.props[\"data-grid\"] || child.props._grid; // Hey, this item has a data-grid property, use it.\n\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n }\n\n layout[i] = cloneLayoutItem(_objectSpread(_objectSpread({}, g), {}, {\n i: child.key\n }));\n } else {\n // Nothing provided: ensure this is added to the bottom\n layout[i] = cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n });\n }\n }\n }); // Correct the layout.\n\n\n var correctedLayout = correctBounds(layout, {\n cols: cols\n });\n return compact(correctedLayout, compactType, cols);\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 */\n\n\nfunction validateLayout(layout\n/*: Layout*/\n)\n/*: void*/\n{\n var contextName\n /*: string*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Layout\";\n var subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n\n for (var i = 0, len = layout.length; i < len; i++) {\n var item = layout[i];\n\n for (var 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 if (item.i && typeof item.i !== \"string\") {\n throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + i + \"].i must be a string!\");\n }\n\n if (item.static !== undefined && typeof item.static !== \"boolean\") {\n throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + i + \"].static must be a boolean!\");\n }\n }\n} // Legacy support for verticalCompact: false\n\n\nfunction compactType(props\n/*: ?{ verticalCompact: boolean, compactType: CompactType }*/\n)\n/*: CompactType*/\n{\n var _ref3 = props || {},\n verticalCompact = _ref3.verticalCompact,\n compactType = _ref3.compactType;\n\n return verticalCompact === false ? null : compactType;\n} // Flow can't really figure this out, so we just use Object\n\n\nfunction autoBindHandlers(el\n/*: Object*/\n, fns\n/*: Array*/\n)\n/*: void*/\n{\n fns.forEach(function (key) {\n return el[key] = el[key].bind(el);\n });\n}\n\nfunction log() {\n var _console;\n\n if (!DEBUG) return; // eslint-disable-next-line no-console\n\n (_console = console).log.apply(_console, arguments);\n}\n\nvar noop = function noop() {};\n\nexports.noop = noop;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.resizeHandleType = exports.resizeHandlesType = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\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)\nvar resizeHandlesType = _propTypes.default.arrayOf(_propTypes.default.oneOf([\"s\", \"w\", \"e\", \"n\", \"sw\", \"nw\", \"se\", \"ne\"])); // Custom component for resize handles\n\n\nexports.resizeHandlesType = resizeHandlesType;\n\nvar 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: ResizeHandles,\n resizeHandle?: ResizeHandle,\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 onDrop: (layout: Layout, item: ?LayoutItem, e: Event) => void,\n children: ReactChildrenArray>,\n innerRef?: Ref<\"div\">\n|};*/\n\n\nexports.resizeHandleType = resizeHandleType;\nvar _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 verticalCompact(props\n /*: Props*/\n ) {\n if (props.verticalCompact === false && process.env.NODE_ENV !== \"production\") {\n console.warn( // 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\"]),\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function layout(props\n /*: Props*/\n ) {\n var layout = props.layout; // I hope you're setting the data-grid property on the grid items\n\n if (layout === undefined) return;\n\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n //\n // Grid Dimensions\n //\n // Margin between items [x, y] in px\n margin: _propTypes.default.arrayOf(_propTypes.default.number),\n // Padding inside the container [x, y] in px\n containerPadding: _propTypes.default.arrayOf(_propTypes.default.number),\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 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: resizeHandlesType,\n resizeHandle: resizeHandleType,\n //\n // Callbacks\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 droppingItem: _propTypes.default.shape({\n i: _propTypes.default.string.isRequired,\n w: _propTypes.default.number.isRequired,\n h: _propTypes.default.number.isRequired\n }),\n // Children must not have duplicate keys.\n children: function children(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var children = props[propName]; // Check children keys for duplicates. Throw if found.\n\n var keys = {};\n\n _react.default.Children.forEach(children, function (child) {\n if (keys[child.key]) {\n throw new Error('Duplicate child key \"' + child.key + '\" found! This will cause problems in ReactGridLayout.');\n }\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};\nexports.default = _default;","\"use strict\";\n\nmodule.exports = function(options) {\n var idGenerator = options.idGenerator;\n var getState = options.stateHandler.getState;\n\n /**\n * Gets the resize detector id of the element.\n * @public\n * @param {element} element The target element to get the id of.\n * @returns {string|number|null} The id of the element. Null if it has no id.\n */\n function getId(element) {\n var state = getState(element);\n\n if (state && state.id !== undefined) {\n return state.id;\n }\n\n return null;\n }\n\n /**\n * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n * @public\n * @param {element} element The target element to set the id of.\n * @returns {string|number|null} The id of the element.\n */\n function setId(element) {\n var state = getState(element);\n\n if (!state) {\n throw new Error(\"setId required the element to have a resize detection state.\");\n }\n\n var id = idGenerator.generate();\n\n state.id = id;\n\n return id;\n }\n\n return {\n get: getId,\n set: setId\n };\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","import { DataQueryError, LoadingState, PanelData } from '@grafana/data';\nimport { useEffect, useRef, useState } from 'react';\nimport { PanelModel } from '../../state';\nimport { Unsubscribable } from 'rxjs';\nimport { GetDataOptions } from '../../../query/state/PanelQueryRunner';\n\ninterface UsePanelLatestData {\n data?: PanelData;\n error?: DataQueryError;\n isLoading: boolean;\n hasSeries: boolean;\n}\n\n/**\n * Subscribes and returns latest panel data from PanelQueryRunner\n */\nexport const usePanelLatestData = (panel: PanelModel, options: GetDataOptions): UsePanelLatestData => {\n const querySubscription = useRef();\n const [latestData, setLatestData] = useState();\n\n useEffect(() => {\n querySubscription.current = panel\n .getQueryRunner()\n .getData(options)\n .subscribe({\n next: (data) => setLatestData(data),\n });\n\n return () => {\n if (querySubscription.current) {\n querySubscription.current.unsubscribe();\n }\n };\n /**\n * Adding separate options to dependencies array to avoid additional hook for comparing previous options with current.\n * Otherwise, passing different references to the same object may cause troubles.\n */\n }, [panel, options.withFieldConfig, options.withTransforms]);\n\n return {\n data: latestData,\n error: latestData && latestData.error,\n isLoading: latestData ? latestData.state === LoadingState.Loading : true,\n hasSeries: latestData ? !!latestData.series : false,\n };\n};\n","import React, { FunctionComponent, PropsWithChildren, ReactElement, useMemo } from 'react';\nimport { VariableHide, VariableModel } from '../types';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { variableAdapters } from '../adapters';\nimport { Tooltip } from '@grafana/ui';\n\ninterface Props {\n variable: VariableModel;\n}\n\nexport const PickerRenderer: FunctionComponent = (props) => {\n const PickerToRender = useMemo(() => variableAdapters.get(props.variable.type).picker, [props.variable]);\n\n if (!props.variable) {\n return
Couldn't load variable
;\n }\n\n return (\n
\n \n {props.variable.hide !== VariableHide.hideVariable && PickerToRender && (\n \n )}\n
\n );\n};\n\nfunction PickerLabel({ variable }: PropsWithChildren): ReactElement | null {\n const labelOrName = useMemo(() => variable.label || variable.name, [variable]);\n\n if (variable.hide !== VariableHide.dontHide) {\n return null;\n }\n\n if (variable.description) {\n return (\n \n \n {labelOrName}\n \n \n );\n }\n\n return (\n \n {labelOrName}\n \n );\n}\n","import React, { FunctionComponent, useEffect, useState } from 'react';\nimport { VariableHide, VariableModel } from '../../../variables/types';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { PickerRenderer } from '../../../variables/pickers/PickerRenderer';\n\ninterface Props {\n variables: VariableModel[];\n}\n\nexport const SubMenuItems: FunctionComponent = ({ variables }) => {\n const [visibleVariables, setVisibleVariables] = useState([]);\n useEffect(() => {\n setVisibleVariables(variables.filter((state) => state.hide !== VariableHide.hideVariable));\n }, [variables]);\n\n if (visibleVariables.length === 0) {\n return null;\n }\n\n return (\n <>\n {visibleVariables.map((variable) => {\n return (\n \n \n
\n );\n })}\n \n );\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread(_objectSpread({}, element.props.style), props.style);\n }\n\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n\n return /*#__PURE__*/_react.default.cloneElement(element, props);\n}","\"use strict\";\n\nmodule.exports = function(options) {\n var getState = options.stateHandler.getState;\n\n /**\n * Tells if the element has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is detectable or not.\n */\n function isDetectable(element) {\n var state = getState(element);\n return state && !!state.isDetectable;\n }\n\n /**\n * Marks the element that it has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to mark.\n */\n function markAsDetectable(element) {\n getState(element).isDetectable = true;\n }\n\n /**\n * Tells if the element is busy or not.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is busy or not.\n */\n function isBusy(element) {\n return !!getState(element).busy;\n }\n\n /**\n * Marks the object is busy and should not be made detectable.\n * @public\n * @param {element} element The element to mark.\n * @param {boolean} busy If the element is busy or not.\n */\n function markBusy(element, busy) {\n getState(element).busy = !!busy;\n }\n\n return {\n isDetectable: isDetectable,\n markAsDetectable: markAsDetectable,\n isBusy: isBusy,\n markBusy: markBusy\n };\n};\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","import { createAction } from '@reduxjs/toolkit';\nimport { LoadingState } from '@grafana/data';\n\nimport { LibraryPanelDTO } from '../../types';\nimport { AnyAction } from 'redux';\n\nexport interface LibraryPanelsViewState {\n loadingState: LoadingState;\n libraryPanels: LibraryPanelDTO[];\n searchString: string;\n totalCount: number;\n perPage: number;\n page: number;\n numberOfPages: number;\n currentPanelId?: string;\n}\n\nexport const initialLibraryPanelsViewState: LibraryPanelsViewState = {\n loadingState: LoadingState.NotStarted,\n libraryPanels: [],\n searchString: '',\n totalCount: 0,\n perPage: 10,\n page: 1,\n numberOfPages: 0,\n currentPanelId: undefined,\n};\n\nexport const initSearch = createAction('libraryPanels/view/initSearch');\nexport const searchCompleted = createAction<\n Omit\n>('libraryPanels/view/searchCompleted');\nexport const changeSearchString = createAction>(\n 'libraryPanels/view/changeSearchString'\n);\nexport const changePage = createAction>('libraryPanels/view/changePage');\n\nexport const libraryPanelsViewReducer = (state: LibraryPanelsViewState, action: AnyAction) => {\n if (initSearch.match(action)) {\n return { ...state, loadingState: LoadingState.Loading };\n }\n\n if (searchCompleted.match(action)) {\n const { libraryPanels, page, perPage, totalCount } = action.payload;\n const numberOfPages = Math.ceil(totalCount / perPage);\n return {\n ...state,\n libraryPanels,\n perPage,\n totalCount,\n loadingState: LoadingState.Done,\n numberOfPages,\n page: page > numberOfPages ? page - 1 : page,\n };\n }\n\n if (changeSearchString.match(action)) {\n return { ...state, searchString: action.payload.searchString };\n }\n\n if (changePage.match(action)) {\n return { ...state, page: action.payload.page };\n }\n\n return state;\n};\n","import { Dispatch } from 'react';\nimport { AnyAction } from '@reduxjs/toolkit';\nimport { from, merge, of, Subscription, timer } from 'rxjs';\nimport { catchError, finalize, mapTo, mergeMap, share, takeUntil } from 'rxjs/operators';\n\nimport { deleteLibraryPanel as apiDeleteLibraryPanel, getLibraryPanels } from '../../state/api';\nimport { initialLibraryPanelsViewState, initSearch, LibraryPanelsViewState, searchCompleted } from './reducer';\nimport { DispatchResult } from '../../types';\n\ntype SearchArgs = Pick;\n\nexport function searchForLibraryPanels(args: SearchArgs): DispatchResult {\n return function (dispatch) {\n const subscription = new Subscription();\n const dataObservable = from(\n getLibraryPanels({\n name: args.searchString,\n perPage: args.perPage,\n page: args.page,\n excludeUid: args.currentPanelId,\n })\n ).pipe(\n mergeMap(({ perPage, libraryPanels, page, totalCount }) =>\n of(searchCompleted({ libraryPanels, page, perPage, totalCount }))\n ),\n catchError((err) => {\n console.error(err);\n return of(searchCompleted({ ...initialLibraryPanelsViewState, page: args.page, perPage: args.perPage }));\n }),\n finalize(() => subscription.unsubscribe()), // make sure we unsubscribe\n share()\n );\n\n subscription.add(\n // If 50ms without a response dispatch a loading state\n // mapTo will translate the timer event into a loading state\n // takeUntil will cancel the timer emit when first response is received on the dataObservable\n merge(timer(50).pipe(mapTo(initSearch()), takeUntil(dataObservable)), dataObservable).subscribe(dispatch)\n );\n };\n}\n\nexport function deleteLibraryPanel(uid: string, args: SearchArgs): DispatchResult {\n return async function (dispatch) {\n try {\n await apiDeleteLibraryPanel(uid);\n searchForLibraryPanels(args)(dispatch);\n } catch (e) {\n console.error(e);\n }\n };\n}\n\nexport function asyncDispatcher(dispatch: Dispatch) {\n return function (action: any) {\n if (action instanceof Function) {\n return action(dispatch);\n }\n return dispatch(action);\n };\n}\n","import { DashboardSearchHit } from 'app/features/search/types';\nimport { LoadingState } from '@grafana/data';\nimport { AnyAction } from 'redux';\nimport { createAction } from '@reduxjs/toolkit';\n\nexport interface DeleteLibraryPanelModalState {\n loadingState: LoadingState;\n dashboardTitles: string[];\n}\n\nexport const initialDeleteLibraryPanelModalState: DeleteLibraryPanelModalState = {\n loadingState: LoadingState.Loading,\n dashboardTitles: [],\n};\n\nexport const searchCompleted = createAction<{ dashboards: DashboardSearchHit[] }>(\n 'libraryPanels/delete/searchCompleted'\n);\n\nexport const deleteLibraryPanelModalReducer = (\n state: DeleteLibraryPanelModalState = initialDeleteLibraryPanelModalState,\n action: AnyAction\n): DeleteLibraryPanelModalState => {\n if (searchCompleted.match(action)) {\n return {\n ...state,\n dashboardTitles: action.payload.dashboards.map((d) => d.title),\n loadingState: LoadingState.Done,\n };\n }\n\n return state;\n};\n","import { DispatchResult, LibraryPanelDTO } from '../../types';\nimport { getLibraryPanelConnectedDashboards } from '../../state/api';\nimport { getBackendSrv } from '../../../../core/services/backend_srv';\nimport { searchCompleted } from './reducer';\n\nexport function getConnectedDashboards(libraryPanel: LibraryPanelDTO): DispatchResult {\n return async function (dispatch) {\n const connectedDashboards = await getLibraryPanelConnectedDashboards(libraryPanel.uid);\n if (!connectedDashboards.length) {\n dispatch(searchCompleted({ dashboards: [] }));\n return;\n }\n\n const dashboards = await getBackendSrv().search({ dashboardIds: connectedDashboards });\n dispatch(searchCompleted({ dashboards }));\n };\n}\n","import React, { FC, useEffect, useMemo, useReducer } from 'react';\nimport { Button, HorizontalGroup, Modal, useStyles } from '@grafana/ui';\nimport { LoadingState } from '@grafana/data';\n\nimport { LibraryPanelDTO } from '../../types';\nimport { asyncDispatcher } from '../LibraryPanelsView/actions';\nimport { deleteLibraryPanelModalReducer, initialDeleteLibraryPanelModalState } from './reducer';\nimport { getConnectedDashboards } from './actions';\nimport { getModalStyles } from '../../styles';\n\ninterface Props {\n libraryPanel: LibraryPanelDTO;\n onConfirm: () => void;\n onDismiss: () => void;\n}\n\nexport const DeleteLibraryPanelModal: FC = ({ libraryPanel, onDismiss, onConfirm }) => {\n const styles = useStyles(getModalStyles);\n const [{ dashboardTitles, loadingState }, dispatch] = useReducer(\n deleteLibraryPanelModalReducer,\n initialDeleteLibraryPanelModalState\n );\n const asyncDispatch = useMemo(() => asyncDispatcher(dispatch), [dispatch]);\n useEffect(() => {\n asyncDispatch(getConnectedDashboards(libraryPanel));\n }, []);\n const connected = Boolean(dashboardTitles.length);\n const done = loadingState === LoadingState.Done;\n\n return (\n \n {!done ? : null}\n {done ? (\n
\n {connected ? : null}\n {!connected ? : null}\n\n \n \n \n \n
\n ) : null}\n
\n );\n};\n\nconst LoadingIndicator: FC = () => Loading library panel...;\n\nconst Confirm: FC = () => {\n const styles = useStyles(getModalStyles);\n\n return
Do you want to delete this panel?
;\n};\n\nconst HasConnectedDashboards: FC<{ dashboardTitles: string[] }> = ({ dashboardTitles }) => {\n const styles = useStyles(getModalStyles);\n const suffix = dashboardTitles.length === 1 ? 'dashboard.' : 'dashboards.';\n const message = `${dashboardTitles.length} ${suffix}`;\n if (dashboardTitles.length === 0) {\n return null;\n }\n\n return (\n
\n

\n {'This library panel can not be deleted because it is connected to '}\n {message}\n {' Remove the library panel from the dashboards listed below and retry.'}\n

\n \n \n \n \n \n \n \n {dashboardTitles.map((title, i) => (\n \n \n \n ))}\n \n
Dashboard name
{title}
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { Card, Icon, IconButton, Tooltip, useStyles } from '@grafana/ui';\nimport { css } from 'emotion';\nimport { GrafanaTheme } from '@grafana/data';\nimport { LibraryPanelDTO } from '../../types';\nimport { DeleteLibraryPanelModal } from '../DeleteLibraryPanelModal/DeleteLibraryPanelModal';\n\nexport interface LibraryPanelCardProps {\n libraryPanel: LibraryPanelDTO;\n onClick?: (panel: LibraryPanelDTO) => void;\n onDelete?: (panel: LibraryPanelDTO) => void;\n showSecondaryActions?: boolean;\n formatDate?: (dateString: string) => string;\n}\n\nexport const LibraryPanelCard: React.FC = ({\n libraryPanel,\n children,\n onClick,\n onDelete,\n formatDate,\n showSecondaryActions,\n}) => {\n const styles = useStyles(getStyles);\n const [showDeletionModal, setShowDeletionModal] = useState(false);\n\n const onDeletePanel = () => {\n onDelete?.(libraryPanel);\n setShowDeletionModal(false);\n };\n\n return (\n <>\n onClick(libraryPanel) : undefined}>\n \n \n \n \n Reusable panel\n \n
\n \n {libraryPanel.meta.connectedDashboards}\n
\n
\n \n Last edited {formatDate?.(libraryPanel.meta.updated ?? '') ?? libraryPanel.meta.updated} by{' '}\n {libraryPanel.meta.updatedBy.name}\n \n
\n {/*\n Commenting this out as tagging isn't implemented yet.\n \n \n */}\n {children && {children}}\n {showSecondaryActions && (\n \n setShowDeletionModal(true)}\n />\n {/*\n Commenting this out as panel favoriting hasn't been implemented yet.\n \n */}\n \n )}\n
\n {showDeletionModal && (\n setShowDeletionModal(false)}\n />\n )}\n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme) => {\n return {\n tooltip: css`\n display: inline;\n `,\n detailIcon: css`\n margin-right: 0.5ch;\n `,\n panelIcon: css`\n color: ${theme.colors.textWeak};\n `,\n tagList: css`\n align-self: center;\n `,\n };\n};\n","import React, { FormEvent, useMemo, useReducer } from 'react';\nimport { useDebounce } from 'react-use';\nimport { css, cx } from 'emotion';\nimport { Button, Icon, Input, Pagination, stylesFactory, useStyles } from '@grafana/ui';\nimport { DateTimeInput, GrafanaTheme, LoadingState } from '@grafana/data';\n\nimport { LibraryPanelCard } from '../LibraryPanelCard/LibraryPanelCard';\nimport { LibraryPanelDTO } from '../../types';\nimport { changePage, changeSearchString, initialLibraryPanelsViewState, libraryPanelsViewReducer } from './reducer';\nimport { asyncDispatcher, deleteLibraryPanel, searchForLibraryPanels } from './actions';\n\ninterface LibraryPanelViewProps {\n className?: string;\n onCreateNewPanel?: () => void;\n children?: (panel: LibraryPanelDTO, i: number) => JSX.Element | JSX.Element[];\n onClickCard?: (panel: LibraryPanelDTO) => void;\n formatDate?: (dateString: DateTimeInput, format?: string) => string;\n showSecondaryActions?: boolean;\n currentPanelId?: string;\n}\n\nexport const LibraryPanelsView: React.FC = ({\n children,\n className,\n onCreateNewPanel,\n onClickCard,\n formatDate,\n showSecondaryActions,\n currentPanelId: currentPanel,\n}) => {\n const styles = useStyles(getPanelViewStyles);\n const [\n { libraryPanels, searchString, page, perPage, numberOfPages, loadingState, currentPanelId },\n dispatch,\n ] = useReducer(libraryPanelsViewReducer, {\n ...initialLibraryPanelsViewState,\n currentPanelId: currentPanel,\n });\n const asyncDispatch = useMemo(() => asyncDispatcher(dispatch), [dispatch]);\n useDebounce(() => asyncDispatch(searchForLibraryPanels({ searchString, page, perPage, currentPanelId })), 300, [\n searchString,\n page,\n asyncDispatch,\n ]);\n const onSearchChange = (event: FormEvent) =>\n asyncDispatch(changeSearchString({ searchString: event.currentTarget.value }));\n const onDelete = ({ uid }: LibraryPanelDTO) =>\n asyncDispatch(deleteLibraryPanel(uid, { searchString, page, perPage }));\n const onPageChange = (page: number) => asyncDispatch(changePage({ page }));\n\n return (\n
\n
\n }\n value={searchString}\n autoFocus\n onChange={onSearchChange}\n />\n {/* ;\n};\n","import React from 'react';\nimport { cx } from 'emotion';\n\nexport interface CardProps {\n logoUrl?: string;\n title: string;\n description?: string;\n labels?: React.ReactNode;\n actions?: React.ReactNode;\n onClick?: () => void;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const Card: React.FC = ({\n logoUrl,\n title,\n description,\n labels,\n actions,\n onClick,\n ariaLabel,\n className,\n}) => {\n const mainClassName = cx('add-data-source-item', className);\n\n return (\n
\n {logoUrl && }\n
\n {title}\n {description && {description}}\n {labels &&
{labels}
}\n
\n {actions &&
{actions}
}\n
\n );\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _utils = require(\"./utils\");\n\nvar _propTypes = require(\"./propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Resizable = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n\n function Resizable() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", undefined);\n\n _defineProperty(_assertThisInitialized(_this), \"lastHandleRect\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"slack\", null);\n\n return _this;\n }\n\n var _proto = Resizable.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.resetData();\n };\n\n _proto.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) {\n height = width / aspectRatio;\n width = height * aspectRatio;\n return [width, height];\n };\n\n _proto.resetData = function resetData() {\n this.lastHandleRect = this.slack = null;\n } // Clamp width and height within provided constraints\n ;\n\n _proto.runConstraints = function runConstraints(width, height) {\n var _ref = [this.props.minConstraints, this.props.maxConstraints],\n min = _ref[0],\n max = _ref[1];\n if (!min && !max) return [width, height]; // If constraining to min and max, we need to also fit width and height to aspect ratio.\n\n if (this.props.lockAspectRatio) {\n var resizingHorizontally = height === this.props.height;\n\n if (resizingHorizontally) {\n var ratio = this.props.width / this.props.height;\n height = width / ratio;\n width = height * ratio;\n } else {\n // Take into account vertical resize with N/S handles on locked aspect\n // ratio. Calculate the change height-first, instead of width-first\n var _ratio = this.props.height / this.props.width;\n\n width = height / _ratio;\n height = width * _ratio;\n }\n }\n\n var oldW = width,\n oldH = height; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n var _ref2 = this.slack || [0, 0],\n slackW = _ref2[0],\n slackH = _ref2[1];\n\n width += slackW;\n height += slackH;\n\n if (min) {\n width = Math.max(min[0], width);\n height = Math.max(min[1], height);\n }\n\n if (max) {\n width = Math.min(max[0], width);\n height = Math.min(max[1], height);\n } // If the width or height changed, we must have introduced some slack. Record it for the next iteration.\n\n\n this.slack = [slackW + (oldW - width), slackH + (oldH - height)];\n return [width, height];\n }\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n ;\n\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n\n return function (e, _ref3) {\n var node = _ref3.node,\n deltaX = _ref3.deltaX,\n deltaY = _ref3.deltaY;\n // Reset data in case it was left over somehow (should not be possible)\n if (handlerName === 'onResizeStart') _this2.resetData(); // Axis restrictions\n\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && axis !== 'n' && axis !== 's';\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && axis !== 'e' && axis !== 'w'; // No dragging possible.\n\n if (!canDragX && !canDragY) return; // Decompose axis for later use\n\n var axisV = axis[0];\n var axisH = axis[axis.length - 1]; // intentionally not axis[1], so that this catches axis === 'w' for example\n // Track the element being dragged to account for changes in position.\n // If a handle's position is changed between callbacks, we need to factor this in to the next callback.\n // Failure to do so will cause the element to \"skip\" when resized upwards or leftwards.\n\n var handleRect = node.getBoundingClientRect();\n\n if (_this2.lastHandleRect != null) {\n // If the handle has repositioned on either axis since last render,\n // we need to increase our callback values by this much.\n // Only checking 'n', 'w' since resizing by 's', 'w' won't affect the overall position on page,\n if (axisH === 'w') {\n var deltaLeftSinceLast = handleRect.left - _this2.lastHandleRect.left;\n deltaX += deltaLeftSinceLast;\n }\n\n if (axisV === 'n') {\n var deltaTopSinceLast = handleRect.top - _this2.lastHandleRect.top;\n deltaY += deltaTopSinceLast;\n }\n } // Storage of last rect so we know how much it has really moved.\n\n\n _this2.lastHandleRect = handleRect; // Reverse delta if using top or left drag handles.\n\n if (axisH === 'w') deltaX = -deltaX;\n if (axisV === 'n') deltaY = -deltaY; // Update w/h by the deltas. Also factor in transformScale.\n\n var width = _this2.props.width + (canDragX ? deltaX / _this2.props.transformScale : 0);\n var height = _this2.props.height + (canDragY ? deltaY / _this2.props.transformScale : 0); // Run user-provided constraints.\n\n var _this2$runConstraints = _this2.runConstraints(width, height);\n\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n var dimensionsChanged = width !== _this2.props.width || height !== _this2.props.height; // Call user-supplied callback if present.\n\n var cb = typeof _this2.props[handlerName] === 'function' ? _this2.props[handlerName] : null; // Don't call 'onResize' if dimensions haven't changed.\n\n var shouldSkipCb = handlerName === 'onResize' && !dimensionsChanged;\n\n if (cb && !shouldSkipCb) {\n if (typeof e.persist === 'function') e.persist();\n cb(e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n } // Reset internal data\n\n\n if (handlerName === 'onResizeStop') _this2.resetData();\n };\n };\n\n _proto.renderResizeHandle = function renderResizeHandle(resizeHandleAxis) {\n var handle = this.props.handle;\n\n if (handle) {\n if (typeof handle === 'function') {\n return handle(resizeHandleAxis);\n }\n\n return handle;\n }\n\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + resizeHandleAxis\n });\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // Pass along only props not meant for the ``.`\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n draggableOpts = _this$props.draggableOpts,\n width = _this$props.width,\n height = _this$props.height,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n onResize = _this$props.onResize,\n onResizeStop = _this$props.onResizeStop,\n onResizeStart = _this$props.onResizeStart,\n resizeHandles = _this$props.resizeHandles,\n transformScale = _this$props.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"className\", \"draggableOpts\", \"width\", \"height\", \"handle\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"]); // What we're doing here is getting the child of this element, and cloning it with this element's props.\n // We are then defining its children as:\n // Its original children (resizable's child's children), and\n // One or more draggable handles.\n\n\n return (0, _utils.cloneElement)(children, _objectSpread(_objectSpread({}, p), {}, {\n className: (className ? className + \" \" : '') + \"react-resizable\",\n children: [].concat(children.props.children, resizeHandles.map(function (handleAxis) {\n return /*#__PURE__*/_react.default.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n key: \"resizableHandle-\" + handleAxis,\n onStop: _this3.resizeHandler('onResizeStop', handleAxis),\n onStart: _this3.resizeHandler('onResizeStart', handleAxis),\n onDrag: _this3.resizeHandler('onResize', handleAxis)\n }), _this3.renderResizeHandle(handleAxis));\n }))\n }));\n };\n\n return Resizable;\n}(_react.default.Component);\n\nexports.default = Resizable;\n\n_defineProperty(Resizable, \"propTypes\", _propTypes.resizableProps);\n\n_defineProperty(Resizable, \"defaultProps\", {\n handleSize: [20, 20],\n lockAspectRatio: false,\n axis: 'both',\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n});","import React from 'react';\nimport { DataSourceApi, PanelData } from '@grafana/data';\n\ninterface InspectMetadataTabProps {\n data: PanelData;\n metadataDatasource?: DataSourceApi;\n}\nexport const InspectMetadataTab: React.FC = ({ data, metadataDatasource }) => {\n if (!metadataDatasource || !metadataDatasource.components?.MetadataInspector) {\n return
No Metadata Inspector
;\n }\n return ;\n};\n","import React, { FC } from 'react';\nimport { css } from 'emotion';\nimport { stylesFactory, useTheme, Tab, TabsBar } from '@grafana/ui';\nimport { GrafanaTheme, SelectableValue, PanelData, getValueFormat, formattedValueToString } from '@grafana/data';\nimport { InspectTab } from '../inspector/types';\n\ninterface Props {\n tab: InspectTab;\n tabs: Array<{ label: string; value: InspectTab }>;\n data?: PanelData;\n onSelectTab: (tab: SelectableValue) => void;\n}\n\nexport const InspectSubtitle: FC = ({ tab, tabs, onSelectTab, data }) => {\n const theme = useTheme();\n const styles = getStyles(theme);\n\n return (\n <>\n {data &&
{formatStats(data)}
}\n \n {tabs.map((t, index) => {\n return (\n onSelectTab(t)}\n />\n );\n })}\n \n \n );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n tabsBar: css`\n padding-left: ${theme.spacing.md};\n margin: ${theme.spacing.lg} -${theme.spacing.sm} -${theme.spacing.lg} -${theme.spacing.lg};\n `,\n };\n});\n\nfunction formatStats(data: PanelData) {\n const { request } = data;\n if (!request) {\n return '';\n }\n\n const queryCount = request.targets.length;\n const requestTime = request.endTime ? request.endTime - request.startTime : 0;\n const formatted = formattedValueToString(getValueFormat('ms')(requestTime));\n\n return `${queryCount} queries with total query time of ${formatted}`;\n}\n","import React from 'react';\nimport { DataQueryError } from '@grafana/data';\nimport { JSONFormatter } from '@grafana/ui';\n\ninterface InspectErrorTabProps {\n error?: DataQueryError;\n}\n\nexport const InspectErrorTab: React.FC = ({ error }) => {\n if (!error) {\n return null;\n }\n if (error.data) {\n return (\n <>\n

{error.data.message}

\n \n \n );\n }\n return
{error.message}
;\n};\n","import React, { useState } from 'react';\nimport { DataSourceApi, PanelData, PanelPlugin } from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { CustomScrollbar, Drawer, TabContent } from '@grafana/ui';\nimport { getPanelInspectorStyles } from 'app/features/inspector/styles';\nimport { InspectMetadataTab } from 'app/features/inspector/InspectMetadataTab';\nimport { InspectSubtitle } from 'app/features/inspector/InspectSubtitle';\nimport { InspectJSONTab } from 'app/features/inspector/InspectJSONTab';\nimport { QueryInspector } from 'app/features/inspector/QueryInspector';\nimport { InspectStatsTab } from 'app/features/inspector/InspectStatsTab';\nimport { InspectErrorTab } from 'app/features/inspector/InspectErrorTab';\nimport { InspectDataTab } from 'app/features/inspector/InspectDataTab';\nimport { InspectTab } from 'app/features/inspector/types';\nimport { DashboardModel, PanelModel } from '../../state';\nimport { GetDataOptions } from '../../../query/state/PanelQueryRunner';\n\ninterface Props {\n dashboard: DashboardModel;\n panel: PanelModel;\n plugin?: PanelPlugin | null;\n defaultTab?: InspectTab;\n tabs: Array<{ label: string; value: InspectTab }>;\n // The last raw response\n data?: PanelData;\n isDataLoading: boolean;\n dataOptions: GetDataOptions;\n // If the datasource supports custom metadata\n metadataDatasource?: DataSourceApi;\n onDataOptionsChange: (options: GetDataOptions) => void;\n onClose: () => void;\n}\n\nexport const InspectContent: React.FC = ({\n panel,\n plugin,\n dashboard,\n tabs,\n data,\n isDataLoading,\n dataOptions,\n metadataDatasource,\n defaultTab,\n onDataOptionsChange,\n onClose,\n}) => {\n const [currentTab, setCurrentTab] = useState(defaultTab ?? InspectTab.Data);\n\n if (!plugin) {\n return null;\n }\n\n const styles = getPanelInspectorStyles();\n const error = data?.error;\n\n // Validate that the active tab is actually valid and allowed\n let activeTab = currentTab;\n if (!tabs.find((item) => item.value === currentTab)) {\n activeTab = InspectTab.JSON;\n }\n const title = getTemplateSrv().replace(panel.title, panel.scopedVars, 'text');\n\n return (\n setCurrentTab(item.value || InspectTab.Data)}\n />\n }\n width=\"50%\"\n onClose={onClose}\n expandable\n >\n {activeTab === InspectTab.Data && (\n \n )}\n \n \n {data && activeTab === InspectTab.Meta && (\n \n )}\n\n {activeTab === InspectTab.JSON && (\n \n )}\n {activeTab === InspectTab.Error && }\n {data && activeTab === InspectTab.Stats && }\n {data && activeTab === InspectTab.Query && (\n panel.refresh()} />\n )}\n \n \n \n );\n};\n","import { DataQueryError, DataSourceApi, PanelData, PanelPlugin } from '@grafana/data';\nimport useAsync from 'react-use/lib/useAsync';\nimport { getDataSourceSrv } from '@grafana/runtime';\nimport { DashboardModel } from 'app/features/dashboard/state';\nimport { useMemo } from 'react';\nimport { supportsDataQuery } from '../PanelEditor/utils';\nimport { InspectTab } from 'app/features/inspector/types';\n\n/**\n * Given PanelData return first data source supporting metadata inspector\n */\nexport const useDatasourceMetadata = (data?: PanelData) => {\n const state = useAsync(async () => {\n const targets = data?.request?.targets || [];\n\n if (data && data.series && targets.length) {\n for (const frame of data.series) {\n if (frame.meta && frame.meta.custom) {\n // get data source from first query\n const dataSource = await getDataSourceSrv().get(targets[0].datasource);\n if (dataSource && dataSource.components?.MetadataInspector) {\n return dataSource;\n }\n }\n }\n }\n\n return undefined;\n }, [data]);\n return state.value;\n};\n\n/**\n * Configures tabs for PanelInspector\n */\nexport const useInspectTabs = (\n plugin: PanelPlugin,\n dashboard: DashboardModel,\n error?: DataQueryError,\n metaDs?: DataSourceApi\n) => {\n return useMemo(() => {\n const tabs = [];\n if (supportsDataQuery(plugin)) {\n tabs.push({ label: 'Data', value: InspectTab.Data });\n tabs.push({ label: 'Stats', value: InspectTab.Stats });\n }\n\n if (metaDs) {\n tabs.push({ label: 'Meta Data', value: InspectTab.Meta });\n }\n\n tabs.push({ label: 'JSON', value: InspectTab.JSON });\n\n if (error && error.message) {\n tabs.push({ label: 'Error', value: InspectTab.Error });\n }\n\n if (dashboard.meta.canEdit && supportsDataQuery(plugin)) {\n tabs.push({ label: 'Query', value: InspectTab.Query });\n }\n return tabs;\n }, [plugin, metaDs, dashboard, error]);\n};\n","import React, { useCallback, useState } from 'react';\nimport { connect, MapStateToProps, useDispatch } from 'react-redux';\n\nimport { DashboardModel, PanelModel } from 'app/features/dashboard/state';\n\nimport { PanelPlugin } from '@grafana/data';\nimport { StoreState } from 'app/types';\nimport { GetDataOptions } from '../../../query/state/PanelQueryRunner';\nimport { usePanelLatestData } from '../PanelEditor/usePanelLatestData';\nimport { InspectContent } from './InspectContent';\nimport { useDatasourceMetadata, useInspectTabs } from './hooks';\nimport { updateLocation } from 'app/core/actions';\nimport { InspectTab } from 'app/features/inspector/types';\n\ninterface OwnProps {\n dashboard: DashboardModel;\n panel: PanelModel;\n defaultTab?: InspectTab;\n}\n\nexport interface ConnectedProps {\n plugin?: PanelPlugin | null;\n}\n\nexport type Props = OwnProps & ConnectedProps;\n\nconst PanelInspectorUnconnected: React.FC = ({ panel, dashboard, defaultTab, plugin }) => {\n if (!plugin) {\n return null;\n }\n\n const dispatch = useDispatch();\n const [dataOptions, setDataOptions] = useState({\n withTransforms: false,\n withFieldConfig: true,\n });\n const { data, isLoading, error } = usePanelLatestData(panel, dataOptions);\n const metaDs = useDatasourceMetadata(data);\n const tabs = useInspectTabs(plugin, dashboard, error, metaDs);\n const onClose = useCallback(() => {\n dispatch(\n updateLocation({\n query: { inspect: null, inspectTab: null },\n partial: true,\n })\n );\n }, [updateLocation]);\n\n return (\n \n );\n};\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n const panelState = state.dashboard.panels[props.panel.id];\n if (!panelState) {\n return { plugin: null };\n }\n\n return {\n plugin: panelState.plugin,\n };\n};\n\nexport const PanelInspector = connect(mapStateToProps)(PanelInspectorUnconnected);\n","import React, { PureComponent } from 'react';\nimport { getBackendSrv } from '@grafana/runtime';\nimport { Icon, ConfirmButton, Button } from '@grafana/ui';\n\nimport alertDef from './state/alertDef';\nimport { DashboardModel } from '../dashboard/state/DashboardModel';\nimport { css } from 'emotion';\n\ninterface Props {\n dashboard: DashboardModel;\n panelId: number;\n onRefresh: () => void;\n}\n\ninterface State {\n stateHistoryItems: any[];\n}\n\nclass StateHistory extends PureComponent {\n state: State = {\n stateHistoryItems: [],\n };\n\n componentDidMount(): void {\n const { dashboard, panelId } = this.props;\n\n getBackendSrv()\n .get(\n `/api/annotations?dashboardId=${dashboard.id}&panelId=${panelId}&limit=50&type=alert`,\n {},\n `state-history-${dashboard.id}-${panelId}`\n )\n .then((data) => {\n const items = data.map((item: any) => {\n return {\n stateModel: alertDef.getStateDisplayModel(item.newState),\n time: dashboard.formatDate(item.time, 'MMM D, YYYY HH:mm:ss'),\n info: alertDef.getAlertAnnotationInfo(item),\n };\n });\n\n this.setState({\n stateHistoryItems: items,\n });\n });\n }\n\n clearHistory = async () => {\n const { dashboard, panelId, onRefresh } = this.props;\n\n await getBackendSrv().post('/api/annotations/mass-delete', {\n dashboardId: dashboard.id,\n panelId: panelId,\n });\n\n this.setState({ stateHistoryItems: [] });\n onRefresh();\n };\n\n render() {\n const { stateHistoryItems } = this.state;\n\n return (\n
\n {stateHistoryItems.length > 0 && (\n
\n Last 50 state changes\n \n \n Clear history\n \n \n
\n )}\n
    \n {stateHistoryItems.length > 0 ? (\n stateHistoryItems.map((item, index) => {\n return (\n
  1. \n
    \n \n
    \n
    \n
    \n

    {item.alertName}

    \n
    \n {item.stateModel.text}\n
    \n
    \n {item.info}\n
    \n
    {item.time}
    \n
  2. \n );\n })\n ) : (\n No state changes recorded\n )}\n
\n
\n );\n }\n}\n\nexport default StateHistory;\n","import React, { PureComponent } from 'react';\nimport { LoadingPlaceholder, JSONFormatter, Icon } from '@grafana/ui';\n\nimport appEvents from 'app/core/app_events';\nimport { CopyToClipboard } from 'app/core/components/CopyToClipboard/CopyToClipboard';\nimport { DashboardModel, PanelModel } from '../dashboard/state';\nimport { getBackendSrv } from '@grafana/runtime';\nimport { AppEvents } from '@grafana/data';\n\nexport interface Props {\n dashboard: DashboardModel;\n panel: PanelModel;\n}\n\ninterface State {\n isLoading: boolean;\n allNodesExpanded: boolean | null;\n testRuleResponse: {};\n}\n\nexport class TestRuleResult extends PureComponent {\n readonly state: State = {\n isLoading: false,\n allNodesExpanded: null,\n testRuleResponse: {},\n };\n\n formattedJson: any;\n clipboard: any;\n\n componentDidMount() {\n this.testRule();\n }\n\n async testRule() {\n const { dashboard, panel } = this.props;\n\n // dashboard save model\n const model = dashboard.getSaveModelClone();\n\n // now replace panel to get current edits\n model.panels = model.panels.map((dashPanel) => {\n return dashPanel.id === panel.editSourceId ? panel.getSaveModel() : dashPanel;\n });\n\n const payload = { dashboard: model, panelId: panel.id };\n\n this.setState({ isLoading: true });\n const testRuleResponse = await getBackendSrv().post(`/api/alerts/test`, payload);\n this.setState({ isLoading: false, testRuleResponse });\n }\n\n setFormattedJson = (formattedJson: any) => {\n this.formattedJson = formattedJson;\n };\n\n getTextForClipboard = () => {\n return JSON.stringify(this.formattedJson, null, 2);\n };\n\n onClipboardSuccess = () => {\n appEvents.emit(AppEvents.alertSuccess, ['Content copied to clipboard']);\n };\n\n onToggleExpand = () => {\n this.setState((prevState) => ({\n ...prevState,\n allNodesExpanded: !this.state.allNodesExpanded,\n }));\n };\n\n getNrOfOpenNodes = () => {\n if (this.state.allNodesExpanded === null) {\n return 3; // 3 is default, ie when state is null\n } else if (this.state.allNodesExpanded) {\n return 20;\n }\n return 1;\n };\n\n renderExpandCollapse = () => {\n const { allNodesExpanded } = this.state;\n\n const collapse = (\n <>\n Collapse All\n \n );\n const expand = (\n <>\n Expand All\n \n );\n return allNodesExpanded ? collapse : expand;\n };\n\n render() {\n const { testRuleResponse, isLoading } = this.state;\n\n if (isLoading === true) {\n return ;\n }\n\n const openNodes = this.getNrOfOpenNodes();\n\n return (\n <>\n
\n \n \n Copy to Clipboard\n \n
\n\n \n \n );\n }\n}\n","import React, { FC, useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { Button, VerticalGroup } from '@grafana/ui';\n\nimport { Layout } from '@grafana/ui/src/components/Layout/Layout';\nimport { PanelEditorTabId } from './types';\nimport { updateLocation } from '../../../../core/actions';\n\nexport interface Props {\n message: string;\n dispatch?: Dispatch;\n}\n\nexport const PanelNotSupported: FC = ({ message, dispatch: propsDispatch }) => {\n const dispatch = propsDispatch ? propsDispatch : useDispatch();\n const onBackToQueries = useCallback(() => {\n dispatch(updateLocation({ query: { tab: PanelEditorTabId.Query }, partial: true }));\n }, [dispatch]);\n\n return (\n \n \n

{message}

\n
\n \n
\n
\n
\n );\n};\n","import React, { PureComponent } from 'react';\nimport { connect, MapDispatchToProps, MapStateToProps } from 'react-redux';\nimport { Alert, Button, ConfirmModal, Container, CustomScrollbar, HorizontalGroup, IconName, Modal } from '@grafana/ui';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { AngularComponent, getAngularLoader, getDataSourceSrv } from '@grafana/runtime';\nimport { getAlertingValidationMessage } from './getAlertingValidationMessage';\n\nimport EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA';\nimport StateHistory from './StateHistory';\nimport 'app/features/alerting/AlertTabCtrl';\n\nimport { DashboardModel } from '../dashboard/state/DashboardModel';\nimport { PanelModel } from '../dashboard/state/PanelModel';\nimport { TestRuleResult } from './TestRuleResult';\nimport { AppNotificationSeverity, StoreState } from 'app/types';\nimport { PanelNotSupported } from '../dashboard/components/PanelEditor/PanelNotSupported';\n\ninterface OwnProps {\n dashboard: DashboardModel;\n panel: PanelModel;\n}\n\ninterface ConnectedProps {\n angularPanelComponent?: AngularComponent | null;\n}\n\ninterface DispatchProps {}\n\nexport type Props = OwnProps & ConnectedProps & DispatchProps;\n\ninterface State {\n validationMessage: string;\n showStateHistory: boolean;\n showDeleteConfirmation: boolean;\n showTestRule: boolean;\n}\n\nclass UnConnectedAlertTab extends PureComponent {\n element: any;\n component: AngularComponent;\n panelCtrl: any;\n\n state: State = {\n validationMessage: '',\n showStateHistory: false,\n showDeleteConfirmation: false,\n showTestRule: false,\n };\n\n componentDidMount() {\n this.loadAlertTab();\n }\n\n onAngularPanelUpdated = () => {\n this.forceUpdate();\n };\n\n componentDidUpdate(prevProps: Props) {\n this.loadAlertTab();\n }\n\n componentWillUnmount() {\n if (this.component) {\n this.component.destroy();\n }\n }\n\n async loadAlertTab() {\n const { panel, angularPanelComponent } = this.props;\n\n if (!this.element || !angularPanelComponent || this.component) {\n return;\n }\n\n const scope = angularPanelComponent.getScope();\n\n // When full page reloading in edit mode the angular panel has on fully compiled & instantiated yet\n if (!scope.$$childHead) {\n setTimeout(() => {\n this.forceUpdate();\n });\n return;\n }\n\n this.panelCtrl = scope.$$childHead.ctrl;\n const loader = getAngularLoader();\n const template = '';\n\n const scopeProps = { ctrl: this.panelCtrl };\n\n this.component = loader.load(this.element, scopeProps, template);\n\n const validationMessage = await getAlertingValidationMessage(\n panel.transformations,\n panel.targets,\n getDataSourceSrv(),\n panel.datasource\n );\n\n if (validationMessage) {\n this.setState({ validationMessage });\n }\n }\n\n onAddAlert = () => {\n this.panelCtrl._enableAlert();\n this.component.digest();\n this.forceUpdate();\n };\n\n onToggleModal = (prop: keyof Omit) => {\n const value = this.state[prop];\n this.setState({ ...this.state, [prop]: !value });\n };\n\n renderTestRule = () => {\n if (!this.state.showTestRule) {\n return null;\n }\n\n const { panel, dashboard } = this.props;\n const onDismiss = () => this.onToggleModal('showTestRule');\n\n return (\n \n \n \n );\n };\n\n renderDeleteConfirmation = () => {\n if (!this.state.showDeleteConfirmation) {\n return null;\n }\n\n const { panel } = this.props;\n const onDismiss = () => this.onToggleModal('showDeleteConfirmation');\n\n return (\n \n Are you sure you want to delete this alert rule?\n
\n You need to save dashboard for the delete to take effect.\n
\n }\n confirmText=\"Delete Alert\"\n onDismiss={onDismiss}\n onConfirm={() => {\n delete panel.alert;\n panel.thresholds = [];\n this.panelCtrl.alertState = null;\n this.panelCtrl.render();\n this.component.digest();\n onDismiss();\n }}\n />\n );\n };\n\n renderStateHistory = () => {\n if (!this.state.showStateHistory) {\n return null;\n }\n\n const { panel, dashboard } = this.props;\n const onDismiss = () => this.onToggleModal('showStateHistory');\n\n return (\n \n this.panelCtrl.refresh()}\n />\n \n );\n };\n\n render() {\n const { alert, transformations } = this.props.panel;\n const { validationMessage } = this.state;\n const hasTransformations = transformations && transformations.length > 0;\n\n if (!alert && validationMessage) {\n return ;\n }\n\n const model = {\n title: 'Panel has no alert rule defined',\n buttonIcon: 'bell' as IconName,\n onClick: this.onAddAlert,\n buttonTitle: 'Create Alert',\n };\n\n return (\n <>\n \n \n
\n {alert && hasTransformations && (\n \n )}\n\n
(this.element = element)} />\n {alert && (\n \n \n \n \n \n )}\n {!alert && !validationMessage && }\n
\n \n \n\n {this.renderTestRule()}\n {this.renderDeleteConfirmation()}\n {this.renderStateHistory()}\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n return {\n angularPanelComponent: state.dashboard.panels[props.panel.id].angularComponent,\n };\n};\n\nconst mapDispatchToProps: MapDispatchToProps = {};\n\nexport const AlertTab = connect(mapStateToProps, mapDispatchToProps)(UnConnectedAlertTab);\n","import { DocsId } from '@grafana/data';\n\n// TODO: Documentation links\nconst DOCS_LINKS: Record = {\n [DocsId.Transformations]: 'https://grafana.com/docs/grafana/latest/panels/transformations',\n [DocsId.FieldConfig]: 'https://grafana.com/docs/grafana/latest/panels/field-configuration-options/',\n [DocsId.FieldConfigOverrides]:\n 'https://grafana.com/docs/grafana/latest/panels/field-configuration-options/#override-a-field',\n};\n\nexport const getDocsLink = (id: DocsId) => DOCS_LINKS[id];\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { mergeMap } from 'rxjs/operators';\nimport { css } from 'emotion';\nimport { Icon, JSONFormatter, useStyles } from '@grafana/ui';\nimport {\n DataFrame,\n DataTransformerConfig,\n GrafanaTheme,\n transformDataFrame,\n TransformerRegistryItem,\n} from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { TransformationsEditorTransformation } from './types';\n\ninterface TransformationEditorProps {\n debugMode?: boolean;\n index: number;\n data: DataFrame[];\n uiConfig: TransformerRegistryItem;\n configs: TransformationsEditorTransformation[];\n onChange: (index: number, config: DataTransformerConfig) => void;\n}\n\nexport const TransformationEditor = ({\n debugMode,\n index,\n data,\n uiConfig,\n configs,\n onChange,\n}: TransformationEditorProps) => {\n const styles = useStyles(getStyles);\n const [input, setInput] = useState([]);\n const [output, setOutput] = useState([]);\n const config = useMemo(() => configs[index], [configs, index]);\n\n useEffect(() => {\n const inputTransforms = configs.slice(0, index).map((t) => t.transformation);\n const outputTransforms = configs.slice(index, index + 1).map((t) => t.transformation);\n const inputSubscription = transformDataFrame(inputTransforms, data).subscribe(setInput);\n const outputSubscription = transformDataFrame(inputTransforms, data)\n .pipe(mergeMap((before) => transformDataFrame(outputTransforms, before)))\n .subscribe(setOutput);\n\n return function unsubscribe() {\n inputSubscription.unsubscribe();\n outputSubscription.unsubscribe();\n };\n }, [index, data, configs]);\n\n const editor = useMemo(\n () =>\n React.createElement(uiConfig.editor, {\n options: { ...uiConfig.transformation.defaultOptions, ...config.transformation.options },\n input,\n onChange: (opts: any) => {\n onChange(index, { id: config.transformation.id, options: opts });\n },\n }),\n [\n uiConfig.editor,\n uiConfig.transformation.defaultOptions,\n config.transformation.id,\n config.transformation.options,\n input,\n onChange,\n ]\n );\n\n return (\n
\n {editor}\n {debugMode && (\n \n
\n
Transformation input data
\n
\n \n
\n
\n
\n \n
\n
\n
Transformation output data
\n
{output && }
\n
\n
\n )}\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme) => {\n const debugBorder = theme.isLight ? theme.palette.gray85 : theme.palette.gray15;\n\n return {\n title: css`\n display: flex;\n padding: 4px 8px 4px 8px;\n position: relative;\n height: 35px;\n border-radius: 4px 4px 0 0;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n `,\n name: css`\n font-weight: ${theme.typography.weight.semibold};\n color: ${theme.colors.textBlue};\n `,\n iconRow: css`\n display: flex;\n `,\n icon: css`\n background: transparent;\n border: none;\n box-shadow: none;\n cursor: pointer;\n color: ${theme.colors.textWeak};\n margin-left: ${theme.spacing.sm};\n &:hover {\n color: ${theme.colors.text};\n }\n `,\n editor: css``,\n debugWrapper: css`\n display: flex;\n flex-direction: row;\n `,\n debugSeparator: css`\n width: 48px;\n min-height: 300px;\n display: flex;\n align-items: center;\n align-self: stretch;\n justify-content: center;\n margin: 0 ${theme.spacing.xs};\n color: ${theme.colors.textBlue};\n `,\n debugTitle: css`\n padding: ${theme.spacing.sm} ${theme.spacing.xxs};\n font-family: ${theme.typography.fontFamily.monospace};\n font-size: ${theme.typography.size.sm};\n color: ${theme.colors.text};\n border-bottom: 1px solid ${debugBorder};\n flex-grow: 0;\n flex-shrink: 1;\n `,\n\n debug: css`\n margin-top: ${theme.spacing.sm};\n padding: 0 ${theme.spacing.sm} ${theme.spacing.sm} ${theme.spacing.sm};\n border: 1px solid ${debugBorder};\n background: ${theme.isLight ? theme.palette.white : theme.palette.gray05};\n border-radius: ${theme.border.radius.sm};\n width: 100%;\n min-height: 300px;\n display: flex;\n flex-direction: column;\n align-self: stretch;\n `,\n debugJson: css`\n flex-grow: 1;\n height: 100%;\n overflow: hidden;\n padding: ${theme.spacing.xs};\n `,\n };\n};\n","import React, { useState } from 'react';\nimport { DataFrame, DataTransformerConfig, TransformerRegistryItem } from '@grafana/data';\nimport { HorizontalGroup } from '@grafana/ui';\n\nimport { TransformationEditor } from './TransformationEditor';\nimport {\n QueryOperationRow,\n QueryOperationRowRenderProps,\n} from 'app/core/components/QueryOperationRow/QueryOperationRow';\nimport { QueryOperationAction } from 'app/core/components/QueryOperationRow/QueryOperationAction';\nimport { TransformationsEditorTransformation } from './types';\n\ninterface TransformationOperationRowProps {\n id: string;\n index: number;\n data: DataFrame[];\n uiConfig: TransformerRegistryItem;\n configs: TransformationsEditorTransformation[];\n onRemove: (index: number) => void;\n onChange: (index: number, config: DataTransformerConfig) => void;\n}\n\nexport const TransformationOperationRow: React.FC = ({\n onRemove,\n index,\n id,\n data,\n configs,\n uiConfig,\n onChange,\n}) => {\n const [showDebug, setShowDebug] = useState(false);\n\n const renderActions = ({ isOpen }: QueryOperationRowRenderProps) => {\n return (\n \n {\n setShowDebug(!showDebug);\n }}\n />\n\n onRemove(index)} />\n \n );\n };\n\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { DataFrame, DataTransformerConfig, standardTransformersRegistry } from '@grafana/data';\n\nimport { TransformationOperationRow } from './TransformationOperationRow';\nimport { TransformationsEditorTransformation } from './types';\n\ninterface TransformationOperationRowsProps {\n data: DataFrame[];\n configs: TransformationsEditorTransformation[];\n onRemove: (index: number) => void;\n onChange: (index: number, config: DataTransformerConfig) => void;\n}\n\nexport const TransformationOperationRows: React.FC = ({\n data,\n onChange,\n onRemove,\n configs,\n}) => {\n return (\n <>\n {configs.map((t, i) => {\n const uiConfig = standardTransformersRegistry.getIfExists(t.transformation.id);\n if (!uiConfig) {\n return null;\n }\n\n return (\n \n );\n })}\n \n );\n};\n","import React, { ChangeEvent } from 'react';\nimport {\n Alert,\n Button,\n Container,\n CustomScrollbar,\n stylesFactory,\n Themeable,\n FeatureInfoBox,\n useTheme,\n VerticalGroup,\n withTheme,\n Input,\n IconButton,\n} from '@grafana/ui';\nimport {\n DataFrame,\n DataTransformerConfig,\n DocsId,\n GrafanaTheme,\n PanelData,\n SelectableValue,\n standardTransformersRegistry,\n} from '@grafana/data';\nimport { Card, CardProps } from '../../../../core/components/Card/Card';\nimport { css } from 'emotion';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { Unsubscribable } from 'rxjs';\nimport { PanelModel } from '../../state';\nimport { getDocsLink } from 'app/core/utils/docsLinks';\nimport { DragDropContext, Droppable, DropResult } from 'react-beautiful-dnd';\nimport { TransformationOperationRows } from './TransformationOperationRows';\nimport { TransformationsEditorTransformation } from './types';\nimport { PanelNotSupported } from '../PanelEditor/PanelNotSupported';\nimport { AppNotificationSeverity } from '../../../../types';\nimport { LocalStorageValueProvider } from 'app/core/components/LocalStorageValueProvider';\n\nconst LOCAL_STORAGE_KEY = 'dashboard.components.TransformationEditor.featureInfoBox.isDismissed';\n\ninterface TransformationsEditorProps extends Themeable {\n panel: PanelModel;\n}\n\ninterface State {\n data: DataFrame[];\n transformations: TransformationsEditorTransformation[];\n search: string;\n showPicker?: boolean;\n}\n\nclass UnThemedTransformationsEditor extends React.PureComponent {\n subscription?: Unsubscribable;\n\n constructor(props: TransformationsEditorProps) {\n super(props);\n const transformations = props.panel.transformations || [];\n\n const ids = this.buildTransformationIds(transformations);\n this.state = {\n transformations: transformations.map((t, i) => ({\n transformation: t,\n id: ids[i],\n })),\n data: [],\n search: '',\n };\n }\n\n onSearchChange = (event: ChangeEvent) => {\n this.setState({ search: event.target.value });\n };\n\n onSearchKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n const { search } = this.state;\n if (search) {\n const lower = search.toLowerCase();\n const filtered = standardTransformersRegistry.list().filter((t) => {\n const txt = (t.name + t.description).toLowerCase();\n return txt.indexOf(lower) >= 0;\n });\n if (filtered.length > 0) {\n this.onTransformationAdd({ value: filtered[0].id });\n }\n }\n } else if (event.keyCode === 27) {\n // Escape key\n this.setState({ search: '', showPicker: false });\n event.stopPropagation(); // don't exit the editor\n }\n };\n\n buildTransformationIds(transformations: DataTransformerConfig[]) {\n const transformationCounters: Record = {};\n const transformationIds: string[] = [];\n\n for (let i = 0; i < transformations.length; i++) {\n const transformation = transformations[i];\n if (transformationCounters[transformation.id] === undefined) {\n transformationCounters[transformation.id] = 0;\n } else {\n transformationCounters[transformation.id] += 1;\n }\n transformationIds.push(`${transformations[i].id}-${transformationCounters[transformations[i].id]}`);\n }\n return transformationIds;\n }\n\n componentDidMount() {\n this.subscription = this.props.panel\n .getQueryRunner()\n .getData({ withTransforms: false, withFieldConfig: false })\n .subscribe({\n next: (panelData: PanelData) => this.setState({ data: panelData.series }),\n });\n }\n\n componentWillUnmount() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n onChange(transformations: TransformationsEditorTransformation[]) {\n this.setState({ transformations });\n this.props.panel.setTransformations(transformations.map((t) => t.transformation));\n }\n\n // Transformation uid are stored in a name-X form. name is NOT unique hence we need to parse the ids and increase X\n // for transformations with the same name\n getTransformationNextId = (name: string) => {\n const { transformations } = this.state;\n let nextId = 0;\n const existingIds = transformations.filter((t) => t.id.startsWith(name)).map((t) => t.id);\n\n if (existingIds.length !== 0) {\n nextId = Math.max(...existingIds.map((i) => parseInt(i.match(/\\d+/)![0], 10))) + 1;\n }\n\n return `${name}-${nextId}`;\n };\n\n onTransformationAdd = (selectable: SelectableValue) => {\n const { transformations } = this.state;\n\n const nextId = this.getTransformationNextId(selectable.value!);\n this.setState({ search: '', showPicker: false });\n this.onChange([\n ...transformations,\n {\n id: nextId,\n transformation: {\n id: selectable.value as string,\n options: {},\n },\n },\n ]);\n };\n\n onTransformationChange = (idx: number, config: DataTransformerConfig) => {\n const { transformations } = this.state;\n const next = Array.from(transformations);\n next[idx].transformation = config;\n this.onChange(next);\n };\n\n onTransformationRemove = (idx: number) => {\n const { transformations } = this.state;\n const next = Array.from(transformations);\n next.splice(idx, 1);\n this.onChange(next);\n };\n\n onDragEnd = (result: DropResult) => {\n const { transformations } = this.state;\n\n if (!result || !result.destination) {\n return;\n }\n\n const startIndex = result.source.index;\n const endIndex = result.destination.index;\n if (startIndex === endIndex) {\n return;\n }\n const update = Array.from(transformations);\n const [removed] = update.splice(startIndex, 1);\n update.splice(endIndex, 0, removed);\n this.onChange(update);\n };\n\n renderTransformationEditors = () => {\n const { data, transformations } = this.state;\n\n return (\n \n \n {(provided) => {\n return (\n
\n \n {provided.placeholder}\n
\n );\n }}\n
\n
\n );\n };\n\n renderTransformsPicker() {\n const { transformations, search } = this.state;\n let suffix: React.ReactNode = null;\n let xforms = standardTransformersRegistry.list();\n if (search) {\n const lower = search.toLowerCase();\n const filtered = xforms.filter((t) => {\n const txt = (t.name + t.description).toLowerCase();\n return txt.indexOf(lower) >= 0;\n });\n suffix = (\n <>\n {filtered.length} / {xforms.length}   \n {\n this.setState({ search: '' });\n }}\n />\n \n );\n\n xforms = filtered;\n }\n\n const noTransforms = !transformations?.length;\n const showPicker = noTransforms || this.state.showPicker;\n if (!suffix && showPicker && !noTransforms) {\n suffix = (\n {\n this.setState({ showPicker: false });\n }}\n />\n );\n }\n\n return (\n <>\n {noTransforms && (\n \n storageKey={LOCAL_STORAGE_KEY} defaultValue={false}>\n {(isDismissed, onDismiss) => {\n if (isDismissed) {\n return null;\n }\n\n return (\n {\n onDismiss(true);\n }}\n url={getDocsLink(DocsId.Transformations)}\n >\n

\n Transformations allow you to join, calculate, re-order, hide and rename your query results before\n being visualized.
\n Many transforms are not suitable if you're using the Graph visualization as it currently only\n supports time series.
\n It can help to switch to Table visualization to understand what a transformation is doing.
\n

\n \n );\n }}\n \n
\n )}\n {showPicker ? (\n \n \n\n {xforms.map((t) => {\n return (\n Select}\n ariaLabel={selectors.components.TransformTab.newTransform(t.name)}\n onClick={() => {\n this.onTransformationAdd({ value: t.id });\n }}\n />\n );\n })}\n \n ) : (\n {\n this.setState({ showPicker: true });\n }}\n >\n Add transformation\n \n )}\n \n );\n }\n\n render() {\n const {\n panel: { alert },\n } = this.props;\n const { transformations } = this.state;\n\n const hasTransforms = transformations.length > 0;\n\n if (!hasTransforms && alert) {\n return ;\n }\n\n return (\n \n \n
\n {hasTransforms && alert ? (\n \n ) : null}\n {hasTransforms && this.renderTransformationEditors()}\n {this.renderTransformsPicker()}\n
\n
\n
\n );\n }\n}\n\nconst TransformationCard: React.FC = (props) => {\n const theme = useTheme();\n const styles = getTransformationCardStyles(theme);\n return ;\n};\n\nconst getTransformationCardStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n card: css`\n background: ${theme.colors.bg2};\n width: 100%;\n border: none;\n padding: ${theme.spacing.sm};\n\n // hack because these cards use classes from a very different card for some reason\n .add-data-source-item-text {\n font-size: ${theme.typography.size.md};\n }\n\n &:hover {\n background: ${theme.colors.bg3};\n box-shadow: none;\n border: none;\n }\n `,\n };\n});\n\nexport const TransformationsEditor = withTheme(UnThemedTransformationsEditor);\n","import React, { PureComponent } from 'react';\nimport { QueryGroup } from 'app/features/query/components/QueryGroup';\nimport { PanelModel } from '../../state';\nimport { getLocationSrv } from '@grafana/runtime';\nimport { QueryGroupOptions } from 'app/types';\n\ninterface Props {\n panel: PanelModel;\n}\n\ninterface State {\n options: QueryGroupOptions;\n}\n\nexport class PanelEditorQueries extends PureComponent {\n constructor(props: Props) {\n super(props);\n\n this.state = { options: this.buildQueryOptions(props) };\n }\n\n buildQueryOptions({ panel }: Props): QueryGroupOptions {\n return {\n dataSource: {\n name: panel.datasource,\n },\n queries: panel.targets,\n maxDataPoints: panel.maxDataPoints,\n minInterval: panel.interval,\n timeRange: {\n from: panel.timeFrom,\n shift: panel.timeShift,\n hide: panel.hideTimeOverride,\n },\n };\n }\n\n onRunQueries = () => {\n this.props.panel.refresh();\n };\n\n onOpenQueryInspector = () => {\n getLocationSrv().update({\n query: { inspect: this.props.panel.id, inspectTab: 'query' },\n partial: true,\n });\n };\n\n onOptionsChange = (options: QueryGroupOptions) => {\n const { panel } = this.props;\n\n const newDataSourceName = options.dataSource.default ? null : options.dataSource.name!;\n const dataSourceChanged = newDataSourceName !== panel.datasource;\n\n panel.updateQueries(options);\n\n if (dataSourceChanged) {\n // trigger queries when changing data source\n setTimeout(this.onRunQueries, 10);\n }\n\n this.setState({ options: options });\n };\n\n render() {\n const { panel } = this.props;\n const { options } = this.state;\n\n return (\n \n );\n }\n}\n","import React, { PureComponent } from 'react';\nimport { config } from 'app/core/config';\nimport { css } from 'emotion';\nimport { IconName, stylesFactory, Tab, TabContent, TabsBar } from '@grafana/ui';\nimport { AlertTab } from 'app/features/alerting/AlertTab';\nimport { TransformationsEditor } from '../TransformationsEditor/TransformationsEditor';\nimport { DashboardModel, PanelModel } from '../../state';\nimport { PanelEditorTab, PanelEditorTabId } from './types';\nimport { Subscription } from 'rxjs';\nimport { PanelQueriesChangedEvent, PanelTransformationsChangedEvent } from 'app/types/events';\nimport { PanelEditorQueries } from './PanelEditorQueries';\n\ninterface PanelEditorTabsProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n tabs: PanelEditorTab[];\n onChangeTab: (tab: PanelEditorTab) => void;\n}\n\nexport class PanelEditorTabs extends PureComponent {\n private eventSubs = new Subscription();\n\n componentDidMount() {\n const { events } = this.props.panel;\n this.eventSubs.add(events.subscribe(PanelQueriesChangedEvent, this.triggerForceUpdate));\n this.eventSubs.add(events.subscribe(PanelTransformationsChangedEvent, this.triggerForceUpdate));\n }\n\n componentWillUnmount() {\n this.eventSubs.unsubscribe();\n }\n\n triggerForceUpdate = () => {\n this.forceUpdate();\n };\n\n getCounter = (tab: PanelEditorTab) => {\n const { panel } = this.props;\n\n switch (tab.id) {\n case PanelEditorTabId.Query:\n return panel.targets.length;\n case PanelEditorTabId.Alert:\n return panel.alert ? 1 : 0;\n case PanelEditorTabId.Transform:\n const transformations = panel.getTransformations() ?? [];\n return transformations.length;\n }\n\n return null;\n };\n\n render() {\n const { dashboard, onChangeTab, tabs, panel } = this.props;\n const styles = getPanelEditorTabsStyles();\n const activeTab = tabs.find((item) => item.active)!;\n\n if (tabs.length === 0) {\n return null;\n }\n\n return (\n
\n \n {tabs.map((tab) => {\n return (\n onChangeTab(tab)}\n icon={tab.icon as IconName}\n counter={this.getCounter(tab)}\n />\n );\n })}\n \n \n {activeTab.id === PanelEditorTabId.Query && }\n {activeTab.id === PanelEditorTabId.Alert && }\n {activeTab.id === PanelEditorTabId.Transform && }\n \n
\n );\n }\n}\n\nconst getPanelEditorTabsStyles = stylesFactory(() => {\n const { theme } = config;\n\n return {\n wrapper: css`\n display: flex;\n flex-direction: column;\n height: 100%;\n `,\n tabBar: css`\n padding-left: ${theme.spacing.md};\n `,\n tabContent: css`\n padding: 0;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n min-height: 0;\n background: ${theme.colors.panelBg};\n border-right: 1px solid ${theme.colors.pageHeaderBorder};\n\n .toolbar {\n background: transparent;\n }\n `,\n };\n});\n","import React, { FC, memo, ReactNode, useCallback, useEffect, useState } from 'react';\nimport { css, cx } from 'emotion';\nimport _ from 'lodash';\nimport { GrafanaTheme } from '@grafana/data';\nimport { Icon, stylesFactory, useTheme } from '@grafana/ui';\nimport { PANEL_EDITOR_UI_STATE_STORAGE_KEY } from './state/reducers';\nimport { useLocalStorage } from 'react-use';\nimport { selectors } from '@grafana/e2e-selectors';\n\nexport interface OptionsGroupProps {\n id: string;\n title?: React.ReactNode;\n renderTitle?: (isExpanded: boolean) => React.ReactNode;\n defaultToClosed?: boolean;\n className?: string;\n nested?: boolean;\n persistMe?: boolean;\n onToggle?: (isExpanded: boolean) => void;\n children: ((toggleExpand: (expanded: boolean) => void) => ReactNode) | ReactNode;\n}\n\nexport const OptionsGroup: FC = ({\n id,\n title,\n children,\n defaultToClosed,\n renderTitle,\n className,\n nested = false,\n persistMe = true,\n onToggle,\n}) => {\n if (persistMe) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n};\n\nconst CollapsibleSectionWithPersistence: FC = memo((props) => {\n const [value, setValue] = useLocalStorage(getOptionGroupStorageKey(props.id), {\n defaultToClosed: props.defaultToClosed,\n });\n const onToggle = useCallback(\n (isExpanded: boolean) => {\n setValue({ defaultToClosed: !isExpanded });\n if (props.onToggle) {\n props.onToggle(isExpanded);\n }\n },\n [setValue, props.onToggle]\n );\n\n return ;\n});\n\nconst CollapsibleSection: FC> = ({\n id,\n title,\n children,\n defaultToClosed,\n renderTitle,\n className,\n nested = false,\n onToggle,\n}) => {\n const [isExpanded, toggleExpand] = useState(!defaultToClosed);\n const theme = useTheme();\n const styles = getStyles(theme, isExpanded, nested);\n useEffect(() => {\n if (onToggle) {\n onToggle(isExpanded);\n }\n }, [isExpanded]);\n\n return (\n
\n toggleExpand(!isExpanded)}\n aria-label={selectors.components.OptionsGroup.toggle(id)}\n >\n
\n \n
\n
{renderTitle ? renderTitle(isExpanded) : title}
\n
\n {isExpanded &&
{_.isFunction(children) ? children(toggleExpand) : children}
}\n
\n );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme, isExpanded: boolean, isNested: boolean) => {\n return {\n box: cx(\n !isNested &&\n css`\n border-bottom: 1px solid ${theme.colors.pageHeaderBorder};\n `,\n isNested &&\n isExpanded &&\n css`\n margin-bottom: ${theme.spacing.formSpacingBase * 2}px;\n `\n ),\n toggle: css`\n color: ${theme.colors.textWeak};\n margin-right: ${theme.spacing.sm};\n `,\n title: css`\n flex-grow: 1;\n overflow: hidden;\n `,\n header: cx(\n css`\n display: flex;\n cursor: pointer;\n align-items: baseline;\n padding: ${theme.spacing.sm} ${theme.spacing.md} ${theme.spacing.sm} ${theme.spacing.sm};\n color: ${isExpanded ? theme.colors.text : theme.colors.formLabel};\n font-weight: ${theme.typography.weight.semibold};\n\n &:hover {\n color: ${theme.colors.text};\n\n .editor-options-group-toggle {\n color: ${theme.colors.text};\n }\n }\n `,\n isNested &&\n css`\n padding-left: 0;\n padding-right: 0;\n padding-top: 0;\n `\n ),\n body: cx(\n css`\n padding: ${theme.spacing.sm} ${theme.spacing.md} ${theme.spacing.sm} ${theme.spacing.xl};\n `,\n isNested &&\n css`\n position: relative;\n padding-right: 0;\n &:before {\n content: '';\n position: absolute;\n top: 0;\n left: 8px;\n width: 1px;\n height: 100%;\n background: ${theme.colors.pageHeaderBorder};\n }\n `\n ),\n };\n});\n\nconst getOptionGroupStorageKey = (id: string): string => `${PANEL_EDITOR_UI_STATE_STORAGE_KEY}.optionGroup[${id}]`;\n","import { DynamicConfigValue, FieldConfigOptionsRegistry, FieldOverrideContext, GrafanaTheme } from '@grafana/data';\nimport React from 'react';\nimport { Counter, Field, HorizontalGroup, IconButton, Label, stylesFactory, useTheme } from '@grafana/ui';\nimport { css, cx } from 'emotion';\nimport { OptionsGroup } from './OptionsGroup';\n\ninterface DynamicConfigValueEditorProps {\n property: DynamicConfigValue;\n registry: FieldConfigOptionsRegistry;\n onChange: (value: DynamicConfigValue) => void;\n context: FieldOverrideContext;\n onRemove: () => void;\n isCollapsible?: boolean;\n isSystemOverride?: boolean;\n}\n\nexport const DynamicConfigValueEditor: React.FC = ({\n property,\n context,\n registry,\n onChange,\n onRemove,\n isCollapsible,\n isSystemOverride,\n}) => {\n const theme = useTheme();\n const styles = getStyles(theme);\n const item = registry?.getIfExists(property.id);\n\n if (!item) {\n return null;\n }\n let editor;\n\n // eslint-disable-next-line react/display-name\n const renderLabel = (includeDescription = true, includeCounter = false) => (isExpanded = false) => (\n \n c !== undefined) as string[]}\n description={includeDescription ? item.description : undefined}\n >\n {item.name}\n {!isExpanded && includeCounter && item.getItemsCount && }\n \n {!isSystemOverride && (\n
\n \n
\n )}\n
\n );\n\n if (isCollapsible) {\n editor = (\n \n {\n onChange(value);\n }}\n item={item}\n context={context}\n />\n \n );\n } else {\n editor = (\n
\n \n {\n onChange(value);\n }}\n item={item}\n context={context}\n />\n \n
\n );\n }\n\n return (\n \n {editor}\n
\n );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n collapsibleOverrideEditor: css`\n label: collapsibleOverrideEditor;\n & + .dynamicConfigValueEditor--nonCollapsible {\n margin-top: ${theme.spacing.formSpacingBase}px;\n }\n `,\n };\n});\n","import React, { useCallback } from 'react';\nimport {\n ConfigOverrideRule,\n DataFrame,\n DynamicConfigValue,\n FieldConfigOptionsRegistry,\n FieldConfigProperty,\n GrafanaTheme,\n isSystemOverride as isSystemOverrideGuard,\n VariableSuggestionsScope,\n} from '@grafana/data';\nimport { Field, fieldMatchersUI, HorizontalGroup, Icon, IconButton, Label, useStyles, ValuePicker } from '@grafana/ui';\nimport { DynamicConfigValueEditor } from './DynamicConfigValueEditor';\n\nimport { getDataLinksVariableSuggestions } from '../../../panel/panellinks/link_srv';\nimport { css } from 'emotion';\nimport { OptionsGroup } from './OptionsGroup';\n\ninterface OverrideEditorProps {\n name: string;\n data: DataFrame[];\n override: ConfigOverrideRule;\n onChange: (config: ConfigOverrideRule) => void;\n onRemove: () => void;\n registry: FieldConfigOptionsRegistry;\n}\n\nconst COLLECTION_STANDARD_PROPERTIES = [\n FieldConfigProperty.Thresholds,\n FieldConfigProperty.Links,\n FieldConfigProperty.Mappings,\n];\n\nexport const OverrideEditor: React.FC = ({\n name,\n data,\n override,\n onChange,\n onRemove,\n registry,\n}) => {\n const matcherUi = fieldMatchersUI.get(override.matcher.id);\n const styles = useStyles(getStyles);\n const properties = override.properties.map((p) => registry.getIfExists(p.id)).filter((prop) => !!prop);\n\n const matcherLabel = ;\n\n const onMatcherConfigChange = useCallback(\n (matcherConfig: any) => {\n override.matcher.options = matcherConfig;\n onChange(override);\n },\n [override, onChange]\n );\n\n const onDynamicConfigValueChange = useCallback(\n (index: number, value: DynamicConfigValue) => {\n override.properties[index].value = value;\n onChange(override);\n },\n [override, onChange]\n );\n\n const onDynamicConfigValueRemove = useCallback(\n (index: number) => {\n override.properties.splice(index, 1);\n onChange(override);\n },\n [override, onChange]\n );\n\n const onDynamicConfigValueAdd = useCallback(\n (id: string) => {\n const registryItem = registry.get(id);\n const propertyConfig: DynamicConfigValue = {\n id,\n value: registryItem.defaultValue,\n };\n\n if (override.properties) {\n override.properties.push(propertyConfig);\n } else {\n override.properties = [propertyConfig];\n }\n\n onChange(override);\n },\n [override, onChange]\n );\n\n let configPropertiesOptions = registry\n .list()\n .filter((o) => !o.hideFromOverrides)\n .map((item) => {\n let label = item.name;\n if (item.category && item.category.length > 1) {\n label = [...item.category!.slice(1), item.name].join(' > ');\n }\n return {\n label,\n value: item.id,\n description: item.description,\n };\n });\n\n const renderOverrideTitle = (isExpanded: boolean) => {\n const propertyNames = properties.map((p) => p?.name).join(', ');\n const matcherOptions = matcherUi.optionsToLabel(override.matcher.options);\n\n return (\n
\n \n
{name}
\n \n
\n {!isExpanded && (\n
\n
\n {matcherUi.name} {matcherOptions}\n
\n
\n Properties overridden \n {propertyNames}\n
\n
\n )}\n
\n );\n };\n\n const isSystemOverride = isSystemOverrideGuard(override);\n\n return (\n \n \n onMatcherConfigChange(option)}\n />\n \n\n <>\n {override.properties.map((p, j) => {\n const item = registry.getIfExists(p.id);\n\n if (!item) {\n return null;\n }\n\n const isCollapsible =\n Array.isArray(p.value) || COLLECTION_STANDARD_PROPERTIES.includes(p.id as FieldConfigProperty);\n\n return (\n onDynamicConfigValueChange(j, value)}\n onRemove={() => onDynamicConfigValueRemove(j)}\n property={p}\n registry={registry}\n context={{\n data,\n getSuggestions: (scope?: VariableSuggestionsScope) => getDataLinksVariableSuggestions(data, scope),\n }}\n />\n );\n })}\n {!isSystemOverride && override.matcher.options && (\n
\n {\n onDynamicConfigValueAdd(o.value!);\n }}\n isFullWidth={false}\n />\n
\n )}\n \n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme) => {\n return {\n matcherUi: css`\n padding: ${theme.spacing.sm};\n `,\n propertyPickerWrapper: css`\n margin-top: ${theme.spacing.formSpacingBase * 2}px;\n `,\n overrideDetails: css`\n font-size: ${theme.typography.size.sm};\n color: ${theme.colors.textWeak};\n font-weight: ${theme.typography.weight.regular};\n `,\n options: css`\n overflow: hidden;\n padding-right: ${theme.spacing.xl};\n `,\n unknownLabel: css`\n margin-bottom: 0;\n `,\n };\n};\n","import React from 'react';\nimport { cloneDeep } from 'lodash';\nimport { DocsId, SelectableValue } from '@grafana/data';\nimport { Container, FeatureInfoBox, fieldMatchersUI, useTheme, ValuePicker } from '@grafana/ui';\nimport { OverrideEditor } from './OverrideEditor';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { css } from 'emotion';\nimport { getDocsLink } from 'app/core/utils/docsLinks';\nimport { Props } from './types';\n\n/**\n * Expects the container div to have size set and will fill it 100%\n */\nexport const OverrideFieldConfigEditor: React.FC = (props) => {\n const theme = useTheme();\n const { config } = props;\n\n const onOverrideChange = (index: number, override: any) => {\n const { config } = props;\n let overrides = cloneDeep(config.overrides);\n overrides[index] = override;\n props.onChange({ ...config, overrides });\n };\n\n const onOverrideRemove = (overrideIndex: number) => {\n const { config } = props;\n let overrides = cloneDeep(config.overrides);\n overrides.splice(overrideIndex, 1);\n props.onChange({ ...config, overrides });\n };\n\n const onOverrideAdd = (value: SelectableValue) => {\n const { onChange, config } = props;\n onChange({\n ...config,\n overrides: [\n ...config.overrides,\n {\n matcher: {\n id: value.value!,\n },\n properties: [],\n },\n ],\n });\n };\n\n const renderOverrides = () => {\n const { config, data, plugin } = props;\n const { fieldConfigRegistry } = plugin;\n\n if (config.overrides.length === 0) {\n return null;\n }\n\n return (\n
\n {config.overrides.map((o, i) => {\n // TODO: apply matcher to retrieve fields\n return (\n onOverrideChange(i, value)}\n onRemove={() => onOverrideRemove(i)}\n registry={fieldConfigRegistry}\n />\n );\n })}\n
\n );\n };\n\n const renderAddOverride = () => {\n return (\n \n !o.excludeFromPicker)\n .map>((i) => ({ label: i.name, value: i.id, description: i.description }))}\n onChange={(value) => onOverrideAdd(value)}\n isFullWidth={false}\n />\n \n );\n };\n\n return (\n
\n {config.overrides.length === 0 && (\n \n Field override rules give you a fine grained control over how your data is displayed.\n \n )}\n\n {renderOverrides()}\n {renderAddOverride()}\n
\n );\n};\n","import React, { useCallback, ReactNode } from 'react';\nimport { get, groupBy } from 'lodash';\nimport { Counter, Field, Label } from '@grafana/ui';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { updateDefaultFieldConfigValue } from './utils';\nimport { FieldConfigPropertyItem, FieldConfigSource, VariableSuggestionsScope } from '@grafana/data';\nimport { getDataLinksVariableSuggestions } from '../../../panel/panellinks/link_srv';\nimport { OptionsGroup } from './OptionsGroup';\nimport { Props } from './types';\n\nexport const DefaultFieldConfigEditor: React.FC = ({ data, onChange, config, plugin }) => {\n const onDefaultValueChange = useCallback(\n (name: string, value: any, isCustom: boolean | undefined) => {\n onChange(updateDefaultFieldConfigValue(config, name, value, isCustom));\n },\n [config, onChange]\n );\n\n const renderEditor = useCallback(\n (item: FieldConfigPropertyItem, categoryItemCount: number) => {\n if (item.isCustom && item.showIf && !item.showIf(config.defaults.custom, data)) {\n return null;\n }\n\n if (item.hideFromDefaults) {\n return null;\n }\n\n const defaults = config.defaults;\n const value = item.isCustom\n ? defaults.custom\n ? get(defaults.custom, item.path)\n : undefined\n : get(defaults, item.path);\n\n let label: ReactNode | undefined = (\n \n );\n\n // hide label if there is only one item and category name is same as item, name\n if (categoryItemCount === 1 && item.category?.[0] === item.name) {\n label = undefined;\n }\n\n return (\n \n onDefaultValueChange(item.path, v, item.isCustom)}\n context={{\n data,\n getSuggestions: (scope?: VariableSuggestionsScope) => getDataLinksVariableSuggestions(data, scope),\n }}\n />\n \n );\n },\n [config]\n );\n\n const GENERAL_OPTIONS_CATEGORY = `${plugin.meta.name} options`;\n\n const groupedConfigs = groupBy(plugin.fieldConfigRegistry.list(), (i) => {\n if (!i.category) {\n return GENERAL_OPTIONS_CATEGORY;\n }\n return i.category[0] ? i.category[0] : GENERAL_OPTIONS_CATEGORY;\n });\n\n return (\n
\n {Object.keys(groupedConfigs).map((groupName, i) => {\n const group = groupedConfigs[groupName];\n const groupItemsCounter = countGroupItems(group, config);\n\n if (!shouldRenderGroup(group)) {\n return undefined;\n }\n\n return (\n {\n return (\n <>\n {groupName} {!isExpanded && groupItemsCounter && }\n \n );\n }}\n id={`${groupName}/${i}`}\n key={`${groupName}/${i}`}\n >\n {group.map((c) => {\n return renderEditor(c, group.length);\n })}\n \n );\n })}\n
\n );\n};\n\nfunction countGroupItems(group: FieldConfigPropertyItem[], config: FieldConfigSource) {\n let counter = 0;\n\n for (const item of group) {\n const value = item.isCustom\n ? config.defaults.custom\n ? config.defaults.custom[item.path]\n : undefined\n : (config.defaults as any)[item.path];\n if (item.getItemsCount && item.getItemsCount(value) > 0) {\n counter = counter + item.getItemsCount(value);\n }\n }\n\n return counter === 0 ? undefined : counter;\n}\n\nfunction shouldRenderGroup(group: FieldConfigPropertyItem[]) {\n const hiddenPropertiesCount = group.filter((i) => i.hideFromDefaults).length;\n return group.length - hiddenPropertiesCount > 0;\n}\n","import React, { useMemo } from 'react';\nimport {\n DataFrame,\n EventBus,\n InterpolateFunction,\n PanelOptionsEditorItem,\n PanelPlugin,\n StandardEditorContext,\n VariableSuggestionsScope,\n} from '@grafana/data';\nimport { get as lodashGet, set as lodashSet } from 'lodash';\nimport { Field, Label } from '@grafana/ui';\nimport groupBy from 'lodash/groupBy';\nimport { OptionsGroup } from './OptionsGroup';\nimport { getPanelOptionsVariableSuggestions } from 'app/features/panel/panellinks/link_srv';\n\ninterface PanelOptionsEditorProps {\n plugin: PanelPlugin;\n data?: DataFrame[];\n replaceVariables: InterpolateFunction;\n eventBus: EventBus;\n options: TOptions;\n onChange: (options: TOptions) => void;\n}\nconst DISPLAY_OPTIONS_CATEGORY = 'Display';\nexport const PanelOptionsEditor: React.FC> = ({\n plugin,\n options,\n onChange,\n data,\n eventBus,\n replaceVariables,\n}) => {\n const optionEditors = useMemo>(() => {\n return groupBy(plugin.optionEditors.list(), (i) => {\n if (!i.category) {\n return DISPLAY_OPTIONS_CATEGORY;\n }\n return i.category[0] ? i.category[0] : DISPLAY_OPTIONS_CATEGORY;\n });\n }, [plugin]);\n\n const onOptionChange = (key: string, value: any) => {\n const newOptions = lodashSet({ ...options }, key, value);\n onChange(newOptions);\n };\n\n const context: StandardEditorContext = {\n data: data || [],\n replaceVariables,\n options,\n eventBus,\n getSuggestions: (scope?: VariableSuggestionsScope) => {\n return getPanelOptionsVariableSuggestions(plugin, data);\n },\n };\n\n return (\n <>\n {Object.keys(optionEditors).map((c, i) => {\n const optionsToShow = optionEditors[c]\n .map((e, j) => {\n if (e.showIf && !e.showIf(options, data)) {\n return null;\n }\n\n const label = (\n \n );\n return (\n \n onOptionChange(e.path, value)}\n item={e}\n context={context}\n />\n \n );\n })\n .filter((e) => e !== null);\n\n return optionsToShow.length > 0 ? (\n \n
{optionsToShow}
\n
\n ) : null;\n })}\n \n );\n};\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport { connect, MapStateToProps, MapDispatchToProps } from 'react-redux';\n\n// Utils & Services\nimport { AngularComponent, getAngularLoader } from '@grafana/runtime';\n\n// Types\nimport { PanelModel, DashboardModel } from '../../state';\nimport { PanelPlugin, PanelPluginMeta } from '@grafana/data';\nimport { PanelCtrl } from 'app/plugins/sdk';\nimport { changePanelPlugin } from '../../state/actions';\nimport { StoreState } from 'app/types';\nimport { getSectionOpenState, saveSectionOpenState } from './state/utils';\n\ninterface OwnProps {\n panel: PanelModel;\n dashboard: DashboardModel;\n plugin: PanelPlugin;\n}\n\ninterface ConnectedProps {\n angularPanelComponent?: AngularComponent | null;\n}\n\ninterface DispatchProps {\n changePanelPlugin: typeof changePanelPlugin;\n}\n\ntype Props = OwnProps & ConnectedProps & DispatchProps;\n\nexport class AngularPanelOptionsUnconnected extends PureComponent {\n element?: HTMLElement | null;\n angularOptions?: AngularComponent | null;\n\n constructor(props: Props) {\n super(props);\n }\n\n componentDidMount() {\n this.loadAngularOptions();\n }\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.plugin !== prevProps.plugin) {\n this.cleanUpAngularOptions();\n }\n\n this.loadAngularOptions();\n }\n\n componentWillUnmount() {\n this.cleanUpAngularOptions();\n }\n\n cleanUpAngularOptions() {\n if (this.angularOptions) {\n this.angularOptions.destroy();\n this.angularOptions = null;\n }\n }\n\n loadAngularOptions() {\n const { panel, angularPanelComponent, changePanelPlugin } = this.props;\n\n if (!this.element || !angularPanelComponent || this.angularOptions) {\n return;\n }\n\n const scope = angularPanelComponent.getScope();\n\n // When full page reloading in edit mode the angular panel has on fully compiled & instantiated yet\n if (!scope.$$childHead) {\n setTimeout(() => {\n this.forceUpdate();\n });\n return;\n }\n\n const panelCtrl: PanelCtrl = scope.$$childHead.ctrl;\n panelCtrl.initEditMode();\n panelCtrl.onPluginTypeChange = (plugin: PanelPluginMeta) => {\n changePanelPlugin(panel, plugin.id);\n };\n\n let template = '';\n for (let i = 0; i < panelCtrl.editorTabs.length; i++) {\n const tab = panelCtrl.editorTabs[i];\n tab.isOpen = getSectionOpenState(tab.title, i === 0);\n\n template += `\n
\n
\n
\n \n
\n
${tab.title}
\n
\n
\n \n
\n
\n `;\n }\n\n const loader = getAngularLoader();\n const scopeProps = {\n ctrl: panelCtrl,\n toggleOptionGroup: (index: number) => {\n const tab = panelCtrl.editorTabs[index];\n tab.isOpen = !tab.isOpen;\n saveSectionOpenState(tab.title, tab.isOpen as boolean);\n },\n };\n\n this.angularOptions = loader.load(this.element, scopeProps, template);\n }\n\n render() {\n return
(this.element = elem)} />;\n }\n}\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n return {\n angularPanelComponent: state.dashboard.panels[props.panel.id].angularComponent,\n };\n};\n\nconst mapDispatchToProps: MapDispatchToProps = { changePanelPlugin };\n\nexport const AngularPanelOptions = connect(mapStateToProps, mapDispatchToProps)(AngularPanelOptionsUnconnected);\n","import store from 'app/core/store';\n\nexport function saveSectionOpenState(id: string, isOpen: boolean) {\n store.set(`panel-edit-section-${id}`, isOpen ? 'true' : 'false');\n}\n\nexport function getSectionOpenState(id: string, defaultValue: boolean) {\n return store.getBool(`panel-edit-section-${id}`, defaultValue);\n}\n","import React from 'react';\nimport { GrafanaTheme, PanelPluginMeta, PluginState } from '@grafana/data';\nimport { Badge, BadgeProps, styleMixins, stylesFactory, useTheme } from '@grafana/ui';\nimport { css, cx } from 'emotion';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { isUnsignedPluginSignature, PluginSignatureBadge } from '../../../plugins/PluginSignatureBadge';\n\ninterface Props {\n isCurrent: boolean;\n plugin: PanelPluginMeta;\n onClick: () => void;\n disabled: boolean;\n}\n\nconst VizTypePickerPlugin: React.FC = ({ isCurrent, plugin, onClick, disabled }) => {\n const theme = useTheme();\n const styles = getStyles(theme);\n const cssClass = cx({\n [styles.item]: true,\n [styles.disabled]: disabled || plugin.state === PluginState.deprecated,\n [styles.current]: isCurrent,\n });\n\n return (\n
\n {} : onClick}\n title={isCurrent ? 'Click again to close this section' : plugin.name}\n >\n
\n
\n
\n {plugin.name}\n
\n \n
\n
\n
\n \n
\n
\n );\n};\n\nVizTypePickerPlugin.displayName = 'VizTypePickerPlugin';\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n wrapper: css`\n position: relative;\n `,\n bg: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${theme.colors.bg2};\n border: 1px solid ${theme.colors.border2};\n border-radius: 3px;\n transform: scale(1);\n transform-origin: center;\n transition: all 0.1s ease-in;\n z-index: 0;\n `,\n item: css`\n flex-shrink: 0;\n flex-direction: column;\n text-align: center;\n cursor: pointer;\n display: flex;\n margin-right: 10px;\n align-items: center;\n justify-content: center;\n padding-bottom: 6px;\n height: 100px;\n width: 100%;\n position: relative;\n\n &:hover {\n > div:first-child {\n transform: scale(1.05);\n border-color: ${theme.colors.formFocusOutline};\n }\n }\n `,\n itemContent: css`\n position: relative;\n z-index: 1;\n width: 100%;\n `,\n current: css`\n label: currentVisualizationItem;\n > div:first-child {\n ${styleMixins.focusCss(theme)};\n }\n `,\n disabled: css`\n opacity: 0.2;\n filter: grayscale(1);\n cursor: default;\n pointer-events: none;\n &:hover {\n border: 1px solid ${theme.colors.border2};\n }\n `,\n name: css`\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n font-size: ${theme.typography.size.sm};\n text-align: center;\n height: 23px;\n font-weight: ${theme.typography.weight.semibold};\n padding: 0 10px;\n width: 100%;\n `,\n img: css`\n height: 55px;\n `,\n badge: css`\n position: absolute;\n background: ${theme.colors.bg1};\n bottom: ${theme.spacing.xs};\n right: ${theme.spacing.xs};\n z-index: 1;\n `,\n };\n});\n\nexport default VizTypePickerPlugin;\n\ninterface PanelPluginBadgeProps {\n plugin: PanelPluginMeta;\n}\nconst PanelPluginBadge: React.FC = ({ plugin }) => {\n const display = getPanelStateBadgeDisplayModel(plugin);\n\n if (isUnsignedPluginSignature(plugin.signature)) {\n return ;\n }\n\n if (!display) {\n return null;\n }\n\n return ;\n};\n\nfunction getPanelStateBadgeDisplayModel(panel: PanelPluginMeta): BadgeProps | null {\n switch (panel.state) {\n case PluginState.deprecated:\n return {\n text: 'Deprecated',\n color: 'red',\n tooltip: `${panel.name} panel is deprecated`,\n };\n case PluginState.alpha:\n return {\n text: 'Alpha',\n color: 'blue',\n tooltip: `${panel.name} panel is experimental`,\n };\n case PluginState.beta:\n return {\n text: 'Beta',\n color: 'blue',\n tooltip: `${panel.name} panel is in beta`,\n };\n default:\n return null;\n }\n}\n\nPanelPluginBadge.displayName = 'PanelPluginBadge';\n","import React, { useCallback, useMemo } from 'react';\n\nimport config from 'app/core/config';\nimport VizTypePickerPlugin from './VizTypePickerPlugin';\nimport { EmptySearchResult, stylesFactory, useTheme } from '@grafana/ui';\nimport { GrafanaTheme, PanelPluginMeta, PluginState } from '@grafana/data';\nimport { css } from 'emotion';\n\nexport interface Props {\n current: PanelPluginMeta;\n onTypeChange: (newType: PanelPluginMeta) => void;\n searchQuery: string;\n onClose: () => void;\n}\n\nexport function getAllPanelPluginMeta(): PanelPluginMeta[] {\n const allPanels = config.panels;\n\n return Object.keys(allPanels)\n .filter((key) => allPanels[key]['hideFromList'] === false)\n .map((key) => allPanels[key])\n .sort((a: PanelPluginMeta, b: PanelPluginMeta) => a.sort - b.sort);\n}\n\nexport function filterPluginList(\n pluginsList: PanelPluginMeta[],\n searchQuery: string,\n current: PanelPluginMeta\n): PanelPluginMeta[] {\n if (!searchQuery.length) {\n return pluginsList.filter((p) => {\n if (p.state === PluginState.deprecated) {\n return current.id === p.id;\n }\n return true;\n });\n }\n const query = searchQuery.toLowerCase();\n const first: PanelPluginMeta[] = [];\n const match: PanelPluginMeta[] = [];\n for (const item of pluginsList) {\n if (item.state === PluginState.deprecated && current.id !== item.id) {\n continue;\n }\n const name = item.name.toLowerCase();\n const idx = name.indexOf(query);\n if (idx === 0) {\n first.push(item);\n } else if (idx > 0) {\n match.push(item);\n }\n }\n return first.concat(match);\n}\n\nexport const VizTypePicker: React.FC = ({ searchQuery, onTypeChange, current }) => {\n const theme = useTheme();\n const styles = getStyles(theme);\n const pluginsList: PanelPluginMeta[] = useMemo(() => {\n return getAllPanelPluginMeta();\n }, []);\n\n const getFilteredPluginList = useCallback((): PanelPluginMeta[] => {\n return filterPluginList(pluginsList, searchQuery, current);\n }, [searchQuery]);\n\n const renderVizPlugin = (plugin: PanelPluginMeta, index: number) => {\n const isCurrent = plugin.id === current.id;\n const filteredPluginList = getFilteredPluginList();\n\n const matchesQuery = filteredPluginList.indexOf(plugin) > -1;\n return (\n onTypeChange(plugin)}\n />\n );\n };\n\n const filteredPluginList = getFilteredPluginList();\n const hasResults = filteredPluginList.length > 0;\n const renderList = filteredPluginList.concat(pluginsList.filter((p) => filteredPluginList.indexOf(p) === -1));\n\n return (\n
\n {hasResults ? (\n renderList.map((plugin, index) => {\n if (plugin.state === PluginState.deprecated) {\n return null;\n }\n return renderVizPlugin(plugin, index);\n })\n ) : (\n Could not find anything matching your query\n )}\n
\n );\n};\n\nVizTypePicker.displayName = 'VizTypePicker';\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n grid: css`\n max-width: 100%;\n display: grid;\n grid-gap: ${theme.spacing.md};\n grid-template-columns: repeat(auto-fit, minmax(116px, 1fr));\n `,\n };\n});\n","import React, { useCallback, useState } from 'react';\nimport { css } from 'emotion';\nimport { GrafanaTheme, PanelPlugin, PanelPluginMeta } from '@grafana/data';\nimport { useTheme, stylesFactory, Icon, Input } from '@grafana/ui';\nimport { changePanelPlugin } from '../../state/actions';\nimport { StoreState } from 'app/types';\nimport { PanelModel } from '../../state/PanelModel';\nimport { connect, MapStateToProps, MapDispatchToProps } from 'react-redux';\nimport { VizTypePicker, getAllPanelPluginMeta, filterPluginList } from '../VizTypePicker/VizTypePicker';\nimport { Field } from '@grafana/ui/src/components/Forms/Field';\n\ninterface OwnProps {\n panel: PanelModel;\n onToggleOptionGroup: (expand: boolean) => void;\n}\n\ninterface ConnectedProps {\n plugin?: PanelPlugin;\n}\n\ninterface DispatchProps {\n changePanelPlugin: typeof changePanelPlugin;\n}\n\ntype Props = OwnProps & ConnectedProps & DispatchProps;\n\nexport const VisualizationTabUnconnected = React.forwardRef(\n ({ panel, plugin, changePanelPlugin, onToggleOptionGroup }, ref) => {\n const [searchQuery, setSearchQuery] = useState('');\n const theme = useTheme();\n const styles = getStyles(theme);\n\n if (!plugin) {\n return null;\n }\n const onPluginTypeChange = (meta: PanelPluginMeta) => {\n if (meta.id === plugin.meta.id) {\n onToggleOptionGroup(false);\n } else {\n changePanelPlugin(panel, meta.id);\n }\n };\n\n const onKeyPress = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n const query = e.currentTarget.value;\n const plugins = getAllPanelPluginMeta();\n const match = filterPluginList(plugins, query, plugin.meta);\n if (match && match.length) {\n onPluginTypeChange(match[0]);\n }\n }\n },\n [onPluginTypeChange]\n );\n\n const suffix =\n searchQuery !== '' ? (\n setSearchQuery('')}>\n \n Clear filter\n \n ) : null;\n\n return (\n
\n \n setSearchQuery(e.currentTarget.value)}\n onKeyPress={onKeyPress}\n prefix={}\n suffix={suffix}\n placeholder=\"Filter visualizations\"\n ref={ref}\n />\n \n\n {}}\n />\n
\n );\n }\n);\n\nVisualizationTabUnconnected.displayName = 'VisualizationTabUnconnected';\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n icon: css`\n color: ${theme.palette.gray33};\n `,\n wrapper: css`\n display: flex;\n flex-direction: column;\n `,\n searchClear: css`\n color: ${theme.palette.gray60};\n cursor: pointer;\n `,\n };\n});\n\nconst mapStateToProps: MapStateToProps = (state, props) => {\n return {\n plugin: state.plugins.panels[props.panel.type],\n };\n};\n\nconst mapDispatchToProps: MapDispatchToProps = { changePanelPlugin };\n\nexport const VisualizationTab = connect(mapStateToProps, mapDispatchToProps, undefined, { forwardRef: true })(\n VisualizationTabUnconnected\n);\n","import { DateTimeInput, GrafanaTheme } from '@grafana/data';\nimport { stylesFactory, useStyles } from '@grafana/ui';\nimport { OptionsGroup } from 'app/features/dashboard/components/PanelEditor/OptionsGroup';\nimport { PanelModel } from 'app/features/dashboard/state';\nimport { css } from 'emotion';\nimport React from 'react';\n\ninterface Props {\n panel: PanelModel & Required>;\n formatDate?: (dateString: DateTimeInput, format?: string) => string;\n}\n\nexport const LibraryPanelInformation: React.FC = ({ panel, formatDate }) => {\n const styles = useStyles(getStyles);\n\n return (\n \n {panel.libraryPanel.uid && (\n

\n {`Used on ${panel.libraryPanel.meta.connectedDashboards} `}\n {panel.libraryPanel.meta.connectedDashboards === 1 ? 'dashboard' : 'dashboards'}\n
\n Last edited on {formatDate?.(panel.libraryPanel.meta.updated, 'L') ?? panel.libraryPanel.meta.updated} by\n {panel.libraryPanel.meta.updatedBy.avatarUrl && (\n \n )}\n {panel.libraryPanel.meta.updatedBy.name}\n

\n )}\n
\n );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n libraryPanelInfo: css`\n color: ${theme.colors.textSemiWeak};\n font-size: ${theme.typography.size.sm};\n `,\n userAvatar: css`\n border-radius: 50%;\n box-sizing: content-box;\n width: 22px;\n height: 22px;\n padding-left: ${theme.spacing.sm};\n padding-right: ${theme.spacing.sm};\n `,\n };\n});\n","import React, { useState } from 'react';\nimport { Button, Field, Input, Modal, useStyles } from '@grafana/ui';\nimport { FolderPicker } from 'app/core/components/Select/FolderPicker';\nimport { PanelModel } from '../../../dashboard/state';\nimport { css } from 'emotion';\nimport { usePanelSave } from '../../utils/usePanelSave';\n\ninterface Props {\n onDismiss: () => void;\n isOpen?: boolean;\n panel: PanelModel;\n initialFolderId?: number;\n}\n\nexport const AddLibraryPanelModal: React.FC = ({ isOpen = false, panel, initialFolderId, ...props }) => {\n const styles = useStyles(getStyles);\n const [folderId, setFolderId] = useState(initialFolderId);\n const [panelTitle, setPanelTitle] = useState(panel.title);\n const { saveLibraryPanel } = usePanelSave();\n\n return (\n \n \n setPanelTitle(e.currentTarget.value)} />\n \n \n setFolderId(id)} initialFolderId={initialFolderId} />\n \n\n
\n {\n panel.title = panelTitle;\n saveLibraryPanel(panel, folderId!).then(() => props.onDismiss());\n }}\n >\n Add panel to the panel library\n \n \n
\n
\n );\n};\n\nconst getStyles = () => ({\n buttons: css`\n display: flex;\n gap: 10px;\n `,\n});\n","import React, { useState } from 'react';\nimport { css } from 'emotion';\nimport pick from 'lodash/pick';\nimport { GrafanaTheme } from '@grafana/data';\nimport { Button, stylesFactory, useStyles } from '@grafana/ui';\n\nimport { OptionsGroup } from 'app/features/dashboard/components/PanelEditor/OptionsGroup';\nimport { DashboardModel, PanelModel } from 'app/features/dashboard/state';\nimport { AddLibraryPanelModal } from '../AddLibraryPanelModal/AddLibraryPanelModal';\nimport { LibraryPanelsView } from '../LibraryPanelsView/LibraryPanelsView';\nimport { PanelQueriesChangedEvent } from 'app/types/events';\nimport { LibraryPanelDTO } from '../../types';\nimport { toPanelModelLibraryPanel } from '../../utils';\n\ninterface Props {\n panel: PanelModel;\n dashboard: DashboardModel;\n}\n\nexport const PanelLibraryOptionsGroup: React.FC = ({ panel, dashboard }) => {\n const styles = useStyles(getStyles);\n const [showingAddPanelModal, setShowingAddPanelModal] = useState(false);\n\n const useLibraryPanel = (panelInfo: LibraryPanelDTO) => {\n panel.restoreModel({\n ...panelInfo.model,\n ...pick(panel, 'gridPos', 'id'),\n libraryPanel: toPanelModelLibraryPanel(panelInfo),\n });\n\n // Though the panel model has changed, since we're switching to an existing\n // library panel, we reset the \"hasChanged\" state.\n panel.hasChanged = false;\n\n panel.refresh();\n panel.events.publish(PanelQueriesChangedEvent);\n };\n\n const onAddToPanelLibrary = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setShowingAddPanelModal(true);\n };\n\n return (\n {\n return isExpanded && !panel.libraryPanel ? (\n
\n Panel library\n \n
\n ) : (\n 'Panel library'\n );\n }}\n id=\"panel-library\"\n key=\"panel-library\"\n defaultToClosed\n >\n dashboard.formatDate(dateString, 'L')}\n currentPanelId={panel.libraryPanel?.uid}\n showSecondaryActions\n >\n {(panel) => (\n \n )}\n \n {showingAddPanelModal && (\n setShowingAddPanelModal(false)}\n initialFolderId={dashboard.meta.folderId}\n isOpen={showingAddPanelModal}\n />\n )}\n \n );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n panelLibraryTitle: css`\n display: flex;\n gap: 10px;\n `,\n };\n});\n","import React, { FC, useCallback, useMemo, useRef } from 'react';\nimport { DashboardModel, PanelModel } from '../../state';\nimport { PanelData, PanelPlugin } from '@grafana/data';\nimport { Counter, DataLinksInlineEditor, Field, Input, RadioButtonGroup, Select, Switch, TextArea } from '@grafana/ui';\nimport { getPanelLinksVariableSuggestions } from '../../../panel/panellinks/link_srv';\nimport { PanelOptionsEditor } from './PanelOptionsEditor';\nimport { AngularPanelOptions } from './AngularPanelOptions';\nimport { VisualizationTab } from './VisualizationTab';\nimport { OptionsGroup } from './OptionsGroup';\nimport { RepeatRowSelect } from '../RepeatRowSelect/RepeatRowSelect';\nimport config from 'app/core/config';\nimport { LibraryPanelInformation } from 'app/features/library-panels/components/LibraryPanelInfo/LibraryPanelInfo';\nimport { isLibraryPanel } from '../../state/PanelModel';\nimport { PanelLibraryOptionsGroup } from 'app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup';\n\ninterface Props {\n panel: PanelModel;\n plugin: PanelPlugin;\n data?: PanelData;\n dashboard: DashboardModel;\n onPanelConfigChange: (configKey: string, value: any) => void;\n onPanelOptionsChanged: (options: any) => void;\n}\n\nexport const PanelOptionsTab: FC = ({\n panel,\n plugin,\n data,\n dashboard,\n onPanelConfigChange,\n onPanelOptionsChanged,\n}) => {\n const visTabInputRef = useRef(null);\n const linkVariablesSuggestions = useMemo(() => getPanelLinksVariableSuggestions(), []);\n const onRepeatRowSelectChange = useCallback((value: string | null) => onPanelConfigChange('repeat', value), [\n onPanelConfigChange,\n ]);\n const elements: JSX.Element[] = [];\n const panelLinksCount = panel && panel.links ? panel.links.length : 0;\n\n const directionOptions = [\n { label: 'Horizontal', value: 'h' },\n { label: 'Vertical', value: 'v' },\n ];\n\n const maxPerRowOptions = [2, 3, 4, 6, 8, 12].map((value) => ({ label: value.toString(), value }));\n\n const focusVisPickerInput = (isExpanded: boolean) => {\n if (isExpanded && visTabInputRef.current) {\n visTabInputRef.current.focus();\n }\n };\n\n if (config.featureToggles.panelLibrary && isLibraryPanel(panel)) {\n elements.push(\n dashboard.formatDate(dateString, format)}\n key=\"Library Panel Information\"\n />\n );\n }\n\n // First common panel settings Title, description\n elements.push(\n \n \n onPanelConfigChange('title', e.currentTarget.value)} />\n \n \n onPanelConfigChange('description', e.currentTarget.value)}\n />\n \n \n onPanelConfigChange('transparent', e.currentTarget.checked)}\n />\n \n \n );\n\n elements.push(\n \n {(toggleExpand) => }\n \n );\n\n // Old legacy react editor\n if (plugin.editor && panel && !plugin.optionEditors) {\n elements.push(\n \n \n \n );\n }\n\n if (plugin.optionEditors && panel) {\n elements.push(\n \n );\n }\n\n if (plugin.angularPanelCtrl) {\n elements.push(\n \n );\n }\n\n elements.push(\n (\n <>Links {!isExpanded && panelLinksCount > 0 && }\n )}\n id=\"panel links\"\n key=\"panel links\"\n defaultToClosed\n >\n onPanelConfigChange('links', links)}\n suggestions={linkVariablesSuggestions}\n data={[]}\n />\n \n );\n\n elements.push(\n \n \n \n \n {panel.repeat && (\n \n onPanelConfigChange('repeatDirection', value)}\n />\n \n )}\n\n {panel.repeat && panel.repeatDirection === 'h' && (\n \n onPanelConfigChange('maxPerRow', value.value)}\n />\n \n )}\n \n );\n\n if (config.featureToggles.panelLibrary) {\n elements.push();\n }\n\n return <>{elements};\n};\n","import React, { CSSProperties, useCallback, useState } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport { FieldConfigSource, GrafanaTheme, PanelPlugin, SelectableValue } from '@grafana/data';\nimport { DashboardModel, PanelModel } from '../../state';\nimport {\n CustomScrollbar,\n Icon,\n Input,\n Select,\n stylesFactory,\n Tab,\n TabContent,\n TabsBar,\n ToolbarButton,\n useTheme,\n} from '@grafana/ui';\nimport { OverrideFieldConfigEditor } from './OverrideFieldConfigEditor';\nimport { DefaultFieldConfigEditor } from './DefaultFieldConfigEditor';\nimport { css } from 'emotion';\nimport { PanelOptionsTab } from './PanelOptionsTab';\nimport { usePanelLatestData } from './usePanelLatestData';\nimport { selectors } from '@grafana/e2e-selectors';\n\ninterface Props {\n plugin: PanelPlugin;\n panel: PanelModel;\n width: number;\n dashboard: DashboardModel;\n onClose: () => void;\n onFieldConfigsChange: (config: FieldConfigSource) => void;\n onPanelOptionsChanged: (options: any) => void;\n onPanelConfigChange: (configKey: string, value: any) => void;\n}\n\nexport const OptionsPaneContent: React.FC = ({\n plugin,\n panel,\n width,\n onFieldConfigsChange,\n onPanelOptionsChanged,\n onPanelConfigChange,\n onClose,\n dashboard,\n}: Props) => {\n const theme = useTheme();\n const styles = getStyles(theme);\n const [activeTab, setActiveTab] = useState('options');\n const [isSearching, setSearchMode] = useState(false);\n const { data, hasSeries } = usePanelLatestData(panel, { withTransforms: true, withFieldConfig: false });\n\n const renderFieldOptions = useCallback(\n (plugin: PanelPlugin) => {\n const fieldConfig = panel.getFieldConfig();\n\n if (!fieldConfig || !hasSeries) {\n return null;\n }\n\n return (\n \n );\n },\n [data, plugin, panel, onFieldConfigsChange]\n );\n\n const renderFieldOverrideOptions = useCallback(\n (plugin: PanelPlugin) => {\n const fieldConfig = panel.getFieldConfig();\n\n if (!fieldConfig || !hasSeries) {\n return null;\n }\n\n return (\n \n );\n },\n [data, plugin, panel, onFieldConfigsChange]\n );\n\n // When the panel has no query only show the main tab\n const showMainTab = activeTab === 'options' || plugin.meta.skipDataQuery;\n\n return (\n
\n {plugin && (\n
\n \n \n \n \n \n {showMainTab ? (\n \n ) : (\n <>\n {activeTab === 'defaults' && renderFieldOptions(plugin)}\n {activeTab === 'overrides' && renderFieldOverrideOptions(plugin)}\n \n )}\n \n \n
\n )}\n
\n );\n};\n\nexport const TabsBarContent: React.FC<{\n width: number;\n plugin: PanelPlugin;\n isSearching: boolean;\n activeTab: string;\n styles: OptionsPaneStyles;\n onClose: () => void;\n setSearchMode: (mode: boolean) => void;\n setActiveTab: (tab: string) => void;\n panel: PanelModel;\n}> = ({ width, plugin, isSearching, activeTab, onClose, setSearchMode, setActiveTab, styles, panel }) => {\n const overridesCount =\n panel.getFieldConfig().overrides.length === 0 ? undefined : panel.getFieldConfig().overrides.length;\n\n if (isSearching) {\n const defaultStyles = {\n transition: 'width 50ms ease-in-out',\n width: '50%',\n display: 'flex',\n };\n\n const transitionStyles: { [str: string]: CSSProperties } = {\n entered: { width: '100%' },\n };\n\n return (\n \n {(state) => {\n return (\n
\n
\n }\n ref={(elem) => elem && elem.focus()}\n placeholder=\"Search all options\"\n suffix={\n setSearchMode(false)} className={styles.searchRemoveIcon} />\n }\n />\n
\n
\n );\n }}\n
\n );\n }\n\n // Show the appropriate tabs\n let tabs = tabSelections;\n let active = tabs.find((v) => v.value === activeTab)!;\n\n // If no field configs hide Fields & Override tab\n if (plugin.fieldConfigRegistry.isEmpty()) {\n active = tabSelections[0];\n tabs = [active];\n }\n\n return (\n <>\n {width < 352 ? (\n
\n {\n setActiveTab(v.value!);\n }}\n />\n
\n ) : (\n <>\n {tabs.map((item) => (\n setActiveTab(item.value!)}\n title={item.tooltip}\n aria-label={selectors.components.PanelEditor.OptionsPane.tab(item.label!)}\n />\n ))}\n
\n \n )}\n
\n \n
\n \n );\n};\n\nconst tabSelections: Array> = [\n {\n label: 'Panel',\n value: 'options',\n tooltip: 'Configure panel display options',\n },\n {\n label: 'Field',\n value: 'defaults',\n tooltip: 'Configure field options',\n },\n {\n label: 'Overrides',\n value: 'overrides',\n tooltip: 'Configure field option overrides',\n },\n];\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n wrapper: css`\n display: flex;\n flex-direction: column;\n height: 100%;\n padding-top: ${theme.spacing.md};\n `,\n panelOptionsPane: css`\n height: 100%;\n width: 100%;\n `,\n tabsBar: css`\n padding-right: ${theme.spacing.sm};\n `,\n searchWrapper: css`\n display: flex;\n flex-grow: 1;\n flex-direction: row-reverse;\n `,\n searchInput: css`\n color: ${theme.colors.textWeak};\n flex-grow: 1;\n `,\n searchRemoveIcon: css`\n cursor: pointer;\n `,\n tabContent: css`\n padding: 0;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n min-height: 0;\n background: ${theme.colors.bodyBg};\n border-left: 1px solid ${theme.colors.pageHeaderBorder};\n `,\n tabsButton: css``,\n legacyOptions: css`\n label: legacy-options;\n .panel-options-grid {\n display: flex;\n flex-direction: column;\n }\n .panel-options-group {\n margin-bottom: 0;\n }\n .panel-options-group__body {\n padding: ${theme.spacing.md} 0;\n }\n\n .section {\n display: block;\n margin: ${theme.spacing.md} 0;\n\n &:first-child {\n margin-top: 0;\n }\n }\n `,\n };\n});\n\ntype OptionsPaneStyles = ReturnType;\n","import memoizeOne from 'memoize-one';\nimport { LocationState } from 'app/types';\nimport { PanelPlugin } from '@grafana/data';\nimport { PanelEditorTab, PanelEditorTabId } from '../types';\nimport { getConfig } from 'app/core/config';\n\nexport const getPanelEditorTabs = memoizeOne((location: LocationState, plugin?: PanelPlugin) => {\n const tabs: PanelEditorTab[] = [];\n\n if (!plugin) {\n return tabs;\n }\n\n let defaultTab = PanelEditorTabId.Visualize;\n\n if (plugin.meta.skipDataQuery) {\n return [];\n }\n\n if (!plugin.meta.skipDataQuery) {\n defaultTab = PanelEditorTabId.Query;\n\n tabs.push({\n id: PanelEditorTabId.Query,\n text: 'Query',\n icon: 'database',\n active: false,\n });\n\n tabs.push({\n id: PanelEditorTabId.Transform,\n text: 'Transform',\n icon: 'process',\n active: false,\n });\n }\n\n if (getConfig().alertingEnabled && plugin.meta.id === 'graph') {\n tabs.push({\n id: PanelEditorTabId.Alert,\n text: 'Alert',\n icon: 'bell',\n active: false,\n });\n }\n\n const activeTab = tabs.find((item) => item.id === (location.query.tab || defaultTab)) ?? tabs[0];\n activeTab.active = true;\n\n return tabs;\n});\n","import React from 'react';\nimport { ConfirmModal } from '@grafana/ui';\n\ninterface Props {\n isOpen: boolean;\n onConfirm: () => void;\n onDismiss: () => void;\n}\n\nexport const UnlinkModal: React.FC = ({ isOpen, onConfirm, onDismiss }) => {\n return (\n {\n onConfirm();\n onDismiss();\n }}\n onDismiss={onDismiss}\n isOpen={isOpen}\n />\n );\n};\n","import { PanelModel } from '../dashboard/state';\nimport { PanelModelWithLibraryPanel } from './types';\n\nexport function isPanelModelLibraryPanel(panel: PanelModel): panel is PanelModelWithLibraryPanel {\n return Boolean(panel.libraryPanel?.uid);\n}\n","import React, { PureComponent } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { css, cx } from 'emotion';\nimport { Subscription } from 'rxjs';\n\nimport { FieldConfigSource, GrafanaTheme } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport {\n HorizontalGroup,\n ModalsController,\n PageToolbar,\n RadioButtonGroup,\n stylesFactory,\n ToolbarButton,\n} from '@grafana/ui';\n\nimport config from 'app/core/config';\nimport { appEvents } from 'app/core/core';\nimport { calculatePanelSize } from './utils';\n\nimport { PanelEditorTabs } from './PanelEditorTabs';\nimport { DashNavTimeControls } from '../DashNav/DashNavTimeControls';\nimport { OptionsPaneContent } from './OptionsPaneContent';\nimport { SubMenuItems } from 'app/features/dashboard/components/SubMenu/SubMenuItems';\nimport { SplitPaneWrapper } from 'app/core/components/SplitPaneWrapper/SplitPaneWrapper';\nimport { SaveDashboardModalProxy } from '../SaveDashboard/SaveDashboardModalProxy';\nimport { DashboardPanel } from '../../dashgrid/DashboardPanel';\n\nimport {\n exitPanelEditor,\n initPanelEditor,\n panelEditorCleanUp,\n updatePanelEditorUIState,\n updateSourcePanel,\n} from './state/actions';\n\nimport { updateTimeZoneForSession } from 'app/features/profile/state/reducers';\nimport { updateLocation } from 'app/core/reducers/location';\nimport { setDiscardChanges } from './state/reducers';\n\nimport { getPanelEditorTabs } from './state/selectors';\nimport { getPanelStateById } from '../../state/selectors';\nimport { getVariables } from 'app/features/variables/state/selectors';\n\nimport { CoreEvents, StoreState } from 'app/types';\nimport { DisplayMode, displayModes, PanelEditorTab } from './types';\nimport { DashboardModel, PanelModel } from '../../state';\nimport { PanelOptionsChangedEvent } from 'app/types/events';\nimport { UnlinkModal } from '../../../library-panels/components/UnlinkModal/UnlinkModal';\nimport { SaveLibraryPanelModal } from 'app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal';\nimport { isPanelModelLibraryPanel } from '../../../library-panels/guard';\nimport { getLibraryPanelConnectedDashboards } from '../../../library-panels/state/api';\nimport {\n createPanelLibraryErrorNotification,\n createPanelLibrarySuccessNotification,\n saveAndRefreshLibraryPanel,\n} from '../../../library-panels/utils';\nimport { notifyApp } from '../../../../core/actions';\n\ninterface OwnProps {\n dashboard: DashboardModel;\n sourcePanel: PanelModel;\n}\n\nconst mapStateToProps = (state: StoreState) => {\n const panel = state.panelEditor.getPanel();\n const { plugin } = getPanelStateById(state.dashboard, panel.id);\n\n return {\n location: state.location,\n plugin: plugin,\n panel,\n initDone: state.panelEditor.initDone,\n tabs: getPanelEditorTabs(state.location, plugin),\n uiState: state.panelEditor.ui,\n variables: getVariables(state),\n };\n};\n\nconst mapDispatchToProps = {\n updateLocation,\n initPanelEditor,\n exitPanelEditor,\n updateSourcePanel,\n panelEditorCleanUp,\n setDiscardChanges,\n updatePanelEditorUIState,\n updateTimeZoneForSession,\n notifyApp,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype Props = OwnProps & ConnectedProps;\n\nexport class PanelEditorUnconnected extends PureComponent {\n private eventSubs?: Subscription;\n\n componentDidMount() {\n this.props.initPanelEditor(this.props.sourcePanel, this.props.dashboard);\n }\n\n componentDidUpdate() {\n const { panel, initDone } = this.props;\n\n if (initDone && !this.eventSubs) {\n this.eventSubs = new Subscription();\n this.eventSubs.add(panel.events.subscribe(PanelOptionsChangedEvent, this.triggerForceUpdate));\n }\n }\n\n componentWillUnmount() {\n this.props.panelEditorCleanUp();\n this.eventSubs?.unsubscribe();\n }\n\n triggerForceUpdate = () => {\n this.forceUpdate();\n };\n\n onDiscard = () => {\n this.props.setDiscardChanges(true);\n this.props.updateLocation({\n query: { editPanel: null, tab: null },\n partial: true,\n });\n };\n\n onOpenDashboardSettings = () => {\n this.props.updateLocation({ query: { editview: 'settings' }, partial: true });\n };\n\n onSaveDashboard = () => {\n appEvents.emit(CoreEvents.showModalReact, {\n component: SaveDashboardModalProxy,\n props: { dashboard: this.props.dashboard },\n });\n };\n\n onSaveLibraryPanel = async () => {\n if (!isPanelModelLibraryPanel(this.props.panel)) {\n // New library panel, no need to display modal\n return;\n }\n\n if (this.props.panel.libraryPanel.meta.connectedDashboards === 0) {\n return;\n }\n\n const connectedDashboards = await getLibraryPanelConnectedDashboards(this.props.panel.libraryPanel.uid);\n if (connectedDashboards.length === 1 && connectedDashboards.indexOf(this.props.dashboard.id) !== -1) {\n try {\n await saveAndRefreshLibraryPanel(this.props.panel, this.props.dashboard.meta.folderId!);\n this.props.updateSourcePanel(this.props.panel);\n this.props.notifyApp(createPanelLibrarySuccessNotification('Library panel saved'));\n } catch (err) {\n this.props.notifyApp(createPanelLibraryErrorNotification(`Error saving library panel: \"${err.statusText}\"`));\n }\n return;\n }\n\n appEvents.emit(CoreEvents.showModalReact, {\n component: SaveLibraryPanelModal,\n props: {\n panel: this.props.panel,\n folderId: this.props.dashboard.meta.folderId,\n isOpen: true,\n onConfirm: () => {\n // need to update the source panel here so that when\n // the user exits the panel editor they aren't prompted to save again\n this.props.updateSourcePanel(this.props.panel);\n },\n onDiscard: this.onDiscard,\n },\n });\n };\n\n onChangeTab = (tab: PanelEditorTab) => {\n this.props.updateLocation({ query: { tab: tab.id }, partial: true });\n };\n\n onFieldConfigChange = (config: FieldConfigSource) => {\n // we do not need to trigger force update here as the function call below\n // fires PanelOptionsChangedEvent which we subscribe to above\n this.props.panel.updateFieldConfig({\n ...config,\n });\n };\n\n onPanelOptionsChanged = (options: any) => {\n // we do not need to trigger force update here as the function call below\n // fires PanelOptionsChangedEvent which we subscribe to above\n this.props.panel.updateOptions(options);\n };\n\n onPanelConfigChanged = (configKey: keyof PanelModel, value: any) => {\n this.props.panel.setProperty(configKey, value);\n this.props.panel.render();\n this.forceUpdate();\n };\n\n onDisplayModeChange = (mode?: DisplayMode) => {\n const { updatePanelEditorUIState } = this.props;\n updatePanelEditorUIState({\n mode: mode,\n });\n };\n\n onTogglePanelOptions = () => {\n const { uiState, updatePanelEditorUIState } = this.props;\n updatePanelEditorUIState({ isPanelOptionsVisible: !uiState.isPanelOptionsVisible });\n };\n\n renderPanel = (styles: EditorStyles) => {\n const { dashboard, panel, tabs, uiState } = this.props;\n return (\n
\n {this.renderPanelToolbar(styles)}\n
\n \n {({ width, height }) => {\n if (width < 3 || height < 3) {\n return null;\n }\n return (\n
\n
\n \n
\n
\n );\n }}\n
\n
\n
\n );\n };\n\n renderPanelAndEditor(styles: EditorStyles) {\n const { panel, dashboard, tabs } = this.props;\n\n if (tabs.length > 0) {\n return [\n this.renderPanel(styles),\n \n \n
,\n ];\n }\n return this.renderPanel(styles);\n }\n\n renderTemplateVariables(styles: EditorStyles) {\n const { variables } = this.props;\n\n if (!variables.length) {\n return null;\n }\n\n return (\n
\n \n
\n );\n }\n\n renderPanelToolbar(styles: EditorStyles) {\n const { dashboard, location, uiState, variables, updateTimeZoneForSession } = this.props;\n return (\n
\n 0 ? 'space-between' : 'flex-end'} align=\"flex-start\">\n {this.renderTemplateVariables(styles)}\n\n \n \n \n {!uiState.isPanelOptionsVisible && (\n \n Show options\n \n )}\n \n \n
\n );\n }\n\n renderEditorActions() {\n let editorActions = [\n ,\n \n Discard\n ,\n this.props.panel.libraryPanel ? (\n \n Save library panel\n \n ) : (\n \n Save\n \n ),\n \n Apply\n ,\n ];\n\n if (this.props.panel.libraryPanel) {\n editorActions.splice(\n 1,\n 0,\n \n {({ showModal, hideModal }) => {\n return (\n {\n showModal(UnlinkModal, {\n onConfirm: () => {\n delete this.props.panel.libraryPanel;\n this.props.panel.render();\n this.forceUpdate();\n },\n onDismiss: hideModal,\n isOpen: true,\n });\n }}\n title=\"Disconnects this panel from the reusable panel so that you can edit it regularly.\"\n key=\"unlink\"\n >\n Unlink\n \n );\n }}\n \n );\n\n // Remove \"Apply\" button\n editorActions.pop();\n }\n\n return editorActions;\n }\n\n renderOptionsPane() {\n const { plugin, dashboard, panel, uiState } = this.props;\n\n const rightPaneSize =\n uiState.rightPaneSize <= 1\n ? (uiState.rightPaneSize as number) * window.innerWidth\n : (uiState.rightPaneSize as number);\n\n if (!plugin) {\n return
;\n }\n\n return (\n \n );\n }\n\n render() {\n const { dashboard, initDone, updatePanelEditorUIState, uiState } = this.props;\n const styles = getStyles(config.theme, this.props);\n\n if (!initDone) {\n return null;\n }\n\n return (\n
\n \n {this.renderEditorActions()}\n \n
\n \n
\n
\n );\n }\n}\n\nexport const PanelEditor = connector(PanelEditorUnconnected);\n\n/*\n * Styles\n */\nexport const getStyles = stylesFactory((theme: GrafanaTheme, props: Props) => {\n const { uiState } = props;\n const paneSpacing = theme.spacing.md;\n\n return {\n wrapper: css`\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: ${theme.zIndex.sidemenu};\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: ${theme.colors.dashboardBg};\n display: flex;\n flex-direction: column;\n `,\n verticalSplitPanesWrapper: css`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n position: relative;\n `,\n mainPaneWrapper: css`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n padding-right: ${uiState.isPanelOptionsVisible ? 0 : paneSpacing};\n `,\n mainPaneWrapperNoTabs: css`\n padding-bottom: ${paneSpacing};\n `,\n variablesWrapper: css`\n label: variablesWrapper;\n display: flex;\n flex-grow: 1;\n flex-wrap: wrap;\n `,\n panelWrapper: css`\n flex: 1 1 0;\n min-height: 0;\n width: 100%;\n padding-left: ${paneSpacing};\n `,\n tabsWrapper: css`\n height: 100%;\n width: 100%;\n `,\n panelToolbar: css`\n display: flex;\n padding: ${paneSpacing} 0 ${paneSpacing} ${paneSpacing};\n justify-content: space-between;\n flex-wrap: wrap;\n `,\n toolbarLeft: css`\n padding-left: ${theme.spacing.sm};\n `,\n centeringContainer: css`\n display: flex;\n justify-content: center;\n align-items: center;\n `,\n };\n});\n\ntype EditorStyles = ReturnType;\n","import { DashboardState, PanelState } from 'app/types';\n\nexport function getPanelStateById(state: DashboardState, panelId: number): PanelState {\n if (!panelId) {\n return {} as PanelState;\n }\n\n return state.panels[panelId] ?? ({} as PanelState);\n}\n","// Libraries\nimport $ from 'jquery';\nimport React, { MouseEvent, PureComponent } from 'react';\nimport { hot } from 'react-hot-loader';\nimport { connect } from 'react-redux';\n\n// Services & Utils\nimport { createErrorNotification } from 'app/core/copy/appNotification';\nimport { getMessageFromError } from 'app/core/utils/errors';\nimport { Branding } from 'app/core/components/Branding/Branding';\n// Components\nimport { DashboardGrid } from '../dashgrid/DashboardGrid';\nimport { DashNav } from '../components/DashNav';\nimport { DashboardSettings } from '../components/DashboardSettings';\nimport { PanelEditor } from '../components/PanelEditor/PanelEditor';\nimport { Alert, Button, CustomScrollbar, HorizontalGroup, Spinner, VerticalGroup } from '@grafana/ui';\n// Redux\nimport { initDashboard } from '../state/initDashboard';\nimport { notifyApp, updateLocation } from 'app/core/actions';\n// Types\nimport {\n AppNotificationSeverity,\n DashboardInitError,\n DashboardInitPhase,\n DashboardRouteInfo,\n StoreState,\n} from 'app/types';\n\nimport { DashboardModel, PanelModel } from 'app/features/dashboard/state';\nimport { InspectTab } from 'app/features/inspector/types';\nimport { PanelInspector } from '../components/Inspector/PanelInspector';\nimport { SubMenu } from '../components/SubMenu/SubMenu';\nimport { cleanUpDashboardAndVariables } from '../state/actions';\nimport { cancelVariables } from '../../variables/state/actions';\nimport { dashboardWatcher } from 'app/features/live/dashboard/dashboardWatcher';\n\nexport interface Props {\n urlUid?: string;\n urlSlug?: string;\n urlType?: string;\n editview?: string;\n urlPanelId?: string;\n urlFolderId?: string;\n inspectPanelId?: string;\n $scope: any;\n $injector: any;\n routeInfo: DashboardRouteInfo;\n urlEditPanelId?: string;\n urlViewPanelId?: string;\n initPhase: DashboardInitPhase;\n isInitSlow: boolean;\n dashboard: DashboardModel | null;\n initError?: DashboardInitError;\n initDashboard: typeof initDashboard;\n cleanUpDashboardAndVariables: typeof cleanUpDashboardAndVariables;\n notifyApp: typeof notifyApp;\n updateLocation: typeof updateLocation;\n inspectTab?: InspectTab;\n isPanelEditorOpen?: boolean;\n cancelVariables: typeof cancelVariables;\n}\n\nexport interface State {\n editPanel: PanelModel | null;\n viewPanel: PanelModel | null;\n scrollTop: number;\n updateScrollTop?: number;\n rememberScrollTop: number;\n showLoadingState: boolean;\n}\n\nexport class DashboardPage extends PureComponent {\n state: State = {\n editPanel: null,\n viewPanel: null,\n showLoadingState: false,\n scrollTop: 0,\n rememberScrollTop: 0,\n };\n\n async componentDidMount() {\n this.props.initDashboard({\n $injector: this.props.$injector,\n $scope: this.props.$scope,\n urlSlug: this.props.urlSlug,\n urlUid: this.props.urlUid,\n urlType: this.props.urlType,\n urlFolderId: this.props.urlFolderId,\n routeInfo: this.props.routeInfo,\n fixUrl: true,\n });\n }\n\n componentWillUnmount() {\n this.props.cleanUpDashboardAndVariables();\n this.setPanelFullscreenClass(false);\n }\n\n componentDidUpdate(prevProps: Props) {\n const { dashboard, urlEditPanelId, urlViewPanelId, urlUid } = this.props;\n const { editPanel, viewPanel } = this.state;\n\n if (!dashboard) {\n return;\n }\n\n // if we just got dashboard update title\n if (!prevProps.dashboard) {\n document.title = dashboard.title + ' - ' + Branding.AppTitle;\n }\n\n // Due to the angular -> react url bridge we can ge an update here with new uid before the container unmounts\n // Can remove this condition after we switch to react router\n if (prevProps.urlUid !== urlUid) {\n return;\n }\n\n // entering edit mode\n if (!editPanel && urlEditPanelId) {\n dashboardWatcher.setEditingState(true);\n\n this.getPanelByIdFromUrlParam(urlEditPanelId, (panel) => {\n // if no edit permission show error\n if (!dashboard.canEditPanel(panel)) {\n this.props.notifyApp(createErrorNotification('Permission to edit panel denied'));\n return;\n }\n\n this.setState({ editPanel: panel });\n });\n }\n\n // leaving edit mode\n if (editPanel && !urlEditPanelId) {\n dashboardWatcher.setEditingState(false);\n\n this.setState({ editPanel: null });\n }\n\n // entering view mode\n if (!viewPanel && urlViewPanelId) {\n this.getPanelByIdFromUrlParam(urlViewPanelId, (panel) => {\n this.setPanelFullscreenClass(true);\n dashboard.initViewPanel(panel);\n this.setState({\n viewPanel: panel,\n rememberScrollTop: this.state.scrollTop,\n updateScrollTop: 0,\n });\n });\n }\n\n // leaving view mode\n if (viewPanel && !urlViewPanelId) {\n this.setPanelFullscreenClass(false);\n dashboard.exitViewPanel(viewPanel);\n this.setState(\n { viewPanel: null, updateScrollTop: this.state.rememberScrollTop },\n this.triggerPanelsRendering.bind(this)\n );\n }\n }\n\n getPanelByIdFromUrlParam(urlPanelId: string, callback: (panel: PanelModel) => void) {\n const { dashboard } = this.props;\n\n const panelId = parseInt(urlPanelId!, 10);\n dashboard!.expandParentRowFor(panelId);\n const panel = dashboard!.getPanelById(panelId);\n\n if (!panel) {\n // Panel not found\n this.props.notifyApp(createErrorNotification(`Panel with id ${urlPanelId} not found`));\n // Clear url state\n this.props.updateLocation({\n query: {\n editPanel: null,\n viewPanel: null,\n },\n partial: true,\n });\n return;\n }\n\n callback(panel);\n }\n\n triggerPanelsRendering() {\n try {\n this.props.dashboard!.render();\n } catch (err) {\n console.error(err);\n this.props.notifyApp(createErrorNotification(`Panel rendering error`, err));\n }\n }\n\n setPanelFullscreenClass(isFullscreen: boolean) {\n $('body').toggleClass('panel-in-fullscreen', isFullscreen);\n }\n\n setScrollTop = (e: MouseEvent): void => {\n const target = e.target as HTMLElement;\n this.setState({ scrollTop: target.scrollTop, updateScrollTop: undefined });\n };\n\n onAddPanel = () => {\n const { dashboard } = this.props;\n\n if (!dashboard) {\n return;\n }\n\n // Return if the \"Add panel\" exists already\n if (dashboard.panels.length > 0 && dashboard.panels[0].type === 'add-panel') {\n return;\n }\n\n dashboard.addPanel({\n type: 'add-panel',\n gridPos: { x: 0, y: 0, w: 12, h: 8 },\n title: 'Panel Title',\n });\n\n // scroll to top after adding panel\n this.setState({ updateScrollTop: 0 });\n };\n\n cancelVariables = () => {\n this.props.updateLocation({ path: '/' });\n };\n\n renderSlowInitState() {\n return (\n
\n
\n \n \n {this.props.initPhase}\n {' '}\n \n \n \n \n
\n
\n );\n }\n\n renderInitFailedState() {\n const { initError } = this.props;\n\n if (!initError) {\n return null;\n }\n\n return (\n
\n \n {getMessageFromError(initError.error)}\n \n
\n );\n }\n\n getInspectPanel() {\n const { dashboard, inspectPanelId } = this.props;\n if (!dashboard || !inspectPanelId) {\n return null;\n }\n\n const inspectPanel = dashboard.getPanelById(parseInt(inspectPanelId, 10));\n\n // cannot inspect panels plugin is not already loaded\n if (!inspectPanel) {\n return null;\n }\n\n return inspectPanel;\n }\n\n render() {\n const {\n dashboard,\n editview,\n $injector,\n isInitSlow,\n initError,\n inspectTab,\n isPanelEditorOpen,\n updateLocation,\n } = this.props;\n\n const { editPanel, viewPanel, scrollTop, updateScrollTop } = this.state;\n\n if (!dashboard) {\n if (isInitSlow) {\n return this.renderSlowInitState();\n }\n return null;\n }\n\n // Only trigger render when the scroll has moved by 25\n const approximateScrollTop = Math.round(scrollTop / 25) * 25;\n const inspectPanel = this.getInspectPanel();\n\n return (\n
\n \n\n
\n \n
\n {initError && this.renderInitFailedState()}\n {!editPanel && (\n \n )}\n\n \n
\n \n
\n\n {inspectPanel && }\n {editPanel && }\n {editview && }\n
\n );\n }\n}\n\nexport const mapStateToProps = (state: StoreState) => ({\n urlUid: state.location.routeParams.uid,\n urlSlug: state.location.routeParams.slug,\n urlType: state.location.routeParams.type,\n editview: state.location.query.editview,\n urlPanelId: state.location.query.panelId,\n urlFolderId: state.location.query.folderId,\n urlEditPanelId: state.location.query.editPanel,\n urlViewPanelId: state.location.query.viewPanel,\n inspectPanelId: state.location.query.inspect,\n initPhase: state.dashboard.initPhase,\n isInitSlow: state.dashboard.isInitSlow,\n initError: state.dashboard.initError,\n dashboard: state.dashboard.getModel() as DashboardModel,\n inspectTab: state.location.query.inspectTab,\n isPanelEditorOpen: state.panelEditor.isOpen,\n});\n\nconst mapDispatchToProps = {\n initDashboard,\n cleanUpDashboardAndVariables,\n notifyApp,\n updateLocation,\n cancelVariables,\n};\n\nexport default hot(module)(connect(mapStateToProps, mapDispatchToProps)(DashboardPage));\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport { hot } from 'react-hot-loader';\nimport ReactGridLayout, { ItemCallback } from 'react-grid-layout';\nimport classNames from 'classnames';\n// @ts-ignore\nimport sizeMe from 'react-sizeme';\n\n// Components\nimport { AddPanelWidget } from '../components/AddPanelWidget';\nimport { DashboardRow } from '../components/DashboardRow';\n\n// Types\nimport { GRID_CELL_HEIGHT, GRID_CELL_VMARGIN, GRID_COLUMN_COUNT } from 'app/core/constants';\nimport { DashboardPanel } from './DashboardPanel';\nimport { DashboardModel, PanelModel } from '../state';\nimport { Subscription } from 'rxjs';\nimport { DashboardPanelsChangedEvent } from 'app/types/events';\n\nlet lastGridWidth = 1200;\nlet ignoreNextWidthChange = false;\n\ninterface GridWrapperProps {\n size: { width: number };\n layout: ReactGridLayout.Layout[];\n onLayoutChange: (layout: ReactGridLayout.Layout[]) => void;\n children: JSX.Element | JSX.Element[];\n onDragStop: ItemCallback;\n onResize: ItemCallback;\n onResizeStop: ItemCallback;\n className: string;\n isResizable?: boolean;\n isDraggable?: boolean;\n viewPanel: PanelModel | null;\n}\n\nfunction GridWrapper({\n size,\n layout,\n onLayoutChange,\n children,\n onDragStop,\n onResize,\n onResizeStop,\n className,\n isResizable,\n isDraggable,\n viewPanel,\n}: GridWrapperProps) {\n const width = size.width > 0 ? size.width : lastGridWidth;\n\n // logic to ignore width changes (optimization)\n if (width !== lastGridWidth) {\n if (ignoreNextWidthChange) {\n ignoreNextWidthChange = false;\n } else if (!viewPanel && Math.abs(width - lastGridWidth) > 8) {\n lastGridWidth = width;\n }\n }\n\n /*\n Disable draggable if mobile device, solving an issue with unintentionally\n moving panels. https://github.com/grafana/grafana/issues/18497\n theme.breakpoints.md = 769\n */\n const draggable = width <= 769 ? false : isDraggable;\n\n return (\n \n {children}\n \n );\n}\n\nconst SizedReactLayoutGrid = sizeMe({ monitorWidth: true })(GridWrapper);\n\nexport interface Props {\n dashboard: DashboardModel;\n editPanel: PanelModel | null;\n viewPanel: PanelModel | null;\n scrollTop: number;\n isPanelEditorOpen?: boolean;\n}\n\nexport class DashboardGrid extends PureComponent {\n private panelMap: { [id: string]: PanelModel } = {};\n private panelRef: { [id: string]: HTMLElement } = {};\n private eventSubs = new Subscription();\n\n componentDidMount() {\n const { dashboard } = this.props;\n this.eventSubs.add(dashboard.events.subscribe(DashboardPanelsChangedEvent, this.triggerForceUpdate));\n }\n\n componentWillUnmount() {\n this.eventSubs.unsubscribe();\n }\n\n buildLayout() {\n const layout = [];\n this.panelMap = {};\n\n for (const panel of this.props.dashboard.panels) {\n const stringId = panel.id.toString();\n this.panelMap[stringId] = panel;\n\n if (!panel.gridPos) {\n console.log('panel without gridpos');\n continue;\n }\n\n const panelPos: any = {\n i: stringId,\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 layout.push(panelPos);\n }\n\n return layout;\n }\n\n onLayoutChange = (newLayout: ReactGridLayout.Layout[]) => {\n for (const newPos of newLayout) {\n this.panelMap[newPos.i!].updateGridPos(newPos);\n }\n\n this.props.dashboard.sortPanelsByGridPos();\n\n // Call render() after any changes. This is called when the layour loads\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 // react-grid-layout has a bug (#670), and onLayoutChange() is only called when the component is mounted.\n // So it's required to call it explicitly when panel resized or moved to save layout changes.\n this.onLayoutChange(layout);\n };\n\n onResize: ItemCallback = (layout, oldItem, newItem) => {\n this.panelMap[newItem.i!].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 isInView = (panel: PanelModel): boolean => {\n if (panel.isViewing || panel.isEditing) {\n return true;\n }\n\n // elem is set *after* the first render\n const elem = this.panelRef[panel.id.toString()];\n if (!elem) {\n // NOTE the gridPos is also not valid until after the first render\n // since it is passed to the layout engine and made to be valid\n // for example, you can have Y=0 for everything and it will stack them\n // down vertically in the second call\n return false;\n }\n\n const top = elem.offsetTop;\n const height = panel.gridPos.h * GRID_CELL_HEIGHT + 40;\n const bottom = top + height;\n\n // Show things that are almost in the view\n const buffer = 250;\n\n const viewTop = this.props.scrollTop;\n if (viewTop > bottom + buffer) {\n return false; // The panel is above the viewport\n }\n\n // Use the whole browser height (larger than real value)\n // TODO? is there a better way\n const viewHeight = isNaN(window.innerHeight) ? (window as any).clientHeight : window.innerHeight;\n const viewBot = viewTop + viewHeight;\n if (top > viewBot + buffer) {\n return false;\n }\n\n return !this.props.dashboard.otherPanelInFullscreen(panel);\n };\n\n renderPanels() {\n const panelElements = [];\n\n for (const panel of this.props.dashboard.panels) {\n const panelClasses = classNames({ 'react-grid-item--fullscreen': panel.isViewing });\n const id = panel.id.toString();\n panel.isInView = this.isInView(panel);\n\n panelElements.push(\n
elem && (this.panelRef[id] = elem)}>\n {this.renderPanel(panel)}\n
\n );\n }\n\n return panelElements;\n }\n\n renderPanel(panel: PanelModel) {\n if (panel.type === 'row') {\n return ;\n }\n\n if (panel.type === 'add-panel') {\n return ;\n }\n\n return (\n \n );\n }\n\n render() {\n const { dashboard, viewPanel } = this.props;\n\n return (\n \n {this.renderPanels()}\n \n );\n }\n}\n\nexport default hot(module)(DashboardGrid);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcGridColWidth = calcGridColWidth;\nexports.calcGridItemWHPx = calcGridItemWHPx;\nexports.calcGridItemPosition = calcGridItemPosition;\nexports.calcXY = calcXY;\nexports.calcWH = calcWH;\nexports.clamp = clamp;\n\n/*:: import type { Position } from \"./utils\";*/\n\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\n/*: PositionParams*/\n)\n/*: number*/\n{\n var margin = positionParams.margin,\n containerPadding = positionParams.containerPadding,\n containerWidth = positionParams.containerWidth,\n cols = positionParams.cols;\n return (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols;\n} // This can either be called:\n// calcGridItemWHPx(w, colWidth, margin[0])\n// or\n// calcGridItemWHPx(h, rowHeight, margin[1])\n\n\nfunction calcGridItemWHPx(gridUnits\n/*: number*/\n, colOrRowSize\n/*: number*/\n, marginPx\n/*: number*/\n) {\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 * 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 */\n\n\nfunction calcGridItemPosition(positionParams\n/*: PositionParams*/\n, x\n/*: number*/\n, y\n/*: number*/\n, w\n/*: number*/\n, h\n/*: number*/\n, state\n/*: ?Object*/\n)\n/*: Position*/\n{\n var margin = positionParams.margin,\n containerPadding = positionParams.containerPadding,\n rowHeight = positionParams.rowHeight;\n var colWidth = calcGridColWidth(positionParams);\n var out = {}; // If resizing, use the exact width and height as returned from resizing callbacks.\n\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\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 } // If dragging, use the exact width and height as returned from dragging callbacks.\n\n\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\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\n return out;\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 */\n\n\nfunction calcXY(positionParams\n/*: PositionParams*/\n, top\n/*: number*/\n, left\n/*: number*/\n, w\n/*: number*/\n, h\n/*: number*/\n)\n/*: { x: number, y: number }*/\n{\n var margin = positionParams.margin,\n cols = positionParams.cols,\n rowHeight = positionParams.rowHeight,\n maxRows = positionParams.maxRows;\n var colWidth = calcGridColWidth(positionParams); // 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\n var x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n var y = Math.round((top - margin[1]) / (rowHeight + margin[1])); // Capping\n\n x = clamp(x, 0, cols - w);\n y = clamp(y, 0, maxRows - h);\n return {\n x: x,\n y: y\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 * @return {Object} w, h as grid units.\n */\n\n\nfunction calcWH(positionParams\n/*: PositionParams*/\n, width\n/*: number*/\n, height\n/*: number*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: { w: number, h: number }*/\n{\n var margin = positionParams.margin,\n maxRows = positionParams.maxRows,\n cols = positionParams.cols,\n rowHeight = positionParams.rowHeight;\n var colWidth = calcGridColWidth(positionParams); // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n\n var w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n var h = Math.round((height + margin[1]) / (rowHeight + margin[1])); // Capping\n\n w = clamp(w, 0, cols - x);\n h = clamp(h, 0, maxRows - y);\n return {\n w: w,\n h: h\n };\n} // Similar to _.clamp\n\n\nfunction clamp(num\n/*: number*/\n, lowerBound\n/*: number*/\n, upperBound\n/*: number*/\n) {\n return Math.max(Math.min(num, upperBound), lowerBound);\n}","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n function noop() {\n //Does nothing.\n }\n\n var reporter = {\n log: noop,\n warn: noop,\n error: noop\n };\n\n if(!quiet && window.console) {\n var attachFunction = function(reporter, name) {\n //The proxy is needed to be able to call the method with the console context,\n //since we cannot use bind.\n reporter[name] = function reporterProxy() {\n var f = console[name];\n if (f.apply) { //IE9 does not support console.log.apply :)\n f.apply(console, arguments);\n } else {\n for (var i = 0; i < arguments.length; i++) {\n f(arguments[i]);\n }\n }\n };\n };\n\n attachFunction(reporter, \"log\");\n attachFunction(reporter, \"warn\");\n attachFunction(reporter, \"error\");\n }\n\n return reporter;\n};","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n for(var i = 0; i < collection.length; i++) {\n var result = callback(collection[i]);\n if(result) {\n return result;\n }\n }\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n options = options || {};\n var reporter = options.reporter;\n var asyncProcess = utils.getOption(options, \"async\", true);\n var autoProcess = utils.getOption(options, \"auto\", true);\n\n if(autoProcess && !asyncProcess) {\n reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n asyncProcess = true;\n }\n\n var batch = Batch();\n var asyncFrameHandler;\n var isProcessing = false;\n\n function addFunction(level, fn) {\n if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n // This needs to be done before, since we're checking the size of the batch to be 0.\n processBatchAsync();\n }\n\n batch.add(level, fn);\n }\n\n function processBatch() {\n // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n isProcessing = true;\n while (batch.size()) {\n var processingBatch = batch;\n batch = Batch();\n processingBatch.process();\n }\n isProcessing = false;\n }\n\n function forceProcessBatch(localAsyncProcess) {\n if (isProcessing) {\n return;\n }\n\n if(localAsyncProcess === undefined) {\n localAsyncProcess = asyncProcess;\n }\n\n if(asyncFrameHandler) {\n cancelFrame(asyncFrameHandler);\n asyncFrameHandler = null;\n }\n\n if(localAsyncProcess) {\n processBatchAsync();\n } else {\n processBatch();\n }\n }\n\n function processBatchAsync() {\n asyncFrameHandler = requestFrame(processBatch);\n }\n\n function clearBatch() {\n batch = {};\n batchSize = 0;\n topLevel = 0;\n bottomLevel = 0;\n }\n\n function cancelFrame(listener) {\n // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n var cancel = clearTimeout;\n return cancel(listener);\n }\n\n function requestFrame(callback) {\n // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n var raf = function(fn) { return setTimeout(fn, 0); };\n return raf(callback);\n }\n\n return {\n add: addFunction,\n force: forceProcessBatch\n };\n};\n\nfunction Batch() {\n var batch = {};\n var size = 0;\n var topLevel = 0;\n var bottomLevel = 0;\n\n function add(level, fn) {\n if(!fn) {\n fn = level;\n level = 0;\n }\n\n if(level > topLevel) {\n topLevel = level;\n } else if(level < bottomLevel) {\n bottomLevel = level;\n }\n\n if(!batch[level]) {\n batch[level] = [];\n }\n\n batch[level].push(fn);\n size++;\n }\n\n function process() {\n for(var level = bottomLevel; level <= topLevel; level++) {\n var fns = batch[level];\n\n for(var i = 0; i < fns.length; i++) {\n var fn = fns[i];\n fn();\n }\n }\n }\n\n function getSize() {\n return size;\n }\n\n return {\n add: add,\n process: process,\n size: getSize\n };\n}\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n var hasState = options.stateHandler.hasState;\n var idHandler = options.idHandler;\n\n if (!batchProcessor) {\n throw new Error(\"Missing required dependency: batchProcessor\");\n }\n\n if (!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n //TODO: Could this perhaps be done at installation time?\n var scrollbarSizes = getScrollbarSizes();\n\n var styleId = \"erd_scroll_detection_scrollbar_style\";\n var detectionContainerClass = \"erd_scroll_detection_container\";\n\n function initDocument(targetDocument) {\n // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n }\n\n initDocument(window.document);\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n function getScrollbarSizes() {\n var width = 500;\n var height = 500;\n\n var child = document.createElement(\"div\");\n child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n var container = document.createElement(\"div\");\n container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n container.appendChild(child);\n\n document.body.insertBefore(container, document.body.firstChild);\n\n var widthSize = width - container.clientWidth;\n var heightSize = height - container.clientHeight;\n\n document.body.removeChild(container);\n\n return {\n width: widthSize,\n height: heightSize\n };\n }\n\n function injectScrollStyle(targetDocument, styleId, containerClass) {\n function injectStyle(style, method) {\n method = method || function (element) {\n targetDocument.head.appendChild(element);\n };\n\n var styleElement = targetDocument.createElement(\"style\");\n styleElement.innerHTML = style;\n styleElement.id = styleId;\n method(styleElement);\n return styleElement;\n }\n\n if (!targetDocument.getElementById(styleId)) {\n var containerAnimationClass = containerClass + \"_animation\";\n var containerAnimationActiveClass = containerClass + \"_animation_active\";\n var style = \"/* Created by the element-resize-detector library. */\\n\";\n style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n style += \"@-webkit-keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n style += \"@keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n injectStyle(style);\n }\n }\n\n function addAnimationClass(element) {\n element.className += \" \" + detectionContainerClass + \"_animation_active\";\n }\n\n function addEvent(el, name, cb) {\n if (el.addEventListener) {\n el.addEventListener(name, cb);\n } else if(el.attachEvent) {\n el.attachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n }\n }\n\n function removeEvent(el, name, cb) {\n if (el.removeEventListener) {\n el.removeEventListener(name, cb);\n } else if(el.detachEvent) {\n el.detachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n }\n }\n\n function getExpandElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n }\n\n function getShrinkElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n var listeners = getState(element).listeners;\n\n if (!listeners.push) {\n throw new Error(\"Cannot add listener to an element that is not detectable.\");\n }\n\n getState(element).listeners.push(listener);\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n\n function debug() {\n if (options.debug) {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(idHandler.get(element), \"Scroll: \");\n if (reporter.log.apply) {\n reporter.log.apply(null, args);\n } else {\n for (var i = 0; i < args.length; i++) {\n reporter.log(args[i]);\n }\n }\n }\n }\n\n function isDetached(element) {\n function isInDocument(element) {\n return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n }\n\n if (!isInDocument(element)) {\n return true;\n }\n\n // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n if (window.getComputedStyle(element) === null) {\n return true;\n }\n\n return false;\n }\n\n function isUnrendered(element) {\n // Check the absolute positioned container since the top level container is display: inline.\n var container = getState(element).container.childNodes[0];\n var style = window.getComputedStyle(container);\n return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n }\n\n function getStyle() {\n // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n var elementStyle = window.getComputedStyle(element);\n var style = {};\n style.position = elementStyle.position;\n style.width = element.offsetWidth;\n style.height = element.offsetHeight;\n style.top = elementStyle.top;\n style.right = elementStyle.right;\n style.bottom = elementStyle.bottom;\n style.left = elementStyle.left;\n style.widthCSS = elementStyle.width;\n style.heightCSS = elementStyle.height;\n return style;\n }\n\n function storeStartSize() {\n var style = getStyle();\n getState(element).startSize = {\n width: style.width,\n height: style.height\n };\n debug(\"Element start size\", getState(element).startSize);\n }\n\n function initListeners() {\n getState(element).listeners = [];\n }\n\n function storeStyle() {\n debug(\"storeStyle invoked.\");\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getStyle();\n getState(element).style = style;\n }\n\n function storeCurrentSize(element, width, height) {\n getState(element).lastWidth = width;\n getState(element).lastHeight = height;\n }\n\n function getExpandChildElement(element) {\n return getExpandElement(element).childNodes[0];\n }\n\n function getWidthOffset() {\n return 2 * scrollbarSizes.width + 1;\n }\n\n function getHeightOffset() {\n return 2 * scrollbarSizes.height + 1;\n }\n\n function getExpandWidth(width) {\n return width + 10 + getWidthOffset();\n }\n\n function getExpandHeight(height) {\n return height + 10 + getHeightOffset();\n }\n\n function getShrinkWidth(width) {\n return width * 2 + getWidthOffset();\n }\n\n function getShrinkHeight(height) {\n return height * 2 + getHeightOffset();\n }\n\n function positionScrollbars(element, width, height) {\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n var shrinkWidth = getShrinkWidth(width);\n var shrinkHeight = getShrinkHeight(height);\n expand.scrollLeft = expandWidth;\n expand.scrollTop = expandHeight;\n shrink.scrollLeft = shrinkWidth;\n shrink.scrollTop = shrinkHeight;\n }\n\n function injectContainerElement() {\n var container = getState(element).container;\n\n if (!container) {\n container = document.createElement(\"div\");\n container.className = detectionContainerClass;\n container.style.cssText = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n getState(element).container = container;\n addAnimationClass(container);\n element.appendChild(container);\n\n var onAnimationStart = function () {\n getState(element).onRendered && getState(element).onRendered();\n };\n\n addEvent(container, \"animationstart\", onAnimationStart);\n\n // Store the event handler here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onAnimationStart = onAnimationStart;\n }\n\n return container;\n }\n\n function injectScrollElements() {\n function alterPositionStyles() {\n var style = getState(element).style;\n\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style[property] = 0;\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function getLeftTopBottomRightCssText(left, top, bottom, right) {\n left = (!left ? \"0\" : (left + \"px\"));\n top = (!top ? \"0\" : (top + \"px\"));\n bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n right = (!right ? \"0\" : (right + \"px\"));\n\n return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n }\n\n debug(\"Injecting elements\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n alterPositionStyles();\n\n var rootContainer = getState(element).container;\n\n if (!rootContainer) {\n rootContainer = injectContainerElement();\n }\n\n // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n // the targeted element.\n // When the bug is resolved, \"containerContainer\" may be removed.\n\n // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n var scrollbarWidth = scrollbarSizes.width;\n var scrollbarHeight = scrollbarSizes.height;\n var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n var containerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n var expandStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var shrinkStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var expandChildStyle = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n var shrinkChildStyle = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n var containerContainer = document.createElement(\"div\");\n var container = document.createElement(\"div\");\n var expand = document.createElement(\"div\");\n var expandChild = document.createElement(\"div\");\n var shrink = document.createElement(\"div\");\n var shrinkChild = document.createElement(\"div\");\n\n // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n containerContainer.dir = \"ltr\";\n\n containerContainer.style.cssText = containerContainerStyle;\n containerContainer.className = detectionContainerClass;\n container.className = detectionContainerClass;\n container.style.cssText = containerStyle;\n expand.style.cssText = expandStyle;\n expandChild.style.cssText = expandChildStyle;\n shrink.style.cssText = shrinkStyle;\n shrinkChild.style.cssText = shrinkChildStyle;\n\n expand.appendChild(expandChild);\n shrink.appendChild(shrinkChild);\n container.appendChild(expand);\n container.appendChild(shrink);\n containerContainer.appendChild(container);\n rootContainer.appendChild(containerContainer);\n\n function onExpandScroll() {\n getState(element).onExpand && getState(element).onExpand();\n }\n\n function onShrinkScroll() {\n getState(element).onShrink && getState(element).onShrink();\n }\n\n addEvent(expand, \"scroll\", onExpandScroll);\n addEvent(shrink, \"scroll\", onShrinkScroll);\n\n // Store the event handlers here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onExpandScroll = onExpandScroll;\n getState(element).onShrinkScroll = onShrinkScroll;\n }\n\n function registerListenersAndPositionElements() {\n function updateChildSizes(element, width, height) {\n var expandChild = getExpandChildElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n }\n\n function updateDetectorElements(done) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n debug(\"Storing current size\", width, height);\n\n // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n // Otherwise the if-check in handleScroll is useless.\n storeCurrentSize(element, width, height);\n\n // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n batchProcessor.add(0, function performUpdateChildSizes() {\n if (!sizeChanged) {\n return;\n }\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n if (options.debug) {\n var w = element.offsetWidth;\n var h = element.offsetHeight;\n\n if (w !== width || h !== height) {\n reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n }\n }\n\n updateChildSizes(element, width, height);\n });\n\n batchProcessor.add(1, function updateScrollbars() {\n // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n // been restored to the original size, which will have changed the scrollbar positions.\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n positionScrollbars(element, width, height);\n });\n\n if (sizeChanged && done) {\n batchProcessor.add(2, function () {\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n done();\n });\n }\n }\n\n function areElementsInjected() {\n return !!getState(element).container;\n }\n\n function notifyListenersIfNeeded() {\n function isFirstNotify() {\n return getState(element).lastNotifiedWidth === undefined;\n }\n\n debug(\"notifyListenersIfNeeded invoked\");\n\n var state = getState(element);\n\n // Don't notify if the current size is the start size, and this is the first notification.\n if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n }\n\n // Don't notify if the size already has been notified.\n if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n return debug(\"Not notifying: Size already notified\");\n }\n\n\n debug(\"Current size not notified, notifying...\");\n state.lastNotifiedWidth = state.lastWidth;\n state.lastNotifiedHeight = state.lastHeight;\n forEach(getState(element).listeners, function (listener) {\n listener(element);\n });\n }\n\n function handleRender() {\n debug(\"startanimation triggered.\");\n\n if (isUnrendered(element)) {\n debug(\"Ignoring since element is still unrendered...\");\n return;\n }\n\n debug(\"Element rendered.\");\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n debug(\"Scrollbars out of sync. Updating detector elements...\");\n updateDetectorElements(notifyListenersIfNeeded);\n }\n }\n\n function handleScroll() {\n debug(\"Scroll detected.\");\n\n if (isUnrendered(element)) {\n // Element is still unrendered. Skip this scroll event.\n debug(\"Scroll event fired while unrendered. Ignoring...\");\n return;\n }\n\n updateDetectorElements(notifyListenersIfNeeded);\n }\n\n debug(\"registerListenersAndPositionElements invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n getState(element).onRendered = handleRender;\n getState(element).onExpand = handleScroll;\n getState(element).onShrink = handleScroll;\n\n var style = getState(element).style;\n updateChildSizes(element, style.width, style.height);\n }\n\n function finalizeDomMutation() {\n debug(\"finalizeDomMutation invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getState(element).style;\n storeCurrentSize(element, style.width, style.height);\n positionScrollbars(element, style.width, style.height);\n }\n\n function ready() {\n callback(element);\n }\n\n function install() {\n debug(\"Installing...\");\n initListeners();\n storeStartSize();\n\n batchProcessor.add(0, storeStyle);\n batchProcessor.add(1, injectScrollElements);\n batchProcessor.add(2, registerListenersAndPositionElements);\n batchProcessor.add(3, finalizeDomMutation);\n batchProcessor.add(4, ready);\n }\n\n debug(\"Making detectable...\");\n\n if (isDetached(element)) {\n debug(\"Element is detached\");\n\n injectContainerElement();\n\n debug(\"Waiting until element is attached...\");\n\n getState(element).onRendered = function () {\n debug(\"Element is now attached\");\n install();\n };\n } else {\n install();\n }\n }\n\n function uninstall(element) {\n var state = getState(element);\n\n if (!state) {\n // Uninstall has been called on a non-erd element.\n return;\n }\n\n // Uninstall may have been called in the following scenarios:\n // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n // So to be on the safe side, let's check for each thing before removing.\n\n // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n state.container && element.removeChild(state.container);\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n"],"sourceRoot":""}